You are on page 1of 174

ADMINISTRACION LINUX 1 1 Breve introduccin al linux, al cdigo GNU Comparaciones entre cdigo libre y cdigo comercial.

Comandos bsicos para manejar la consola, el editor de textos vi Instalacin y particionamiento de linux.

Introduccin al sistema operativo Linux Recurso El kernel de linux Recurso Emulacin de otros sistemas Recurso Distribuciones Recurso Iniciando y cerrando la sesin de trabajo en Linux Recurso El sistema de archivos Linux Recurso El rbol de directorio de Linux Recurso Manejo del shell BASH Recurso Sistema de ayuda Recurso uso del editor de texto vi Recurso Instalacin del Sistema Operativo Recurso Sugerencias para un correcto particionamiento Recurso Diagrama de migracin Recurso Tarea de la Semana 1 Bibliografa Recurso

2 Recuperacin del sistema operativo ante desastres. Manejo de usuarios y permisos, delegacin de tareas del superusuario y manejo de cuotas de disco.

Recuperacin en Caso de desastres Recurso Bibliografa adicional Recurso 3- Gestin de usuarios y permisos Creacin y administracin de usuarios y grupos de usuarios Recurso Permisos de lectura, escritura y ejecucin Recurso Delegacin de tareas de superusuario Recurso Opciones del mount Recurso Tarea de la Semana 2

3 Gestin de procesos Herramientas de monitoreo Trabajo con servicios Arranque y parada de linux

4- Gestin de procesos

Conceptos de la Gestin de procesos Recurso Procesos, /proc y control de procesos Recurso Herramientas para monitoreo y trabajo con procesos Recurso Otras herramientas de monitoreo Recurso 5- Sistema de inicio y finalizacin del sistema (SysV) Conceptos Recurso Niveles de ejecucin Recurso Descripcin y localizacin de los servicios Recurso ntsysv, chkconfig y service Recurso Demonios del sistema Recurso Arranque y parada de linux Recurso Bibliografa adicional Recurso Tarea de la semana 3

4 Respaldos, herramientas para crear respaldos, trabajo con los discos. Utileras para programar tareas

6- Gestin de unidades de almacenamiento y sistemas de archivos Conceptos Generales Recurso Aadir/Eliminar particiones Recurso Chequeando el disco Recurso Accediendo a disketes formateados con DOS Recurso Compresin de archivos Recurso Trabajo con imgenes y CD Recurso Optimizando accesos a disco Recurso Herramientas para realizar respaldos Recurso Realizando respaldos en linux Recurso 7- Automatizacin de tareas cron Recurso anacron Recurso at Recurso Bibliografa adicional Recurso Tarea de la semana 4

"GNU / LINUX" o "LINUX" ?


El proyecto GNU fue iniciado por Richard Stallman en 1984, con el objetivo de crear un sistema operativo completo libre: el sistema GNU, basado en el sistema operativo UNIX (UNIX fue creado en 1970). Richard Stallman public un artculo conocido como el "Manifiesto GNU", en el que estableci sus motivaciones para realizar el proyecto GNU, entre las que destaca "retornar al espiritu de cooperacin que prevaleci en los tiempos iniciales de la comunidad de usuarios de computadoras". GNU es un acrnimo recursivo que significa "GNU No es Unix". Stallman sugiere que se

pronuncie, en ingls, como "guh-noo" (se puede observar que el logo es un u) para evitar confusin con "new" (nuevo). En espaol, GNU se pronuncia fonticamente (Ge Ene U). Para asegurar que el software GNU permaneciera libre para que todos los usuarios pudieran "ejecutarlo, copiarlo, modificarlo y distribuirlo", el proyecto deba ser liberado bajo una licencia diseada para garantizar esos derechos al tiempo que evitase restricciones posteriores de los mismos. La idea se conoce en Ingls como copyleft (en clara oposicin a copyright), y est contenida en la Licencia General Pblica de GNU (GPL). El proyecto GNU desarroll varios programas incluyendo compiladores, utilitarios, intrpretes de comandos, pero no ha completado (hasta esta fecha, mediados de 2009) un ncleo (los programas para administrar memoria, procesos, archivos, perifricos, seguridades). En 1991, Linus Torvalds empez a escribir su ncleo Linux y decidi distribuirlo bajo la GPL. Rpidamente, mltiples programadores se unieron a Linus en el desarrollo, colaborando a travs de Internet y consiguiendo paulatinamente que Linux llegase a ser un ncleo compatible con UNIX. En 1992, el ncleo Linux fue combinado con el sistema GNU, resultando en un sistema operativo libre y completamente funcional. El sistema operativo formado por esta combinacin es usualmente conocido como "GNU/Linux" o como una "distribucin Linux" y existen diversas variantes. (Ver tambin: Controversia por la denominacin GNU/Linux) Una distribucin Linux (o mejor GNU/Linux) es entonces un conjunto de programas creados por el proyecto GNU, o por otros desarrolladores que se apoyan en la licencia GPL o LGPL, y el ncleo desarrollado por Linus Torvalds. Desde su primer lanzamiento, GNU/Linux ha incrementado su popularidad en el mercado de servidores. Su gran flexibilidad ha permitido que sea utilizado en un rango muy amplio de sistemas de cmputo y arquitecturas: computadoras personales, supercomputadoras, dispositivos porttiles, etc. Los sistemas Linux funcionan sobre ms de 20 diferentes plataformas de hardware, entre ellas las ms comunes son las de los sistemas compatibles con PC, computadoras Macintosh, procesadores PowerPC, Sparc y MIPS. Tambin es frecuente hallar componentes de GNU instalados en un sistema UNIX no libre, en lugar de los programas originales para UNIX. Esto se debe a que muchos de los programas escritos por el proyecto GNU han demostrado ser de mayor calidad que sus versiones equivalentes de UNIX. A menudo, estos componentes se conocen colectivamente como "herramientas GNU". Muchos de los programas GNU han sido tambin portados a otras plataformas como Microsoft Windows y Mac OS X. Qu es el software libre? Software libre es el software que, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. El software libre suele estar

disponible gratuitamente en Internet, o a precio del coste de la distribucin a travs de otros medios; sin embargo no es obligatorio que sea as y, aunque conserve su carcter de libre, puede ser vendido comercialmente. Anlogamente, el software gratuito (denominado usualmente Freeware) incluye en algunas ocasiones el cdigo fuente; sin embargo, este tipo de software no es libre en el mismo sentido que el software libre, al menos que se garanticen los derechos de modificacin y redistribucin de dichas versiones modificadas del programa. En resumen, libertad no significa gratuidad y al contrario tampoco. Se puede obtener software gratuito sin tener la libertad de ver el cdigo y a su vez se puede usar software libre (free software) para ver su cdigo pero pagar por su soporte comercial, o por la distribucin de las copias de software libre. Qu es el cdigo (software) comercial?

El autor cobra un precio por el uso del software (licencias) No se puede ceder ni alquilar el software en cuestin El nico autorizado a realizar modificaciones al software es el desarrollador de ste. Esto, claro est, siempre y cuando les sea rentable. Por ejemplo: Cambio de plataforma, mejoras, customizaciones No se podr realizar ingeniera inversa para estudiar su comportamiento.

Ejemplos de cdigo comercial y libre (los pondremos con ejemplos tomados mayormente de la empresa MicroSoft) Comercial sendmail, postfixIISLibre Microsoft OfficeExchange Internet Explorer Microsoft OutlookFireFox Decenas de antivirus comerciales TrendMicro antispam msn chat, yahoo messenger, trillianspamassassin Apache, thttpd Open Office, StarOffice, koffice Evolution, Thunderbird, pine, mutt Clamav gaim

Existen otros tipos de licencia de aspecto libre, algunas son compatibles con la licencia GNU y otras tienen ciertas restricciones o libertades que la hacen incompatibles; por ejemplo la licecencia tipo Apache permite la distribucin de binarios sin su correspondiente cdigo fuente lo que imposibilita en muchos casos el que se pueda conocer las directivas de compilacin o parches aplicados a un producto liberado). Sin embargo esto no significa que una licencia para cdigo libre deba dejar de ser usada o ignorada, muchas tienen elementos vlidos a nuestros efectos y de hecho una distribucin de Linux comprende no slo software licenciado bajo gnu-gpl sino que incluye otros tipos de licenciamiento.

Se puede obtener muchsima ms informacin en la pgina de la FSF: Otros tipos de licenciamientos para cdigo libre Sitios de ayuda Existen una buena cantidad de sitios de ayuda (autoayuda tambin) en el planeta, en muchsimos idiomas, aqu listaremos algunos sitios con soporte en ingls y espaol, adems de sitios propios ecuatorianos para obtener ayuda ms rpidamente: Equinux es una lista dedicada a los amantes de linux en el Ecuador, sus aplicaciones prcticas en el pas, acciones que se deberan tomar y dems alternativas. Se habla tambin sobre otros proyectos open source http://nuevared.org/mailman/listinfo/equinux_nuevared.org Ecualug es el primer foro de usuarios ecuatorianos dedicado ntegramente al tema de linux. Surgi hace 3 aos y tiene una enorme cantidad de artculos. La mayora de los usuarios del foro siempre requieren de un buen planteamiento ante un problema o inquietud para dar una respuesta adecuada a este planteamiento, es muy til y se aprende mucho en este foro: http://www.ecualug.org Existen varios sitios web ecuatorianos que se especializan en GNU/Linux. Los citamos aqu, sin que eso signifique que de alguna manera estn asociados con el CEC-EPN. www.nuestroserver.com (antiguo www.ecualinux.com) www.palosanto.com www.infodesarrollo.ec www.bmind.ec www.redpartner.com www.refundation.com www.hightelecom.com www.powerfast.net www.omnisoft.com.ec www.plus-projects.com Hispasec es un sitio dedicado a la seguridad informtica, una de las cosas ms interesantes es su lista de anuncios diaria (su nombre es: una al da) que enva actualizaciones con los problemas ms importantes de seguridad ocurridos en los ltimos das u horas.

www.hispasec.com El kernel (nucleo o corazn) de linux es la creacin original de Linus Torvalds en 1991, ms las modificaciones del grupo www.linux.org . Este nucleo es la base del sistema GNU/Linux. Ha sido ampliamente revisado (y modificado) por una enorme comunidad de personas a lo largo del planeta. De hecho la contribucin en cdigo que ha aportado Linus Torvalds es menor al 5% del kernel. Linus a veces dice que l se siente como si se aprovechara de las dems personas porque l es el que menos ha escrito lneas de cdigo. Cierto o falso, es una realidad: Linus Torvalds fu capaz de crear un kernel muy maleable, muy modificable, adems es una persona que acepta retos, sugerencias y siempre se mantiene en constante investigacin y modernizacin del kernel. El kernel bsicamente es el conjunto de programas que permiten administrar (manejar) los recursos del sistema de forma organizada y eficiente: La memoria, el uso de CPU, uso de disco, manejo de espacios de memoria virtual, swap y dems. En los ltimos aos se han ido agregando al kernel temas como seguridades (iptables, selinux), nuevos formatos de archivos (ntfs, hpfs, reiserfs) y el reconocimiento de gran cantidad de dispositivos modernos. Qu significa 2.6.9.56 El sistema de numerar el kernel est en cambio actualmente, de todas formas el kernel se ha numerado hasta el momento de la siguiente forma: linux-X.Y.Z El primer numero (X) significa un cambio mayor respecto al anterior, posiblemente incompatible en sus binarios, cambios en las concepciones. El primer kernel til fu del tipo 1.Y.Z ste kernel por ejemplo era monoltico, no permita cargar mdulos (drivers) para nuevo hardware, lo que haca que para agregar nuevo hardware haba que recompilar completamente el kernel. Posteriormente, sobre el ao 1996-1997, surgi el kernel 2.Y.Z Este s era modular, e incluida ciertas caractersticas ms que haca que fuera incompatible con el 1. Bsicamente nos mantenemos en el kernel tipo 2 de momento. El segundo nmero (Y) indica un cambio en concepcin del kernel, pero no en su compatibilidad, posiblemente hay restructuraciones a diferentes reas del kernel, mejoras en su rendimiento, seguramente habrn miles de drivers nuevos, arquitecturas y dispositivos que antes no existan sern agregados. El kernel 2.0 soportaba un firewall muy rudimentario llamado ipfwadm. Ver ms novedades del kernel 2.0. El kernel 2.2 ya soport un firewall (ipchains) que permita hacer NAT, y hasta se poda con un mdulo externo hacer labores de reenvo de paquetes hacia mquinas dentro de la red. Ver ms novedades del kernel 2.2

El kernel 2.4 ya soportaba un firewall mucho ms poderoso llamado iptables que es el que al momento se usa, con muchsimas caractersticas de manejo de firewall que lo hacen bien fuerte y estable. Ver ms novedades del kernel 2.4 El kernel 2.6 incluy soporte para discos SATA, tiene un manejo de memoria y procesos totalmente renovado lo que hace que el rendimiento, nivel de respuesta ante ambientes multitareas bien complejos sea altamente eficiente y bueno. El kernel 2.6 realmente responde mucho ms rpido que su antecesor. Ver ms novedades del kernel 2.6 Los nmeros Y, si se fijan bien, son pares. Si este nmero es impar lo que significaba era que el kernel era de pruebas, altamente inestable y no apto para la produccin (2.3, 2.5, 2.1), esto est de momento cambiando, veremos qu decide Linus. El ltimo nmero (Z) solamente indica un cambio cosmtico con respecto al Z-1 (anterior), pueden ser correcciones de seguridad, adiciones de nuevos hardwares, mejoras en drivers, etc. Pero normalmente no implica que el kernel haga que deje de funcionar ningn hardware ni cambie ningn concepto o preconcepcin respecto a otros kernels del mismo X.Y Igual que el kernel de linux, muchos paquetes de aplicaciones usan la misma terminologa para numerar sus sistemas:

sendmail-8.13.2 httpd-2.0.54 php-4.3.11

Sin embargo, estas no tienen en cuenta la caractersticas de que si la Y es impar estos son inestables. De hecho, repetimos, Linus ha decidido que ya este dato no tenga ningn valor respecto a la estabilidad o no de un kernel. Es decir, posiblemente el kernel 2.7 sea tan estable o ms que un kenel 2.6. Todos los kernels oficiales que han salido, pueden ser encontrados en: www.kernel.org Cmo puedo saber la versin del ncleo de linux que tengo instalada ? Use desde una terminal de Linux, el comando uname -r o este otro comando: cat /proc/version Actualizado: 2009/07. GNU/Linux no slo es capaz de ejecutar programas binarios creados especficamente para GNU/Linux, sino que es capaz de ejecutar programas binarios creados para otros sistemas operativos. Para ello existen emuladores como DOSEMU o DOSBOX para correr programas para DOS. El emulador WINE para emular Windows. Emuladores o mquinas virtuales como XEN, VMWARE, BOSCH y otros. Generalmente la velocidad es adecuada, lo que hace al GNU/Linux adecuado para correr programas creados para otros sistemas operativos. Por ejemplo, linux es capaz de emular una mquina real que pueda ejecutar el DOS,

mediante el dosemu Para el caso de windows, es capaz de emular a travs del wine, la plataforma bsica de windows y ejecutar desde el wine diferentes aplicaciones compiladas para windows. Realmente es un trabajo viejo y que sigue en constante actualizacin, y siempre tiene mejoras ya que emular toda la cantidad de llamadas que microsoft ha creado toma su tiempo, sobre todo cuando microsoft actualiza estas llamadas y hace que se tenga que revisar constantemente el trabajo. Con muchsimas aplicaciones como firefox, thunderbird, open office y cientos ms que corren nativamente en linux, no es muy necesario el wine, sobre todo porque cualquier otra aplicacin que no exista para linux, puede ser ejecutada mediante el rdesktop que permite conectarte a un servidor windows de terminal services y ejecutar aplicaciones en ese servidor. Adems nativamente linux puede interpretar y ejecutar cdigo de otros sistemas operativos unix, mediante el mecanismo llamado Linux ABI. Mediante el linux ABI podemos ejecutar el foxpro que existe para SCO dentro de nuestro linux, as como casi cualquier binario creado para otra plataforma de unix dentro de nuestro linux. Aparte de estos emuladores que son bastante conocidos, linux es capaz de actuar como servidor netware (mars nwe) y como servidor de archivos de windows (samba). As como es capaz de interpretar aplicaciones hecha en java desde el mismo shell. Tambin linux es capaz, mediante el proyecto go-mono aplicaciones hechas para .NET permitiendo que muchas empresas puedan ahorrar en costos de implementacin de sistemas operativos windows para ejecutar aplicaciones en mono. Es muy comn encontrar sistemas GNU/Linux corriendo VMWare www.vmware.com (cada vez ms, tambin el ms joven VirtualBox de Sun www.virtualbox.org) con varios sistemas operativos como DOS, Windows, MAC OSX, Solaris, BSD, todo funcionando AL MISMO TIEMPO en linux. Esto es factible si el computador dispone de suficiente memoria y espacio en disco para que estos sistemas trabajen simultneamente. Se recomienda al menos 1GB de RAM y alrededor de 10GB por cada sistema operativo, adems del almacenamiento que se pueda necesitar para guardar los datos del usuario. Ayuda mucho tambin que el CPU del equipo contenga las extensiones para soporte de virtualizacin (Intel VT AMD-V por ejemplo). Linux es bsicamente el kernel del sistema operativo, la base, el que maneja todas las operaciones de entrada/salida y mantiene saludable el manejo de memoria y asignacin de recursos del procesador. Sin embargo, debemos diferenciar bien entre el kernel de linux, y una distribucin de Linux. Una distribucin de linux es bsicamente una coleccin o conjunto de paquetes, recompilados por una empresa, normalmente con fines comerciales (vender los CDs,

vender soporte, vender cursos) en uno o varios cds o dvd los cuales vienen con un proceso de instalacin el cual permite, entre otras cosas:

particionar el disco duro definir una clave para el usuario de administrador, escoger los paquetes a instalar instalar grupos de paquetes previamente seleccionados para escritorio, ofimtica, grficos, multimedia, servidores, monitoreo, etc. configurar elementos del sistema como es la zona horaria, el ambiente grfico, definir direcciones IP, etc.

Estos paquetes incluidos en una distribucin no son solamente del proyecto GNU, sino de otros proyectos, con otros tipos de licenciamientos no comerciales (licencias tipo bsd, apache, X, etc) as como paquetes comerciales (adobe acrobat reader, flash player, real player, etc) pero que se distribuyen libremente. El objetivo final de las empresas que realizan las distribuciones es lograr dar cierto nivel de soporte y actualizaciones frecuentes a su distribucin, estas actualizaciones pueden variar siendo algunas gratuitas, otras pagadas El tiempo de vida de una distribucin tambin puede variar; as como soporte tcnico (normalmente es pagado) y cursos y certificaciones para la distribucin en cuestin. Distribuciones basadas en RPM: Los archivos rpm terminan en la extensin .rpm contienen varios archivos y programas en su interior, algo similar a los archivos .zip RPM es el acrnimo creado por redhat para definir un esquema de distribucin de paquetes. Significa RedHat Package Manager o Manejador de paquetes de RedHat Los RPM fueron en su momento y todava siguen siendo un paso de avance muy grande para el mundo de linux, ya que los rpm no slo incluyen una coleccin de binarios relativos a un determinado paquete o utilera sino que tambin incluye archivos de ayuda, de configuracin y sobre todo! incluye lo que se llama dependencias, esto es, qu otros paquetes rpm requiere este rpm para instalarse. De esta forma nos evitamos problemas que anteriormente ocurran y ocurren cuando se instala un paquete que para funcionar correcta o completamente, requiere de otros. Por ejemplo: El paquete php (php es un lenguaje interpretado que genera cdigo html de amplio uso en internet en estos momentos) tiene entre sus requerimientos el que exista un servidor web (apache) instalado. De esta forma si intentamos instalar el rpm del paquete php, este nos fallar diciendo que requiere del paquete rpm httpd (apache) para instalar. Entonces debemos instalar el apache primeramente y seguramente este nos fallar dicindonos que requiere algn paquete relacionado con SSL (capa de encriptacin) por lo que deberemos instalar el mod_ssl seguramente y entonces instalar el httpd (apache) y ahora s: instalamos el php.

De esta forma no dejamos cabos sueltos. Pero esto no es todo, los paquetes rpm permiten adems desinstalar completamente una aplicacin, pues se mantiene una lista de todos y cada uno de los ficheros de configuracin, libreras, binarios, pginas de ayuda y dems que haya instalado un paquete rpm, as de esta forma al borrar un paquete rpm podemos tener la total seguridad de que hemos eliminado todas las referencias y archivos instalados por el rpm. Esto puede sonar natural para una persona que viene del mundo de windows, pero un sistema de desinstalacin en linux era algo sumamente importante y requerido que no exista antes. Adems los paquetes rpm pueden ser actualizados, los rpm sobreescriben con total tranquilidad sus anteriores versiones instaladas, sustituyendo binarios y pginas manuales as como creando nuevos enlaces que se requieran, pero siempre respetan los archivos de configuracin preexistentes, lo que permite actualizar una aplicacin con una versin superior sin incurrir en una tarea completa de reconfiguracin. Sobre los rpm trabajaremos ms adelante en el curso, cuando aprenderemos a manejar rpm, recompilar paquetes, instalarlos, actualizarlos, removerlos y dems caractersticas propias de los rpm. Algunas distribuciones: De forma totalmente arbitraria nosotros hemos decidido dividir las distribuciones en:

distribuciones basadas en rpm y distribuciones no basadas en rpm.

De todas formas para una lista completa de distribuciones existentes o ya difuntas, pueden referirse a http://distrowatch.com/ Red Hat es una empresa lider en desarrollo, implementacin y administracin de soluciones linux y open source para la internet- Las aplicaciones de redhat varan desde dispositivos embebidos hasta servidores web seguros. Red Hat fu fundado en 1994 por dos visionarios Bob Young y Marc Ewing. El cdigo libre es la base de su sistema de negocios. Redhat no slo es el creador de la idea del rpm, para nosotros algo fundamental que sent bases para un rpido desarrollo del linux, sino que son los mantenedores y hospederos de una serie de proyectos y programadores muy conocidos para el mundo del linux. Proyectos tales como GCC (el compilador de C) y le dan trabajo a muchos programadores como Alan Cox, uno de los desarrolladores del kernel ms importantes al momento. Al momento el producto fundamental de redhat es el RedHat enterpise linux, al momento redhat mantiene 3 versiones: RHEL3, RHEL4 y RHEL5 las cuales son mantenidas por un periodo de 7 aos a partir de su fecha de salida al mercado. Estos periodos extendidos de soporte (se est hablando de hasta 10 aos de soporte) son una de las ventajas de usar esta distribucin.

La lista de servicios de redhat es grande, pero uno de los fuertes de ellos es:

Soporte tcnico Actualizaciones frecuentes Certificaciones para trabajar en sus productos

Los productos y servicios de redhat tienen un costo. Pero el sistema operativo y paquetes incluidos en la distribucin son distribuidos con el cdigo fuente de estos. A excepcin de los logos de redhat y cualquier paquete comercial que hayan incluido (al momento en rhel5 son slo 2 paquetes comerciales que no revisten mayor importancia). RedHat crea un sistema operativo y paquetes de ayuda altamente parcheados, que son en muchos casos bien diferentes a los paquetes originales creados por sus autores. Tiene una tecnologa que llaman backporting, en el que redhat no cambia la numeracin de los paquetes durante el tiempo de vida de su distribucin, sin embargo esto no significa que las aplicaciones sean viejas. Redhat se ocupa de portar hacia esas versiones, los parches y actualizaciones necesarias para corregir errores y potenciales o reales problemas. Es por esto que no debemos asustarnos de ver que el kernel del redhat es el 2.6.9 cuando hay kernels 2.6.12, es decir, tcnicamente hay una diferencia de 3 nmeros entre el kernel de redhat y la ltima versin oficial, pero esto no es cierto, pues redhat hace backporting, trae los arreglos y mejoras del kernel 2.6.12 o sus predecesores hacia el 2.6.9. El objetivo? Muy simple lograr que el kernel o cualquier aplicacin se comporten de forma estndar y no varen sus configuraciones o formas de trabajar durante el tiempo. Muchos paquetes nuevos traen nuevas configuraciones o nuevas funcionalidades que aunque buenas, puede que traigan problemas al ser instaladas y requieran de reconfiguracin por parte del administrador. Algunos administradores no manejan 1 o 2 mquinas, sino cientos, talvez miles de mquinas y realizar cambios en una configuracin es algo sumamente penoso y que puede traer enormes prdidas econmicas. Los servidores de redhat enterprise linux estn creados con el objetivo de ofrecer estabilidad, y esta es una de las maneras de lograrlas.. sin demeritar en lo absoluto que es un sistema eficiente y actualizado. Fedora se convirti desde inicios del siglo 21 en una distribucin auspiciada por redhat, un sandbox, o caja de arena, donde redhat prueba y prepara los paquetes que sern implementados para sus distribuciones comercialmente soportadas (RHEL). Fedora bsicamente contiene una serie de paquetes de ultima generacin que son planteados, propuestos en sus distribuciones para que los interesados puedan probarlos y reportar problemas. Fedora se compromete a liberar un nuevo core (as llaman a sus distribuciones, core1, core2, core3, core4, etc) cada 10 a 12 meses, y se compromete a actualizar solamente la versin recin liberada y la anterior a la recin. Por ejemplo, ahora estamos en fedora core11, por lo tanto actualizan el core11 y el core10. Core9 y core8 no son soportados ni actualizados ya por fedora.

Pros:

Paquetes muy actualizados, Ciclo de vida de las distribuciones: muy corto por lo tanto hay nuevos paquetes constantemente

Contras:

Al ser paquetes totalmente novedosos, muchos de ellos experimentales y sin mucho periodo de prueba, estos son propensos a fallar inexplicablemente o a fallar con una causa conocida. Por parte de fedora no existe un compromiso de arreglar un paquete, aunque claro est se intenta arreglar de ser posible. Al tener un periodo de vida muy corto (slo mantienen los dos ultimos cores) si una empresa necesita mantenerse actualizada para prevenir ataques, deber cambiar constantemente de core de fedora, incurriendo en downtimes, nuevos y desconocidos problemas, etc.

Es nuestra opinin de que fedora es una muy buena distribucin para las personas que requieren experimentar con lo ultimo del mercado, pero que no requieren de un compromiso de estabilidad por parte de la distribucin. Fedora NO se debe usar en servidores de aplicaciones crticos y que necesiten de soporte extendido y estabilidad. Si miramos estas dos opciones de redhat (RHEL y fedora) no tenemos muchas opciones, y verdaderamente casi nadie vea al principio una salida a esta problemtica: redhat distribuye su versin empresarial pero cobra por las actualizaciones y por usar su logo; mientras fedora es slo un juguete para desarrolladores y estudiantes.. Existen empresas que necesitan un servicio estable, con actualizaciones por largos periodos de tiempo y que no pueden o no quieren pagar por el servicio de actualizaciones de redhat. Qu hacer? Clones de Redhat Para eso han surgido, gracias al cdigo GNU y otros cdigos no comerciales, alternativas gratuitas o menos costosas de mantenimiento de servidores. Vayamos por el principio: Redhat, al usar cdigo GNU est obligado a liberar este cdigo, sin embargo redhat no slo libera el cdigo gnu que incluye en su distribucin, sino que tambin distribuye en formato src.rpm (SRPM, o los fuentes del rpm) la forma exacta en que ha compilado TODOS los paquetes que tienen cdigo libre, ya sean estos GNU o no. Qu significa esto? Que cualquiera puede tomar los SRPMS que libera redhat, y recompilarlos de la forma exacta (clon) en que redhat lo hizo, as de esta forma obtendr los paquetes rpm, con los binarios y archivos de configuracin exactos que redhat entrega en su distribucin.

Eso s. Redhat, de acuerdo a su licencia, en el artculo 2 del apndice 1 indica claramente que los logos de redhat y todas sus marcas son propiedad de redhat, por lo que no se deben distribuir sin autorizacin de ellos. Es por esto que se puede usar bsicamente todo de redhat, menos sus logos y dems marcas comerciales as como que no se puede acceder al soporte tcnico y actualizaciones si no se pagan por ellas. Basados en estas premisas, algunas personas y empresas crearon lo que se llaman clones de redhat, para ms informacin sobre los diferentes clones visitar este sitio. Entre los clones de redhat, est CentOS el que definitivamente vemos ms activo y con nimos no slo de copiar la informacin sino de crear distribuciones para nuevas arquitecturas no soportadas por redhat, etc, Es precisamente centos, en su versin 5 el que estaremos estudiando en este curso. De forma tal de que tengamos un conocimiento completo sobre cmo funciona un servidor RedHat Enterprise Linux y podamos posteriormente definir si se adquirir una licencia de uso del RHEL o se seguir usando en su empresa el centos. Ambas variantes son vlidas para comenzar. Trustix (trustix secure linux, tsl) Es una distribucin creada por www.trustix.org que es una empresa que crea esta distribucin con el objetivo expreso de funcionar y servir para ambientes de servidores. Es una distribucin muy optimizada y altamente especializada en el rea de servidores. No contiene ambiente grfico y se distribuye en un slo CD al momento. Las actualizaciones de trustix se ofrecen por al menos 2 aos despus de salida al mercado una distribucin, pero no slo eso, sino que la migracin de una versin anterior de trustix a una ms moderna es un proceso poco complicado lo que permite mantenerse con un sistema actualizado y un alto uptime, o tiempo en el aire. Nosotros las usamos para sistemas de servidores que requieren de alto performance y la usamos de base para construir nuestra propia distribucin para servidores segura. OpenNA: Es una distribucin creada en el Canad, orientada a un alto aseguramiento del sistema mediante medidas preventivas y predictivas de problemas. Esta distribucin es basada en la idea de redhat, se maneja por rpm y una de las caractersticas ms interesantes de los seores de openna es que en su sitio web distribuyen un libro en el que indican paso a paso cmo se van compilando todos los paquetes de un sistema y cmo se deben ir asegurando. Es aproximadamente el mismo mtodo que usan para crear la distribucin y definitivamente el libro es una gran ayuda para personas que desean mejorar su conocimiento sobre cmo asegurar paquetes de un sistema linux. Mandriva Linux (antiguamente Mandrakelinux) Creada en 1998 con el objetivo de hacer linux ms fcil de usar por cualquier persona. En aquellos momentos linux era bien conocido como un sistema operativo poderoso y estable que demandaba muy slidos conocimientos tcnicos y un uso extensivo de lnea

de comando. Mandrake vi la oportunidad de integrar el ambiente grfico con poderosas utileras de configuracin y manejo del sistema. Con esta idea innovativa mandriva ofrece todo el poder y estabilidad de un sistema linux tanto a personas profesionales y conocedoras de Linux como a principiantes o personas sin mayores conocimientos tcnicos pero con inters en usar linux para realizar sus labores. En nuestra opinin realmente mandrake o mandriva como se llama actualmente es una muy buena distribucin orientada al ambiente grfico. SUSE SUSE LINUX se cataloga como lder internacional y proveedor de soluciones en sistemas operativos de cdigo abierto. La larga experiencia de suse en linux y adems su enorme cantidad de personas dedicadas a desarrollar en cdigo abierto han contribuido indudablemente en reconocer a suse como una de las soluciones de linux ms completas disponibles al momento. SUSE LINUX fue adquirido por Novell, Inc en Noviembre del 2003. DISTRIBUCIONES NO BASADAS EN RPM Aunque hay un gran numero de distribuciones, slo hablaremos de las ms importantes al momento: Debian El proyecto Debian es una sociedad de personas que han hecho causa comn para crear un sistema operativo gratuito. Este SO se llama Debian GNU/Linux o simplemente Debian. Los sistemas Debian actualmente usan el Kernel de Linux. Debian se caracteriza por ser totalmente gratuito, sin organizaciones que los mantengan y con una amplia cobertura de plataformas, tanto populares como ya obsoletas o muy nuevas. Entre las dificultades que debian est enfrentando ahora es una falta de soporte comercial (requerido por muchos clientes) as como una gran lentitud en liberar nuevas versiones y nuevas actualizaciones, as como peleas internas dentro del grupo de desarrolladores. Como objetivo social, gratuito y libre, es una gran distribucin. A mis efectos, como persona que tiene que dar soporte comercial serio a empresas, debian no es una distribucin preparada para mantener puntos o sistemas crticos dentro de las empresas. Muchas personas adoran a debian y mueren por l, lo califican como altamente adictivo, sobre todo programadores, o investigadores o simplemente partidarios del software totalmente libre. Gentoo Es una distribucin que tiene una caractersticas interesante, aparte de ser gratuita y libre por supuesto, es una distribucin que puede adecuarse completamente a la mquina en que se instala. Esto es, a los efectos de una instalacin se pueden mandar a instalar solamente los paquetes que requeriremos, ni ms ni menos, y estos paquetes podemos bajarlos de la internet, de su sitio web y recompilarlos de acuerdo al hardware

o plataforma que tengamos. Gentoo adems no tiene distribuciones as propiamente dichas, se puede instalar desde cualquier cd de arranque de gentoo, que l mismo se encargar de bajar el cdigo fuente de todos los paquetes requeridos desde la internet, y este cdigo por supuesto ser de la ltima versin disponible en internet. Es un ambiente muy interesante para experimentadores y es una distribucin muy popular entre personas que realmente quieren comprender cmo funciona linux y que se preocupan por su desempeo. Ubuntu Otra distribucin popular al momento es ubuntu, indica que es y permanecer libre. Estimamos esta distribucin ha salido adelante sobre todo por los problemas de lentitud de debian, que hacan que muchas gentes se desmotivaran por usar debian por lo viejo y demorado de sus actualizaciones. MINI DISTRIBUCIONES, Las minidistros, son distribuciones pequeas, usualmente basadas en un slo CD, o CD de tamao de una tarjeta de crdito. Adems no es infrecuente encontrarnos con distribuciones que caben solamente en un floppy (s, en un floppy se puede montar un router que haga nat y firewall), o en dos o tres floppies. Tambin hay distros que caben en pendrive o cualquier dispositivo USB. No solamente son distribuciones educativas o proyectos para pasar el tiempo, sino que muchas de ellas (coyote linux) permiten tener un efectivo firewall y servidor que haga NAT, as como son pequeas alternativas para levantar un sistema ms grande en caso de que haya fallado y trata de recuperar su informacin y echarlo a andar nuevamente. Hay decenas de distribuciones interesantes, por favor buscar y ver: knoppix puppy linux coyote linux en www.distrowatch.com o en www.LinuxCd.org Las diez mejores distribuciones GNU/Linux http://distrowatch.com/dwres.php?resource=major Distribuciones educativas: Una de las distribuciones ms interesantes es Linux From Scratch, ms que educativa en el sentido general podemos indicar de ella que es una distribucin que ensea cmo realizar una distribucin desde cero. Cmo recompilar e instalar un sistema operativo compilando paquete por paquete e instalndolos. As que nos ensea bsicamente cmo instalar linux sin tener que usar ninguna distro previamente comentada.

Los CD Vivos o Live CD Son CDs o DVDs que no requieren instalacin. Traen conjuntos de programas seleccionados para que funcionen al arrancar directamente desde un CD o DVD. No tienen ni la velocidad ni toda la funcionalidad de los programas instalados en el disco duro, pero son una excelente alternativa para probar una distribucin, para familiarizarse con Linux y para aprendizaje del sistema Linux o de sus programas. Aqu hay varias docenas de CDs / DVDs que pueden ser descargados. Necesitar un ancho de banda no disponible en en CEC-EPN. http://www.frozentech.com/content/livecd.php Y qu hay de otros programas y aplicaciones ? Existen miles de programas y aplicaciones para Linux (y para Windows) que estn desarrollados o que estn en desarrollo. Puede apreciar una buena cantidad en: www.sourceforge.net www.freshmeat.com En conclusin: Como se puede ver, Linux es una enorme fuerza en el planeta Tierra. Una fuerza que no tiene retorno. Como se puede apreciar en los links arriba indicados, existen cientos de miles, tal vez millones de personas trabajando de una u otra manera para mejorar Linux y agregar programas (y facilidades) a su ya extensa lista. Lo interesante de Linux es que se basa en la cooperacin de la comunidad y no en la competencia o el secretismo. Linux, como cualquier sistema operativo moderno, solicitar que el usuario ingrese su nombre de usuario y contrasea para que pueda iniciar su trabajo. Deber consultar con el instructor o con el personal de soporte del CEC para conocer el nombre de usuario y contrasea vlidos. Una vez que escribe el nombre de usuario y contrasea, aparecer una pantalla similar a esta: En este momento no profundizaremos con el ambiente grfico ya que la mayora de actividades de administracin se realizan en modo texto, pero s explicaremos dos temas importantes: cmo cerrar la sesin y cmo iniciar en modo texto o terminal: Para cerrar la sesin (una de las varias maneras de hacerlo) haga clic en Sistema y luego en Salir o Apagar. Esta segunda opcin apaga el computador, mientras que la primera le permite ingresar como otro usuario. Para abrir una sesin en modo texto (modo terminal) haga clic con el botn derecho del ratn sobre cualquier parte de la pantalla no ocupada por otro elemento grfico

(cualquier parte de color azul estar bien, suponiendo que no haya cambiado por otro el fondo azul de la pantalla). La sesin de TERMINAL o modo texto aparecer algo as: En la ventana de terminal se pueden escribir cientos de rdenes utilizando el teclado. Vamos a ver una instruccin que le permitir cambiar de idioma ingls a espaol o a cualquier idioma que Ud. elija. Por favor elija un idioma que Ud. conozca, porque de lo contrario, le resultar difcil volver a configurar el idioma (no encontrar la opcin adecuada). En este caso hemos seleccionado Spanish (spain) Ahora, deber cerrar la sesin (de la manera indicada arriba) y volver a ingresar para que los cambios se realicen. Administrador de archivosUd. puede revisar los archivos y carpetas (directorios) de Linux tanto en modo grfico como en modo texto. Seleccione Y luego puede hacer clic en donde dice EQUIPO

Hay muchas otras formas que deber conocer, tanto en modo grfico, como en modo texto. Se supone que un administrador de Linux debe conocer ms que los usuarios, as que deber investigar y experimentar. Sistema de archivos de Linux (Linux Filesystem) El sistema de archivos de Linux es transparente para la mayora de usuarios, a quienes no les interesa la manera en que se graba su informacin en el disco duro, cd, dvd o flash memory. A un usuario normal solamente le interesa que pueda grabar y recuperar su informacin. Sin embargo, a un administrador de linux le interesa (debe interesarle) el formato interno de grabacin para poder controlarlo, optimizarlo y en muchas ocasiones, escoger diferentes formatos en beneficio de los usuarios que dependen de l (del administrador). Por lo tanto, aqu veremos a qu se refiere con eso de Filesystem Linux reconoce (puede leer y grabar) muchos tipos de filesystem, entre ellos: ext, ext2, ext3, raid, reiserfs, ntfs, fat12, fat16, fat32, hpfs, pcfs, nfs, samba, cdfs y otros. Sin embargo, as como el formato nativo de windows es NTFS (antes era FAT32, y antes de ello el FAT16 y el FAT12), linux tiene su formato nativo en el ext3 (antes era el ext2, y antes era el ext). Las mejoras en los formatos de grabacin (filesystems) permiten aprovechar las nuevas capacidades de almacenamiento, mejoran el tiempo de lectura y escritura, brindan

mayores seguridades y permiten recuperacin en caso de cadas del sistema. Por ello es mejor usar un filesystem reciente en vez de un filesystem antiguo. El sistema de archivos de Linux filesystem, fue en principio el mismo sistema de archivos de Minix creado por Andrew S Tannenbaum a fines de los 80. Este sistema de archivos de Linux se conoci inicialmente como EXT. Era digamos as una extensin al sistema de archivo Minix. Minix adoleca de ciertas falencias que su autor en el nimo de mantener simpleza a la hora de educar (minix es un SO orientado a universidades, a la educacin, a comprender su funcionamiento) haba introducido. Por ejemplo Minix no soportaba (ni soporta) archivos de ms de 64mb de tamao as como que el nombre de los directorios no deba pasar de los 16 caracteres. Los filesystem ext, ext2, ext3 El formato de archivos EXT corrigi estas limitaciones y s soportaba tamaos de archivo de hasta 2GB de tamao y filesystems de hasta 2GB de tamao (mucho para esa poca) y adems que los nombres directorios y archivos podan ser de hasta 255 caracteres. Sin embargo, el slo soportar 2GB como tamao mximo de un Filesystem era una dificultad, aunque no la nica. Tambin la forma en que se organizaban los inodos libres (listas de bloques que pertenecen a un archivo) era del tipo de lista enlazada simple, lo que haca sumamente ineficiente la bsqueda de un inodo para ser usado (asignado). Por lo tanto, los autores del EXT y la comunidad de linux se vieron en la necesidad de disear y programar un mejor formato que permitiera superar estas dificultades. Para esto, se cre el formato EXT2, a fines de los 90, que no slo superaba con creces el tamao mximo que poda tener un archivo (ahora soportan unos 4TB de tamao) sino que adems la forma de organizar los inodos era en forma de rbol lo que haca sumamente efectiva la bsqueda de inodos libres y asignacin de espacios en disco. Sin embargo el FS ext2 tena (tiene) una pequea situacin problema. Y es que no mantiene una bitcora o sistema transaccional que es muy til para recuperar un filesystem daado por cadas inesperadas de la mquina o fallas de corriente. El EXT2 poda dejar inconsistente un sistema lo que lo hace altamente peligroso por la potencial prdida de datos que se puede incurrir. Si embargo el FS ext2 fu creado con provisiones para posteriores adiciones y mejoras al sistema, lo que permiti que se pudieran agregar nuevas caractersticas de bitcora a este FS. Este nuevo tipo de FS es llamado EXT3 y no es incompatible con el EXT2, es decir, un FS ext2 puede ser convertido a ext3 y lo contrario tambin es posible, lo que ha hecho muy fcil la migracin de ext2 a ext3 con slo actualizar las utileras de acceso a los FS y el kernel.

Aparte del FS ext3, existe al menos un sistema transaccional ms, es el llamado ReiserFS los autores lo califican como un FS que permite un mejor performance por la forma en que organiza los inodos as como que tambin permite una mejor recuperacin del FS en caso de un evento inesperado que ponga en peligro la informacin contenida en los discos. Este formato es usado en forma nativa en el sistema operativo MAC OSX (La X al final indica que es un derivado de Unix / Linux). Sin embargo en diferentes pruebas de performance se ha determinado que el FS reiserfs es muy rpido en efecto para el manejo de gran cantidad de archivos pequeos (de 2 a 3k de tamao) pero el performance en el manejo de grandes archivos (superiores a 3k) no se diferencia en nada del ext3. Adems, el reiserfs tiene todava una buena etapa de experimentacin y pruebas para determinar potenciales fallas que todava surgen en l, as como adiciones de caractersticas bsicas como el manejo de quotas. Por todas estas razones, nosotros no recomendamos de momento el usar el reiserfs para manejas nuestro sistema de archivos en un servidor, siendo adecuado para estaciones. Linux adems puede manejar diferentes FS de otros sistemas operativos, es capaz de leer y escribir sin inconvenientes en FS del tipo VFAT (FAT32), msdos (FAT16), puede leer NTFS (y escribe pero de forma experimental) Tambin se mantienen sistemas de archivos virtuales como el tmpfs (permite mantener un disco en ram), cramfs, squishfs (estos dos permiten mantener archivos pero en formato comprimido, no permiten escribir, pero s leer) y diferentes FS informativos como el procfs para obtener informacin del kernel y usbfs para manejar dispositivos USB. Otros FS menos conocidos son: NFS: Para compartir archivos entre linux Samba: Para compartir archivos con servidores windows. PCFS es el formato que utiliza el sistema operativo Solaris para equipos X86. Y para qu me sirve todo esto ? La importancia de conocer el filesystem se ver al usar el comando mount y los comandos mkfs. Por lo pronto, asegrese de que las particiones del disco estn como tipo ext3 que es el mejor sistema de archivos para servidores. Si la particin est como NTFS o FAT, deber realizar ciertas operaciones extras y cargar drivers que retardarn el rendimiento del equipo. Para ver el sistema de archivos que utiliza cada particin de linux, use el comando df -T o vea el contenido del archivo /proc/mounts por ejemplo cat /proc/mounts

/ |-bin/ |-boot/ |-dev/ |-etc/ |-home/ |-lib/ |-media/ |-mnt/

|-root/ |-sbin/ |-tmp/ |-usr/ | | |-var/ sbin/ bin/ etc/ lib/

Aqu tenemos la estructura bsica del sistema linux. Comienza de arriba a abajo por el directorio raz (root) que se describe con el signo /. En el directorio /bin tenemos los binarios bsicos de linux, los requeridos para su funcionamiento mnimo, no incluye adicionales como servidores (web, mail, ftp, etc) ni ambiente grfico ni nada similar, slo los comandos requeridos para que linux funcione y pueda ser reparado. El directorio /sbin contiene igualmente los binarios bsicos para que linux funcione pero en este caso los del super usuario (sbin=superuser binaries), como son los comandos para apagar la mquina, reiniciarla, formatear los discos, particionarlos. No estn las utileras como agregar usuarios ni ningn servidor. El directorio /boot es uno de los ms importantes y simples del sistema, sencillamente contiene el kernel (o los kernels, pues podemos tener ms de un kernel instalado) del sistema linux. Este directorio siempre recordamos que al particionar debe montarse en una particin primaria y ser el primero en ser creado. En /etc tenemos un etctera de cosas, bsicamente todos son archivos de

configuracin que podemos modificar para cambiar el comportamiento del sistema, sus servicios y servidores. En /etc tenemos por ejemplo los archivos que almacenan las claves de usuarios, archivos que indican cmo y cundo debe levantarse un servicio, qu zona horaria tenemos, y muchsimos archivos de configuracin ms de los cuales estudiaremos algunos posteriormente. El directorio /etc contiene mayormente archivos de textos que pueden ser ledos y contienen mucha explicacin sobre cmo realizar cambios y la utilidad de estos archivos. La carpeta /etc es importante porque guarda archivos de configuracin propios de cada mquina, por ejemplo: /etc/passwd, /etc/smb, /etc/sysconfig, /etc/rc.local y otros archivos que deben ser respaldados porque contienen la configuracin y valores exclusivos de cada equipo. Es en /home donde se crean las carpetas de los usuarios, al crear un usuario, el sistema linux le asigna un directorio raz o base para este usuario, donde l podr escribir y guardar su informacin. Estos directorios normalmente se crean dentro de /home y tienen como nombre el nombre del usurario (/home/pedro, /home/magda, /home/joel, etc, etc) Para el usuario administrador del sistema (root) el directorio base no est en home sino en un directorio propio llamado /root El directorio /lib contiene las bibliotecas del sistema, aqui se almacenan todas las funciones que pueden ser usadas por las aplicaciones del sistema. Podemos pensar en un equivalente de windows: DLL. Este directorio normalmente no debe ser tocado, no hay mucha informacin extrable de ella y no debemos tocar nada a no ser que realmente conozcamos lo que estamos haciendo. /media y /mnt, son los directorios donde se montan los dispositivos extrables, tales como cmaras digitales, CDROM, floppies, dispositivos USB, etc. Anteriormente se usaba /mnt para realizar los montajes de estos dispositivos. Desde Centos4 se usa el directorio /media. El directorio /proc contiene informacin til que nos brinda el kernel y adems mediante este pseudo filesystem, podemos realizar ajustes y cambios al kernel ;cambiar parmetros del protocolo tcpip, leer la memoria y procesador usados, ver cantidad de procesos ejecutando y quin los ejecut y decenas de parmetros interesantes del kernel. En /usr van las aplicaciones del usuario, digamos, los binarios que no son requeridos para que la base del sistema funcione: servidores como el apache, sendmail, vsftp, sistemas de anlisis de logs, herramientas de firewall, sistema de ambiente grfico; en fin: cualquier aplicacin que aunque muy til no es imprescindible para cuando tenemos una emergencia, para arrancar bsicamente al sistema. /usr tiene una estructura similar a /, es decir, contiene un directorio bin/, sbin/, etc/, todos estos repetimos seran binarios y archivos de configuracin no imprescindibles para un arranque de emergencia y que son elementos agregados por el usuario (nosotros) a la hora de instalar o durante el tiempo de vida del sistema.

/tmp contiene archivos temporales escritos por cualquier usuario, normalmente va en una particin aparte y por defecto es posible escribir desde cualquier usuario hacia l. Como su nombre lo indica, los datos en l deben ser temporales y de hecho el sistema linux se ocupa cada cierto tiempo en hacer limpieza de estos datos para evitar que se llene por falta de control /dev contiene dispositivos del sistema, esto es, /dev es un punto de enganche para referirnos a elementos tales como los discos, puertos seriales, teclado, video (tty), unidades de almacenamiento, sonido, etc.. en fin, es el que nos da entrada al mundo del manejo de los dispositivos. Por ejemplo algunos dispositivos y su descripcin:

ttyS0 - puerto serial 1 (com1 en DOS) ttyS1 - Puerto serial 2 (com2 en DOS) sda - primer disco scsi sde - quinto disco scsi sdb1 - primera particin del 2do disco scsi hda - disco ide (hd) mster primario (el primer disco del primer bus) hdb - disco ide esclavo primario (segundo disco de la 1ra controladora) hdc - disco ide mster secundario (primer disco de la segunda controladora) hdd - disco ide esclavo secundario hda3 - 3ra particin del disco mster primario dsp - digital signal processing - dispositivo de procesamiento de sonido

/var es el ocupado de almacenar datos variables. Estos son datos que eventualmente ingresarn al sistema pero pueden ser eliminados por la aplicacin que los usa, o sencillamente el usuario mismo se encargar de procesarlos. Por ejemplo, var sirve para:

almacenar los logs del sistema (/var/log) almacenar la cach del proxy del sistema (/var/cache/squid) almacenar los mensajes entrantes a los usuarios (/var/spool/mail) almacenar los mensajes salientes (/var/spool/mqueue) almacenar los archivos de actualizacin (/var/cache/yum)

bsicamente como podemos ver, estos datos que indicamos son variables, unas veces pueden existir y pueden ser procesados y eliminados posteriormente (mensajes salientes? mensajes entrantes?) a medida que los usuarios vayan procesando su mensajera o que el tiempo vaya pasando y los logs vayan siendo rotados. Importancia y atencin a la carpeta /var La carpeta /var es muy importante porque contiene especialmente estos cuatro directorios que deben ser respaldados: /var/log contiene los logs del sistema

/var/lib/mysql contiene las bases de datos de mysql /var/www/html contiene las pginas web del servidor web /var/spool/mail contiene los mails de los usuarios Para los usuarios de Windows 1. En linux es ms comn llamar DIRECTORIO a lo que en Windows se conoce como CARPETA o Folder. 2. Linux NO tiene unidades o letras como A: C: D: etc. Vea los directorios /mnt y /media para encontrar los disquetes, los cds, los dvds y las memorias flash. 3. El directorio raiz de Linux es el / (barra diagonal inclinada a la derecha o slash), mientras que en Windows es el \ (barra inclinada a la izquierda o backslash). 4. El separador de directorios (carpetas) de linux es el / mientras que el de windows es el \ 5. Los nombres de directorios y archivos de Linux reconocen y diferencian letras maysculas de letras minsculas, mientras que en Windows eso no importa. En linux no es lo mismo el archivo ABC que el archivo aBC o que Abc, son tres distintos archivos, y si equivoca el tipo de letra, no obtendr los resultados deseados. 6. Al copiar archivos de Linux a memorias flash o cds, se pierden ciertos atributos de los archivos, como los permisos. Si luego desea regresar el archivo a su mquina linux, o desea pasar a otra mquina linux, es recomendable usar el comando tar que guarda en un archivo todos los atributos y permisos. Revise el comando tar. 7. Las memorias flash generalmente se activan automticamente (servicio autofs) y quedan dentro de la carpeta /media o aparecen en el escritorio del usuario. 8. Antes de retirar una memoria flash o disquete, debe DESMONTARLO o EXPULSARLO. En linux se conoce como DESMONTAR, con el comando umount (no, no falta la letra n, no es unmount sino umount por ejemplo umount /media/flash_ro 9. Algunos directorios equivalentes entre Linux y Windows / equivale a \ /bin equivale a \Archivos de programas y \windows\system32/home equivale a \Documents and Settings /home/ricardo equivale a \Documents and Settings\Ricardo /root equivale a \Documents and Settings\Administrador\Mis documentos /root/Desktop equivale a \Documents and Settings\Administrador\Escritorio

El resto de directorios no tienen una equivalencia precisa.

BASH Es un shell, o consola, muy popular en el ambiente linux, de hecho ser el que estudiaremos y mantendremos usando durante todo el curso. Aunque existen otros shells, no es el objetivo aprender caractersticas y diferencias entre estos, sino mejor dirigirnos a aprender el uso del bash que por su popularidad es bsicamente el estndar a usar entre todos los shells que existen para linux. Estos comandos son muy comunes a sistemas unix y linux, por lo que si se conocen comandos de unix o se conoce el manejo de otros shells, el usar el bash ser una labor muy fcil. Una gua mucho ms completa de manejo del shell la podemos encontrar en: www.ernestoperez.com Atajos: antes de comenzar, queremos indicarles de ciertos atajos muy tiles para el bash, que pueden ayudar a mejorar el rendimiento y la rapidez conque hagamos tareas en el shell. Bash es conocido por algo que llaman autocompletion, o auto completamiento, no tenemos que escribir completamente un comando o un directorio, sino que sencillamente lo podemos completar con la tecla <TAB>. Por ejemplo si quisieramos ejecutar el comando dos2unix (comando utilizado para convertir ficheros textos de DOS a ficheros textos de unix) podramos hacerlo tecleando completamente todos sus caracteres (desde la d de dos hasta la x de unix) pero tambin podemos usar un atajo, esto es escribir slo los primeros caracteres y despus apretar <TAB>, por ejemplo:
dos2<TAB>

De esta forma se nos completara la cadena completa (dos2unix). Lo mismo ocurrir cuando nos queremos cambiar de directorio, por ejemplo supongamos que queremos cambiarnos a /var/spool/mqueue es un directorio un poco largo de teclear y puede inducirnos a errores por desconocimiento o sencillamente por haber tecleado mal. A muchas personas le ocurre que en vez de poner spool ponen por error spoll o cualquier otra variante lo que conducir a que no podamos entrar a ese directorio, nos falle, nos inquietemos, nos desesperemos porque no existe ese directorio, hasta hallar que en realidad es cierto el directorio ni existe ni es el que queramos acceder pues lo hemos escrito mal. Cmo evitar esos malos entendidos? Sencillamente:

cd /va<TAB>sp<TAB>mq<TAB>

Es decir, con slo describir las dos primeras letras (va, sp, mq) y apretar TAB inmediatamente despus, he logrado cambiarme de directorio adems que el shell se ha ocupado por mi de escribir correctamente el nombre del directorio. Esto nos acelera el proceso de entrar a un directorio o ejecutar un archivo, y adems nos evita confusiones sobre nombres. En caso de existir ms de un directorio o archivo con los mismos caracteres iniciales, podemos presionar TAB dos veces y nos dir las alternativas que tenemos, por ejemplo pongamos:
[root@eperez ~]# dos<TAB><TAB> dos2unix dosfsck [root@eperez ~]# dos

Nos dar posiblemente dos opciones: dos2unix y dosfsck, es decir dos comandos que comienzan con dos, podemos entonces diferenciarlos escribiendo la siguiente letra (por ejemplo 2) y apretando <TAB> de nuevo, esto nos llevar al comando que queremos. Otros atajos son el ctrl E y ctrl A, ^a nos lleva al inicio de una lnea que estamos escribiendo de forma tal que no tenemos que ir con el cursos poquito a poco hasta el inicio sino que podemos apretar ^a y listo. ^e por el contrario nos lleva al final de una lnea si necesitamos seguir agregando. TAREA: Probar creando una linea cualquiera (con su nombre por ejemplo) y apretando ^a y ^e Otros shortcuts muy importantes: ^c : Detiene, para, elimina de memoria un programa que estemos ejecutando en el shell ^l : limpia la pantalla ^d : permite la salida del shell actual (cierra la sesin) Copiar, mover, renombrar, borrar: Los comandos son muy simples y parecidos en su sintaxis. Para copiar un archivo de un lugar a otro podemos hacerlo con cp
cp /etc/resolv.conf /root/

Esto mover el archivo resolv.conf que est dentro de /etc hacia el directorio /root (el directorio home del administrador) Tambin existe la variante de copiar hacia el directorio donde estoy (directorio actual) descrito por el signo de .
cp /etc/resolv.conf .

Copia resolv.conf que est en /etc hacia aqui (.) Para mover, se usa el comando mv, con la misma sintaxis del anterior:
mv /root/resolv.conf /varEsto

es, mueve el archivo resolv.conf que est en /root

hacia /var

cuidado con el comando mover, pues si movemos de lugar algo dentro de /etc podemos daar el arranque del sistema!!!!!!! Para renombrar podemos usar el mismo comando mv pero dndole otro nombre:
mv install.log milogdeinstalacin

por ejemplo esto movera un archivo llamado install.log hacia otro llamado milogdeinstalacion lo que es lo mismo que renombrarlo (fjense que el movimiento fue dentro del mismo directorio). Para borrar muy sencillo igualmente, podemos ejecutar rm
rm milogdeinstalacion

borrara el archivo que acabamos de renombrar. De ser posible traten de no borrar nada mientras prueban, para evitar que se dae el sistema. Si queremos borrar un directorio recursivamente podemos usar:
rm -Rf directorio/

Esto borrar todo el directorio y los archivos y directorios que estn dentro de l. ls: permite listar contenidos de un directorio ls -l permite listar contenidos de un directorio y mostrar informacin del propietario, tamao del archivo fecha de creacin y otra informacin de ejecucin:
ls -l /etc

listara contenidos extendidos del directorio /etc cd : me permite cambiarme de directorio


cd /etc

me cambiara a /etc
cd

as slo, sin ningn parmetro adicional nos llevar al directorio home del usuario que estemos usando, en este momento estamos usando root, por lo tanto nos llevara a /root
cd -

nos permitir ir al directorio inmediato anterior donde hemos estado Para conocer el directorio actual, podemos usar el comando pwd (no lleva parmetros)
[root@eperez ~]# pwd /root

Para crear un directorio podemos usar mkdir, y para borrarlo rmdir


mkdir test rmdir test

El primer comando crear el directorio test y el segundo comando lo borrar.

rmdir no borra un directorio si no est vaco, por lo que preferimos la opcin anterior (rm -Rf) Para conocer el espacio disponible en disco, podemos usar df, este nombre viene de "disk free" o disco libre. El switch -h representa los valores en formatos legibles para el humano (en megabytes, gigabytes).
[root@eperez ~]# df -h Filesystem Size /dev/hda3 8.6G /dev/hda1 99M /dev/hdd2 7.5G none 221M Used Avail Use% Mounted on 5.1G 3.1G 63% / 8.3M 86M 9% /boot 6.8G 364M 95% /home 0 221M 0% /dev/shm

En este ejemplo la particin / (/dev/hda3) tiene 8.6 gb de tamao de los cuales estoy usando 5.1G y libres 3.1GB para un 63% de uso. /home (/dev/hdd2) est hsando 6.8GB de los 7.5gb mximos que tiene. nos da una idea completa de todos nuestros filesystems y su nivel de uso. Intentar sin la -h (slo poniendo df) ver que los numeros se representan en k y son ms difciles de comprender. du -h nos permite ver el uso detallado dentro de un directorio, por ejemplo: du -h /usr nos listar detalladamente el uso de espacio en disco de cada directorio dentro de /usr, hemos puesto el ejemplo de /usr porque es un ejemplo bien largo como vern. Para reducir el detalle del comando du, podemos especificarles la profundidad mxima que queremos que nos detalle, por ejemplo:
[root@eperez ~]# du -h --max-depth=1 /usr 95M /usr/include 368K /usr/local 19M /usr/libexec 1.3M /usr/kerberos 86M /usr/java 21M /usr/sbin 104M /usr/bin 1014M /usr/lib 1.1G /usr/share 8.0K /usr/etc 8.0K /usr/games 34M /usr/src 88M /usr/X11R6 2.5G /usr

Vern que tenemos un detalle de cada directorio dentro de /usr, pero resumido slo a un directorio de profundidad, y al final tenemos el uso real de /usr que es en mi caso de 2.5GB. Paginadores un paginador es un comando que nos permite ver un archivo una pgina a la vez.

Por ejemplo, el comando cat no es un paginador, pues nos mostrar un archivo en toda su extensin (recuerden usar el <TAB>):
cat /etc/protocols

Nos dar un listado grandsimo de los protocolos que conoce nuestro servidor (numeros de puerto - protocolo) pero no nos dejar prcticamente ni leer. A veces cuando el archivo es pequeo (menos de una pgina) conviene usar el cat. Pero si queremos leer con detenimiento podemos usar:
more /etc/protocols

more es un paginador antiqusimo y conocido, nos permitir movernos con espacio de pgina en pgina. Con q podemos salir del archivo que estamos visualizando. Otra opcin, mucho mas preferida por m es less, less (el antnimo de more) nos permitir paginar igualmente y podremos movernos con espacio hacia abajo. Y podemos salir con q, pero adems nos permite: G: ir al final del archivo g: ir al inicio del archivo 15G: ir a la lnea 15 del archivo (en vez de 15 puede ser cualquier numero) /texto : permite buscar texto dentro del archivo, yendo desde donde estamos posicionados hacia abajo / : permite buscar el mismo texto anterior (es decir no especificamos cadena de bsqueda por lo que busca nuevamente la bsqueda anterior). ?texto : busca desde donde estamos hacia arriba el texto ? : sigue buscando la siguiente ocurrencia del texto anteriormente buscado. !cmd : ejecuta cmd, por ejemplo !ls ejecutara un ls en el shell pero se mantendra en el comando less sin salir F : hace un poll, es decir una bsqueda de nuevas adiciones al final de un archivo, es muy til cuando estamos viendo archivos de logs que estn creciendo continuamente, podemos ver qu va sucediendo interactivamente. w : sube una pgina ESPACIO: baja una pgina v : llama al editor vi dentro del mismo less y permite editar cualquier archivo. Nos permite tambin ver directamente archivos comprimidos sin tener que abrirlos previamente. Bsquedas dentro del rbol de directorios. Para este objetivo podemos usar dos comandos, el primero find, es muy lento porque hace bsquedas en vivo dentro del rbol de directorio, pero es muy efectivo ya que nos da informacin real al momento de la ejecucin:
find /etc -name "host*" -printEsto

lo que hara sera encontrar dentro del directorio /etc todos los archivos que contengan la palabra host* e imprimir esta info.
find /usr -name "*bin*" -print

encontrara cualquiera que tenga bin (cualquier cosa delante y detrs) dentro de /usr El otro comando muy fcil es locate, permite hacer bsquedas dentro de una BD

generada en cada madrugada. Esta bsqueda es extremadamente rpida, pero como la BD se genera en la madrugada, puede ocurrir que algunos archivos no aparezcan o aparezcan pero ya no existan.
locate dos2unix

buscara cualquier referencia a dos2unix Si quisiramos actualizar la BD con la informacin al momento actual, podemos ejecutar: updatedb y esperar un tiempo a que actualice, si el filesystem contiene muchos archivos demorar algunos minutos u horas Directorio /proc Este directorio contiene muchsima informacin que podemos leer y hasta escribir para mandarle mensajes al kernel, o para obtener informacin del kernel. En /proc se listan diferentes aspectos del sistema como la memoria o procesadores, los dispositivos usb activos y tambin informacin sobre todos y cada uno de los procesos del sistema (son esos numeros que se ven si listamos /proc) Algunos datos interesantes que podemos obtener:
cat /proc/meminfo

nos indicar variada informacin sobre la memoria del sistema (RAM y virtual) informacin que tambin podemos obtener con el comando free de una forma muy resumida.
[root@eperez ~]# free -m total used cached Mem: 440 433 127 -/+ buffers/cache: 233 Swap: 509 0 free 6 207 509 shared 0 buffers 72

en este caso free me indicara que tengo 440mb de memoria de los cuales se estn usando 433 y efectivamente quedan libres 6 megas. Pero que de esos 433 megas en uso, 72 se estn usando para reas de intercambio y 127 es memoria de cach con actividad reciente para no tener que acceder al disco, lo que significa que esos 72+127megas son descartables por el sistema para cualquier uso que amerite (233megas) y en realidad el sistema tiene una necesidad de memoria que al momento asciende a 207mb los cuales s no son descartables (es decir, esa es la memoria realmente requerida por el sistema). /proc/cpuinfo nos indicar la cantidad de procesadores que tenemos (comenzando por el procesador 0) y adems nos dir la marca del procesador y la velocidad a que est corriendo as como cierta informacin adicional sobre este procesador. En mi caso:
[root@eperez ~]# cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 8

model name : AMD Sempron(tm) 2400+ stepping : 1 cpu MHz : 1666.982 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow bogomips : 3268.60

Es un procesador sempron 2400+, que la cpu corre a 1666mhz y tiene una cantidad de bogomips equivalente a 3268.6 bogomips es una forma que tiene el kernel de determinar mediante una medida no cientfica la velocidad de un procesador al momento de bootear, mediante lo que llaman un loop ocupado. Bsicamente es la cantidad de millones de veces por segundo que un procesador puede estar sin hacer nada. En mi caso uso mucho los bogomips para comparar qu tan lento o rpido es un procesador con respecto a otro, sin importar los valores que digan los fabricantes.. es el bogomip para mi una de las herramientas de medicin ms fuertes. Apagado y reinicio de la mquina Todos estos comandos ayudan a un reinicio o apagado correcto de la mquina, es decir, no slo la reinician sino que se ocupan de cerrar todos los archivos y bajar todos los procesos de la mquina as como de intentar desmontar las particiones que tengamos montadas antes de proceder a apagar el servidor o de reiniciarlo. Para reiniciar la mquina tenemos varias alternativas: El comando
reboot

cerrar todas las aplicaciones y proceder a reiniciarla.


shutdown -r now

har igual trabajo O sencillamente desde el ambiente de texto podemos apretar: CTRL-ALT-DEL y se proceder a reiniciar la mquina. Para detener la mquina sin reiniciar podemos usar:
shutdown -h now

que detendr la mquina sin apagarla. o mucho ms fcil:

halt

que detendr la mquina despus de haber bajado todos los procesos. Ninguno de los procesos anteriores apaga la mquina, sencillamente descargan el sistema operativo pero el hardware sigue encendido. Si nuestra mquina lo permite, podemos apagar una mquina despus de haber detenido al sistema operativo, esto se hace sencillamente con el comando:
poweroff

apagar la mquina al final del proceso. El editor vi fue el primer editor de pantalla completa para los sistemas Unix. Es simple, pequeo y elegante. En las tareas de administracin del sistema es muy empleado. Basado en los mismos principios que otras aplicaciones Unix, vi no incluye su propio revisor ortogrficos, o formateador de textos, pero existen otros programas que lo realizan, los cuales pueden ser usados dentro del vi, con lo que se logra interactuar con otras aplicaciones para tener la funcionalidad que se requiera.

Inicio de vi
Para usar el editor con algn archivo que se desee crear o modificar se deber teclear vi archivo $ vi prueba 1.Observa que en la pantalla aparece el cursor en la esquina superior izquierda y en la parte inferior una columna de caracteres , los cuales nos indican que estamos en el fin del archivo. Anota y explica lo que aparece en el rengln inferior "prueba" [noeol] 4L, 12C indica el numero de lines y caracteres que contiene el archivo. NOTA: Antes de continuar, revisa el tema de Guardando archivos y saliendo del vi

Insertando texto y movindose


Mientras se esta usando vi, en algn momento se esta en uno de los siguientes tres modos de operacin: modo comando, modo edicin (se muestra en la lnea inferior del lado izquierdo -- INSERT --) y modo extendido que se inicia al teclear :. Despus de que se inicia, se esta en el modo comando, en este modo se permite que se use un determinado nmero de comandos (usualmente de una sola letra) para modificar el texto. Para insertar texto y modificarlo se requiere estar en el modo edicin. 2.Para iniciar la insercin de texto teclear i y teclear lo siguiente: Ahora es el momento para que todos hombres buenos vengan ayudar a la fiesta.

Mientras se esta insertando texto, se pueden teclear tantas lneas como se desee (presionando la tecla Retorno) y corrigiendo errores usando la tecla retroceso. Para finalizar el modo edicin y regresar al modo comando, presiona la tecla ESC. Estando en el modo comando, se pueden usar las teclas con flechas para moverse en el archivo, o tambin se pueden usar las teclas h, j, k, l, que mueven el cursor a la izquierda, abajo, arriba y derecha respectivamente. 3.Existen otras formas de insertar texto. El comando a inserta texto despus de la posicin actual del cursor. Mueve el cursor hasta que quede entre las palabras todo y hombres, presiona a y teclea los , y despus presiona ESC para regresar al modo comando. 4.Para insertar una lnea abajo de la actual, usar el comando o. Presiona o y teclea lo siguiente: Despus iremos por piza y helado. Si no se sabe en que modo se esta se puede presionar ESC para salir del modo edicin y regresar al modo comando, si ya se estaba, entonces no hace nada y pita.

Borrando texto y deshaciendo cambios.


5.Desde el modo modo comando, la x borra el caracter donde esta situado el cursor. Anota lo que tienes que hacer para borrar la palabra helado incluyendo el espacio y el punto. RESPUESTA: tecleando 7 veces x 6.Anota lo que debes hacer para agregar al final de la segunda lnea el texto refresco diettico. colocando el cursor en lugar deseado y presionando "a" 7.Se pueden borrar lneas enteras usando el comando dd (se debe presionar dos veces d en un rengln). Anota la forma de borrar la segunda lnea. RESPUESTA: Teclendo dd 8.El texto que ha sido borrado puede ser reinsertado usando el comando p. Presiona p para poner la lnea borrada despus de la lnea actual. Usando P se insertar el texto antes de la lnea actual. Anota de que forma mueves la primer lnea al final. RESPUESTA: tecleando dd en la primera linea y despue el comando p 9.El comando u deshace los ltimos cambios y con CTRL-R se puede rehacer. Presiona varias veces hasta que se regrese al estado que se tena inicialmente en el punto anterior. 10.Para borrar una palabra debajo del cursor, se debe usar el comando dw. Coloca el cursor en el principio de la palabra diettico, y anota cuantas veces diste el

comando dw para borrar toda la palabra. RESPUESTA: 2 veces

Cambiando el texto
11.Se reemplaza texto usando el comando R, el cual sobreescribe el texto comenzando a partir de donde esta el cursor. Coloca el cursor en la primera letra de piza, presiona R y teclea hamburguesas y papas. Observar que se queda en modo edicin, por lo que para regresar debers teclear ESC El comando r reemplaza por un slo caracter debajo del cursor. Este comando no se queda en modo insercin, por lo que no se requiere usar ESC para regresar al modo comando. 12.El comando ~ (en un teclado en espaol presionar AltGr-4) cambia de minscula a mayscula o viceversa la letra que en donde esta el cursor. Cambia la palabra hamburguesas a maysculas. Otro comando til para cambiar palabras es el comando cw, que permite ingresar una nueva palabra y -despus de presionar ESC- borrar el resto que pudiera quedar de la palabra original.

Comandos para moverse


El comando w se usa para mover el cursor a la siguiente palabra; b mueve al principio de la palabra actual o de la palabra anterior si ya estaba al principio. El comando 0 (cero) mueve el cusor al principio de la lnea actual, y el comando $ lo mueve al final. Para moverse una pantalla hacia adelante o hacia atrs en el archivo presionar CTRL-F y CTRL-B respectivamente. Con el comando CTRL-G se puede mover al final del archivo. Tambin se puede mover a una lnea arbitraria si primero se da el nmero de lnea y luego el comando, por ejemplo, 10G, mover el cursor a la lnea 10 en el archivo. Para moverse al principio del archivo, qu se deber teclear? Tecleando / seguido de un patrn y retorno se logra pasar a la primera ocurrencia en el texto despus del cursor. Usando ? se hace hacia atrs. Se pueden acoplar comandos de movimiento con otros comandos, tales como borrado. Por ejemplo, el comando d$ borrar todo desde el cursor hasta el final de la lnea; dG borra todo desde el cursor hasta el final del archivo.

Guardando archivos y saliendo del vi.


Muchos de los comandos relacionados con archivos son invocados en el modo extendido. Se entra al modo extendido cuando se presiona :, con lo que se coloca el

cursor en la ltima lnea de la pantalla, permitiendo que se ingresen varios comandos extendidos. Por ejemplo, para guardar un archivo que esta siendo editado, se usa el comando :q. El comando :wq escribe y sale del vi (el comando ZZ es el equivalente). Para salir del vi sin guardar los cambios en el archivo, usar el comando :q!.

Edicin de otro archivo


Para editar otro archivo, usar el comando e:. Por ejemplo para terminar de editar prueba, y editar el archivo otro, se tecleara e otro Se pueden incluir otros archivos en el archivo actual usando el comando r:, por ejemplo si se tiene creado un archivo otro y estamos en prueba, se puede teclear :r otro para insertar el contenido a partir de la lnea actual.

Ejecucin de comandos
El comando :! permite poner el nombre de un comando, el cual es ejecutado dentro del vi. 13.Teclea lo siguiente :! ls -F y anota lo que se sucede. RESPUESTA: aparece todo lo que se ha realizado en el grafico El comando :r ! es similar al anterior, pero incluye la salida estndar del comando en el buffer. 14.Anota lo que sucede al teclear : r! ls -F RESPUESTA: se copiaran los contenidos del comando dentro del archivo que estamos editando.

Bsqueda y reemplazo
El comando: :[x,y] s/patrn/reemplazo/banderas busca el patrn entre las lneas x y y en el buffer, y reemplaza con el texto reemplazo. El patrn es una expresin regular, reemplazo es un texto literal, pero puede contener caracteres especiales para referirse a elementos del patrn original. El siguiente comando reemplaza las primeras ocurrencias de pez por peces desde la lnea 1 hasta la 10: :1,10 s/pez/peces

En vez de dar un nmero, se puede usar el smbolo % para referirse a la lnea entera, y $ se refiere a la ltima lnea. Otros editores Aunque no recomendamos el uso de otros editores, porque el vi es un estndar casi universal en el mundo de linux, les indicamos algunas variantes para usar:

nano pico joe

Estos tres son otros editores muy usados, pero repetimos nuestra advertencia, podrn parecer fciles pero puede que no existan en todos los sistemas unix que tengamos que trabajar, lo que nos podra hacer pasar un apuro de no existir. Sin embargo el vi SIEMPRE estar presente en cualquier sistema unix por lo que es casi de uso obligatorio el aprender comandos para manejarlo. Para instalar el centos, normalmente requerimos tener los 4 discos de instalacin. El 1 es el ms usado, pero en dependencia de las opciones que escojamos puede que necesitemos algunos paquetes de los dems discos. Lo primero que hay que hacer para instalar el centos es configurar el BIOS de nuestra mquina de forma tal que este permita bootear y arranque desde el CDROM de nuestra mquina. Al terminar de indicarle al BIOS que el primer dispositivo de arranque es el CDROM, insertamos el disco 1 de centos y veremos la siguiente pantalla: Bsicamente lo que nos indica es que para comenzar a instalar en modo grfico, presionemos enter. Adems nos indica que para arrancar en modo texto escribamos: linux text y presionemos enter. Arrancar en modo texto es muy til porque a veces la tarjeta de video de nuestra mquina no es muy compatible con el sistema grfico de instalacin y falla este sistema, pero podemos usar perfectamente el instalador en modo texto y culminar el proceso. La gran mayora de las veces, aunque instalemos en modo texto, el ambiente grfico funcionar de maravillas y sin mayor inconveniente. Es slo que el sistema grfico del instalador es muy simple y a veces no detecta bien las tarjetas de video. Si deseamos ver ms opciones de instalacin o trabajo con el CD podemos apretar F2 y analizarlas, no es mi inters verlas ahora. Procedamos a presionar ENTER y el sistema comenzar a cargar un kernel bsico que viene en el cd de instalacin que se ocupar de probar los dispositivos que tengamos en nuestro hardware.

Posteriormente nos sacar una pantalla la cual nos da la opcin de probar los CDs que tenemos para verificar que no existan errores al haberlos quemados. Yo sugiero al menos una vez, la primera vez que usemos los cds para instalar, que verifiquemos estos. Pues as podemos estar seguros de que estn bien quemados. Si la verificacin fallase, debemos inmediatamente quemar otro cd en reemplazo de ste que fall pues es casi totalmente seguro que nuestra instalacin en algn momento dir que el cd est malo y se negar a proceder, hacindonos perder tiempo y dejndonos un sistema a medio instalar. Si ya sabemos que nuestros cds estn bien quemados (sugiero quemarlos siempre a 4x pues a ms velocidad fallan ms) entonces podemos apretar en el botn de skip, lo cual saltar el proceso de verificacin. Hagamos Ok y verifiquemos el cd 1, una vez hagamos ok, nos dar dos opciones: Test, para probar el cd que tenemos insertado (el 1) y Eject para sacar este cd y poner otro para ser probado. el orden de los CDs no importa, el instalador se d cuenta de qu CD es el que est insertado y los verifica en cualquier orden. Ok, presionemos en text (con espacio o con enter) Comenzar a correr un termmetro (en ambiente de texto todo todava) que nos indicar cmo va el proceso, debe avanzar poco a poco, rpido o lento segn el lector del cd y segn si el cd est daado o no: Al final, cuando acabe de probar el disco, nos emitir un resumen en el que nos indicar si l considera que el disco est bueno (PASSED) o fall (FAIL), en mi caso pas como podemos ver: Al apretar en ok, nos sacar el CD del lector para darnos la oportunidad de probar el segundo, tercero y cuarto. Al finalizar el proceso de verificacin de los 4 CDs, podremos tener la certeza de que este lector s lee bien los 4 cds y que seguramente la instalacin nuestra no fallar por problemas fsicos en un disco. Si un CD fallara dira un mensaje como este (en este caso es de un CD numero 2 que fall): Si ocurriera algo as, tendramos que volver a quemar y verificar nuevamente el disco 2 (el nuevo disco quemado) para estar seguros de que podemos continuar con todos los discos buenos.

Una vez todos estn bien, podemos entonces poner el CD 1 nuevamente en el lector y apretar continuar. Para entonces s comenzar con la instalacin Despus de unos breves segundos en el que el instalador comenzar a cargar el servidor grfico y dems drivers y nos mostrar la pantalla de bienvenida: Si no cargara esta pantalla o se demorara mucho tiempo sin mostrarla o fallara y reiniciara la mquina, entonces debemos valorar comenzar a instalar en modo texto. Los textos sern muy similares a los que veremos aqui slo que sera en modo texto y no grfico. Bsicamente a la izquierda tenemos una pequea ayuda o informacin sobre cmo operar el sistema. Tenemos un botn debajo que dice Hide Help para ocultar este recuadro de ayuda y otro que dice Release Notes para ver las notas adicionales que redhat/centos han liberado sobre esta instalacin. Lo que ms nos interesan son los botones de Back (deshabilitado pues es la primera pantalla) y next, para proceder. Siempre recomiendo leer bien todos los mensajes de cada pantalla pues ellos nos indican cmo debemos proceder. En caso de tener algn error anotarlo completamente para poder preguntar a quien nos pueda ayudar. En el caso de que estemos instalando rhel, veremos los logos y textos de redhat, pero el proceso de instalacin ser exactamente igual al que estamos viendo aqui. Apretemos Next, para ir navegando entre las diferentes pantallas y las iremos explicando. La primera pantalla que aparece nos pedir en qu idioma deseamos que el instalador nos muestre los mensajes y opciones. Yo sugiero que ingls ya que el ingls est completo y puede que en otros idiomas no aparezcan los textos correctamente traducidos o aparezcan en ingls (no estarn traducidos del todo) A propsito, sta pantalla que vemos no es la nica que levanta linux a la hora de instalar. Linux tiene mltiples consolas las cuales usa durante la instalacin para mostrar diferentes mensajes relacionados con diversas etapas o pasos que est siguiendo. La consola grfica es en la que estamos en este momento y si nos furamos de ella podremos regresar presionando ALT F7 Para ir a otras consolas podremos presionar CTRL ALT F1 y ahi nos movemos a la primera consola de texto, no se pierde la posicin de la consola grfica, slo que se cambia de consola. Y as podemos usar hasta la F4
La pantalla de texto inicialConsola

ALT F2CTRL ALT F1

Nos muestra Nos ofrece un shell por si acaso necesitamos trabajar en un shell

ALT F3 ALT F4 ALT F7


Ambiente grfico

Nos indica los mdulos insertados as como los pasos del instalador por donde vamos. Mensajes relacionados con el kernel

Linux es un sistema operativo cuya lengua franca es el ingls y la enorme cantidad de informacin que tendremos ser en ingls. En caso de usted haber pasado ingls por la universidad pero el ingls no haya pasado por usted sugiero tomar un curso de ingls con cualquier centro que lo ofrezca para mejorarlo pues les indico desde ya que es sumamente importante el conocer este idioma. Pero bueno, en caso de que conozcamos rabe, francs, espaol, italiano, portugus, podremos pedirle al instalador que nos hable en esos idiomas. Por mi parte lo dejar en ingls: La siguiente pantalla es relativa al tipo de teclado que nosotros tenemos. En mi caso es un teclado en ingls (lo prefiero porque en linux se usa mucho el / y en el caso de teclados en ingls el / queda abajo a la derecha y no requiere del uso de shift como el teclado en espaol).

Como deseo que el teclado me permita imprimir acentos, le indico que es United States International. As podr escribir acentos y dems caracteres internacionales. Por supuesto, siempre debemos escoger el teclado adecuado en nuestro ambiente, Latin American, Spanish, pueden ser opciones vlidas para nosotros en caso de que tengamos la suerte de tener teclados en espaol con distribucin latinoamericana. A propsito, las diferencias entre un teclado latinoamericano y espaol son muy sutiles, y para el caso de linux es indispensable no equivocarse o sufriremos de un teclado mal configurado puesto que estos teclados difieren en la posicin del @, | entre otros caracteres muy usados en el mundo de linux. Al acabar de escoger el teclado, linux proceder a buscar instalaciones de centos previas (centos 3, rhel2.1, o rhel3, rhel2.1) y de estar presentes el instalador de centos nos ofrecer actualizar estas versiones. En el caso de que no existan instalaciones previas de rhel o centos se nos ofrecern 4 modos bsicos de instalacin: En general estos modos le harn saber al instalador cules son los paquetes que posiblemente necesitemos para nuestro trabajo en esta mquina. Por supuesto que posteriormente podremos escoger ms o menos paquetes, pero ser una gua general y bastante precisa de los paquetes que requeriremos. Estos modos son:

P Modo a r a u s a r l o c o m o s i s t e m a d e o f i c i n a , o f f i c e , a m b i e n t e g

Utilidad fundamental

De todas las formas de instalacin, sugiero siempre se use el modo servidor, si es que vamos a instalar un servidor para trabajar. Pero en el caso de este curso, sugiero usemos el modo desktop, para contar con herramientas de compilacin adems del ambiente grfico y a medida que lo necesitemos iremos instalando los demonios requeridos por el sistema. Particionamiento del sistema El particionamiento es una de las cuestiones ms importantes a la hora de instalar un sistema, sin un correcto particionamiento seguramente presentaremos muchas dificultades en el futuro. El instalador de CentOS ofrece dos modos de particionamiento, automtico y basado en l disk druid. No sugiero hacerlo automticamente sino de forma manual (disk druid). El particionamiento es un tema esencial a la hora de instalar y aqui indicaremos algunos factores a tomar en cuenta a la hora de particionar. Sin embargo siempre debe tenerse en cuenta las caractersticas propias de la instalacin que se est haciendo y lo que requerir la empresa o lugar donde estemos instalando. El particionamiento es til por diversas razones como por ejemplo: 1. Permite permite controlar que un disco no se llene completo, si por casualidad un proceso comienza a escribir descontroladamente a disco, solamente podr llenar la particin hacia donde escribe, mas no podr llenar el disco completo. La particin / requiere siempre de tener espacio disponible, si no particionramos correctamente podramos llenar / y por lo tanto dejar el sistema sin funcionar. 2. Si un pedazo del disco se daara, muy posiblemente el resto podr ser todava utilizado y recuperado. Por supuesto un disco daado requiere de una migracin inmediata hacia otro disco. Pero no es lo mismo perder la nica particin que tenemos a perder slo una de las varias. 3. Posteriormente estudiaremos seguridades al sistema concebidas para trabajar con particiones. Sin un correcto particionamiento no podramos implementar estas seguridades. Bsicamente nosotros preferimos particionar el disco en al menos 6 reas que sern usadas para montar los directorios:

/boot /usr /home /var / SWAP

Aqu detallar los por qus de cada tamao segn su punto de montaje:

/boot:

Es en la particin /boot donde el sistema operativo linux guarda todos los kernels instalados en el sistema. En efecto, cada mquina puede tener varios kernels para bootear, la razn ms comn es porque son kernels viejos que linux va dejando como copias de seguridad. La arquitectura para PC slo permite bootear un sistema operativo cuyo kernel est localizado dentro de los primeros 1024 cilindros, y es por esto que el lugar donde est el kernel debe estar localizado lo ms prximo al inicio del disco, para que siempre caiga en los primeros 1024 cilindros. Seguramente uds se han preguntado alguna vez: Por qu windows funcionaba normalmente y hoy no arranca? Bueno, en realidad windows es un sistema operativo muy inestable, pero una de las razones ms frecuentes (pero poco conocidas) es que posiblemente el kernel de windows fue actualizado "ayer" (actualizaciones de windows) pero este nuevo kernel por alguna razn qued por encima de los 1024 cilindros, lo que hace que al siguiente da cuando encendamos la mquina, sta se niegue a arrancar el sistema operativo. Es una razn muy comn y definitivamente por esta razn debemos asignarle a /boot la primera particin posible, y el tamao recomendado para RHEL4 es de 100MB con esto bastar para guardar al menos unos 30 kernels diferentes. La realidad es que el kernel de linux se actualiza pocas veces en el ao.. y a medida que se estabiliza el sistema se actualiza menos, por lo que sobrar espacio. Resumen: /boot debe ser forzada a ser primaria y debe tener 100MB

/usr
Es un rea del sistema donde se almacenan gran cantidad de binarios que vamos instalando con el tiempo, aplicaciones de todo tipo, ayudas, etc. Por lo tanto debe tener un tamao considerable de acuerdo a las instalaciones que haremos. Yo siempre le asigno al menos 2GB, pero de ser posible le asigno mucho ms espacio (digamos 10GB o ms). Resumen: /usr debe tener al menos 2GB, de preferencia 10GB o ms. En dependencia del tamao del disco.

/home
Directorio del sistema donde se guardan todos los directorios de usuario tambin conocidos como directorios home de los usuarios. En caso de que tengamos un sistema personal, posiblemente no sea necesario tener /home, en caso de que trabajemos para una empresa y cada usuario vaya a almacenar algn tipo de dato en /home, debemos asignar un valor apropiado. Comnmente se usa para guardar los mensajes de correo de los usuarios con el protocolo imap. Si usaremos IMAP para almacenar los mensajes de los usuarios en el servidor, debemos asignar a /home un valor apropiado para que TODOS los mensajes de los usuarios quepan, digamos 50GB, 80GB o ms.

Resumen: Si usaremos IMAP debemos asignarle un valor alto. Para este curso asignaremos 1GB para los efectos de probar. /var Directorio donde se almacenan los logs y la cach de algunos programas. Pero sobre todo es donde se almacenan los INBOX de todos los usuarios Muchas veces es necesario migrar entre una versin de Linux redhat y otra. A estos efectos redhat trae una utilera muy interesante y fcil de usar en su disco de instalacin. Al insertar el disco 1 de cualquier redhat, podemos escribir:
linux upgradeany

Y esto arrancar el instalador de redhat en modo de actualizacin. Se seguirn los mismos pasos iniciales, pero redhat intentar buscar una distribucin anterior de redhat y solicitar actualizarla. Al actualizarla, debemos verificar que esta instalacin no haya sido comprometida pues sino la actualizacin casi seguramente fallar. En cursos subsiguientes indicaremos cmo proceder a revisar contra ataques un sistema linux. El proceso de actualizacin es simple y claro, el instalador verificar si en efecto hay una instalacin anterior de redhat (centos o wbel) indicar algunas advertencias como que actualizar puede ser peligroso y algunas cosas pueden no funcionar, etc, etc y a la final proceder a obtener una lista de paquetes instalados y a actualizarlos con las versiones ms modernas, de ahi reinicia y listo. Bsicamente yo acepto todas las advertencias (Desea continuar? Respuesta: Si) y dejo todas las opciones que me pide por defecto. Es decir, no ando cambiando opciones por todas las pantallas. El proceso es rpido realmente y hasta el momento no me ha dado problemas. Aunque tcnicamente es posible actualizar de cualquier versin anterior de redhat hacia cualquier otra versin nueva, sin importar las fechas y numeros, nosotros no recomendamos que se actualice sin un previo anlisis. Aqu indicaremos una pequea ruta para realizar la migracin entre diferentes redhat para que esta sea lo ms fcil posible.
RH7.2-> RH7.3> RH8-> RH9-> RHEL3 RHEL3

grupootrosRHEL2.1

RHEL3-> rwx

RHEL4 r-w r-w

-> dusuarioSemana 2

2 Recuperacin del sistema operativo ante desastres. Manejo de usuarios y permisos, delegacin de tareas del superusuario y manejo de cuotas de disco.

Revisar un buen manual introductorio a la administracin de linux aqui Tipos de fallas Las fallas se pueden catalogar en 4 tipos fundamentales, es un tema muy bien estudiado y extendido en variados lugares, les sugerimos que revisen y analicen cada una de ellas aqui. Estas bsicamente son:

Fallas del hardware Fallas del software Fallas ambientales Errores humanos Planificacin ante desastres Es indudable que los

desastres existen, que los desastres no se pueden evitar mayormente, pero lo que s podemos hacer es prevenirlos, planificarnos para cuando ocurran poder tramitar rpidamente cualquier evento que ocurra. Para esto es muy importante mantener polticas de accin ante fallas, escribirlas, detallarlas y practicarlas en nuestra organizacin. Estas polticas son propias de cada una de las organizacion es por lo que no existe un procedimien do nico para trabajar. Estos estudios deben realizarse no slo para

nuestros servidores linux, van mucho ms all de un curso de linux y son un punto muy importante a tener en cuenta en una organizacin. Aqu listamos algunos sitios que nos pueden ayudar a analizar planificacion es ante desastres y sugerimos que como estudio independient e realicen un estudio completo de ellos: http://www.li nuxbackup.net/ http://www.d isasterplan.co m/

Linux Rescue En linux hay muchas ocasiones en que perdemos el arranque del sistema (por ejemplo si instalamos

windows despus de haber instalado linux), o que el sistema por alguna inexplicable razn se niega a levantar, normalmente porque hemos cambiado de discos o el disco de posicin. El primer CD de CentOS 5 (RHEL 5) es booteable, fue por esta va que realizamos la instalacin del sistema. Pero tambin este CD nos da una opcin muy muy til, que es la llamada linux rescue Esta opcin nos permite arrancar desde el kernel que est instalado en nuestro CD, y mediante un pequeo script de arranque, este CD ser

capaz de detectar las particiones de redhat (centos) que tengamos instaladas y las montar en el directorio: /mnt/sysimag e Una vez montadas, nos dar un shell, en el que podremos trabajar ms fcilmente. Nota: Al arrancar el linux rescue, hagmoslo con esta opcin completa para deshabilitar el selinux: linux rescue selinux=disab le De esta forma arrancaremo s el modo de rescate (rescue) pero con el ambiente de seguridad selinux deshabilitado , de lo contrario podremos

presentar problemas por ejemplo a la hora de intentar cambiar la clave. Al arrancar en modo rescue, nos preguntar si deseamos arrancar la red para este sistema, digamos que NO Despus nos indicar que si queremos que revise instalaciones de redhat hechas, digamos que SI... normalmente las encontrar y las montar en /mnt/sysimag e, de no poder montarlas igualmente proceder a darnos un shell para que hagamos lo que creamos conveniente. Una vez en el shell podemos usar algunos

comandos para manejar los discos. Estos pueden ser (Por favor no grabar nada, no usar de ser posible!): fdisk:

fdisk -l nos permitir ver las particiones y discos que tenemos instalados. fdisk /dev/xxx nos permitir acceder a un determinado disco para reparticionar lo, borrar particiones, analizar cualquier situacin relativa a particiones. Un ejemplo puede ser: fdisk /dev/hda El fdisk es sencillamente como en windows un comando que se usa muy infrecuentem ente, sobre todo para darle de alta (particionar) nuevos discos

o para revisar o corregir discos con particiones previamente creadas.

mkfs.ext3 nos permite formatear una particin que ya hayamos creado con el fdisk. Por ejemplo: mkfs.ext3 /dev/hda3 formatear la particin hda3 con el formato ext3. Si queremos usar otro tipo de formato podemos usar mkfs.ext2 Si deseamos chequear un filesystem determinado, podemos hacerlo sencillamente con el comando: fsck /dev/hda1 (o cualquier otra particin que requieramos) . Este es uno de los

comandos ms usados a la hora de usar el linux rescue, pues muchas veces el sistema falla por una cada desordenada y debemos realizar una revisin del FS. En efecto aunque el FS tipo ext3 es muy bueno recuperndos e, a veces hay que ayudarles a recuperarse. En caso de encontrar un error el fsck les preguntar qu hacer y les sugerir la variante ms conveniente, en todos estos aos de trabajo no hemos hallado ninguna razn por no decir que "yes" a la variante que presenten, por lo tanto cuando pregunte si aceptamos reparar o borrar algo,

sugiero siempre digan 'y'. Tambin se puede ejecutar el fsck -y /dev/xxx con el switch -y el sistema asumir que diremos s a todas las preguntas. Enjaulndon os en la particin original de redhat. Otra opcin que nos brinda el cd de arranque de redhat (centos) es que una vez que nos brinda el shell, tambin monta dentro del directorio /mnt/sysimag e todo el FS de nuestro servidor de la misma forma que se monta de forma normal. Slo que la raz del sistema original queda en /mnt/sysimag e, cul es el

objetivo de poner la raz del sistema original en otro directorio? bsicamente evitar que si los binarios del sistema original han sido cambiados por un atacante, podamos usar los binarios bsicos que nos brinda el cd de arranque. Ahora, si estamos seguros que no es un problema de un ataque, o si estamos sencillamente ante una situacin diferente a un ataque como por ejemplo: quisiramos cambiar la clave de root porque la hemos perdido o si queremos reinstalar el grub, o si en general necesitamos realizar reparaciones

que conocemos su alcance y sabemos que no es un ataque podemos enjaularnos en ese directorio para usar el arbol de directorio tal y como se usa en un sistema normal.

chroot /mnt/sysimag e Con este comando, logramos trasladar la raz de nuestro sistema hacia /mnt/sysimag e, de forma tal que caemos exactamente en el rbol de directorio de nuestro servidor. Una vez dentro de la jaula podemos proceder cambiar la clave de root, por ejemplo:

passwd o tambin

podemos editar /etc/passwd y eliminar la x que est en la segunda columna, esta es una forma un poco dura pero efectiva de eliminar la clave de root.

root:x:0:0:ro ot:/root:/bin/ bash podemos dejarlo as: root::0:0:roo t:/root:/bin/b ash De esta forma quitamos la clave a root y podemos bootear normalmente . Otra utilidad de enjaularnos en el sistema original puede ser la de reemplazar o sustituir un paquete rpm, por ejemplo un nuevo kernel o un kernel que sabemos que bootea, una vez aqui en el

shell podemos arreglarlo. Adems, si hemos perdido el grub (por ejemplo porque hemos instalado windows y windows siempre cambia el MBR y pone su propio loader) podemos hacerlo por esta va: /sbin/grubinstall /dev/hda Nos permitir reescribir el grub hacia el disco /dev/hda y restaurar todas las configuracio nes de ste. Reinstalar el grub es una accin poco traumtica pero que ocurre a veces, sobre todo cuando hemos instalado windows despus de haber

instalado linux.

Arrancando en modo single

El modo de arranque tipo rescue es muy bueno, pero a veces no tenemos que llegar a estos extremos, por ejemplo si slo requerimos un shell sin necesidad de escribir la clave de root podemos hacerlo llamando al kernel desde el grub pero con el comando single: 1. En el grub, presionar cualquier tecla para caer en el men de arranque 2. En el kernel por defecto, apretar la tecla a y escribir single 3. El sistema arrancar en modo monousuario y sin ambiente

grfico ni red, nos mostrar un shell desde el que podremos por ejemplo cambiar la clave de root o en general realizar cualquier tarea que no requiera o que no deseemos que tenga la red activa. 4.
5. Desactivar

SELinux Selinux como ya hemos hablado es un sistma de seguridad muy novedoso que ha implementad o redhat y otras distribucione s, sin embargo muchas aplicaciones no estn preparadas para trabajar con el selinux activado. Es por esto que a la hora de instalar Linux, recomendam os que desactivaran

el SELinux desde el mismo instalador. Sin embargo muchas veces nos topamos con sistemas previamente instalados por personas que no conocen mucho de estos detalles o sencillamente lo hemos dejado activado por error. Entonces nos queda la opcin de desactivar el selinux. Para esto, arranquemos en modo de rescate. Una vez dentro del sistema en modo rescate, procedamos a editar el archivo de configuraci n del selinux: 6. vi /mnt/sysimag e/etc/sysconfi g/selinux o si estamos en la jaula podemos hacer: vi /etc/sysconfig

/selinux 7. y veremos una opcin que dice: 8. SELINUX=e nforcing le podemos cambiar a: SELINUX=di sable 9. Y listo, el sistema a partir de que reiniciemos arrancar por defecto con el selinux deshabilitado lo que nos evitar problemas con el selinux. 10. 11. Chequeo de memoria Existen ocasiones en que dudamos de que la memoria est correctament e funcionando. Es por esto que requerimos de programas para verificar la memoria. El CD de arranque de Centos4 nos ofrece por defecto una aplicacin

muy sencilla pero muy conocida y poderosa que nos permitir revisar la memoria. Es un proceso muy lento, extremadame nte demorado, pero podemos tener la seguridad que si tras una hora de revisin de la memoria, habremos verificado que esta no tiene errores comunes y facilmente descubribles. Pero si queremos realizar un chequeo exhaustivo debemos dejar el sistema revisar la memoria por al menos 12 horas (una noche) y as tendremos la seguridad de que errores casuales o errores que no salen a la superficie con una sola

revisin pueden mostrarse al realizarse varios pases. El sistema se llama memtest86+ y lo podemos ejecutar desde el CD de instalacin de CentOS mediante: 12. memtest 13. Este sistema no permitir que nuestro servidor funcione normalmente , es decir, no se realizar otra actividad ms que el chequeo de memoria por lo que debe planificarse la revisin de la memoria para el momento que menos afecte el funcionamien to de ste. 14. 15. Siempre es importante, para lograr la estabilidad, realizar una buena planeacin del sistema

que vamos a correr, verificar que tengamos un sistema que sea actualizable durante largos periodos de tiempo, pues en las actualizacion es se corrigen una enorme cantidad de problemas que pueden causar desastres o situaciones definitivame nte evitables si tenemos un servicio que se puede actualizar. 16. Los usuarios en linux, se almacenan en el archivo /etc/passwd, que aunque su nombre lo indica, no almacena la clave de los usuarios, esta es almacenada en el archivo /etc/shadow La informacin que se guarda de cada usuario

en /etc/passwd es la siguiente: 1. userna me, 2. passw d (ya no se usa!) 3. UID, 4. GID, 5. nombr e del usuario (campo informativo), 6. direct orio base, 7. shell a ejecutar 8. La informacin que se guarda en /etc/shadow para cada usuario es la siguiente: 1. userna me, 2. clave encriptada, 3. da en que la clave fue cambiada por ultima vez, 4. das durante los que la clave no puede ser cambiada, 5. das a partir de que la clave tiene que ser cambiada, 6. das de advertencia de que la clave debe

cambiarse, 7. das despus de que la clave expir y se deshabilida la cuenta, 8. da en que se deshabilit la clave 9. De todos estos campos, los ms interesantes son el primero y segundo, que me permiten manejar la clave del usuario El proceso completo para la creacin de un usuario es el siguiente: 1. Se lee /etc/defaults/ useradd donde se lee fundamental mente el shell por defecto a asignar a los usuarios nuevos (/bin/bash) 2. Se crea un nuevo grupo en /etc/group con el nombre del usuario que estamos creando, este GID ser el que se

3.

4.

5.

6.

asignar en /etc/passwd Se crea una lnea en /etc/passwd donde se almacena el identificador de usuario (UID), el grupo primario del usuario (GID), el directorio raz, el shell que se ejecutar para el usuario Se crea una lnea en /etc/shadow donde se indicar el username y la clave en formato deshabilitado (!!), as como opcionalment e los tiempos de expiracin de las claves, etc. Se crea el directorio raz del usuario (usualmente / home/userna me) Posteriormen te se debe proceder a cambiar la clave del usuario por una vlida, y

se actualizar /etc/shadow con la nueva clave. Estas claves son encriptadas en una va, por lo tanto no se pueden obtener las claves intentando desencriptarl as. 7. Cmo agregar usuarios? el comando para agregar usuarios es useradd, este comando no le asigna clave a un usuario. 8. useradd eperez 9. Agregara el usuario eperez con el primer UID disponible. Le crea un directorio raz (/home/epere z) y le asigna el shell que est listado en /etc/defaults/ useradd Posteriormen te a agregarlo, debemos ponerle una

clave: passwd ernesto El sistema nos verificar que la clave no sea fcil de descubrir y le asignar esta clave al usuario para operar en todo el sistema. passwd se puede usar tambin para cambiar la clave de cualquier usuario desde root (passwd usuario) o cualquier usuario puede cambiar su propia clave ejecutando passwd Cmo borrar usuarios? 10. userdel -r usuario 11. el switch -r indicar que adems se borre el directorio de usuario, de lo contrario no lo borrara y nos podra dejar informacin inutil en

nuestro FS. Cmo cambiar informacin? Existe un campo de informacin sobre el usuario (nombre y dems) que se puede cambiar ejecutando: 12. chfn username 13. Esta informacin ya casi no se usa por nadie en sistemas linux, por lo tanto no hacemos mucho nfasis en ella. Cambiando el shell por defecto: Actualmente la mayora de los usuarios que se crean en un sistema linux son para que lo usen como un servidor de mensajera, esto es, los usuarios no acceden directamente al shell del sistema sino

que usan sus contraseas para leer los correos y/o enviarlos as como para potencialmen te hacer otras tareas como acceder via ftp. De los usuarios comunes que tendremos (nivel gerencial, secretarias, ingenieros de otras reas, etc) casi nadie conoce del uso del shell, por lo tanto no es necesario que tengan un shell. De esta forma nos ahorramos potenciales problemas a la hora de un ataque, muchos atacantes hacen lo que se conoce como un ataque de diccionario, mediante el cual intentan adivinar las claves de los usuarios de un sistema para poder entrar por

esa va. Una vez dentro intentarn otros mtodos que se hablarn en cursos ms adelantados, mediante los cuales pueden obtener privilegios de root. Por lo tanto, para leer correos y usar ftp no es requerido que un usuario tenga asignado un shell como bash, ms bien es un potencial problema, as que sugiero que siempre que creemos este tipo de usuarios lo hagamos con un shell no vlido o un shell que no dejar entrar al usuario, por ejemplo /bin/false, lo podemos cambiar en vez de /bin/bash en el archivo de /etc/passwd y

as el usuario no podr usar el shell. Ahora, cambiar en /etc/passwd unos 10 usuarios es algo que es factible, digamos que cambiar 50 o 100 tambin lo es, pero mejor es el no tener que cambiar constanteme nte los shells de los nuevos usuarios, sino ms bien crear todos los usuarios con un shell por defecto diferente de /bin/bash; esto se puede lograr editando /etc/defaults/ useradd y cambiando la lnea que dice: 14. SHELL=/bin/ bash por SHELL=/bin/ false 15. De esta forma cualquier usuario que se cree a partir de ahora, ser

creado con el shell /bin/false Crear un usuario nuevo, y verificar que /bin/false sea su shell por defecto en /etc/passwd Cmo cambiarnos de usuario en el sistema? Una forma muy cmoda pero lenta es sencillamente salir del usuario actual (escribiendo logout o presionando ctrl-D o escribiendo exit) y volviendo a entrar. Ahora en linux existe un comando llamado su (super user) que permite convertirte en cualquier usuario Su sintaxis bsica es: 16. su [username] 17. Por ejemplo: 18. su -

19. nos convertir en root, desde cualquier usuario no privilegiado del sistema, cualquier usuario no privilegiado que intente convertirse en otro usuario necesitar teclear la clave del usuario en que se quiere convertir, por lo tanto su - no asegura que me convierta en root si no conozco la clave. Otra variante es: 20. su - eperez 21. De esta forma me convertir en el usuario eperez y podr trabajar con sus permisos y con su directorio de usuario. Si estoy como root y me convierto en cualquier usuario no necesitar teclear la

clave del usuario en que me convierto. Cmo crear un usuario con derechos de root? Aunque para nosotros no es la opcin ms elegante, no es ni siquiera una opcin que pensaramos en usar, podemos indicar que si deseamos mantener un usuario con derechos de root, la labor es muy fcil: Agregar el usuario que queremos que sea root. Editar /etc/passwd y poner 0 en el UID y GID del usuario en cuestin Con estos pequeos cambios el usuario que le pongamos uid 0 y gid 0 ser root con su propia clave. Posteriormen te hablaremos

sobre otras formas de asignar derechos de administrado r mucho ms cmodas que adems nos permitirn manejar logs para ver lo que un usuario hace mientras es root. El UID de cualquier usuario creado en el sistema siempre ser mayor a 500 aunque como vieron se pueden cambiar los UID nosotros no recomendam os hacerlo para mantener consistencia y permisos diferenciados entre usuarios. Cmo cambiar los dueos de un archivo? Al hacer un listado extendido de un archivo o directorio, podremos ver que estos

pertenecen a un usuario determinado Si deseamos cambiar el propietario de un archivo o directorio podemos usar el comando chown: chown nuevopropiet ario[.nuevogr upo] archivo esto es, si quisiramos asignarle un nuevo dueo a /home/eperez por ejemplo podramos decir: chown root /home/eperez Esto hara que el directorio eperez pasara a ser propiedad del usuario root Si quisiramos cambiar a un nuevo grupo de usuarios, podramos usar el comando chgrp o extender el

chown: chgrp root /home/eperez cambiara al grupo root el directorio /home/eperez o chown root.root /home/eperez cambiara al usuario root y al grupo root el directorio /home/eperez todo en un slo comando. Tanto chown como chgrp son capaces de actuar en directorios, es decir como acabamos de ver son capaces de cambiar los permisos a directorios y a archivos. Sin embargo, si quisiramos cambiar no slo los dueos de un directorio sino adems recursivamen te todos los directorios y archivos contenidos en este, debemos usar la opcin -R:

chown root.root /home/eperez -R Al momento hemos logrado asignarle archivos y directorios a usuarios del sistema, sin embargo, a veces no es slo eso lo que deseamos. Hay momentos en que deseamos darle un poco ms de granularidad al sistema de archivos, por ejemplo permitir que algunos usuarios puedan ejecutar ciertos binarios pero no escribir, o que no puedan acceder a ciertos directorios. Para esto, en unix existen desde tiempos inmemoriales , tres tipos de permisos bsicos que son:

Permiso de lectura (r) Permiso de escritura (w) Permiso de ejecucin (x) Estos tres permisos, pueden ser asignados a tres diferentes usuarios y grupos de usuarios, estos son: Usuario propietario (u) Grupo al que pertenece el propietario (g) Otros usuarios del sistema (o, other) Para ver los permisos, podemos hacerlo invoncando al comando ls -l por ejemplo: [root@eperez ~]# ls -l total 67124 drwxr-xr-x 2 root root 4096 Jul 27 07:47 Desktop drwxr-xr-x 14 root root 4096 Jul 27 16:27 epe drwxr-xr-x 3 root root 4096 Jul 27

07:48 tmp -rw-r--r-- 1 root root 184707 Jul 26 11:23 VSATEcuador.pdf

La primera columna de la izquierda nos indica precisamente los permisos, notemos que en algunas de estas lneas hay una d de primer caracter. El primer caracter en la lista de permisos indica claramente si estamos hablando de: un directorio (d) un archivo (-) un enlace directo (l) un dispositivo de caracter (c) un dispositivo de almacenamie nto (bloque) (b) Respecto a estos ltimos dos permisos estn presentes solamente en el directorio /dev y son formas de

representar dispositivos de caracteres o de bloque a los efectos del kernel (discos, cintas, terminales, puertos seriales, etc) Los siguientes nueve caracteres en los permisos son realmente 3 grupos de 3 caracteres cada uno, indicando estos los diferentes permisos para el usuario propietario (u), el grupo (g) y otros (o). Por ejemplo drwxr-xr-x lo podremos dividir as

directorio

lectura escritura

lectura

lectura

ejecucin ejecucin ejecucin Esto es, estamos ante un directorio y el usuario propietario podr leer, escribir y ejecutar en ese directorio. Los usuarios del grupo al que pertenezca el propietario podrn leer y ejecutar dentro de este directorio y los otros usuarios podrn leer y ejecutar dentro de ste directorio.

A los efectos de un binario o archivo normal, la x (ejecucin) significa que este archivo podr ser ejecutado. A los efectos de un directorio, la x significar que a este directorio

se podr entrar. Es decir, por el tipo de permisos que vemos en el ejemplo anterior, bsicamente todos podrn entrar (x) a este directorio, ya que hasta others (o) puede hacer ejecucin (x). Cambiando los permisos: Les explicaremos dos formas bsicas de cambiar los permisos, una muy conocida por todos pero un poco compleja de entender a mi forma de ver y otra muy fcil y descriptiva, comencemos por esta: El comando para cambiar los permisos se llama chmod, y debemos indicarles qu permisos poner o quitar as como el directorio o archivo a ponerle o quitar permisos, El comando bsico es: chmod [ugoa]<=|-|+>[rwx] archivoodirectorio por ejemplo: chmod og-w prueba ste comando anterior lo que har ser quitar (-) el permiso de escritura (w) al grupo y a los otros usuarios del archivo prueba. El resto es muy fcil y descriptivo: chmod u+x prueba chmod +x prueba (dar a todos permiso de ejecucin) chmod a+x prueba (lo mismo del anterior) chmod -w prueba (quitar a todos permiso de lectura) chmod og=r prueba (asignar a o y a g lectura solamente, quita las otras banderas) La segunda forma de asignar permisos se maneja de forma binaria. Por ejemplo supongamos que cada permiso es un bit y que si un permiso est habilitado el bit est en 1, si est deshabilitado el bit est en 0: permiso rwx rwr-r-x binario 111 110 100 101 octal 7 6 4 5

Entonces podemos asignar permisos poniendo los valores decimales (u octales) uno valor por cada grupo de usuarios: chmod 755 prueba (esto sera rwxr-xr-x) chmod 644 prueba (sera rw-r-r) y as por el estilo. Hay muchas personas que usan esta ltima forma porque les parece ms conveniente, en cualquiera de las circunstancias, sera el mismo objetivo el que estaramos logrando.

Como ltimo debemos indicar que para hacer un cambio de permisos recursivos dentro de un directorio, lo podemos hacer igualmente con el switch -R chmod og-w * -R Esto quitara el permiso de escritura a o y a g en el directorio que estamos a todos los archivos y recursivamente en todos los directorios de aqui en adelante. chmod 755 directorio/ -R Pondra permiso rwxr-xr-x del directorio/ en adelante. En Unix, en Linux hay siempre muchas formas de hacer las cosas, hay varias formas de llegar a un mismo objetivo, as que no nos sorprendamos si durante el curso algunos estudiantes planteen otras formas de solucionar un problema en particular, son bienvenidas y aceptadas, ya que siempre hay ms de una forma de hacer las cosas. El sudo es un sistema que permite que usuarios autorizados por nosotros ejecuten ciertas (o todas) las tareas que puede hacer el usuario root, pero sin tener que conocer la clave de ste. Es decir, desde el propio usuario no privilegiado eperez, yo podra sencillamente tecleando mi clave, acceder a ciertas tareas autorizadas por el administrador del sistema. Un detalle adicional: el sudoers no sirve solamente para dar acceso de root a otros usuarios, aunque esta es realmente una de las funciones ms comunes y funtamentales, tambin el sudoers sirve para darle accesos de un usuario a otro usuario, es decir poder ejecutar comandos como otro usuario. El archivo donde se guardan los permisos de sudo se llama /etc/sudoers pero no es recomendable editarlo directamente, sino usando la utilera visudo visudo tiene dos pequeas ventajas, evita edicin simultnea del mismo archivo (esto es que dos o ms usuarios root vayan a hacer cambios al sudoers) y adems tiene un pequeo y rudimentario analizador sintctico lo que ayuda a revisar contra posibles errores cualquier cambio que hagamos. Estructura del archivo /etc/sudoers La estructura es muy simple y es algo as: <usernames|group> <server=[ALL]|IP>[(usuario que ejecutar)] <comando>

usernames: puede ser una lista de usuarios a los que concederemos el permiso group: puede ser una lista de grupos de usuarios a los que concederemos el permiso, un grupo se describe con el signo de % primero (%users, por ejemplo) si queremos listar ms de un usuario o grupo, podemos separalos por coma server= nos indica desde qu servidor este permiso ejercer efecto, porque podemos ejecutar tcnicamente comandos desde otros lugares. Usaremos ALL para indicar desde cualquier IP (server=ALL).

(usuario que se ejecutar): Nos indicar a qu usuario tendremos acceso, o bajo qu usuario nos darn el permiso para ejecutar (ALL) indicara root

Veamos algunos ejemplos, ejecutemos visudo y veremos slo una lnea no comentada (visudo usa los comandos de vi, usa vi en s): root ALL=(ALL) ALL Esta lnea por defecto sugiero la dejemos, permite bsicamente que el usuario root ejecute todod desde cualquier lugar. Cmo hacer para que un usuario determinado (eperez en mi caso) pueda hacer lo que root? Simple: eperez ALL=(ALL) ALL esto es: eperez, desde cualquier servidor "ALL=" , ejecutar como root "(ALL)" cualquier comando "ALL" Probmoslo con cualquier usuario que tengamos en el sistema, ahora salgamos del visudo (:wq), entremos en otra consola como ese usuario (eperez en mi caso) y pongamos: [eperez@eperez ~]$ cat /etc/shadow cat: /etc/shadow: Permission denied nos dar un error, porque slo root puede ver los contenidos de /etc/shadow. ahora usemos sudo: [eperez@eperez ~]$ sudo cat /etc/shadow Password: root:$1$dMoUbmLb$rkoT14Xw1W.eHmInMUvYC0:12990:0:99999:7::: bin:*:12985:0:99999:7::: daemon:*:12985:0:99999:7::: adm:*:12985:0:99999:7::: lp:*:12985:0:99999:7::: sync:*:12985:0:99999:7::: shutdown:*:12985:0:99999:7::: halt:*:12985:0:99999:7::: mail:*:12985:0:99999:7::: news:*:12985:0:99999:7::: Ohh s, pudimos.. en efecto, la lnea que agregu en sudoers, usando visudo, en efecto me permite poniendo la clave del usuario eperez poder acceder a sitios que slo root puede. Cmo guardar logs de lo que se hace? Muy simple, en el sudoers (ejecutar visudo) pongamos una linea al comienzo que diga:
Defaults logfile=/var/log/sudolog

Esto le indicar al sudo que cada comando que ejecute, lo guarde en /var/log/sudolog, de forma que nosotros podamos monitorear cundo, quin y qu comando se ejecut. tail /var/log/sudolog

y podramos ver todos los comandos sudo que se vayan poniendo. Limitando comandos: eperez,jose ALL=(ALL) /sbin/reboot,/sbin/halt,/usr/sbin/eperez/ Este comando indicara que eperez y jose (dos usuarios, se parados por coma), podrn ejecutar como root /sbin/reboot y /sbin/halt, as como cualquier binario que est dentro de /usr/sbin/eperez/ (/ al final para indicar que es un directorio) De esta forma podemos limitar el alcande de los usuarios, ya estos usuarios no podrn formatear el disco, ni agregar o eliminar usuarios, ni ver /etc/shadow (no le hemos autorizado a usar cat como root), sino que sencillamente podrn reiniciar o detener la mquina, slo esos dos comandos como root. En el visudo slo ponemos los comandos, no los archivos permitidos. Es decir, si ponemos en el visudo /etc/shadow, no lograramos nada, pues no es un comando, de todas formas cuando intentemos hacer un sudo cat /etc/shadow, al no estar autorizado cat, no podramos ver /etc/shadow. Todo sistema linux viene configurado de la forma ms estndar posible, para evitar que algunas opciones que se le pueden implementar fallen para usuarios no conocedores. Adems, existen infinidad de criterios sobre opciones que se le deben imponer a los filesystems, dnde, cmo y por qu. En todo caso, un correcto particionamiento del sistema, no slo evitar que un dao en una seccin del disco haga totalmente inoperable al sistema, sino que permitir una ms fina granulacin de los permisos para evitar o minimizar el impacto de un intruso. Particionamiento: Uno de los temas ms olvidados, heredado de cuando windows era el nico sistema operativo del mercado (lo digo por porcentaje de uso en el mercado) es el tema del particionamiento. Bsicamente, muchas personas que se dicen que saben trabajar en linux y que hasta tienen la osada de dictar cursos en linux, ignoran por completo un tema tan crucial como es un correcto particionamiento. Supongamos que tenemos un disco de 80GB para instalar linux y que lo particionamos de la siguiente forma: 100 MB a /boot 1GB para SWAP 80GB para / Este es el tipo de configuracin ms usada por los "conocedores" de linux.. qu han logrado? Pues porque redhat as les pide instalan una particin /boot con 100MB en disco. Porque siempre el instalador les exige, instalan una particin SWAP de un tamao determinado. Y ya que no le exigen nada ms, dejan el resto para /, puesto que siempre hay que tener una particin /.

Est correcto este esquema de particionamiento? Definitivamente NO. En efecto es un esquema que funciona, definitivamente funciona y no podemos negarlo, pero pensemos solamente en un detalle: Qu tal que un da determinado, falle un grupo de sectores o clusters dentro de la particin donde est /? Sencillamente, perderemos todo el sistema, perderemos toda la informacin que ahi tenemos guardada, perderemos los logs del sistema que estn en /var (aunque la falla haya sido por otros sectores), perderemos los directorios de usuario (/home), perderemos los binarios del sistema (/bin, /sbin), perderemos los binarios extras al sistema (/usr), bsicamente nos quedaremos con un bonito /boot (porque est en otra particin) y un bello e intil SWAP que de nada nos servir con el resto del filesystem sin ningn tipo de uso. Qu tal realizar un particionamiento as?:
Particin montada en el directorio /boot / /var /home /usr SWAP /tmp Tamao de la particin 100MB 512MB 20GB 15GB 20GB 1GB 512MB

Bsicamente, segn los autollamados "entendidos" en instalar linux, esto no resolvera mucho, pues igual el disco se daara. En efecto, el disco puede daarse por completo y de eso no nos salva nadie, pero normalmente los discos se van daando por partes, es decir, emiten avisos, se corrompe algn filesystem pero bsicamente funcionan ellos como un todo, slo que con daos. Al particionar de la forma antes mencionada, logramos que si ocurre un fallo en la seccin del disco donde est la particin /usr, podamos recuperar la informacin en el resto de particiones (/var no estara daada, /home tampoco). Esto es muy interesante ya, porque en efecto, el disco estara herido de muerte, pero todava le podramos montar a las particiones que estn buenas y sacar los datos para reemplazar el disco. Bsicamente al particionar podemos lograr minimizar el impacto de un dao parcial localizado en ciertas partes del disco, y cranme, es lo que normalmente ocurre. Como ejemplo, a inicios de Setiembre del 2005, uno de los discos de un servidor que mantengo con varios sitios en los Estados Unidos se me da, en efecto, perd /var, perd todos los logs del sistema y algunas BD importantes. Pero no perd los sitios de

los usuarios que yo tena en /home porque estaban en otra particin, ni perd los binarios del sistema que estaban en /usr Solicit un cambio de disco, repuse la imagen que tena de /usr y de las BD y logs que tena de un respaldo y listo, el sistema continu funcionando. De haber tenido una sola particin el dao hubiera sido grave, hubiera tenido que recuperar todo de respaldo: Adems de los 3gb de usr y 3gb de var hubiera tenido que recuperar de respaldo los 40gb de datos de usuario y les aseguro que recuperar via ftp 46gb de datos no es lo mismo que recuperar 6gb. Esto nos demuestra que en efecto es algo que funciona y que nos puede ser de gran utilidad, mas esta no es la nica ventaja. Opciones de montaje Linux tiene una serie de opciones a nivel de filesystem, que nos permiten evitar que se ejecuten ciertas acciones segn el filesystem que tengamos montado. Por ejemplo, qu utilidad tiene el directorio /var? Bsicamente /var slo nos sirve para guardar archivos de logs, nadie debe ejecutar nada dentro de /var, por ejemplo, los atacantes usan /var/tmp para una vez entrado al sistema, bajar binarios comprometedores y ejecutarlos. Es un hecho real y muy usado. De no tener correctamente particionado el sistema, /var no sera ms que un directorio de /, y por supuesto en / hay binarios que s requieren derechos ejecucin (/bin, /sbin). No podramos hacer nada con un sistema particionado sin ningn conocimiento. Ahora, si /var estuviera en una particin aparte como propuse. Entonces la labor sera muy sencilla. A esta particin (/var) le podramos asignar una opcin del filesystem que indicara que no se puede ejecutar ningn archivo an cuando tenga permisos de ejecucin (x). As de simple, el atacante entrar al sistema, eso no lo evitaremos sino por otros medios, pero la idea de la seguridad no consiste solamente en evitar intrusiones, realmente est compuesta la seguridad por capas, por diferentes lineas de combate, una de ellas es que dado que ya el atacante entr, nosotros le pondremos barreras fsicas para minimizar el impacto de una intrusin. Bsicamente, podemos montar el filesystem /var con la opcin noexec, esta es la opcin que impide que se ejecuten archivos dentro de /var. Se podrn leer, se podrn escribir, mas no se podrn ejecutar, as un atacante se quedar sin su medio de usar /var/tmp para ejecutar sus scripts maliciosos Para agregar esta y otras opciones del filesystem, sencillamente editamos: /etc/fstab y le agregamos la opcin deseada, separada por coma, despus de la palabra default (default options), por ejemplo en mi caso tengo /var en hda4 por lo tanto sencillamente busco la lnea de /etc/fstab que hable de /var y le agrego noexec:
LABEL=/var /var ext3 defaults,noexec 0 0

As le habremos indicado a nuestro sistema, que la prxima vez que arranque, monte la particin /var con la opcin noexec, lo que evitar la ejecucin. noexec, por seguridad, siempre lo combino con nosuid. El bit suid se usa para indicarle al sistema que ese binario podr requerir accesos de root y estos debern ser concedidos. Por ejemplo, para cambiar la clave, un usuario normal no tiene acceso a /etc/shadow (este archivo slo root lo puede cambiar), por lo tanto en binario passwd que es el que se llama para ejecutar la accin del cambio de clave est tagueado como SUID, lo que permitir al binario requerir operar como root y alterar el archivo /etc/shadow poniendo la nueva clave. As se logra que sin ser root, ciertas acciones como el cambio de clave las puedan ejecutar los usuarios desde sus cuentas. por supuesto el binario passwd es sumamente bien hecho y controlado, slo usar root para cambiar la clave, ms nada. Ahora, qu tal que un atacante baje un binario a nuestro sistema y le cambie los permisos a suid (+s)? Bsicamente esta persona podra crear un binario que solicite derechos de root y le sean concedidos, y realizar cuantas operaciones estime necesarias para, como root, alterar o robar informacin de nuestro sistema. Es por eso que la opcin nosuid se utiliza para decirle al sistema que no ejecute como suid ningn binario aunque as est marcado en el sistema. Como regla general, cualquier filesystem al que yo le aplique noexec, tambin por seguridad le indico que sea nosuid tambin. As quedara mi /var:
LABEL=/var /var ext3 defaults,noexec,nosuid 0 0

Estas mismas opciones se pueden aplicar a /boot a /tmp y a /home bsicamente en /home nadie debe tener la capacidad de ejecutar archivos y menos con suid, muchos hackers entran a travs de nombres de usuarios adivinados o de servicios que corren bajo algn username determinado (apache, named, etc) y por supuesto intentarn usar el directorio de ese usuario para ejecutar sus archivos y binarios maliciosos. Al poner /home como no ejecutable, coartamos su intento. /tmp es un directorio que se concibi para que cualquier persona pudiera escribir, independientemente de sus permisos como usuario. As podan guardar (sin compromiso por parte del administrador) por un tiempo o un momento ciertos datos para procesar informacin, etc... Los hackers lo usan para poner sus ejecutables (ya no escribir, sino ejecutar) y por lo tanto podemos indicarle a nuestro sistema que ejecute el noexec y el nosuid para evitar que un atacante pueda ejecutar sus binarios precompilados desde esa direccin.

/tmp as como /var/tmp son uno de los directorios ms usados por los atacantes. A propsito, /usr/tmp debe ser eliminado y convertido en un enlace a /tmp puesto que a /usr no podemos quitarle derechos de ejecucin (contiene cientos de binarios), pero s podemos decirle que no hay tal tmp dentro de /usr sino que lo mandamos a /tmp que ya lo tenemos protegido.
cd /usr mv tmp tmp.old ln -s /tmp rmdir tmp.old

Con estos simples comandos podemos eliminar ese directorio tmp dentro de /usr y apuntarlo a nuestro ya protegido /tmp En la particin /boot no hay ningn ejecutable, slo la copia del binario del kernel que se levanta al levantar el sistema, tambin le podemos poner nosuid y noexec para evitar que potencialmente sea usada esa particin para escribir y ejecutar aplicaciones no deseadas. nodev Es otra de las opciones del sistema. un dispositivo (device, dev) es un enlace que se crea para permitir interactuar entre las aplicaciones y ciertos puertos o dispositivos del sistema. Ahora, algunos dispositivos no vienen creados por defecto o los hemos eliminado por seguridad (por ejemplo si eliminamos /dev/ttyS0 no se podr acceder al puerto serial com1 de nuestra mquina). Algunos atacantes, conscientes de que no est disponible ese dispositivo, pueden intentar crearlo. No en /dev ya que /dev solo root lo puede escribir. Pero lo intentarn crear en cualquier otro lado del sistema de archivos para darle de todas formas uso. Por ejemplo qu tal /tmp/ttyS0? Por ms que borramos ttyS0 de nuestro /dev, este atacante lo cre en /tmp y le dar uso desde ahi. Para eso existe la opcin nodev, que al indicrsela a un filesystem, evitar que se creen o usen dispositivos desde ellos. El nico Filesystem que debe tener derechos de dev es /, puesto que / tiene al directorio /dev y no debemos prohibirle o el sistema no nos funcionara. Cualquier otro filesystem, debe llevar nodev (/tmp, /home, /usr, /var, /boot):
LABEL=/var /var ext3 defaults,noexec,nosuid,nodev 0 0

/usr no tiene dispositivos, as que s es seguro ponerle nodev a /usr. Repetimos: /usr no debe llevar noexec ni nosuid o no funcionara el sistema. noatime Es una opcin realmente no de seguridad directamente sino de performance, de desempeo. Esta opcin puede ser implementada y debe ser implementada en todos los filesystems tipo ext3, ext2 y similares. No funcionar para otros filesystems como RAMFS, TMPFS, etc.

De acuerdo a estndares seguidos para la implementacin de diversos filesystems, existe la obligacin de escribir cunto se accedi en LECTURA un archivo. Esto es, cada vez que leamos para ejecutar a /usr/sbin/sendmail o leamos el mailbox nuestro, o cada uno de nuestros 500 usuarios lean el mailbox, el sistema se ver obligado a escribir cundo se ley cada uno de ellos. Las lecturas siempre son ms rpidas que las escrituras y no slo eso, sino que cada escritura le disminuye el tiempo de vida a un disco y por cada lectura de un binario habr que mover el cabezal del disco hacia la tabla de inodos para guardar cundo se accedi. Esto genera muchos movimientos en el disco y hace que disminuya el desempeo en su labor. Nadie realmente hace un uso del access time (atime) que se escribe para cada uno de los binarios. De hecho muchos no lo conocamos hasta que descubrimos la opcin noatime, esta opcin lo que hace es evitar que se escriban los access time en los inodos de los archivos que estn siendo ledos. Esta opcin noatime mejora el desempeo en sistemas con media o full carga hasta en un 30% al evitar constantes accesos a disco para escribir que hubo una lectura. Al mejorar los tiempos de acceso a disco, que es un medio mecnico, estamos evitando o minimizando el impacto que potencialmente pueden provocar algunos atacantes al obligar que nuestro disco escriba constantemente (negacin de servicio por cuello de botella en accesos a disco). Definitivamente es una opcin que debe ir, no tiene razn para no ir y que nos ayudara mucho en el normal funcionamiento de un sistema. 3 Gestin de procesos Herramientas de monitoreo Trabajo con servicios Arranque y parada de linux

Una de las cuestiones ms interesantes y tiles en linux, es, definitivamente, el manejo de procesos. Esto es, desde Linux tenemos muchas variantes para manejar procesos, tales como levantarlos, ejecutarlos, o sencillamente cambiarles la prioridad. Tambin el kernel de linux ha sido mejorado con el tiempo hasta llegar a lo que conocemos actualmente como el kernel 2.6 que tiene un manejo muy efectivo de los procesos, como veremos ms adelante. Tambin en esta parte del curso veremos ciertas utilidades para el manejo de procesos en Linux.

Nice Level Todos los procesos de linux corren bajo lo que se conoce como colas de prioridad con round robin, esto es, cada nivel de prioridad, sealada por un nmero del -20 (ms prioridad) al 20 (menos priodidad) mantiene a su vez una lista de procesos bajo su control, estos procesos slo son ejecutados cuando las colas con ms prioridad a su nivel hayan procesado todas sus listas de prioridad. Estos niveles de amabilidad, como tambin se les conoce, pueden ser asignador por el usuario que ejecuta un proceso o por el administrador del sistema.
SWA Mayor P-20

Veamos un ejemplo tabulado de colas de prioridad: Prioridad

...-10 0 firefox apache pop3 sendmail ... 10 panelcontrol respaldos


Meno rPrior idad.. 20En la tabla de ejemplo anterior, el proceso que maneja la swap siempre tendr mayor

prioridad que cualquier otro proceso en un nice level inferior; los procesos que estn en la cola de prioridad 0, son los iniciados por el sistema (normalmente se inician con priodidad 0) y en esa cola todos sern atendidos por round robin, es decir, uno a la vez. En la prioridad 10, tendremos por ejemplo un panel de control (le dejamos mejores prioridades a los procesos que el sistema necesita trabajar rpidamente) de forma tal que l slo se ejecutar en los momentos que el procesador no est atendiendo a las colas superiores, y tambin ponemos los respaldos, de forma tal que cuando se estn sacando, los respaldos no afecten a otros procesos, sino que se vayan realizando a medida que quede libre el procesador. Estas colas de prioridad es lo que se conoce en linux como Nice level, o nivel de gentileza. Aparte de los nice level, tambin el kernel asigna porciones del procesador, o tiempos durante los cuales un proceso se ejecutar. Esto con el kernel 2.6 se llama prioridad dinmica y es determinada por el planificador monitoreando su comportamiento durante la ejecucin. Los procesos que gastan mucho de su tiempo bloquendose son conocidos como procesos "cota de E/S" ("I/O bound", en ingls); su comportamiento est acotado por la entrada y la salida. Cuando el planificador reconoce a un proceso "cota de E/S" se le asigna una bonificacin negativa (de hasta -5), y por lo tanto una mayor porcin de tiempo. En contraste, a los procesos "cota de CPU" se les asigna una bonificacin positiva (de hasta +5), y por lo tanto una porcin de tiempo menor. Esto previene que los procesos "cota de CPU" controlen el procesador, y permite a las entradas y salidas desarrollarse sin problemas. A veces, un proceso puede intercambiar entre comportamientos "cota de E/S" y "cota de CPU". Por ejemplo, un proceso puede leer cierta informacin desde el teclado y realizar algunas computaciones basadas en esa

entrada. El planificador necesita constantemente estar alerta del comportamiento del proceso; las prioridades dinmicas pueden ser reajustadas de acuerdo a esto. El planificador lleva un registro de todas las porciones de tiempo con dos listas de procesos. La primera lista contiene a los procesos que todava disponen de tiempo; la segunda contiene a quellos procesos que ya han agotado su tiempo. Cuando un proceso usa su porcin de tiempo, el planificador calcula una nueva porcin aadiendo la bonificacin de prioridad dinmica a la prioridad esttica. El proceso es luego insertado en la segunda lista. Cuando la primera lista se vaca, la segunda lista la reemplaza y viceversa. Esto permite al planificador calcular continuamente las porciones de tiempo con una sobrecarga computacional mnima. Estados de un proceso Los procesos se pueden catalogar en 3 estados fundamentales (existen otros):
1. Running: Es cuando un proceso est haciendo uso del procesador, o est en la

lista de espera por el procesador (waiting)


2. Stopped: Es cuando un proceso voluntariamente se retira del procesador y

solicita que no le asignen procesador, este proceso posiblemente est bloqueado esperando por alguna instruccin de e/s (disco, teclado, etc) 3. zombie: Es cuando un proceso ha muerto, pero su tarea padre sigue esperando por informacin de este. Estos procesos no se pueden matar, tcnicamente no existen, pero consumen recursos en la tabla de procesos. De vez en cuando el kernel puede limpiarlos, sobre todo si el padre tambin muere. El kernel 2.6 ahora tiene algo muy interesante en funcionamiento, que es lo que se llama preemtividad (expropiacin), esto es, la posibilidad de sacar a un proceso que est usando el procesador, cuando otro de mayor prioridad caiga en estado runneable (posiblemente saliendo del stopped). Por ejemplo, esto mejora mucho la interaccin con eventos del teclado, el usuario definitivamente nota que los eventos del teclado son atendidos mucho ms rpidamente. El mismo kernel es preemptivo en s, es decir, puede retirarse del procesador si algn proceso que maneje eventos como el del teclado Seales Las seales, son formas de comunicarse en linux entre diferentes procesos, enviando mensajes a travs del kernel, que los procesos a los que se les enva la seal podrn procesar o el kernel mismo podr aceptarlas. Las seales ms comunes, que estudiaremos aqu son: Nombre Numero SIGHUP 1 SIGKILL 9 SIGUSR1 10 SIGTERM 15

HUP (nmero 1) recarga la configuracin, til para cuando se ha cambiado el archivo de configuracin de un proceso y se requiere que lo relea, se le enva la seal 1 y ste se ocupar de releer la configuracin y se recargar sin dejar de atender a los usuarios. KILL (nmero 9) Mata un proceso de forma incondicional, esta seal no se ocupa de cerrar organizadamente archivos abiertos ni de emitir ninguna advertencia, sencillamente el kernel al ver esta seal elimina el proceso de la tabla de procesos y dispone de la memoria ocupada previamente por este. USR1 (Nmero 10) seal para ser usada por diferentes procesos como el apache y el bash; es una forma de matar el bash por ejemplo pues ste no obedece a la seal TERM, o una forma de recargar el apache sinque deje de servir a los clientes actuales (el HUP en el apache hace que este recargue todos los hijos y desatiendan las peticiones de la red) TERM (nmero 15) es la seal por defecto que se enva con el comando kill, esta seal indica a un proceso que debe cerrarse, el proceso entonces proceder como mejor le convenga, posiblemente cerrando todos los archivos que tiene abierto y mandando a liberar la memoria que ocupa en el sistema. Algunos procesos a veces caen en un estado en el que no pueden responder a esta seal y slo se dejan matar con KILL (9), pero nunca debemos intentar directamente el KILL ya que es una forma imperiosa y un poco brusca para cerrar los procesos.

Todas estas seales as como una descripcin de las otras seales (son en total 32) pueden ser obtenidas con el comando: man 7 signal Fork y exec: fork y exec son llamadas al sistema de Unix. Es la forma comn que muchos procesos de unix usan para crear nuevos procesos. Cuando se comienza un sistema linux, este arranca solamente con el proceso conocido como init. Un proceso "engendra" a otro ya sea reemplazndose a s mismo cuando llame al otro, conocido como "exec", o si este proceso quisiera mantenerse activo, mediante un proceso conocido como fork, bifurcacin. En este ltimo caso la copia bifurcada cometer suicidio ejecutando a su vez un exec del nuevo proceso a levantarse. Un buen ejemplo del uso de fork/exec se puede ver en el login de un sistema Unix desde un terminal. El proceso init engendra una serie de procesos getty, cada uno de ellos monitorea un puerto serial o consola (ttyS o tty) en espera de actividad. Es el programa getty el que realmente pone la lnea que dice: login: Una vez alguien escriba su username el trabajo del getty est terminado, este hace un exec del programa login. login entonces nos pide una clave (si la cuenta la tuviere) y si esta clave es la correcta, entonces realiza un exec del shell del usuario (comnmente bash). Cada vez que ejecutemos un programa dentro del shell, este har un fork de s mismo y su copia realizar un exec de cualquier programa que le hayamos requerido. Tambin hay un comando exec que se puede usar en el prompt del sistema. Usarlo con atencin pues en efecto ste ejecutar cualquier programa que iniciemos a travs de l y

eliminar la copia del shell que estemos usando sustituyndola por el programa en cuestin. En efecto es muy til si queremos dejar corriendo una aplicacin que no le permita al usuario salir de ella hacia un shell, pues tan pronto esta termine, se realizar un logout ya que el shell que se ejecut desde el login habr sido sustituido mediante un exec por esta aplicacin, no quedaran ms recursos detrs de este hijo y se saldra a la pantalla del login. Formas de usar el exec: Supongamos que tenemos que dejar un shell abierto ejecutando un ping a internet de forma tal que si algn operador ve que el ping no responde puede tomar ciertas medidas. Este operador no queremos que tenga acceso al shell, una variante muy cmoda sera:

exec ping www.google.com

de esta forma, el ping se estar ejecutando indefinidamente, pero si alguien presiona ^C, saldr directamente sin caer en el shell ya que no se hizo mediante un fork sino mediante un exec. Entendiendo los procesos: Como ya todos sabemos, cuando nosotros nos logueamos dentro de Linux y comenzamos a escribir, le estamos hablando al shell. El shell que usamos actualmente es el GNU BASH, sin embargo hay muchas variantes del tipo bourne como el sh, el ksh. Tambin existen variantes del C Shell (csh) como el tcsh. Nuestro shell es un proceso, uno de los muchos programas ejecutndose al mismo tiempo en una computadora. Cada proceso tiene diferentes tipos de informacin asociado con l, incluyendo:

El PID o identificador del proceso. Es un nmero asignado cuando el proceso es arrancado. Normalmente es un nmero consecutivo que solamente se repite cuando se haya alcanzado el mximo de procesos en la tabla de procesos aunque muchos sistemas de proteccin para evitar averiguar fcilmente por parte de un atacante el pid, prefieren hacerlo aleatorio (as al hacerse un fork posiblemente no ser el PID del padre+1). En todo caso es un nmero nico para cada uno de los procesos corriendo en un sistema. El UID o identificador del usuario, nos indica a quin pertenece este proceso. Determina por lo tanto a qu archivos y directorios ste proceso podr escribir o podr leer adems de a quin le ser permitido matar este proceso. El GID o identificador del grupo, es similar al UID, pero determina a qu grupo ste pertenece. El ambiente de trabajo o environement, contiene una lista de variables y valores asociados, por ejemplo si nosotros escribimos: echo $HOME en el shell, ste nos indicar el nombre del directorio raz del proceso del shell. Nos ha indicado bsicamente los contenidos de una variable de ambiente llamada HOME.

Directorio de trabajo actual. Si no se especifica un directorio para abrir un archivo o para ejecutarlo, el proceso mirar al directorio actual (CWD o current working directory) y proceder a tratar de abrirlo desde ahi. Descriptores (file descriptors), nos indicar qu archivos ha abierdo este proceso para lectura o escritura asi como la posicin actual dentro de cara uno de ellos.

Todos estos detalles pueden ser vistos en nuestro sistema linux. Cada proceso que se ejecuta en el sistema, abre un "directorio" con toda su informacin dentro del directorio /proc /proc no es un directorio comn y corriente, sino que contiene informacin sobre los procesos, adems de informacin sobre el sistema y nos permite realizar cambios en el comportamiento del kernel y sus diferentes mdulos o partes. Centrndonos en el tema de los procesos, vayamos a /proc si listramos dentro de /proc (ls /proc), podremos observar una serie de nmeros en forma de directorio, que nos indican los PID, dentro de cada directorio podremos ver una serie de archivos que no son ms que diferentes aspectos del proceso, algunos anteriormente descritos, como son: cmdline: Indica la lnea de comando conque el proceso fu ejecutado, por ejemplo en mi caso me cambi aleatoriamente a un directorio, el del proceso 9408 (cd /proc/9408) e hice un cat cmdline, obtuve lo siguiente: cat cmdline bash Lo que nos indica que es el bash, que fu ejecutado mediante una simple llamada (bash) environ: nos indica las variables de ambiente conque este proceso trabaja:

cat environ SSH_AGENT_PID=4877HOSTNAME=eperez.ecualinux.comTERM=xtermSHELL=/bin/bashHISTSIZE=1000U rootLS_COLORS=SSH_AUTH_SOCK=/tmp/ssh-KjxSWn4876/agent.4876 PATH=/usr/java/j2re1.5.0_01/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin DESKTOP_SESSION=defaultMAIL=/var/spool/mail/rootPWD=/root INPUTRC=/etc/inputrcJAVA_HOME=/usr/java/j2re1.5.0_01LANG=en_US.UTF8GDMSESSION=defaultSSH_ASKPASS =/usr/libexec/openssh/gnome-ssh-askpassSHLVL=1 HOME=/rootLOGNAME=rootDBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbuskbf74OqytDLESSOPEN=|/usr/ bin/lesspipe.sh%sDISPLAY=:0.0G_BROKEN_FILENAMES=1 XAUTHORITY=/root/.XauthorityGTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2gnome2SESSION_MANAGER= local/eperez.ecualinux.com:/tmp/.ICE-unix/4852 GNOME_KEYRING_SOCKET=/tmp/keyringrrJk94/socketGNOME_DESKTOP_SESSION_ID=DefaultDESKTOP_STARTUP _ID=COLORTERM=gnome-terminalWINDOWID=37757804

status: nos indicar variada informacin del estado actual del proceso, cantidad de hilos, informacin sobre el pid del padre (ppid), memoria consumida, cantidad de descriptores reservada, el estado del proceso (sleeping), etc.
[root@eperez 9408]# cat status

[root@eperez 9408]# cat status Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 9408 Pid: 9408 PPid: 9228 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 VmSize: 4444 kB VmLck: 0 kB VmRSS: 1528 kB VmData: 308 kB VmStk: 112 kB VmExe: 577 kB VmLib: 1307 kB StaBrk: 080e3000 kB Brk: 099c6000 kB StaStk: bffe9890 kB ExecLim: 080d8000 Threads: 1 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 9408 Pid: 9408 PPid: 9228 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 VmSize: 4444 kB VmLck: 0 kB VmRSS: 1528 kB VmData: 308 kB VmStk: 112 kB VmExe: 577 kB VmLib: 1307 kB StaBrk: 080e3000 kB Brk: 099c6000 kB StaStk: bffe9890 kB ExecLim: 080d8000 Threads: 1 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb

CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff

cwd: directorio de trabajo actual, en qu directorio estaba el proceso padre cuando lo ejecut. Muy til para cuando tenemos un proceso extrao, levantado por un ajeno intruso, para saber desde dnde estaba cuando lo levant. cd cwd (nos llevar directamente al directorio en cuestin) exe: el programa ejecutable del proceso en cuestin, es decir es un enlace hacia el programa que est siendo ejecutado al que pertenece el proceso. root: un enlace al directorio raz del proceso (usualmente /) fd: un directorio que contiene todos los file descriptors abiertos por este proceso. /proc/self a su vez nos da una forma fcil de llegar al proceso desde el que estamos ejecutndonos (bash posiblemente). Control de procesos Normalmente cuando estamos en el shell y ejecutamos un comando, este toma el control del terminal y el shell se queda tranquilo esperando a que el comando termina. Ahora, si no queremos perder control del bash y ejecutar un proceso y dejarlo corriendo hasta que finalice, podemos hacerlo mediante el comando &
tail -f /var/log/maillog &Lo que har ser hacer un tail con polling (es decir buscando

siempre al final del archivo) El &? simple, lo que hace es mandar este trabajo al fondo, a background, y mientras el trabajo est corriendo, podremos seguir usando el shell. Es importante que sepamos que el padre (en este caso del ejemplo el shell) no puede interactuar para cambiar al hijo, ni el hijo en el padre, es decir, al dejar al tail en background, podremos movernos de directorio hacia otros lugares sin que esto afecte el directorio de trabajo del hijo (que ser el directorio desde el que le llamamos inicialmente) ni los archivos conque el hijo trabaje. Cmo vemos los procesos que tenemos corriendo en nuestro shell? Simple, el comando "jobs" nos indicar cuntos procesos estn ejecutndose en nuestro shell as como su nmero de trabajo. Por este nmero podremos trabajarles:
[root@eperez ~]# jobs [1]+ Running tail -f /var/log/maillog &

aqu tenemos un slo trabajo, el cul es el trabajo nmero 1 (fjense en [1]) y es un trabajo que est corriendo. Los trabajos los podemos traer a primer plano con el comando fg %#detrabajo
fg %1

nos llevara este trabajo a primer plano. En el primer plano, hemos "perdido el shell" nuevamente, pues el tail ahora se est ejecutando pero no nos deja acceso al shell hasta que termine. Cmo podemos hacer para mandar un proceso a segundo plano (background)? Hay dos alternativas que conozco, la primera es como hicimos anteriormente, con el &, ejecutar el proceso y al final llamarlo con &, de esta forma lo movemos a segundo plano primerito. Pero a veces ya hemos iniciado el proceso y queremos llevarlo a segundo plano, los pasos seran: 1. Detener temporalmente el proceso 2. Mandar el proceso a segundo plano Aqu la forma (supongo que seguimos ejecutando el tail en primer plano porque anteriormente lo llamamos con fg):

^Z (esto detiene el proceso, nos brinda un shell pero el proceso no est corriendo, est detenido):
1.[1]+ Stopped tail -f /var/log/maillog

bg %1 (con este comando mandamos a correr el trabajo 1 en segundo plano (bg=background) nos dir algo as como respuesta:

1.[1]+ tail -f /var/log/maillog &

verificamos que est corriendo:

[root@eperez ~]# jobs [1]+ Running tail -f /var/log/maillog &

Listo, lo tenemos corriendo en backgroun a pesar de que al inicio estuvo en fg. Ejercicio: ejecutar el gnome-calculator desde un shell, detenerla (con ^Z), tratar de usarla y posteriormente ponerla en background. Comandos para conocer procesos ejecutndose en el sistema Comencemos primero con los comandos ms usados para analizar los procesos ejecutndose en el sistema as como diferentes aspectos de ellos tales como la memoria consumida y la prioridad. Comandos para verificar procesos corriendo en el sistema: El ms simple pero til de los comandos es ps, este es un comando bien conocido por personas del mundo de unix que no ha variado mucho al momento

Para las personas que conocen el comando de la forma antigua, le sugerimos no usar el signo de -, pues puede conducir a interpretaciones errneas sobre el funcionamiento, por ejemplo: ps -aux significa brindar toda la informacin sobre el usuario x, de acuerdo al antiguo formato, claro, si el usuario x no existe, el comando ps lo interpretar de la forma actual (ps aux), es decir, mostrando todos los procesos sin importar los que trabajen desde un tty o no. Algunos switches tiles para ps: Si ejecutamos ps sin ningn switch, nos mostrar los procesos ejecutndose en nuestro shell. ps a: mostrar todos los procesos que pertenezcan a un terminal, sin importar si pertenecen a este shell o no. ps a nos dividir la pantalla en al menos 5 columnas bsicas (algunos comandos mostrarn ms informacin adicional), estas son:

PID TTY: Terminal desde donde se est corriendo el proceso STAT: Estado del proceso o S: Sleeping o R: Runnable (o Running) el proceso puede correr o est corriendo o W: sWapped, est en disco o N: niced, el proceso tiene ms baja prioridad o Z: Zombie, el proceso muri sin reportarle informacin al padre o D: Uninterruptable sleep, posiblemente esperando por disco. Este proceso NO PUEDE SER MATADO CON NINGUNA SEAL o T: Stopped, o < Ejecucin artificialmente cambiada TIME: El tiempo de procesador (en minutos:segundos) que el proceso ha consumido, este es un tiempo que normalmente no debe ser muy grande, a no ser que la mquina sea muy accesada y lleva muchas semanas o meses corriendo sin reiniciarse. Por ejemplo, en este servidor que tengo con ms de 50 das sin reiniciarse, el proceso que consume ms tiempo (50 minutos y 24 segundos de procesador) es: o 743 ? S 50:24 syslogd -m 0 COMMAND: Es el comando mediante el cual se ejecut el proceso (puede estar truncado).

ps ax: mostrar todos los procesos independientemente de si tienen un terminal asignado o no, independientemente de si pertenecen a este shell o no. Para mi es uno de los ms tiles. ps aux: lo mismo que el anterior, pero nos mostrar adems informacin del usuario que corre el proceso y variada informacin como la memoria consumida por cada proceso. Por ejemplo: ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

. .

root 2016 0.0 -m 0 root 2020 0.0 -x rpc 2041 0.0 rpcuser 2061 0.0 rpc.statd root 2094 0.0 rpc.idmapd root 2160 0.0 /usr/sbin/smartd

0.1 0.1 0.1 0.1 0.2 0.1

1576 2800 3392 1752

592 ? 468 ? 592 ? 768 ?

Ss Ss Ss Ss Ss S

10:43 10:43 10:43 10:43 10:43 10:43

0:00 syslogd 0:00 klogd 0:00 portmap 0:00 0:00 0:00

5328 1008 ? 2860 816 ?

Nos indicar en la primera columna que el usuario bajo el que ejecuta el proceso portmap se llama rpc y bajo el que ejecuta el proceso rpc.statd se llama rpcuser, los otros procesos son ejecutados a nombre de root Adems nos indicar ciertos valores extras como son:
%CPU: Porcentaje de la cpu que consumen %MEM: Porcentaje de la memoria que consumen VSZ: Tamao virtual del proceso, esto es, el uso de memoria

por parte

del cdigo (libreras y binario) as como datos, uso del stack RSS: Es el uso de memoria sin contar con el uso de ciertas funciones del kernel, tabla de procesos, etc. START: Es la hora en que el proceso comenz ps axf (tambin auxf) nos mostrar en forma de rbol los procesos del sistema, con distincin de qu proceso engendr a quin(es). Con la u, aumentar la cantidad de informacin mostrada. pstree: Es otra forma de obtener una estructura arbrea reducida de los procesos del sistema. [root@eperez ~]# pstree initacpid atd bonobo-activati clock-applet crond cups-config-dae cupsd 2*[dbus-daemon-1] dbus-launch eggcups events/0aio/0 kacpid kblockd/0 khelper 2*[pdflush] firefoxrun-mozilla.shfirefox-binnetstat

gaim gam_server gconfd-2 gdm-binarygdm-binaryX gnome-session gnome-keyring-d gnome-panel gnome-settingsgnome-terminalbash6ssh bashpstree gnome-pty-helpe gnome-vfs-daemo gnome-volume-ma gpm hald khubd 2*[kjournald] klogd kseriod ksoftirqd/0 kswapd0 mapping-daemon metacity 6*[mingetty] mixer_applet2 named nautilus notification-ar pam-panel-iconpam_timestamp_c portmap rpc.idmapd rpc.statd 2*[sendmail] smartd ssh-agent sshd syslogd thunderbirdrun-mozilla.shthunderbird-bin udevd vmnet-bridge wnck-applet xfs xinetd Nos dar un bonito resumen de los procesos y de qu depende cada uno. El nmero delante de sendmail indica que a ese nivel hay dos procesos de sendmail levantados. top: top, es uno de los comandos ms interesantes y usados para monitorear procesos, sobre todo por su interactividad, una vez ejecutemos top, debemos tener presente que cada tecla que apretemos, para top tendr un significado, top entra por defecto en un lazo

infinito mostrando cada 3 segundos una lista de los procesos ordenados por el nmero de proceso (de menor a mayor). El top nos es de gran ayuda detectando qu procesos consumen al momento mayor memoria o procesador y nos permite tomar acciones para mejorar este consumo. El top es un proceso a su vez y consume tambin procesador, por lo que si tenemos un servidor medianamente cargado no debemos mantenerlo constantemente cargado pues contriubuir un poquito a cargar el procesador. un ejemplo de top:
12:45:35 up 50 days, 12:08, 1 user, load average: 2.13, 2.94, 3.06 221 processes: 219 sleeping, 1 running, 1 zombie, 0 stopped CPU states: cpu user nice system irq softirq iowait idle total 21.2% 0.0% 17.0% 0.0% 2.4% 27.4% 131.4% cpu00 8.1% 0.0% 10.1% 0.0% 1.9% 13.1% 66.5% cpu01 13.1% 0.0% 6.9% 0.0% 0.5% 14.3% 64.9% Mem: 2055440k av, 2005688k used, 49752k free, 0k shrd, 147416k buff 1374096k actv, 266100k in_d, 30932k in_c Swap: 2008084k av, 20972k used, 1987112k free 887724k cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 1 root 19 0 388 360 336 S 0.0 0.0 4:32 1 init 2 root RT 0 0 0 0 SW 0.0 0.0 0:00 0 migration/0 3 root RT 0 0 0 0 SW 0.0 0.0 0:00 1 migration/1 4 root 15 0 0 0 0 SW 0.0 0.0 0:00 1 keventd 5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 0 ksoftirqd/0 6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 1 ksoftirqd/1 7 root 15 0 0 0 0 SW 0.0 0.0 26:51 1 kswapd 8 root 15 0 0 0 0 SW 1.3 0.0 292:27 1 kscand 9 root 15 0 0 0 0 SW 0.0 0.0 0:00 1 bdflush 10 root 15 0 0 0 0 SW 0.0 0.0 2:31 0 kupdated 11 root 25 0 0 0 0 SW 0.0 0.0 0:00 0 mdrecoveryd 15 root 15 0 0 0 0 SW 0.3 0.0 54:51 0 kjournald 418 root 15 0 0 0 0 SW 0.0 0.0 0:00 1 kjournald

El top normalmente trabaja mostrando dos tipos de informacin, la ventana sumaria y la ventana de tareas.

La ventana sumaria es la compuesta por las primeras lneas (depende de la cantidad de procesadores):

12:45:35 up 50 days, 12:08, 1 user, load average: 2.13, 2.94, 3.06 221 processes: 219 sleeping, 1 running, 1 zombie, 0 stopped CPU states: cpu user nice system irq softirq iowait idle total 21.2% 0.0% 17.0% 0.0% 2.4% 27.4% 131.4% cpu00 8.1% 0.0% 10.1% 0.0% 1.9% 13.1% 66.5% cpu01 13.1% 0.0% 6.9% 0.0% 0.5% 14.3% 64.9% Mem: 2055440k av, 2005688k used, 49752k free, 0k shrd, 147416k buff 1374096k actv, 266100k in_d, 30932k in_c Swap: 2008084k av, 20972k used, 1987112k free 887724k cached

La primera lnea nos indica que la hora del servidor es "12:45:35" y que el servidor ha estado activo durante 50 das, 12 horas y 8 minutos. Actualmente el sistema tiene un slo usuario conectado y la carga es de 2.13 al momento actual, 2.94 a 5 minutos y 3.06 a 10 minutos. La segunda lnea nos indica que el servidor tiene 221 procesos corriendo, de los cuales 219 estn durmiendo, uno corriendo y un zombie. De la tercera a la sexta lnea, se nos indican diferentes aspectos de los dos procesadores que tiene el sistema, tales como:
Qu

porcentaje del procesador se usan por procesos de usuario (no root, no del sistema) (user) Qu porcentaje del procesador se usan por procesos que tienen un cambio de prioridad (nice) Qu porcentaje del procesador se usan por procesos del sistema (system) Qu porcentaje del procesador se usa para manejar irq, softirq Qu porcentaje del procesador se usa en procesos que estn esperando por disco Qu porcentaje del procesador est sin ocupar (idle) De todos estos valores, el ms importante, el ms peligroso es el iowait, porque indica que la mquina tiene un severo problema de entrada salida, posiblemente, seguramente de acceso al disco, si este valor supera digamos el 30 a 50%, es un valor que definitivamente hay que considerar cambiar mediante trabajo de optimizacin de disco. Las tres ltimas lneas nos indica bsicamente lo mismo que el comando free -k, es decir, informacin sobre el uso de la memoria RAM de la mquina y la memoria SWAP. De aqui en adelante, trabajamos bsicamente con lo que se llama ventana de tareas, esto es una descripcin ordenada inicialmente por el nmero de procesos en que se nos indicarn ciertos datos sobre cada uno de los procesos relevantes como son:

pid usuario del proceso prioridad (es un valor asignado por el kernel, ver slices nice level tamao del proceso y datos RSS SHARE: Memoria compartida con otros procesos Estado %CPU %MEM Tiempo consumido por el procesador CPU bajo la que se est ejecutando el proces Nombre del proceso.

en tema anterior)

Estos detalles los podemos ajustar con diferentes comandos que existen dentro del top:
P: organiza los procesos por uso de CPU M: Organiza los procesos por uso de la memoria N: Organiza los procesos por PID (de menor a mayor)

Otros comandos tiles:


q: sale del top s: Cambia la tasa

de refrescamiento (de 3 segundos a cualquier valor que pongamos) [ESPACIO]: Refresca automticamente ahora W: Escribe los cambios en la configuracin a disco; de lo contrario cualquier cambio que hagamos con los comandos de orden o de tasa de refrescamiento no tendrn validez para la prxima vez que ejecutemos el top k: mata un proceso, tenemos que indicarles el nmero de proceso a eliminar y el tipo de seal que usaremos (por defecto sugieren 15) Ms comandos pueden ser obtenidos mediante: man top Matando procesos: Una de las formas ms cmodas de matar un proceso es desde el comando top, desde el top podemos, viendo previamente el nmero del proceso, indicarle con la letra k, el pid del proceso que deseamos eliminar y este comando (top) se ocupar de matarlo. Claro, no siempre estamos con el top ejecutando, por lo que el comando ms opcionado para matar un proceso para matar un proceso es el comando kill kill [-SEAL] <pid1> [<pid2>...<pidN>] kill requiere de al menos un parmetro y este es el nmero del proceso que deseamos matar. De dnde sacar el nmero de proceso?: Ver ps y top De no decirle la seal que usaremos, el kill trabajar con la seal 15 (TERM).
kill

-15 1845 es similar a:

kill kill kill

1845 pues ambas matarn al proceso 1845 con la seal 15 -9 1845, lo matar de forma brusca con la seal KILL (9) -10 1845 enviar la seal 10 al proceso 1845, el bash por ejemplo no obedece a la seal 15, es decir con la simple seal 15 no se deja matar, al parecer est hecho para evitar un error al matarlo, el bash se muere en caso de recibir la seal 10. kill -9 1023 1024 1025 matar con la seal 9 los procesos 1023, 1024 y 1025 kill es muy til cuando vemos que tenemos que matar un proceso en especfico. Ahora, es un poco difcil si tuviramos que matar varios procesos a la vez (varios es un nmero mayor de 10 o 100 por ejemplo). Cmo podemos hacer para matar varios procesos a la vez? bueno, el comando killall viene a nuestra ayuda, tiene las mismas caractersticas del kill en lo que respecta a las seales, excepto que no se pone el pid, sino que se indica el nombre del proceso a matar:
killall

httpd matar con la seal 15, TODOS los procesos httpd del sistema killall -10 bash matar con la seal 10 a TODOS los procesos bash que estn corriendo en el sistema. killall -9 ping matar con la seal 9 a todos los potenciales procesos ping que existan en el sistema. killall sendmail matar todos los procesos sendmail que existan en el sistema. Es decir, de esta forma logramos muy fcilmente matar un nombre de proceso determinado sin tener que describirle ni el nmero de proceso ni la cantidad de procesos, matar ya sea un proceso nombrado de esta forma o cientos o miles de procesos que se nombren as. Siempre debemos ser muy cuidadosos a la hora de matar un proceso, pues siempre hay que pensar que no somos los nicos que trabajamos con un servidor sino que nuestras acciones pueden estar afectando (o beneficiando) a cientos o miles de usuarios que dependen de este servidor para sus labores normales. Tarea: Detectar cuntos procesos bash hay en el sistema, tratar de matarlos primeramente con kill -15 (no 10!!) y posteriormente matarlos con killall envindole la seal 10. Qu diferencias hay? Cambios de prioridad a los procesos nice, es el comando que nos permite correr un proceso (comando) con un cambio en su nivel de niceness. nice: sin ninguna otra opcin, nos dir el nivel de nice conque estamos corriendo (nice hereda este valor del shell).

nice bash ejecutar el shell bash, pero lo har con un nivel de prioridad de 10 (ms bajo que 0), por ejemplo, verifiquemos: nice bash nice Esto lo que har ser ejecutar el bash pero con nivel de nice incrementado por 10, y el comando nice solo, nos indicar que el shell tiene una prioridad de 10 (correcto) nice tambin se puede invocar con el parmetro -n, el cual indicar claramente qu variacin respecto al valor actual de nuestro shell tendr el proceso que ejecutemos. Por ejemplo, suponiendo que nuestro shell tiene un nivel de nice de 0, al ejecutar: nice -n 5 bash Lo que har ser ejecutar el basj con un nivel de prioridad 5 (0+5). Si ahora desde este mismo shell con prioridad 5, ejecutramos: nice -n -10 bash Lo que haramos sera llamar al bash, pero quitarle 10 niveles de prioridad (5-10=-5) por lo que haramos correr al bash con una escala negativa, es decir con una prioridad ms alta que el comn de los procesos (prioridad 0). Podemos verificarlos ejecutando solamente: nice Los usuarios normales no pueden llamar al nice con un valor menor al valor de su shell. Es decir, si tenemos un usuario cualquiera (digamos: eperez), y el nice de este usuario es de 0, entonces no podremos llamar a ningn proceso con un nice menor de 0, si el nice del usuario es 10, entonces no podremos llamar a ningn proceso conun nice menor a 10. Bsicamente no podemos desde un usuario normal, ajustar la prioridad (-n) a ningn valor negativo. Verifiqumoslo: su - eperez (me convierto en el usuario eperez) nice (nos dir que 0) nice -n -1 bash (intento ponerme con una prioridad menor a la original ma, me negar) nice -n 5 bash (me dejar disminuir mi prioridad, a 5) nice (en efecto me indicar 5) nice -n -2 bash (intento nuevamente bajarme de 5 a 3, me dir que no). RENICE: renice me permite, dado un nmero de proceso, cambiarle su prioridad renice <prioridad> [-p pid ....] [-g grp ....] [-u user ...] Los usuarios no root, es decir los usuarios normales del sistema slo pueden hacer un renice de los procesos que les pertenecen y no pueden hacer un renice a un valor menor al del shell conque ellos corren. Como root podra poner: renice -10 -u rpc (aumentarafor en 10 la prioridad de todos los procesos bajo el usuario rpc) renice +5 -u rpcuser (disminuira en 5 la prioridad de todos los procesos bajo el usuario rpcuser) renice -5 -p 1846 (aumentara la prioridad del proceso 1846 en 5) Tarea: Como un usuario no privilegiado (curso por ejemplo) cambiar la prioridad de su propio shell.

NOHUP: nohup es un comando que viene de la palabra: No Hangup, es muy til para cuando pretendemos ejecutar un comando que no se cuelgue en caso de que salgamos del shell. En efecto, al ejecutar un comando con & este seguir escribiendo al terminal en que estamos, en caso de salir por cualquier concepto (cerrando la ventana, cayndose la conexin, etc), este comando que se est ejecutando eventualmente ser eliminado por el kernel. El comando nohup nos permite que los procesos ignoren las seales KILL y TERM de esta forma evitando que sean matados cuando salgamos del sistema y puedan seguir procesndose. El comando nohup permite adems que toda la informacin de salida en vez de ir a la salida estndar (monitor) lo que har ser guardar toda la salida en el archivo nohup.out para que la podamos analizar posteriormente. Un ejemplo del comportamiento de este comando: [root@eperez ~]# nohup ping 198.6.1.1 & [1] 5435 [root@eperez ~]# nohup: appending output to `nohup.out' Se mantendra ejecutando el ping en el proceso 5435 an cuando salgamos del sistema, y si hacemos un tail -f nohup.out Podremos ir viendo la salida de ping an cuando regresemos en unas horas. Un proceso ejecutado con nohup acaba cuando l decida que es tiempo (por ejemplo si usamos wget para bajar un sitio lo podemos dejar con nohup y al otro da verificar que todo est ok) o si es un proceso que no acaba (el ping por ejemplo), podemos matarlo mediante kill. Tarea:El comando: watch free -m nos permite ejecutar cada 3 segundos el comando free -m, de forma tal que podemos ir viendo cmo se comporta la memoria. Ejecutar este comando desde nohup. Otra utilera muy muy usada en linux es el vmstat vmstat permite realizar un monitoreo de la actividad completa del sistema, que va desde chequeos de procesos, memoria RAM, SWAP, accesos a disco y cpu. Lo que nos puede dar de forma tabulada una idea general de cmo se comporta el sistema en un determinado momento. El vmstat tiene varios switches para ejecutarse, sin embargo basmonos en esta recomendacin para ejecutarlo, si desean conocer ms sobre otros switches, podemos hacerlo viendo la pgina manual (man vmstat)

El comando que usaremos ser: vmstat -S m 5 Lo que indicar que realice un chequeo del sistema cada 5 segundos y que muestre los valores en megabyted (de lo contrario lo mostrar en kb) Para los usuarios que tengan rhel3, la forma antigua de ejecutar el vmstat era: vmstat -m 5 En cualquiera de las dos variantes, la informacin mostrada es prcticamente la misma. Veamos ahora qu significado tiene cada columna, este es un ejemplo que slo muestra la primera lnea: [root@eperez ~]# vmstat -S m 5 procs -----------memory---------- ---swap-- -----io-----system-- ----cpu---r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 113 23 199 0 0 87 24 1060 503 11 1 85 3 Primero que todo indicar que la primera lnea de datos que se muestra en el vmstat indica un promedio desde que el sistema fu encendido, es decir, los valores actuales, los valores que indican claramente cmo se comporta el sistema en ESTOS momentos, salen a partir de la segunda lnea de informacin. En este caso estamos mostrando solamente la primera lnea, es decir, los valores promediados desde que la mquina arranc. procs: se divide en dos parmetros:

r: runneable processes, o procesos que estn corriendo o esperando ser procesados. Normalmente el valor de r debe ser igual o menor a la cantidad de procesadores que tengamos. En mi caso es 1, y por lo tanto para mi uniprocesador est bien. No debe tomarse como un valor exactsimo, es decir, en mi caso hasta 2 o 5 en ciertos momentos estara bien. Lo que no estara bien es un valor constantemente en 4 o en 5. b: bloqued, procesos bloqueados, normalmente son procesos que estn esperando por e/s, es decir disco. No es natural tener procesos en b, para servidores MUY altamente usados, es natural tener algunosprocesos en b, pero no es normal que el b sea mayor que r. Como siempre, no es una receta a seguir, solamente indico que si b se mantiene constantemente con muchos procesos, esto es signo de que algo anda mal, lento, en el disco y debemos tomar acciones pertinentes.

memory: se divide en 4 parmetros:

swpd: indica la cantidad de memoria que est swapeada. Normalmente el sistema linux usa la swap, y no es signo de alarma que la memoria tenga partes swapeadas, pero s lo sera si la swap comienza a incrementarse en cada chequeo a lo largo del tiempo o que la swap constantemente est variando (unas veces crece, otras decrece) pues es indicador de que se est recayendo constantemente en ella y esto afecta el performance del sistema. free: Es la memoria no usada por el sistema. buff: Es la memoria destinada a almacenar buffers cache: Es la memoria destinada a cachear accesos a disco y pginas de procesos en general, es til para mejorar el performance del sistema.

La memoria libre realmente se puede considerar la suma de free+buff+cache, pues el sistema puede disponer fcilmente de buff y cach para sus datos no descartables. La memoria free es normalmente bien baja, ya que el sistema siempre trata de usar el resto de la memoria libre para cachear. Si la memoria cache es pequea, debemos considerar que estamos con un sistema recin arrancado, o el sistema se est quedando sin memoria (es decir, no puede cachear mucho porque casi toda la ram la est dedicando a datos no descartables). swap: Lo podemos dividir en:

si: cantidad de mb que estamos swapeando hacia disco so: cantidad de mb que estamos trayendo desde la swap.

En todo caso no es normal que el sistema est constantemente si/so, a veces puede ocurrir y es natural, lo que no es normal es que el sistema todo el tiempo est mostrando datos de swap. Este valor debe estar mayormente en 0 con algunos pequeos picos de acceso. io Lo podemos dividir en:

bi: bytes in, medido en mb que entran a los discos. En sistemas de mensajera el bi siempre es un poco alto pues normalmente hay datos entrando a disco. bo: bytes out, medido en mb que salen de los discos. En sistemas de mensajera, pero ms visible en sistemas de web, este valor de bo es un poco alto, bastante alto ya que constantemente se estn leyendo datos del disco.

Estos valores, sobre todo bo, puede ser un buen indicador de que el sistema necesita incrementar la cach. Pero no es nada malo, pues el disco est para eso, para ser accedido. Ahora, hay que saber determinar cuando un disco no es lo suficientemente rpido para almacenar o mostrar toda esa cantidad de informacin. Estos valores son muy variables, en un sistema de mensajera bo normalmente tiene picos y es cuando las mquinas de los clientes hacen pop para recoger los mensajes.

system Se divide en 2 columnas:


in: nmero de interrupciones por segundo cs: nmero de cambios de contexto.

Estos dos valores no los vamos a analizar pues a mi entender no aportan datos interesantes. cpu se divide en 4 columnas, las cuales son porcentajes de:

us: tiempo dedicado por el procesador ejecutando cdigo que no es del kernel (tiempo dedicado al usuario) sy: tiempo del sistema (ejecutando cdigo del kernel) id: tiempo en que el procesador no est haciendo nada (idle) wa: tiempo esperando por e/s (disco, waiting)

El ms interesante realmente es el wa, si el tiempo esperando por el procesador supera el 30 debemos tomar esto como una alarma, el sistema est perdiendo mucho tiempo esperando por los discos y debemos mejorar nuestro sistema de I/O. Si supera CONSTANTEMENTE los 50 ese sistema TIENE que ser optimizado o cambiado el sistema de I/O por algo mejor. Aqu un ejemplo real de un servidor de hosting con un procesador:
procs -----------memory---------- ---swap-- -----io---- --system-----cpu---r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 143 43 123 480 0 0 6 6 1 6 5 5 5 7 1 0 143 44 123 480 0 0 6 169 404 792 5 2 92 1 0 0 143 41 123 480 0 0 3 84 415 545 6 3 91 0 0 0 143 42 123 480 0 0 10 88 374 394 4 2 94 0 0 0 143 42 123 480 0 0 32 182 426 972 6 3 89 2 0 0 143 43 123 480 0 0 8 312 458 398 45 4 51 1 1 0 143 28 123 481 0 0 39 133 496 733 14 6 77 3 1 0 143 31 124 486 0 0 1069 163 453 1137 11 5 80 4 0 0 143 31 124 479 0 0 587 781 578 885 58 7 24 11 1 0 143 39 124 479 0 0 16 194 506 466 36 5 57 2 1 0 143 38 124 479 0 0 18 571 555 223 61 24 5 10 0 0 146 33 124 462 0 0 61 808 741 1270 63 16 22 0 0 0 146 37 124 462 0 0 42 130 391 214 31 3 66 0

0 0 146 3 81 6 0 0 146 5 80 1 0 0 146 2 93 2 0 1 146 5 34 6 2 0 146 16 27 15 0 0 146 7 75 3 0 0 146 3 88 3 0 0 146 4 80 1 procs cpu r b swpd sy id wa 1 0 146 3 88 1 1 0 146 1 94 2 0 0 146 3 92 0 0 0 146 2 85 2 0 0 146 4 78 3 1 0 146 2 88 2 0 0 146 1 94 2 2 0 146 2 90 2 0 0 146 3 86 1 4 1 146 4 69 3 1 0 146 20 22 8 2 0 146 4 86 1 0 1 146 3 74 13 0 0 146 2 90 1 0 0 146 2 86 1 0 0 146 1 97 0 0 1 146 7 23 9

40 43 45 47 42 42 45 47

124 124 124 124 124 124 124 124

462 462 462 463 465 465 465 466 memory

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 swap

48 48 32 85 713 93 37 14

220 26 162 191 306 164 307 74 io

333 402 409 388 631 390 329 297

300 10 491 14 149 3

658 55 711 42 248 15 379 6

1317 15 system

free 50 53 56 58 60 52 61 56 53 63 65 59 61 57 63 64 34

buff 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 125

cache 466 466 466 466 468 468 469 469 469 469 470 470 470 470 470 470 470

si 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

so 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

bi 11 10 29 27 415 42 7 12 6 30 138 36 55 6 16 1 64

bo 178 133 82 146 185 133 94 146 169 206 257 98 302 154 27 148 130

in 406 347 425 315 355 415 312 372 339 448 415 342 552 326 337 318 362

cs us 490 162 664 8 4 4

207 11 420 15 218 484 402 7 4 6

382 10 703 24 302 50 839 9

298 10 236 7

713 11 121 2

389 60

Tarea, realizar un anlisis de este grfico. Emitir su opinion. Algunas veces nos topamos conque un binario no puede ser sobreescrito o que una particin no puede ser desmontada porque alguien le est accediendo, quin est accediendo a esa particin o archivo?

El comando lsof es sumamente poderoso, en esta seccin slo daremos ciertos elementos, pero en realidad es muy muy grande y poderoso. Para analizar ms el comportamiento de lsof por favor referirse a la pgina manual (man lsof) o referirse a la internet lsof es una herramiente muy til en todas las circunstancias, ya sea para chequeos diarios del sistema como para auditoras de seguridad. Veamos algunos ejemplos de lsof: lsof este comando solamente me mostrar todos los archivos abiertos, conexiones de red (sockets) abiertos as como pipes y todo elemento que use linux para comunicarse. Es una cantidad de informacin muy grande. lsof `which httpd` nos dir todos los procesos que estn ejecutando el binario del httpd (which lo que hace es decirnos el camino exacto de httpd). Otra variante de lo anterior: lsof /usr/sbin/httpd lsof /etc/passwd Me indicar quin est accediendo a /etc/passwd lsof /dev/hda3 Dir qu procesos estn accediendo a la particin /dev/hda3 lsof -t /usr/sbin/sendmail nos indicar solamente los nmeros de proceso que estn accediendo al binario de sendmail. lsof -c bash nos indicar qu archivos estn abiertos por procesos que comiencen con "bash" lsof +p 4025 qu archivos estn siendo accesados por el proceso 4025 lsof -i :80 indicar qu procesos estn accediendo al puerto 80 de nuestra red.
Servicios: Mantener la seguridad de un sistema no es una tarea de un slo da, y se basa fundamentalmente en variados aspectos que debemos tener en cuenta, en clases anteriores hemos logrado Sin embargo, las situaciones anteriores aunque importantes, tambin deben ser complementadas con acciones que iremos estudiando a lo largo del curso. En este caso, trataremos algo muy importante como es el manejo de servicios en linux. Su sistema posiblemente requiera tener activo el servidor web, por lo tanto deberemos activar el servicio apache, pero siempre

debemos manejar un control completo de qu servicios debemos apagar porque no usamos y qu servicios debemos mantener arriba. Los servicios de Linux son demonios o servidores que ejecutan ciertas tareas, ms adelante estudiaremos en detalle una gran cantidad de estos servicios, y cada uno de estos demonios o servidores activan o abren puertos hacia la internet. Yo veo los puertos como ventanas abiertas hacia la internet, y por supuesto no es lo mismo controlar ua casa que tenga abierta 50 o 60 ventanas a controlar los accesos de intrusos en una casa con 5 ventanas, al menos el intruso tiene ms posibilidades de ser capturados. Los servicios son programas hechos por seres humanos, pueden contener y contienen errores, en clases siguientes trataremos algunas formas que usa redhat para controlar accesos no autorizados adems como otras formas para prevenir accesos a travs de fallas. Pero sin embargo, no hay nada mejor como tener la total certeza de que no entre un atacante por un servicio con falla y la mejor forma de que alguien no entre a travs de un servicio es? Exacto!: Apagar el servicio. Al apagarlo ya no nos preocupar tanto si el servicio tiene fallas o no, sencillamente no est corriendo y por lo tanto no podr ser explotado.

Antes de comenzar a configurar los servicios (apagarlos y encenderlos) debemos entender qu son los niveles de ejecucin de Linux. Un nivel es un estado o un modo, que es definido por los servicios listados en /etc/rc.d/rcX.d, donde X es el nmero del nivel. En RedHat los siguientes niveles (runlevels):

0 Halt 1 Mono Usuario sin red 2 no usado actualmente 3 Multiusuario con red (full multiuser) 4 no usado actualmente 5 Multiusuario con red y ambiente X 6 Reboot

Si al comenzar la mquina, vemos una pantalla de login en modo texto (negra con letras blancas) entonces casi seguramente estamos trabajando en el runlevel 3. El nico runlevel que tiene ambiente grfico por defecto (login grfico) es el runlevel 5, los dems sencillamente se ocupan de no cargar el ambiente grfico pero de manejar los servicios que le hemos indicado. El runlevel por defecto puede ser cambiado modificando el archivo /etc/inittab, que contiene una lnea casi al inicio que dice algo as:
id:5:initdefault:

Esto lo que significa (en mi caso) que el nivel de arranque por defecto de mi sistema es el 5. Si deseramos que nuestro sistema arrancase en el runlevel 3, entonces sencillamente cambiaramos el 3

por el 5. Este cambio no har efecto de forma inmediata, /etc/inittab es lo que ejecuta el proceso init al arrancar el sistema, por lo tanto hasta que no reiniciemos la mquina no veramos el cambio. Si deseramos cambiar inmediatamente de nivel, podramos usar el comando telinit seguido del nivel al que queremos llegar
telinit 3

Tanto para ejecutar telinit como para cambiar /etc/inittab se debe estar como el usuario root. telinit no cambia el archivo /etc/inittab, sino que sencillamente cambia el runlevel que actualmente ejecutamos sin afectar para nada el arranque previsto para el sistema en posteriores momentos, es decir, si reiniciramos el sistema, este arrancara en el runlevel previsto en /etc/inittab independientemente de que hayamos ejecutado telinit o no. Nosotros tambin usamos y realiza la misma funcin del telinit, al menos as pensamos.
init 3

Otra caracterstica del /etc/inittab es la posibilidad de definir las consolas virtuales que tenemos. Las consolas virtuales son a las diferentes pantallas que podemos acceder cuando presionamos ALT-F1 hasta el ALT-F6, si estamos en el ambiente grfico primero tenemos que presionar CTRL-ALT-F1 para movernos a la primera consola y de ahi s podemos actuar con ALT-FX Para volver al ambiente grfico basta con presionar ALT-F7 En resumen, por defecto tenemos 6 consolas virtuales que son atendidas a su vez por 6 servicios de mingetty:
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty 2:2345:respawn:/sbin/mingetty 3:2345:respawn:/sbin/mingetty 4:2345:respawn:/sbin/mingetty 5:2345:respawn:/sbin/mingetty 6:2345:respawn:/sbin/mingetty tty1 tty2 tty3 tty4 tty5 tty6

Cada proceso del mingetty se pasa las 24 horas del da consumiendo tiempo de cpu, memoria, en fin, recursos del sistema esperando que alguien entre al terminal en cuestin.O sencillamente podramos borrar esas lneas (yo prefiero

comentarlas por si algn da me arrepiento o necesito, pues las descomento y ya). Cualquier cambio que realice en el init, lo podemos hacer efectivo llamando:
init q

Que leer nuevamente el inittab y actuar acorde: bajando los servicios de getty para los terminales del 3 al 6 en este caso Veamos un poco ms la organizacin de los servicios dentro de /etc: Existen dos directorios fundamentales para el manejo de servicios:

/etc/init.d : Es el directorio donde se almacenan en s los scripts que manejan la actividad de los servicios. En las versiones de RedHat (CentOS) esto es un enlace directo al directorio real que est localizado en /etc/rc.d/init.d /etc/rc.d: Es el directorio que contiene al menos los 7 niveles de ejecucin en forma de directorios. Dentro de cada uno de estos niveles de ejecucin estn descritos los procesos que se activarn dentro de cada nivel. Son sencillamente accesos directos a /etc/init.d

En /etc/rc.d/rc3.d por ejemplo, tendremos una serie de enlaces directos hacia el directorio /etc/init.d que indicarn si este enlace (servicio) se ejecutar al arrancar el sistema (si comienza con una S) o al apagarse el sistema (si comienza con una K) y un nmero que indicar el orden de arranque y parada (S10 va primero que S80 por ejemplo) posteriormente un texto que nos dice a qu script especficamente apunta. Por ejemplo:
ls /etc/rc.d/rc3.c/ K01yum K50tux K02NetworkManager K50vsftpd K03rhnsd K73ypbind K05saslauthd K74nscd K08vmware K74ntpd K10dc_server K85mdmpd K10psacct K89netplugd K12dc_client K90bluetooth K15httpd K94diskdump K20nfs K99microcode_ctl K24irda K99readahead K25squid K99readahead_early K30spamassassin S05kudzu daemon K35smb S06cpuspeed K35winbind S08iptables K50netdump S09isdn S09pcmcia S10network S12syslog S13irqbalance S13portmap S14nfslock S15mdmonitor S18rpcgssd S19rpcidmapd S19rpcsvcgssd S25netfs S26apmd S28autofs S40smartd S44acpid S55cups S55named S55sshd S56rawdevices S56xinetd S80sendmail S85gpm S90crond S90vmware S90xfs S95anacron S95atd S97messagebus S98cups-configS98haldaemon S99local

Me indica todos los servicios que arrancarn al arrancar el nivel 3 o que pararn al parar el nivel 3. En el caso de iptables (S08iptables), arrancar (S) despus que el servicio kudzu (S08 es mayor que S05, kudzu por lo tanto arranca primero). Una forma de evitar que un script arranque (o pare) puede ser eliminando el acceso directo del nivel que deseo, por ejemplo podra rm /etc/rc.d/rc3.d/S26apmd y as evitara que el servicio apmd arrancara automticamente con el nivel 3. Dentro de /etc/init.d podemos ver una serie de archivos que no son ms que los scripts que contienen la informacin sobre inicio y parada de los diferentes servicios o demonios. En cada mquina estos pueden variar, en dependencia de lo que hayamos decidido instalar en ella, en mi caso tengo estos servicios:

[root@eperez ~]# cd /etc/init.d/ [root@eperez init.d]# ls acpid functions messagebus spamassassin anacron gpm microcode_ctl apmd haldaemon named atd halt netdump autofs hidd netfs bluetooth httpd netplugd cpuspeed iptables network crond irda NetworkManager cups irqbalance nfs cups-config-daemon isdn nfslock dc_client killall nscd dc_server kudzu ntpd diskdump mdmonitor pand dund mdmpd pcmcia

portmap psacct rawdevices readahead readahead_early rhnsd rpcgssd rpcidmapd rpcsvcgssd saslauthd sendmail single smartd smb squid sshd syslog tux vmware vsftpd winbind xfs xinetd ypbind yum

Posteriormente haremos una breve descripcin de los servicios ms interesantes de linux. De momento veamos una descripcin interna de un script: si vemos por ejemplo el script del servicio sendmail (/etc/init.d/sendmail) podremos notar que las primeras lneas, aunque comentadas, nos son de gran utilidad para determinar en qu consiste este servicio:
#!/bin/bash # # sendmail This shell script takes care of starting and stopping # sendmail. # # chkconfig: 2345 80 30 # description: Sendmail is a Mail Transport Agent, which is the program \ # that moves mail from one machine to another.

Es un script normal hecho en bash, como posteriormente veremos en el curso cmo hacer algunos scripts en bash obviemos la primera lnea que es la que indica que correr en un subshell (/bin/bash) Inmediatamente despus tenemos una serie de lneas con la descripcin del script, se llama sendmail y es el script que se encarga de levantar y parar el servicio se sendmail. Inmediatamente despus vemos una lnea muy interesante que es los valores de arrranque y parada
chkconfig: 2345 80 30

Esto le indicar a las utileras para manejar el arranque y la parada (chkconfig y ntsysv) cules sern los modos de arranque por defecto (2 3 4 y 5) as como qu posicin tendr en los enlaces directos (S80sendmail posiblemente, por el 80) y qu valores tendr al apagarse (K30sendmail posiblemente, por el 30). Posteriormente a esta lnea, nos dan una breve descripcin para los efectos que querramos de qu labor realizar el servicio. En este caso nos indicar que el sendmail es un MTA o mail transport agent que es el programa que se encarga de enviar los mails de una mquina a otra.

Ahora, editar manualmente estos enlaces, con el objetivo de borrar un servicio de la lista de arranque de un modo, es un poco complicado, podemos caer en errores como el hecho de poner una s en vez de S, o un nmero mal puesto o poner un servicio delante de otro que requiere para trabajar (cmo echar a andar el sendmail si la red todava no anda?). Es por esto que en la siguiente seccin veremos algunas utileras para manejar ms cmodamente estos servicios. Existen varias formas de controlar los servicios del sistema, como hablamos anteriormente, podemos arrancarlos o no, si borramos o creamos los enlaces correspondientes en /etc/rc.d/rcX.d, sin embargo es un poco difcil de manejar servicios por esa va, por lo que nosotros veremos dos opciones mucho ms cmodas para manejar servicios:

ntsysv: Es una herramienta grfica que nos permitir configurar qu servicios queremos arrancar o apagar en el runlevel que estamos. Es una forma muy fcil de echar a andar o apagar servicios, sin embargo en mi opinion consume un poco de recursos al tener que levantar un pequeo ambiente grfico adems que slo trabaja para el runlevel actual y editar otros runlevels se hace un poquito complicado. chkconfig: Es una utilera bien simple que igual nos permitir agregar o quitar servicios del runlevel en que estamos, pero adems nos permitir agregar ms servicios a la lista de servicios o eliminarlos de la lista as como nos permitir un trabajo un poco ms detallado de diferentes runlevels.

A la final, ambas utileras lo que hacen es editar diferentes archivos y enlaces directos que estn disponibles en /etc/rc.d y /etc/init.d Cmo usamos el chkconfig?, tenemos varios switches interesantes en este caso el --list:
chkconfig --list

nos permite listar, todos los servicios actualmente instalados en el sistema y por cada runlevel podemos ver su estado (off/on)
[root@eperez ~]# chkconfig --list netfs 0:off 1:off 2:off xinetd 0:off 1:off 2:off irda 0:off 1:off 2:off named 0:off 1:off 2:on vsftpd 0:off 1:off 2:off ypbind 0:off 1:off 2:off smartd 0:off 1:off 2:on mdmonitor 0:off 1:off 2:on pcmcia 0:off 1:off 2:on messagebus 0:off 1:off 2:off NetworkManager 0:off 1:off 2:off cpuspeed 0:off 1:on 2:on sendmail 0:off 1:off 2:on nfs 0:off 1:off 2:off irqbalance 0:off 1:off 2:off syslog 0:off 1:off 2:on cups 0:off 1:off 2:on acpid 0:off 1:off 2:off yum 0:off 1:off 2:off 3:on 3:on 3:off 3:on 3:off 3:off 3:on 3:on 3:on 3:on 3:off 3:on 3:on 3:off 3:on 3:on 3:on 3:on 3:off 4:on 4:on 4:off 4:on 4:off 4:off 4:on 4:on 4:on 4:on 4:off 4:on 4:on 4:off 4:on 4:on 4:on 4:on 4:off 5:on 5:on 5:off 5:on 5:off 5:off 5:on 5:on 5:on 5:on 5:off 5:on 5:on 5:off 5:on 5:on 5:on 5:on 5:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off

httpd 0:off ntpd 0:off tux 0:off dc_client 0:off apmd 0:off rpcsvcgssd 0:off smb 0:off crond 0:off network 0:off microcode_ctl 0:off rpcgssd 0:off gpm 0:off spamassassin 0:off sshd 0:off isdn 0:off nscd 0:off readahead 0:off netdump 0:off netplugd 0:off haldaemon 0:off kudzu 0:off anacron 0:off cups-config-daemon 6:off autofs 0:off nfslock 0:off vmware 0:off squid 0:off rpcidmapd 0:off winbind 0:off iptables 0:off readahead_early 0:off portmap 0:off dc_server 0:off psacct 0:off rhnsd 0:off mdmpd 0:off rawdevices 0:off saslauthd 0:off atd 0:off bluetooth 0:off diskdump 0:off xfs 0:off xinetd based services: echo: off time: off rsync: off eklogin: krb5-telnet: kshell: off time-udp: gssftp: off cups-lpd: echo-udp: klogin: off daytime-udp: chargen: daytime: chargen-udp:

1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 0:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off 1:off

2:off 2:off 2:off 2:off 2:on 2:off 2:off 2:on 2:on 2:off 2:off 2:on 2:off 2:on 2:on 2:off 2:off 2:off 2:off 2:off 2:off 2:on 1:off 2:off 2:off 2:off 2:off 2:off 2:off 2:on 2:off 2:off 2:off 2:off 2:off 2:off 2:off 2:off 2:off 2:off 2:off 2:on

3:off 3:off 3:off 3:off 3:on 3:on 3:off 3:on 3:on 3:off 3:on 3:on 3:off 3:on 3:on 3:off 3:off 3:off 3:off 3:on 3:on 3:on 2:off 3:on 3:on 3:off 3:off 3:on 3:off 3:on 3:off 3:on 3:off 3:off 3:off 3:off 3:on 3:off 3:on 3:off 3:off 3:on

4:off 4:off 4:off 4:off 4:on 4:on 4:off 4:on 4:on 4:off 4:on 4:on 4:off 4:on 4:on 4:off 4:off 4:off 4:off 4:on 4:on 4:on 3:on 4:on 4:on 4:off 4:off 4:on 4:off 4:on 4:off 4:on 4:off 4:off 4:off 4:off 4:on 4:off 4:on 4:off 4:off 4:on

5:off 5:off 5:off 5:off 5:on 5:on 5:off 5:on 5:on 5:off 5:on 5:on 5:off 5:on 5:on 5:off 5:on 5:off 5:off 5:on 5:on 5:on 4:on 5:on 5:on 5:off 5:off 5:on 5:off 5:on 5:on 5:on 5:off 5:off 5:off 5:off 5:on 5:off 5:on 5:off 5:off 5:on

6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 5:on 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off 6:off

off off off off off off off off off

Por ejemplo el servicio anacron est apagado para los niveles 0, 1 y 6, y est encendido para 2 3 4 y 5. Si quisiramos ver una lista no tan extendida, sino sencillamente los valores para un slo servicio podramos hacerlo indicndole el nombre del servicio:
[root@eperez ~]# chkconfig --list sendmail sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Otro switch interesante es el --add y el --del nos permite configurar un servicio nuevo en todos los niveles declarados en su script de inicio.
chkconfig --del servicio

nos permitir hacer lo mismo pero al revs, eliminar todos los enlaces directos de los directorios /etc/rc.d/rcX.d para que no levante ni sea matado al terminar el sistema. Ahora el switch ms interesante: --level --level se usa para cambiar el estado de un servicio en diferentes runlevels a la vez. Se ejecuta as:
chkconfig --level 2345 sendmail on

Esto indicar que en los niveles 2,3,4 y 5 al servicio sendmail debe activarlo. por supuesto podemos usar off para desactivarlo y podemos usar cualquier combinacin de niveles que deseemos, pero lo ms comn es usarlos todos a la vez (2345), si quisieramos slo trabajar con 3 y 5, podramos hacerlo con chkconfig --level 35 sendmail on Ahora, hasta el momento hemos hablado de cmo apagar y levantar servicios pero refirindonos a los niveles de arranque, es decir, hemos hablado de cmo configurar el sistema para cuando se apague o encienda. Esto no es windows, Linux prcticamente no hay que reiniciarlo nunca, y en verdad lo digo. Tcnicamente en comportamientos normales, Linux slo exige ser reiniciado cuando ocurre una condicin: Se actualiza el kernel. Es decir, cuando se hace cualquier labor de reconfiguracin del sistema, o cuando se realiza la actualizacin del sistema, no es necesario reiniciar linux, todo debe correr de forma casi inmediata, excepto cuando actualizamos el kernel, el kernel s exige (de momento) que sea reiniciado el sistema linux para que el nuevo kernel comience a trabajar. Esto es un evento que ocurre una vez cada algunos meses, a veces con antelacin a veces se atrasa, pero es un evento que no es algo frecuente como en windows. Entonces, cmo podemos hacer para apagar un demonio o levantarlo, de forma inmediata?, bueno, tenemos dos formas, la primera es ejecutar directamente el script que est en /etc/init.d:

service sendmail stop por ejemplo este comando parara sendmail, lo apagara, nadie podra ser capaz de enviar mails a travs del servidor. La otra variante es usar el comando service:

Reiniciara la red (sin tener que reiniciar el sistema!), es decir, yo tcnicamente podra hacer cambios en la configuracin de IP de mi red y con emitir este comando ya todo trabajara. Ahora, qu es eso de restart, stop, etc? Para m son las acciones, es cmo podemos llamar a un script e indicarle qu debe realizar.

start: Arrancara el servicio stop: Apagara el servicio restart: Reiniciara el servicio (stop+start) condrestart: Si el servicio est encendido, reiniciarlo. reload: Recargara el archivo de configuracin del servicio status: Indicara el estado del servicio (Is running, list de PIDs, etc)

Aunque potencialmente pueden existir otras acciones, estas son las bsicas para cada servicio. Tarea: Progar estas acciones con el comando service. Es de hacer notar que el comando service (o /etc/init.d/demonio) no apaga ni enciende permanentemente un demonio: en cuanto el sistema es reiniciado el sistema obedecer a lo que le hemos indicado con los comandos chkconfig, es decir, con lo que le tengamos indicado en los directorios /etc/rc.d/rcX.d). El comando service es para inmediatamente apagar o encender un servicio sin esperar a reiniciar el sistema. Pero no indica que quedar encendido o apagado por siempre, sino que solamente mientras el sistema est encendido as se quedar el comando. Marcaremos con negrita los demonios que deseamos activos. Los que no estn en negritas, por favor apagarlos como tarea (chkconfig --level 2345 demonio off; service demonio stop)

Por qu los apagaremos? Muy bsico, muchos servicios tienen tremenda utilidad, pero no todos los servicios tienen que estar corriendo todo el tiempo en el sistema, primero porque consumen recursos (cpu, memoria) y ms importante, pueden ser la puerta de entrada para atacantes lograr ganar accesos a nuestro sistema. Siempre hay que pensar: Qu servicios usaremos realmente? Y los que no usaremos, por favor apagar para evitar lo anteriormente expuesto. Total, si posteriormente lo requerimos, podemos volverlos a activar.

acpid Escucha y despacha eventos ACPI al kernel, para ms informacin sobre el acpi, ver aqu anacron Ejecuta trabajos del cron que no han sido ejecutados por estar apagado el server apmd Se usa para monitorear el uso de la batera y guardarlo en los logs. Para configurarlo se puede hacer en /etc/sysconfig/apmd atd Ejecutar comandos que han sido programados usando el comando at autofs Monta filesystems en demanda (posiblemente cdrom, floppy, a mi no me gusta, prefiero montar manualmente los filesystems) bluetooth Servicios bluetooth (bsqueda, descubrimiento, autenticacin), bluetooth es una tecnologa bastante nueva que permite la comunicacin entre equipos de forma inalmbrica. Bluetooth para linux funciona bastante bien, pero es un poco inseguro, las formas de trabajo del BT, adems en el curso no veremos este tipo de comunicacin. cpuspeed Es un demonio que se encarga de reducir los ciclos del procesador en caso de que el sistema est con baja carga, de esta forma ahorra corriente. Solamente es efectivo para procesadores que lo soporten (por ejemplo mi amd sempron no lo soporta). En todo caso es un demonio que corre slo y no es necesario tocarlo. Si no tamos que el sistema se cuelga en momentos de inactividad (por las noches?), sugiero primero que todo apagar el cpuspeed a ver si esto ayuda a salir de los problemas. crond ejecuta tareas programadas mediante el sistema cron (en la siguiente clase hablaremos de l) cups Encargado de encender o apagar el Common Unix Printing System. cups-config-daemon configura el demonio de impresin dc_client, dc_server sistema de distribucin de carga de sesiones SSL/TLS diskdump Guarda la informacin de un crash del sistema dund bluetooth dialup networking. functions funciones para ser usadas por la mayora de los scripts de /etc/init.d gpm Soporte del mouse para el ambiente texto. Si mueven el mouse en el modo texto, podrn ver que hay un cuadrito que se mueve, es el puntero del mouse. Con esta utilera podemos copiar/pegar texto entre consolas. Si estamos en un servidor remoto, sin conexin permanente al teclado/mouse, sugiero deshabilitarlo. haldaemon apagar halt si se manda a ejecutar en un runlevel, proceder a apagar el sistema. hidd human interface devices (provee via bluetooth acceso al teclado, mouse, etc) httpd servidor web, apache. iptables sistema de firewall de redhat, hecho en iptables. Usaremos un sistema propio que no el de redhat porque es muy complicado. Apagarlo.

irda Demonio para el manejo de conexiones infrarojas. Si no tenemos una laptop o conexin IR, apagar. Sugiero apagarlo en servidores. irqbalance Es un demonio que se encarga de distribuir las llamadas a interrupcciones del sistema entre los diferentes procesadores. Si nuestro sistema es uniprocesador, este demonio no tiene mucho sentido. isdn Manejo de ISDN, no se usa en el pas. Sugiero apagarlo. killall Este script se encarga de matar todos los procesos en un runleven, debe ser ejecutado solamente en 0 y en 6, de lo contrario si lo activamos en otro runlevel, al llegar a este runlevel matar todos los procesos. kudzu Es un demonio que se ejecuta al arrancar el sistema y detecta cualquier hardware nuevo instalado, y nos pide que tomemos alguna accin respecto al hardware nuevo detectado (o al hardware eliminado). Si nuestro servidor no vara en su hardware, mejor es deshabilitarlo y slo ejecutarlo manualmente (kudzu) cuando hayamos puesto algn hardware. El kudzu no afecta el funcionamiento del sistema, slo que demora un poco ms el arranque pues en cada arranque se molestar durante unos segundos (menos de 5) en verificar qu hay de nuevo. mdmpd mdmonitor herramienta de monitoreo de raids de software. En posteriores cursos hablaremos cmo crear un raid por software messagebus - demonio que maneja mensajes sobre eventos del sistema microcode_ctl - Es un demonio que se ocupa de actualizar el procesador intel con parches liberados por intel. Intel nunca indica qu correccin va en cada parche, pero los parches ayudan a mejorar el performance del procesador por lo que es bueno tenerlo activado. El demonio se actualiza a travs del sistema de actualizaciones por lo que es transparente cualquier nueva actualizacin. Este demonio slo se ejecuta al arrancar el sistema y no consume muchos recursos. no soporta otros procesadores que no sean intel, puede ir apagado en amd named - Demonio que tiene la funcin de actuar como servidor de DNS, en cursos posteriores haremos mucho nfasis en el trabajo con dns. Este demonio por s slo permite que nuestra mquina acte como dns de cach, lo que permitir que ella misma resuelva nombres sin tener que acudir a los dns del proveedor. netdump netfs - Es el sistema ocupado de montar y desmontar otros tipos de FS (de red) como el NFS, samba, NCP (netware), etc. Como usaremos samba y nfs, sugiero dejarlo activado. netplugd - demonio que se encarga de supervisar y apagar (o encender) interfaces no conexiones de red no estticas. De momento no activar. Es para poder manejar cadas o desconexiones de interfaces temporales como ppp (modem, dialup), etc. network - Es el demonio que se encarga de apagar/encender las interfaces de red del sistema. NetworkManager - Demonio que se ocupa de monitorear diversas conexiones de red e informarle al sistema sobre la ms adecuada para su uso. Es algo para mi experimental y debe ser apagado. portmap, nfslock, nfs - demonios que permiten compartir directorios, partes del disco, entre sistemas unix. Lo veremos ms adelante, por favor dejar activado.

nscd - Name Switch Cache Daemon, se ocupa de cachear respuestas a peticiones sobre usuarios y grupos para sistemas de autentificacin como ldap, nis, hesiod. Apagar de momento ntpd - Demonio que permite a nuestro servidor actuar como un servidor para sincronizar la hora. Apagumoslo, no trabajaremos linux como un servidor de tiempo, sin embargo ms adelante si veremos cmo sincronizar la hora de nuestro linux contra servidores de tiempo en internet. pand - el demonio de BT para la red personal. Apagumoslo. pcmcia - es un demonio que permite instalar dispositivos pcmcia en nuestras mquinas. Por defecto viene apagado, como nuestros servidores no tienen dispositivos pcmcia, es bueno asegurarse que est apagado psacct - demonio para llevar la contabilidad de los procesos, estadsticas y dems. Este proceso consume muchos recursos por lo que debe mantenerse apagado. rawdevices - permite a ciertas aplicaciones (oracle en particular) acceder a dispositivos en crudo (raw, no formateados), pero sin embargo ya se considera depreciado pues las aplicaciones no deben hacer peticiones a travs del rawdevice sino haciendo llamadas directas al sistema. De momento mantener encendido. readahead, readahead_early - permite predecir y cargar en memoria programas que van a ser usados. Indican que es muy bueno para el ambiente grfico. Verificar que este demonio slo se ejecuta en el ambiente grfico, no es un demonio sino que se ejecuta al comenzar el sistema. Mantener activo en el modo 5 rhnsd - Se ocupa de conectarse a la red de actualizaciones de centos (funciona para redhat tambin) y verificar si existen actualizaciones. En los sistemas redhat es importante dejarlo activo para que verifique constantemente la licencia contra los servidores de redhat. Para centos podemos apagarlo ya que usaremos yum rpcgssd, rpcidmapd, rpcsvcgssd - permiten el trabajo con NFS versin 4, dejarlo activado de momento. saslauthd - permite manejar las autenticaciones de usuarios (en texto claro) dejarlo activo de momento, puede sernos til en sendmail. sendmail - MTA que estudiaremos, se ocupa de recibir y enviar mensajes desde y hacia nuestros clientes, nuestros dominios. Lo usaremos mucho durante en el curso. single - Al ejecutarse, lleva al sistema al modo 1 (single, monousuario) smartd - demonio que permite obtener datos del sistema S.M.A.R.T, un sistema de monitoreo presente en discos tipo IDE. No afecta al performance pero no lo veremos, as que podemos desactivarlo smb - demonio que se ocupa del manejo de conexiones de mquinas windows hacia nuestro servidor. Comnmente conocido como samba, permite hacer actuar nuestro servidor linux como un servidor de archivos de windows. Dejmoslo activado pues lo usaremos posteriormente en el curso. spamassassin - permite cargar el demonio del spamd, para realizar chequeos antispam de los mails que llegan a nuestro sistema. No lo usaremos de esta forma (demonio) sino que posteriormente en el curso aprenderemos a llamarlo cada vez que necesitemos analizar un lote de mensajes. Desactivar.

squid - servidor muy popular en internet, bastante fcil de configurar que permite cachear peticiones que hacen las mquinas de nuestra red interna hacia la internet, ahorrando de esta forma ancho de banda. El squid tambin permite balancear carga entre servidores web. Activarlo pues lo veremos en el curso. sshd - Demonio que se encarga de las conexiones seguras hacia nuestro servidor. Es uno de los sistemas base ms utilizados para acceder remotamente a nuestros servidores. Dejarlo activado en las siguientes semanas veremos cmo conectarnos por ssh syslog - demonio que se ocupa de recibir de parte de todos los procesos del sistema las solicitudes para que almacene en los histricos. Es un demonio muy usado, siempre detrs, trabajando guardando los logs. Dejmoslo activado pues es bsico para el funcionamiento de los histricos del sistema. tux - Es un servidor web que viene insertado (embebido) dentro del kernel, muy pequeo y eficiente, pero slo maneja pginas estticas. En la parte de servidores web del curso posiblemente pondremos enlaces y documentacin sobre el uso del tux. Normalmente debe ir desactivado ya que es un poco complicado el echarlo a andar junto con el apache (httpd), aunque definitivamente en algunas circunstancias es muy til por su eficiencia. vsftpd - Servidor de ftp, dejarlo activado pues lo usaremos posteriormente en el curso. Este servidor de ftp es muy seguro y fcil de configurar y es muy popular en el mercado al momento. winbind - servicio que nos permite autenticar usuarios en nuestro sistema linux. Estos usuarios estn guardados en un dominio de un servidor NT. Esto nos permite consolidar los servidores de autenticacin, pudiendo tenerlos en un NT. Quin se atrevera?, al menos yo no me atrevera a confiar la autenticacin a un servidor NT, y como microsoft constantemente cambia de conceptos, no lo veremos al momento. Desactivar. xfs - se ocupa de servir tipos de fuentes (fonts) al ambiente grfico, dejarlo activado en el modo 5. Si no tuviramos ambiente grfico instalado en nuestro servidor (sera lo recomendable por las razones de ahorro de recursos y prevencin de ataques) podramos apagarlo completamente. xinetd - superdemonio, demonio de demonios, se ocupar de autenticar algunos pequeos servicios. Personalmente no veo su utilidad al momento, por lo que prefiero que lo desactivemos. ypbind - Sistema de autenticacin centralizado para servidores unix. Muy popular en su poca. LDAP en estos momentos demuestra ser mucho ms eficiente que yp (yellow pages), por lo que no lo usaremos (al yp). desactivar. yum - Sistema de actualizaciones en lnea, que adems permite instalar nuevo software sin necesidad de CD. Es decir, toma los paquetes rpm de la red de centos y lo instala en nuestro sistema. Este demonio nos permitir actualizar automticamente todas las madrugadas nuestro sistema linux, sin de preocuparnos por hacerlo. Por supuesto, si es que hubieran actualizaciones, si no las hay sencillamente no har nada esa noche. El inicio del proceso de arranque vara dependiendo de la plataforma de hardware usada. Sin embargo, una vez que se encuentra el kernel y se carga por el gestor de arranque, el proceso de arranque por defecto es idntico a travs de todas las arquitecturas. Este captulo se basa principalmente en la arquitectura x86.

1.2.1. La BIOS

Cuando un ordenador x86 se carga, el procesador busca al final de la memoria del sistema por Basic Input/Output System o el programa BIOS y lo ejecuta. La BIOS controla no slo el primer paso del proceso de arranque, sino que tambin proporciona una interfaz de bajo nivel para dispositivos perifricos. Por este motivo se escribe tan slo en modo lectura, memoria permanente y est siempre disponible para el uso. Otras plataformas usan programas diferentes para ejecutar tareas a bajo nivel equivalentes a aquellas de la BIOS en el sistema x86. Por ejemplo, los ordenadores basados en Itanium usan el Shell Interfaz de Firmware extendible (Extensible Firmware Interface, EFI). Una vez que se haya cargado, la BIOS chequea los perifricos y localiza un dispositivo con el que arrancar el sistema. Habitualmente, en primer lugar comprueba cualquier disquete y unidades de CD-ROM presente por los medios de arranque, y a continuacin si esto falla, echa un vistazo a las unidades de disco duro del sistema. En la mayora de los casos, el orden de bsqueda de las unidades para arrancar es controlado por una configuracin de la BIOS y busca por el dispositivo maestro IDE en el bus IDE primario. La BIOS carga en memoria cualquier programa que resida en el primer sector de este dispositivo, llamado Registro de arranque principal o Master Boot Record (MBR). La MBR slo tiene 512 bytes de tamao y contiene las instrucciones de cdigo de mquina para el arranque del equipo, llamado un gestor de arranque, as como tambin la tabla de particiones. Una vez que la BIOS haya encontrado y cargado el gestor de arranque en memoria, le deja el control del proceso de arranque a ste.

1.2.2. El gestor de arranque


Esta seccin revisa los gestores de arranque para la plataforma x86, GRUB. Un gestor de arranque para la plataforma x86 se divide en al menos dos etapas. La primera es un cdigo binario de mquina pequea en el MBR. Su nica funcin es la de localizar el gestor de arranque de la segunda etapa y cargar la primera parte de ste en memoria. GRUB tiene la ventaja de ser capaz de leer particiones ext2 y ext3 y cargar su archivo de configuracin /boot/grub/grub.conf al momento de arranque. Una vez que la segunda etapa del gestor de arranque est en memoria, presenta al usuario con una pantalla grfica mostrando los diferentes sistemas operativos o kernels que para los que ha sido configurado para arrancar. En esta pantalla el usuario puede usar las flechas direccionales para escoger el sistema operativo o kernel con el que desea arrancar y presione la tecla [Intro]. Si no se presiona ninguna tecla, el gestor de arranque carga la seleccin predeterminada luego de un perodo de tiempo de espera (tambin configurable). Una vez que el gestor de arranque de la segunda etapa haya determinado qu kernel arrancar, localizar el binario del kernel correspondiente en el directorio /boot/. El kernel binario es llamado usando el siguiente formato /boot/vmlinuz-<kernel-version> (donde <kernel-version> corresponde a la versin del kernel especificada en las configuraciones del gestor de arranque). El gestor de arranque luego coloca una o ms de las imgenes apropiadas de initramfs en la memoria. Luego, el kernel descomprime estas imgenes desde la

memoria a /boot/, un sistema de archivos virtual basado en RAM, a travs de cpio. El initrd es usado por el kernel para cargar controladores y mdulos necesarios para arrancar el sistema. Esto es muy importante si posee unidades de disco duro SCSI o si est el sistema utiliza el sistema de archivos ext3. Una vez que el kernel y la imagen initramfs se cargan en memoria, el gestor de arranque pasa el control del proceso de arranque al kernel. Una vez que se carga el kernel y pasa el proceso de arranque al comando init, los mismos acontecimientos suceden en cada arquitectura. La nica diferencia entre el proceso de arranque de cada arquitectura est en la aplicacin que se usa para encontrar y cargar el kernel. Por ejemplo, la arquitectura Itanium utiliza el gestor de arranque ELILO, las arquitecturas eServer pSeries de IBM utilizan YABOOT y los sistemas IBM eServer zSeries e IBM S/390 usan el gestor de arranque z/IPL. Consulte el Manual de instalacin de Red Hat Enterprise Linux especfico para estas plataformas para obtener informacin sobre la configuracin de sus gestores de arranque.

1.2.2.1. Gestores de arranque para otras arquitecturas

1.2.3. El kernel

Cuando se carga el kernel, ste inicializa y configura la memoria del ordenador y los diferentes hardware conectado al sistema, incluyendo todos los procesadores, subsistemas de entrada/salida y dispositivos de almacenamiento. A continuacin buscar la imagen comprimida de initramfs en una ubicacin predeterminada en memoria, la descomprimir directamente a /sysroot/ y cargar todos los controladores necesarios. A continuacin inicializa los dispositivos virtuales relacionados con el sistema de ficheros, tal como LVM o software RAID antes de completar los procesos initramfs y de liberar toda la memoria que la imagen del disco ocup anteriormente. El kernel luego crea un dispositivo root, monta la particin root como slo lectura y libera cualquier memoria no utilizada. Llegados a este punto, el kernel est cargado en memoria y operativo. Sin embargo, como no hay aplicaciones de usuario que permitan la entrada significativa de datos al sistema, no se puede hacer mucho ms. Para configurar el entorno de usuario, el kernel inicia el programa /sbin/init.
/sbin/init

1.2.4. Programa

El programa /sbin/init (tambin llamado init) coordina el resto del proceso de arranque y configura el ambiente del usuario. Cuando el comando init arranca, se vuelve el padre o abuelo de todos los procesos que comienzan automticamente en el sistema. Primero, ejecuta el script /etc/rc.d/rc.sysinit, que establece la ruta del entorno, activa el swap, verifica los sistemas de archivos y se encarga de todo lo que el sistema necesita tener hecho al momento de la inicializacin. Por ejemplo, la mayora de los sistemas usan un reloj, por lo tanto, el rc.sysinit lee el archivo de configuracin para iniciar el hardware del reloj. Otro ejemplo es si hay procesos especiales en los puertos seriales que deben ser inicializados, rc.sysinit ejecutar el archivo /etc/rc.serial. El comando init luego ejecuta el script /etc/inittab, el cual describe cmo se debera configurar el sistema en cada nivel de ejecucin SysV init. Los niveles

K05innd -> ../init.d/innd K05saslauthd -> ../init.d/saslauthd K10dc_server -> ../init.d/dc_server K10psacct -> ../init.d/psacct K10radiusd -> ../init.d/radiusd K12dc_client -> ../init.d/dc_client K12FreeWnn -> ../init.d/FreeWnn K12mailman -> ../init.d/mailman K12mysqld -> ../init.d/mysqld K15httpd -> ../init.d/httpd K20netdump-server -> ../init.d/netdump-server K20rstatd -> ../init.d/rstatd K20rusersd -> ../init.d/rusersd K20rwhod -> ../init.d/rwhod K24irda -> ../init.d/irda K25squid -> ../init.d/squid K28amd -> ../init.d/amd K30spamassassin -> ../init.d/spamassassin K34dhcrelay -> ../init.d/dhcrelay K34yppasswdd -> ../init.d/yppasswdd K35dhcpd -> ../init.d/dhcpd K35smb -> ../init.d/smb K35vncserver -> ../init.d/vncserver K36lisa -> ../init.d/lisa K45arpwatch -> ../init.d/arpwatch K45named -> ../init.d/named K46radvd -> ../init.d/radvd K50netdump -> ../init.d/netdump K50snmpd -> ../init.d/snmpd K50snmptrapd -> ../init.d/snmptrapd K50tux -> ../init.d/tux K50vsftpd -> ../init.d/vsftpd K54dovecot -> ../init.d/dovecot K61ldap -> ../init.d/ldap K65kadmin -> ../init.d/kadmin K65kprop -> ../init.d/kprop K65krb524 -> ../init.d/krb524 K65krb5kdc -> ../init.d/krb5kdc K70aep1000 -> ../init.d/aep1000 K70bcm5820 -> ../init.d/bcm5820 K74ypserv -> ../init.d/ypserv K74ypxfrd -> ../init.d/ypxfrd

de ejecucin son un estado, o modo, definido por los servicios listados en el SysV directorio /etc/rc.d/rc<x>.d/, donde <x> es el nmero de nivel de ejecucin. Para ms informacin sobre los niveles de ejecucin SysV init, consulte la Seccin 1.4. A continuacin, el comando init configura la biblioteca de funciones fuente, /etc/rc.d/init.d/functions, para el sistema, que establece el modo en cmo iniciar o matar un programa y cmo determinar el PID del programa. El programa init inicia todos los procesos de fondo buscando en el directorio apropiado rc para el nivel de ejecucin especificado por defecto en /etc/inittab. Los directorios rc estn numerados para corresponder al nivel de ejecucin que representan. Por ejemplo, /etc/rc.d/rc5.d/ es el directorio para el nivel de ejecucin 5. Cuando se arranca el nivel de ejecucin 5, el programa init consulta el directorio /etc/rc.d/rc5.d/ para determinar qu procesos iniciar o parar. A continuacin un ejemplo de listado del directorio /etc/rc.d/rc5.d/:

K85mdmpd -> ../init.d/mdmpd K89netplugd -> ../init.d/netplugd K99microcode_ctl -> ../init.d/microcode_ctl S04readahead_early -> ../init.d/readahead_early S05kudzu -> ../init.d/kudzu S06cpuspeed -> ../init.d/cpuspeed S08ip6tables -> ../init.d/ip6tables S08iptables -> ../init.d/iptables S09isdn -> ../init.d/isdn S10network -> ../init.d/network S12syslog -> ../init.d/syslog S13irqbalance -> ../init.d/irqbalance S13portmap -> ../init.d/portmap S15mdmonitor -> ../init.d/mdmonitor S15zebra -> ../init.d/zebra S16bgpd -> ../init.d/bgpd S16ospf6d -> ../init.d/ospf6d S16ospfd -> ../init.d/ospfd S16ripd -> ../init.d/ripd S16ripngd -> ../init.d/ripngd S20random -> ../init.d/random S24pcmcia -> ../init.d/pcmcia S25netfs -> ../init.d/netfs S26apmd -> ../init.d/apmd S27ypbind -> ../init.d/ypbind S28autofs -> ../init.d/autofs S40smartd -> ../init.d/smartd S44acpid -> ../init.d/acpid S54hpoj -> ../init.d/hpoj S55cups -> ../init.d/cups S55sshd -> ../init.d/sshd S56rawdevices -> ../init.d/rawdevices S56xinetd -> ../init.d/xinetd S58ntpd -> ../init.d/ntpd S75postgresql -> ../init.d/postgresql S80sendmail -> ../init.d/sendmail S85gpm -> ../init.d/gpm S87iiim -> ../init.d/iiim S90canna -> ../init.d/canna S90crond -> ../init.d/crond S90xfs -> ../init.d/xfs S95atd -> ../init.d/atd S96readahead -> ../init.d/readahead S97messagebus -> ../init.d/messagebus S97rhnsd -> ../init.d/rhnsd S99local -> ../rc.local Como puede ver, ninguno de los scripts que inician y cierran los servicios estn localizados en el directorio /etc/rc.d/rc5.d/. Casi todos los ficheros en /etc/rc.d/rc5.d/ son enlaces simblicos apuntando a los scripts localizados en el directorio /etc/rc.d/init.d/. Los enlaces simblicos se usan en cada uno de los directorios rc de manera que los niveles de ejecucin puedan ser

reconfigurados al crear, modificar y eliminar los enlaces simblicos sin que afecte a los scripts actuales a los que se refiere. El nombre de cada enlace simblico comienza con K o S. Los enlaces K son procesos eliminados en ese nivel de ejecucin, mientras que aquellos que inician por S son procesos a iniciar. El comando init en primer lugar detiene todos los enlaces simblicos de K en el directorio mediante la ejecucin del comando /etc/rc.d/init.d/<command>

stop,

en el que <command> es el proceso a matar. A continuacin inicia todos los enlaces simblicos S al ejecutar /etc/rc.d/init.d/<command>. start. Cada uno de los enlaces simblicos se numera para dictaminar el orden de inicio. Usted puede cambiar el orden en el que los servicios inician o paran al cambiar este nmero. Mientras ms bajo es el nmero, ms rpido se arrancar. Los enlaces simblicos con el mismo nmero se inician de modo alfabtico. Despus que el comando init ha progresado a travs del directorio adecuado rc para el nivel de ejecucin, el script /etc/inittab bifurca un proceso /sbin/mingetty para cada consola virtual (prompt de inicio de sesin) del nivel de ejecucin. Los niveles de ejecucin del 2 al 5 tienen seis consolas virtuales, mientras que el nivel de ejecucin 1 (modo usuario nico) tiene tan slo uno y lo niveles de ejecucin del 0 al 6 no tienen ninguno. El proceso /sbin/mingetty abre las rutas de la comunicacin para los dispositivostty, establece sus modos, imprime el indicador de inicio de sesin, toma el nombre y contrasea del usuario, e inicia el proceso de inicio de sesin. En el nivel de ejecucin 5, /etc/inittab ejecuta un script llamado /etc/X11/prefdm. El script prefdm ejecuta su gestor de pantalla de X preferido gdm, kdm, o xdm, dependiendo de los contenidos del archivo /etc/sysconfig/desktop. Una vez que haya terminado, el sistema operar en el nivel de ejecucin 5 y mostrar la pantalla de inicio de sesin.

4 Respaldos, herramientas para crear respaldos, trabajo con los discos. Utileras para programar tareas El uso de utileras para el manejo de unidades de almacenamiento es algo totalmente necesario a la hora de trabajar con un servidor linux. Va ms all de montar particiones o sacar respaldos, existen muchsimas utileras que permiten tambin optimizar los accesos a disco as como herramientas para particionar o reparticionar discos, chequearlos, formatearlos, etc. Ahora, no solamente debemos pensar en unidad de almacenamiento como un disco duro, tambin las unidades de almacenamiento comprenden por ejemplo las unidades de floppy, dispositivos USB para mass storage (almacenamiento) y sobre todo las cintas para realizar respaldos. En las siguientes secciones veremos todas estas utileras, su uso y potenciales implementaciones para facilitar nuestro trabajo. Tipos de disco: Linux es capaz de manejar varios tipos de disco.

Discos mecnicos Dispositivos no mecnicos Unidades de cinta Discos extraibles (floppies).

Discos mecnicos: Los discos mecnicos son aquellos que se componen de uno o varios platos donde se escribe la informacin, estos platos rotan a cierta velocidad y uno o varios brazos mecnicos se ocupan de acceder a los platos rotatorios y leer o escribir la informacin. Existen varios tipos de discos mecnicos, normalmente conocidos por su controladora y tasa de transferencia. Entre los ms populares al momento estn: 1. Discos IDE 2. Discos SCSI 3. Discos SATA Bsicamente la tecnologa mecnica subyacente es muy similar, slo que ellos se diferencian por la forma en que la informacin es transferida del disco hacia el procesador y memoria. Los discos SCSI tienen la virtud de ser extremadamente rpidos en trminos de capacidad de rotacin as como que la tasa de transferencia puede llegar al momento a 320MB/s lo que hace que para aplicaciones que requieren de mucha E/S estos discos sean extremadamente apetecidos. Tambin estos discos no consumen interrupciones del procesador por lo que los independiza del uso o no que se est dando al procesador y acelera todo el proceso. El punto negativo de estos discos es el costo, un disco scsi vale lo que rinde, y rinde mucho. Los discos ms conocidos al momento y ms usados por el mundo en general son los discos IDE, estos tienen tasas de transferencia de alrededor de 33MB/s hasta 133mb/s, pero no todo es la tasa de transferencia, realmente estos discos consumen interrupciones del procesador por lo que generan cuellos de botella relacionados con el uso de la CPU. Adems que usan cable paralelo para la transferencia de datos y esto est llegando a sus lmites, es decir, debido a las altas tasas de transferencia ya se pueden producir fcilmente una gran cantidad de fallas porque los datos no estn sincronizados, etc. En estos momentos ha aparecido en el mercado un tipo de discos que digamos es un intermedio, un compromiso entre los discos scsi y discos ide. Estos son los discos SATA (serial ATA, algunos los leen as mismo SATA, otros lo leen como ESE ATA, prefiero SATA leido tal y como se escribe). Este tipo de discos, al momento logra velocidades de aproximadamente 150mb/s lo que lo hace un 5% ms rpido que los discos ATA ms rpidos (no todos los discos ATA son de 133mb/s tampoco). Se piensa que para este ao los discos SATA logren velocidades de 300mb/s de transferencia y para el 2008 se logren velocidades de 600mbit/s. SATA no solamente es ms rpido que los discos ATA, sino que es comparablemente igual de rpido que los discos scsi ms comunes y en poco tiempo sern tan o ms rpidos que los SCSI ms rpidos. Usa una tecnologa que tcnicamente consume mucha menos energa y sobre todo el costo es

relativamente igual al de un disco ATA normal En estos momentos ya muchas personas no compran discos ATA porque el precio es igual que los SATA sin embargo el desempeo de los SATA es mucho mejor. Es ms, muchas empresas que necesitan soluciones rpidas y arreglos de discos de bajo costo ya no slo tienen que pensar en arreglos de discos SCSI (que son buenos y caros) sino que pueden usar arreglos de discos SATA. RHEL (centos4) tiene un buen soporte para discos SATA. Las versiones anteriores no tenan soporte o este era muy limitado (RHEL3). Pero entendemos que la mayora de las controladoras SATA son perfectamente detectadas por RHEL4. Dispositivos no mecnicos: Estos son nuevas o viejas tcnicas de almacenamiento que se han ido abaratando con el tiempo. Son las llamadas Compact Flash (CF) que son discos duros que soportan cientos de miles de escrituras sin daarse as como cantidades casi infinitas de lecturas. Estos discos tienen la peculiaridad de que consumen muy baja energa, al no tener motores que muevan sus partes mviles, adems de que son extremadamente compactas. Adems, al no tener partes mviles, estos dispositivos no se rompen debido a cadas o fallas en sus mecanismos. Son dispositivos que una vez funcionando trabajarn por mucho tiempo mientras sus componentes de grabacin estn en la capacidad de seguir almacenando nuevos datos. Aunque los compact flash es como les conozco, tambin existen en muchas variantes tales como: SD, Pendrives, etc. Son muy usados en cmaras digitales pues almacenan informacin sin depender de golpes y cadas y son pequeos. Estos dispositivos tienen una desventaja y es que normalmente son un poco ms caros que sus contrapartes mecnicas. Es una tecnologa que recin est entrando al mercado (unos dos o tres aos) por lo que est en constante evolucin y los precios estn tendiendo a bajar constantemente. Al momento conozco de dispositivos no mecnicos (elctricos) de almacenamiento de 4 y 8GB, no me sorprendera ver discos ms grandes en los prximos meses o aos. Esta tecnologa se usa mucho para sistemas embebidos, que requieren de partes no mviles y de bajo consumo. Los sistemas linux soportan lecturas y escrituras a estos sistemas de forma totalmente natural. Linux ve estos dispositivos como si fueran un dispositivo scsi y se puede leer y escribir en ellos como mismo se escribe en cualquier disco mecnico. Unidades de cinta Es una de las tecnologas ms viejas que existen para almacenar informacin sin

embargo sigue siendo usada por muchas empresas. Mayormente los dispositivos de cinta estn estandarizados y se manejan a travs de un dispositivo del sistema linux llamado: /dev/st0 Las unidades de cinta son muy tiles para guardar respaldos, ya que son capaces de almacenar realmente grandes cantidades de informacin y el costo por GB asociado con ellas es ms bajo que el mantener un disco para hacer respaldos. Adems las cintas pueden cambiarse y moverse de lugar a conveniencia lo que normalmente permite guardar los respaldos en otros lugares separados de los servidores. Las unidades de cinta tienen varias desventajas, la mayor de ella es que no mantienen un filesystem, es decir los datos se escriben en ellas uno detrs del otro y normalmente es necesario saber qu se ha escrito para poderlo recuperar. Adems son muy lentas comparadas con las escrituras en un disco as como que algunas personas indican que estas tienden a fallar con el tiempo. Ms adelante veremos cmo usar las unidades de cinta. Discos extrables Son bsicamente los discos floppies, esos antiguos aliados que al momento estn quedando en desuso, pero tambin podemos ver como discos extrables a sus nuevos hermanos, los discos CDROM y DVD que permiten almacenar muchsima informacin comparado con los floppies. Es mi parece que los CDrom, aunque un medio muy bueno para almacenar la informacin son definitivamente ms fallosos que los discos mecnicos o no mecnicos as como que las unidades de cinta. Sobre todo porque tienen expuesta la informacin directo a las inclemencias del tiempo (sol, lluvia, agua, araazos, etc). Pero definitivamente es una forma confiable de trasladar la informacin y hasta de almacenarla. Linux tambin es capaz de manejar estos dispositivos extrables. En general virtualmente cada dispositivo de almacenamiento es manejable mediante linux. Debemos recordar que linux no slo maneja mucha variedad de hardware referente a los dispositivos extrables sino que tambin entiende los diferentes formatos conque estos pueden estar inicializados, de forma tal que podemos desde linux leer particiones FAT12, FAT16, FAT32, NTFS, as como de una gran variedad de sistemas unix existentes en el mercado. Mientras que la mayora de los pasos necesarios para aadir o eliminar unidades de almacenamiento dependen ms en el hardware del sistema que en el software, hay aspectos del procedimiento que son especficos a su entorno operativo. Esta seccin explora los pasos necesarios para aadir o eliminar almacenamiento que son especficos a RHEL (CentOS), por supuesto asumiremos que la unidad que est siendo agregada est correctamente instalada a nivel de hardware.

Aadir almacenamiento

El proceso de aadir almacenamiento a un sistema Linux es relativamente directo. He aqu los pasos:

Particionar Formatear la particin(es) Actualizar /etc/fstab

Particionar
Una vez instalado el disco duro, es hora de crear una o ms particiones para hacer el espacio disponible a Linux. Hay ms de una forma de hacer esto:

Usando el programa de lnea de comandos fdisk Usando parted, otro programa utilitario de lnea de comandos

Aunque las herramientas pueden ser diferentes, los pasos bsicos son los mismos. En el ejemplo siguiente, se incluyen los comandos necesarios para efectuar estos pasos usando fdisk:

Defina a qu unidad de almacenamiento procederemos a particionar. Podemos usar el comando:

fdisk -l

Es muy importante no cometer errores en este proceso, el fdisk una vez grabados los cambios es destructivo y si nos equivocamos de unidad de almacenamiento los datos se pueden perder. Al determinar la unidad de almacenamiento a la que nos referiremos, procedemos a llamar el fdisk indicndole a qu particin queremos llegar:

fdisk /dev/hda

Revise la tabla de particiones de la unidad para verificar que la unidad a particionar es, en realidad, la correcta. En nuestro ejemplo, fdisk muestra la tabla de particin usando el comando p:

Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 1244 cylinders Units = cylinders of 16065 * 512 bytes Device Boot /dev/hda1 * /dev/hda2 /dev/hda3 /dev/hda4 Start 1 18 84 476 End 17 83 475 1244 Blocks 136521 530145 3148740 6176992+ Id 83 82 83 83 System Linux Linux swap Linux Linux

Borre cualquier particin no deseada que pueda existir en la nueva unidad de disco. Esto se hace usando el comando d en fdisk:

Command (m for help): d Partition number (1-4): 1

El proceso se repetir para todas las particiones no deseadas presentes el el disco. Cree la(s) nueva(s) particin(es), asegurndose de especificar el tamao deseado y el tipo de sistemas de archivos. Usando fdisk, esto es un proceso de dos pasos primero, cree la particin (usando el comando n):

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-767): 1 Last cylinder or +size or +sizeM or +sizeK: +512M Segundo, configure el tipo de sistema Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): 82

de archivos (usando el comando t):

El tipo de particin 82 representa una particin Linux swap. Guarde sus cambios y salga del programa de particionamiento. Esto se hace en fdisk ejecutando w:

Command (m for help): w

Formatear la particin
El formateo de particiones bajo Linux se hace usando el programa de utilidades mkfs. Sin embargo, mkfs en realidad no hace el trabajo de escribir la informacin especfica del sistema de archivos en el disco; en cambio pasa el control a uno de los muchos programas que crean el sistema de archivos. Este es el momento de observar la pgina man de mkfs.<fstype> para el sistema de archivos que ha seleccionado. Por ejemplo, vea la pgina man de mkfs.ext3 para revisar las opciones disponibles durante la creacin de un sistema de archivos ext3. En general, los programas mkfs.<fstype> suministran valores por defecto razonables para la mayora de las configuraciones; sin embargo, he aqu algunas de las opciones que los administradores de sistemas cambian ms a menudo:

Configuran una etiqueta de volumen para su uso posterior en /etc/fstab En discos duros muy grandes, configuran un porcentage ms pequeo de espacio reservado para el super-usuario Configuran un tamao de bloque no estndar y/o bytes para las configuraciones de inodos, que deben soportar tamaos de archivos muy grandes o muy pequeos Verifican por bloques daados antes de formatear

Personalmente prefiero llamar directamente a la utilera de formateo deseada. Por ejemplo, si quisiera formatear una particin con el FS tipo ext3, ejecutara el comando:
mkfs.ext3 /dev/hda3

ATENCION: ESTE COMANDO DESTRUIR TODA LA INFORMACIN CONTENIDA EN LA PARTICIN /dev/hda3

El comando mkfs.ext3 permite especificar algunos parmetros adicionales (ver la pgina manual para una lista extensa de opciones). De los cuales los ms usados son: -m# : Porciento del disco reservado para el super usuario. El valor por defecto es el 5%, es decir, el 5% del disco se reservar para el superusuario del sistema y no podr ser usado por ningn otro usuario. Normalmente se haca para evitar que un disco se llenara y que el superusuario mientras tanto no pudiera hacer operaciones de respaldo, copia de informacin etc. Realmente al momento es algo bien poco comn. Si un disco se llenara al menos la informacin se puede sacar al vuelo hacia otra mquina por la red y no se requiere limitar el espacio en disco... pues de esta forma slo el 95% del disco estara disponible para usarse por todos los usuarios. Normalmente especifico 0, 0% reservado para el super usuario. -N#: nmero de inodos que sern creados para esta particin. Los inodos se calculan normalmente en una relacin de 1 inodo por cada 4kb de espacio en disco. De forma tal que un disco de 80GB consumir algo as como 80 * 1024M *1024K / 4k, o lo que es lo mismo: 83886080 / 4 = unos 21 millones de inodos. realmente se usarn 21millones de inodos para mi disco? Bueno, esto depende de las caractersticas de nuestro sistema, puede que sean mucho menos, puede que sean mucho ms. En todo caso, la tabla de inodos tambin consume espacio, lo que hace que mientras ms inodos creemos para una particin determinada, menos espacio podremos dedicar a almacenar informacin. Por ejemplo, si tenemos una flash de 128mb, nuestro linux formateara la flash con 32768 inodos (128 * 1024k / 4k), guardaremos en esta flash 32768 archivos? Lo dudo realmente. Lo normal es que una flash guarde digamos 10, 100, 2000 archivos... entonces para qu gastar espacio creando inodos que nunca usaremos? Es aqui que entra la N, podemos decirle al mkfs que formatee nuestra particin con 1000 inodos por ejemplo. Y todo el resto del espacio en disco lo podemos aprovechar para guardar ms informacin. Me parece bueno. Un ejemplo del uso de switches:
mkfs.ext3 -m0 -N128 /dev/hda1

Qu hicimos aqu? Pues simple, le hemos indicado que no guarde ningn espacio en disco para el superusuario (es decir todo el disco lo podrn usar tanto usuarios como superusuarios) y que slo cree 128 inodos!!! Pero y esto?!, qu tal /boot? Qu tal la particin que dedicamos a /boot, cuntos archivos se guardan en ella? Cuntenlos, normalmente no pasan de 15... 128 an es un nmero grande para mi /boot, y tengo la oportunidad de aprovechar hasta el ltimo byte en espacio en disco en vez de desperdiciarlo con inodos que posiblemente nunca usar.

-c : Manda al sistema a formatear la particin pero le pide que chequee clusters malos y los marque. Es un proceso muy lento, y normalmente no lo uso. Cuando digo lento es algo as como que puede demorar 12 a 48 horas el terminar de realmente chequear contra clusters malos. mkfs.msdos me permite crear una particin con formato fat16 (util para las flash) y mkfs.vfat me permite crear particiones fat32 que podrn ser ledas por windows. Es decir S, podemos formatear particiones de DOS desde linux sin mayor inconveniente y sin tener que instalar windows. Una vez creados los sistemas de archivos en todas las particiones apropiadas, la unidad de disco estar configurada adecuadamente para su uso. Luego, siempre es bueno volver a verificar su trabajo manualmente montando la particin(es) y asegurndose de que est en orden. Una vez que todo est verificado, es el momento de configurar su sistema Linux para que monte automticamente el nuevo sistema de archivos durante el arranque.

Actualizar

/etc/fstab

Como se describi anteriormente, primero debe aadir las lneas necesarias a /etc/fstab para asegurarse de que se monte el nuevo sistema de archivos cuando arranque el sistema. Una vez actualizado /etc/fstab, pruebe su trabajo ejecutando un comando "incompleto" de mount, especificando solamente el dispositivo o punto de montaje. Algo similar a alguno de los comandos siguientes es suficiente:
mount /home mount /dev/hda3

(Reemplace /home or /dev/hda3 con el punto de montaje o dispositivo para su situacin especfica.) Si la entrada correspondiente en /etc/fstab es correcta, mount obtiene la informacin faltante desde el archivo y completa la operacin de montaje. En este punto puede estar confiado de que /etc/fstab est configurado correctamente para montar automticamente el nuevo almacenamiento cada vez que el sistema arranca (aunque si se puede permitir un reinicio rpido, no hace dao simplemente para estar seguros).

Eliminar Almacenamiento
El proceso de eliminar almacenamiento desde un sistema Linux es relativamente directo. He aqu los pasos especficos:

Elimine las particiones de disco desde /etc/fstab Desmonte las particiones activas del disco Borre los contenidos de la unidad de disco

Las secciones siguientes cubren estos tpicos en ms detalles.

Elimine las particiones de disco desde

/etc/fstab

Usando el editor de texto de su preferencia, elimine la(s) lnea(s) correspondiente(s) a la(s) particin(es) de disco desde el archivo /etc/fstab. Puede identificar las lneas correctas por alguno de los mtodos siguientes:

Haciendo corresponder los puntos de montaje con los directorios en la segunda columna de /etc/fstab Haciendo corresponder el nombre del archivo de dispositivo con el nombre de archivo en la primera columna de /etc/fstab
umount

Terminar el acceso con

Luego, se deben terminar todos los accesos. Para particiones con sistemas de archivos activos en ellas, esto se hace con el comando umount. Si una particin swap existe en el disco, se debe desactivar con el comando swapoff o se debe reiniciar el sistema. Desmontar las particiones con el comando umount requiere que usted especifique el nombre de archivo de dispositivo, o el punto de montaje.
umount /dev/hda2 umount /home

Solamente se puede desmontar una particin si esta no se encuentra en uso. Si la particin no se puede desmontar mientras se encuentra en el nivel de ejecucin normal, arranque en modo de rescate y elimine la entrada de la particin de /etc/fstab. Cuando utilice swapoff para desactivar el swapping en una particin, debe especificar el nombre de archivo de dispositivo representando la particin swap:
swapoff /dev/hda4

Si no puede desactivar el swapping usando swapoff, arranque en modo de rescate y elimine la entrada de la particin desde /etc/fstab.

Borre los contenidos de la unidad de disco


Borrar los contenidos desde una unidad de disco bajo Linux es un procedimiento directo. Despus de desmontar todas las particiones del disco, ejecute el comando siguiente (conectado como root):
badblocks -ws <device-name>

Donde <device-name> representa el nombre del archivo de la unidad de disco que desea borrar, excluyendo el nmero de la particin. Por ejemplo, /dev/hdb para la segunda unidad ATA. Se muestra la salida siguiente mientras se ejecuta badblocks:
Writing Reading Writing Reading Writing Reading Writing Reading pattern 0xaaaaaaaa: and comparing: done pattern 0x55555555: and comparing: done pattern 0xffffffff: and comparing: done pattern 0x00000000: and comparing: done done done done done

Tenga en mente que badblocks en realidad est escribiendo cuatro patrones de datos diferentes a cada bloque en la unidad de disco. Para las unidades grandes, este proceso puede tomar un largo tiempo a menudo varias horas. ESTE PROCESO ES DESTRUCTIVO, precisamente el fin que se persigue es el de destruir totalmente la informacin del disco con el objetivo de que futuros usuarios no puedan obtener ningn dato potencialmente sensitivo en l. El proceso de destruccin nos parece bastante seguro sin embargo hacemos notar que su empresa o compaa puede tener otros procesos de destruccin de datos diferentes de los nuestros. El uso de nuestro proceso no debe bajo ningn motivo obviar el procedimiento dictado a seguir para el caso de su empresa o compaa y el ignorar este proceso por parte de usted le puede traer severas consecuencias. Otra forma de eliminar la informacin en una particin es usando el comando shred: shred -n 2 -v /dev/hda ejecutar dos iteracciones (-n 2) copiando datos aleatorios en toda la particin. De no especificarse -n, se ejecutarn 25 iteracciones. As que posiblemente ni el ms rudo de los programas de recuperacin har que los datos se recuperen, pues no quedar ni la sombra, ni el ltimo lito de vida de los datos al ser concienzudamente sobreescrito todo /dev/hda (en este caso, usar el dispositivo que uds quieren borrar!!) por varias veces. shred tambin sirve para eliminar la informacin de un archivo: shred /root/miarchivo har lo mismo pero con los datos de "miarchivo" Miren un ejemplo de la salida de shred sobre un archivo:
[root@eperez ~]# shred -v freetemp1071.zip shred: freetemp1071.zip: pass 1/25 (random)... shred: freetemp1071.zip: pass 2/25 (924924)... shred: freetemp1071.zip: pass 3/25 (222222)... shred: freetemp1071.zip: pass 4/25 (555555)... shred: freetemp1071.zip: pass 5/25 (bbbbbb)...

shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred: shred:

freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip: freetemp1071.zip:

pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass pass

6/25 (249249)... 7/25 (492492)... 8/25 (333333)... 9/25 (000000)... 10/25 (ffffff)... 11/25 (6db6db)... 12/25 (b6db6d)... 13/25 (random)... 14/25 (666666)... 15/25 (111111)... 16/25 (eeeeee)... 17/25 (777777)... 18/25 (cccccc)... 19/25 (444444)... 20/25 (db6db6)... 21/25 (aaaaaa)... 22/25 (999999)... 23/25 (dddddd)... 24/25 (888888)... 25/25 (random)...

Qu hice aqui? Simple, ejecut el shred en 25 pasos, en cada uno sobreescribi todos los bytes del archivo seleccionado con diferentes patrones, es decir, cambi bsicamente la estructura del disco duro varias veces de forma tal que en realidad no pueda se ledo entre lneas (hay quien lo hace) y no se pueda obtener nada til. Aunque ya habamos tratado anteriormente de ellas, nunca est de ms recordar una de las utileras ms importantes a la hora de la verdad (esa hora en que realmente tenemos que ponernos a trabajar y que es cuando el sistema no levanta). El fsck nos permite revisar diferentes tipos de particiones con solamente llamarle indicndole a qu particin nos referimos: fsck /dev/hda1 por ejemplo chequear la particin 1 del disco IDE mster primario (hda) fsck /dev/sdb5 realizar lo mismo pero para la particin 5ta del 2do disco scsi en una cadena SCSI. fsck normalmente arregla todas las situaciones, pero si alguna situacin no la pudiera arreglar, consideremos que el disco hay que reformatearlo, ha muerto. fsck normalmente pregunta si queremos realizar todos y cada uno de los arreglos. Sugiero que SIEMPRE digamos que s a cada una de sus preguntas. Si no quisiramos responder y constantemente (a veces con cientos de veces) podemos llamar al fsck con el switch -y, por ejemplo: fsck -y /dev/hdb5

Existen muchas vas para acceder a diskettes desde linux.

montando el diskette como mismo se monta una particin: Usando esta forma, podemos acceder a la informacin del diskette desde un directorio, esta forma tiene una ventaja adicional y es que no slo funciona para diskettes formateados para DOS sino para cualquier otro tipo de formato que acepte un diskette. Y tiene una desventaja, como todos los elementos que montamos en nuestro rbol de directorio, no es saludable el sacar el diskette sin antes desmontarlo. Usando un emulador: Podemos instalar y llamar al DOSEMU, que es un emulador de DOS y desde el dosemu acceder al diskette trabajar con l, es un poco difcil pues instalar el dosemu es demorado (ya que no viene preinstalado ni viene en los cds de centos) adems que es toda una tremenda herramienta slo para leer un diskette. usando las mtools: Mtools es una coleccin de herramientas (comandos) de DOS que permiten trabajar con filesystems DOS (normalmente floppy), estos comandos tratan por todos los medios de emular la funcionalidad del DOS pero sin mantener restricciones absurdas. Por ejemplo, en DOS no es posible pero con las mtools s es posible el mover un subdirectorio desde un subdirectorio hacia otro.

Las mtools son trivialmente fciles, y podemos obtener una buena ayuda si llamamos a su pgina informativa: info mtools Pero normalmente podemos asumir que son los mismos comandos que dos slo que con la letra m delante: mdir a: mformat a: mcopy /root/archivo a: (copiar desde linux hacia el floppy) mdel a:archivo mmove y as varios comandos posibles Lo interesante tambin es que el floppy no tenemos que montarlo, as que podremos extraerlo cuando querramos. En linux existen varias formas de comprimir la informacin. Estos diferentes comandos se dividen en dos tipos:
1. Compresin sin prdida: el que hace que la informacin no se pierda entre

compresin y descompresin.
2. Compresin con prdida: el que s pierde informacin al comprimirla.

Se llama as a cualquier procedimiento de codificacin que tenga como objetivo representar cierta cantidad de informacin utilizando una menor cantidad de la misma, siendo imposible una reconstruccin exacta de los datos originales.

La compresin con prdida solo es til cuando la reconstruccin exacta no es indispensable para que la informacin tenga sentido. La informacin reconstruida es solo una aproximacin de la informacin original. Suele restringirse a informacin analgica que ha sido digitalizada (imgenes, audio, video, etc...), donde la informacin puede ser parecida, y al mismo tiempo, ser subjetivamente la misma. Su mayor ventaja reside en las altas razones de compresin que ofrece en contraposicin a un algoritmo de compresin sin prdida. Para ver ejemplos de sistemas de compresin con prdida (lossy compression), ver en wikipedia. ahora, a nosotros en este momento nos interesa saber sobre el tema de la compresin sin prdida (lossless compression). En el cual todo dato que logremos comprimir, podremos descomprimirlo y obtener toda su informacin original. Este tipo de compresin es muy til para cuando realizamos respaldos y copias entre sistemas, y es la que ms nos preocupa ahora. Para esto podemos usar el comando gzip, gzip es uno de los mejores compresores del mercado, superado por el bzip2, pero gzip es mucho ms rpido que el bzip2 por lo tanto mucho ms usado. Ambos estn presentes en linux. El comando para comprimir un archivo con gzip sera: intentar comprimir el archivo con un rbol de compresin de 9 pisos de profundidad, por lo que lograr una mayor compresin, a un costo de un mayor consumo de recursos y por lo tanto demora en la compresin. Por defecto gzip comprime con un nivel 6 y la diferencia entre 6 y 9 es poco apreciable en el orden de un 1 a 5% ms de compresin de un archivo. Pero el costo de usar 9 en recursos es muy alto, por lo que slo deberemos usar el -9 si sabemos que la mquina dispone de recursos y no ser afectado el proceso. Por ejemplo uso el -9 para hacer copias permanentes (de esas que no abrir en muchos meses) pero nunca lo uso para hacer copias diarias de mis respaldos pues eso demora mucho. igual no conservara la copia del archivo. gzip tiene otros switches interesantes que igual pueden aplicarse al bzip2:gzip archivo
gzip -d archivo.gz gzip -9 archivo

el gzip no conserva el archivo original, es decir, al terminar de comprimir "archivo" lo borrar y en el disco nos quedar un "archivo.gz" el cual ser

una copia comprimida de ste. Para el bzip2 podemos usar el mismo formato:Esto abrir un archivo

comprimido con gzip. Tambin podemos usar gunzip archivo.gz para descomprimir.
gzip -t archivo.gz

Probar la integridad (test) de un archivo comprimido para saber si est bien copiado. Si no se obtiene respuesta al ejecutar -t, esto es que el archivo est bien. Si dice algo relativo a crc error, el archivo est mal comprimido y no podremos recuperarlo.
cat archivo | gzip -c - > archivo.gz

Este comando lo que har ser un cat (vaciado de un archivo) y lo pasar a la entrada estndar del gzip. Este lo tomar de la entrada estndar (-) y lo mandar hacia la salida estndar (-c) y en la salida estndar lo redirigiremos a un archivo. Esta es una forma de conservar el archivo original mientras lo comprimimos. TAREA: Comprimamos un archivo con gzip y con bzip2 sin perder el original. Y verifiquemos cul de los dos comprimidos es mejor.
[root@eperez [root@eperez [root@eperez [root@eperez ~]# ~]# ~]# ~]# mkdir t cat Deber1.doc | gzip -9c - > tmp/Deber.doc.gz9 cat Deber1.doc | gzip -c - > tmp/Deber.doc.gz cat Deber1.doc | bzip2 -c - > tmp/Deber.doc.bz2

[root@eperez ~]# cd tmp [root@eperez tmp]# ll total 24 -rw-r--r-- 1 root root 6806 Aug 16 19:19 Deber.doc.bz2 -rw-r--r-- 1 root root 6335 Aug 16 19:19 Deber.doc.gz -rw-r--r-- 1 root root 6273 Aug 16 19:19 Deber.doc.gz9

En fin, el que gana en mi caso es el gzip -9 (era de esperar). El bzip2 no fue bueno porque es un archivo muy pequeo (Deber1.doc realmente tiene 57k). El algoritmo bzip2 es muy bueno para archivos grandes o medianamente grandes. Pero para pequeos no se diferencia del gzip. aunque gzip y bzip2 permiten comprimir varios archivos a la vez, no lo uso normalmente y explicar ms tarde otra forma ms precisa de comprimir directorios y multiples archivos en un slo paquete. Muchas veces necesitamos realizar copias completas de un disco duro, bit por bit, los objetivos son variados :

Necesidad de clonar un disco hacia otra mquina guardar una imagen de un disco para anlisis fornsico replicaciones en masa del mismo sistema: supongamos que estamos vendiendo 500 mquinas con linux y que queremos ponerle la misma informacin a todas. Aparte de que sera sumamente egosta de su parte el no invitarme a participar en esta licitacin tan grande, sera muy lento el proceso de instalar cientos o decenas de mquinas con linux.

Necesitamos realizar una copia exacta de un CD, para quemarlo posteriormente. Necesitamos realizar una copia exacta de un floppy pues requerimos usar un floppy y este que contiene un sistema muy especial es el nico que tenemos para formatear.

Qu comando podemos usar? Bueno, linux tiene un comando que se ocupa de realizar copias en crudo (raw) de discos completos o particiones. Se llama dd El dd requiere bsicamente de dos parmetros, uno es el dispositivo o archivo de entrada y otro es el dispositivo o archivo de salida. Por ejemplo, cmo realizamos una copia exacta de la particin /dev/hda1:
dd if=/dev/hda1 of=/root/imagenhda1.img Por supuesto, /root no debe estar en /dev/hda1 sino pienso que se caera en un ciclo infinito. Siempre if y of (yo lo leo como input file, output file) deben estar en particiones diferentes. el dd en este caso demorar un poco, en dependencia de la cantidad de informacin que tenga hda1 y en dependencia de la velocidad de lectura y escritura del sistema.

Aqu estamos trayendo la imagen que anteriormente sacamos hacia la particin hda1. Las imgenes las podemos comprimir para ahorrar espacio en disco, de esta forma la podremos guardar en menor espacio y slo abrirlas si las necesitramos. Ahora, al crear una imagen, puede que la particin de destino no tenga el espacio suficiente, qu podemos hacer? Podemos intentar comprimir los datos que saca dd, de forma tal que lo que escribamos a disco vaya comprimido y ahorremos espacio.
[root@eperez ~]# dd if=/dev/hda1 | gzip -c - > boot.img.gz 208782+0 records in 208782+0 records out

dd if=/dev/hda1 : hazte una imagen de /dev/hda1. Como no especificamos of, entonces el dd sacar los datos de la imagen por la salida estndar. Con el comando | capturamos esta salida y se la pasamos a: gzip -c - > boot.img.gz : comprime lo que recibas de la entrada estndar (-) y mndalo (>) hacia un archivo llamado boot.img.gz Para crear una particin partiendo de una imagen comprimida podramos usar:
gzip -dc boot.img.gz | dd of=/dev/hda1

Tarea: Comparemos la compresin con bzip2 y gzip2

[root@eperez ~]# dd if=/dev/hda1 [root@eperez ~]# dd if=/dev/hda1 [root@eperez ~]# ll boot* -rw-r--r-- 1 root root 72863762 -rw-r--r-- 1 root root 72984867

| gzip -9c - > boot.img.gz | bzip2 -c - > boot.img.bz2 Aug 16 19:48 boot.img.bz2 Aug 16 19:46 boot.img.gz

En mi caso el bzip2 se demor mucho ms que el gzip. y s comprimi un poquito mejor (unos 100kb menor) que el gzip. Cualquier archivo de imagen que hayamos creado con dd desde una particin es posible montarlo as mismo desde la imagen. Esto podemos hacerlo por medio de un artilugio que existe en linux llamado loop (lazos). Mediante los lazos podemos montar imgenes hechas con dd y leer desde ellas, primero hagamos una imagen:
[root@eperez ~]# dd if=/dev/hda1 of=boot.img 208782+0 records in 208782+0 records out

Ahora creemos un directorio donde montaremos esta imagen (lo har en /mnt/loop) y posteriormente montemos la imagen en este directorio.
[root@eperez ~]# mkdir /mnt/loop [root@eperez ~]# mount -o loop ./boot.img /mnt/loop/

Como vemos, hemos llamado al comando mount pero con una opcin llamada loop (lazo) esta es la que nos permite montar imgenes en directorios. Entremos a /mnt/loop y creemos un directorio, nos dejar, porque es una imagen creada de un disco y permitir que la cambiemos.
[root@eperez ~]# cd /mnt/loop/ [root@eperez loop]# ll total 2587 -rw-r--r-- 1 root root 48299 drwxr-xr-x 2 root root 1024 -rw-r--r-- 1 root root 395477 drwx------ 2 root root 12288 -rw-r--r-- 1 root root 10213 -rw-r--r-- 1 root root 10213 -rw-r--r-- 1 root root 715755 -rw-r--r-- 1 root root 1435513 [root@eperez loop]# mkdir t [root@eperez loop]# ll total 2588 -rw-r--r-- 1 root root 48299 drwxr-xr-x 2 root root 1024 -rw-r--r-- 1 root root 395477 drwx------ 2 root root 12288 -rw-r--r-- 1 root root 10213 -rw-r--r-- 1 root root 10213 -rw-r--r-- 1 root root 715755 drwxr-xr-x -rw-r--r--

Jun Aug Jul Jul Feb Feb Jun Jun

8 15 22 21 26 26 8 8

17:39 22:58 17:21 11:28 12:39 12:39 17:39 17:39

config-2.6.9-11.EL grub initrd-2.6.9-11.EL.img lost+found message message.ja System.map-2.6.9-11.EL vmlinuz-2.6.9-11.EL

Jun Aug Jul Jul Feb Feb Jun

8 15 22 21 26 26 8

17:39 22:58 17:21 11:28 12:39 12:39 17:39

config-2.6.9-11.EL grub initrd-2.6.9-11.EL.img lost+found message message.ja System.map-2.6.9-11.EL

2 root root 1024 Aug 16 19:57 t 1 root root 1435513 Jun 8 17:39 vmlinuz-2.6.9-11.EL

[root@eperez loop]# cd [root@eperez ~]# umount /mnt/loop

Y de qu nos sirve el usar loops?

Pues que podemos ver los contenidos de un CD sin tener que quemarlo (usando imgenes), podemos ver los contenidos de una imgen de una particin sin tener que quemarla. Podemos analizar los contenidos de una imagen para realizar un anlisis fornsico, sin tener que ejecutar los contenidos de esta particin y adems podemos ya tener activo el disco sobre el que sacamos la imagen, disminuyendo el downtime. Podemos realizar cambios en la imagen para entonces s quemarla (digamos que crear un directorio o agregar archivos, etc).

Clonacin de floppies: Supongamos que queremos guardar una imagen de un floppy para poder usar el medio fsico. Despus podramos recuperar la informacin de la imagen en otro medio cuando nos haga falta.
dd if=/dev/fd0 of=floppy.img

Esto sacara una imagen del floppy, igual la podemos montar con un loop, e igual posteriormente podramos crear una copia exacta del floppy:
dd if=floppy.img of=/dev/fd0

As podemos mantener copias exactas de nuestros floppies y recuperarlas cuando deseemos hacia cualquier otro floppy. Igual podemos hacer para clonar un CD
dd if=/dev/cdrom of=cdrom.img

Ahora, los CDs cuando los clonemos podremos igualmente montarlos con loop, pero los CDs usan un formato llamado iso9660 que no permite escrituras, por lo que slo podramos leer desde el loop mas no escribir. Y cmo podemos crear nuestros propios CDs? Para esto podemos usar un comando llamado mkisofs, el cual toma los datos de un directorio indicado por nosotros, y crea un archivo .img el cual igualmente podremos montar o quemar. -J : Crear en formato Joliet (usado normalmente para los CDs de windows) -v : Ser verbose (hablador), dar bastante informacin de lo que hace -o archivo : crear la imagen con este nombre (rh9.img en mi caso) directorio de donde crear la imagen (en mi caso: rh9/, tomar de este directorio todos los archivos y directorios de donde crear la imagen)
[root@eperez ~]# mkisofs -J -v -o rh9.img rh9/ Warning: creating filesystem with (nonstandard) Joliet extensions but without (standard) Rock Ridge extensions. It is highly recommended to add Rock Ridge INFO: UTF-8 character encoding detected by locale settings. Assuming UTF-8 encoded filenames on source filesystem, use -input-charset to override. mkisofs 2.01 (i686-pc-linux-gnu) Scanning rh9/ Unknown file type (unallocated) rh9/.. - ignoring and continuing. Using KERNE000.RPM;1 for /kernel-smp-2.4.20-31.9.i686.rpm (kernel-

source-2.4.20-43.9.legacy.i386.rpm) Using KERNE001.RPM;1 for /kernel-source-2.4.20-43.9.legacy.i386.rpm (kernel-smp-2.4.20-43.9.legacy.i686.rpm) Writing: Initial Padblock Start Block 0 Done with: Initial Padblock Block(s) 16 Writing: Primary Volume Descriptor Start Block 16 Done with: Primary Volume Descriptor Block(s) 1 Writing: Joliet Volume Descriptor Start Block 17 Done with: Joliet Volume Descriptor Block(s) 1 Writing: End Volume Descriptor Start Block 18 Done with: End Volume Descriptor Block(s) 1 Writing: Version block Start Block 19 Done with: Version block Block(s) 1 Writing: Path table Start Block 20 Done with: Path table Block(s) 4 Writing: Joliet path table Start Block 24 Done with: Joliet path table Block(s) 4 Writing: Directory tree Start Block 28 Done with: Directory tree Block(s) 1 Writing: Joliet directory tree Start Block 29 Done with: Joliet directory tree Block(s) 1 Writing: Directory tree cleanup Start Block 30 Done with: Directory tree cleanup Block(s) 0 Writing: The File(s) Start Block 30 15.00% done, estimate finish Tue Aug 16 18:20:55 2005 29.99% done, estimate finish Tue Aug 16 18:20:52 2005 44.95% done, estimate finish Tue Aug 16 18:20:53 2005 59.96% done, estimate finish Tue Aug 16 18:20:54 2005 74.92% done, estimate finish Tue Aug 16 18:20:53 2005 89.91% done, estimate finish Tue Aug 16 18:20:53 2005 Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 212 Path table size(bytes): 10 Done with: The File(s) Block(s) 33193 Writing: Ending Padblock Start Block 33223 Done with: Ending Padblock Block(s) 150 Max brk space used 0 33373 extents written (65 MB)

Hasta el momento lo que habremos hecho ser crear una imagen iso9660, que se podr quemar en un CD. Ahora montemos esta imagen que acabamos de quemar para verificarla:
[root@eperez ~]# mount -o loop ./rh9.img /mnt/loop/

Listemos los contenidos


[root@eperez ~]# ls /mnt/loop/ kernel-smp-2.4.20-31.9.i686.rpm kernel-smp-2.4.20-43.9.legacy.i686.rpm kernel-source-2.4.20-43.9.legacy.i386.rpm

Exacto! Es precisamente lo que haba en mi directorio rh9/ Intentemos crear un directorio (t) dentro de esa imagen:
[root@eperez ~]# mkdir /mnt/loop/t mkdir: cannot create directory `/media/loop/t': Read-only file system

Correcto, nos dice que no pues la imagen es del tipo iso9660 y es de slo lectura. Desmontmosla, pues no debemos tener montadas las imagenes por gusto
[root@eperez ~]# umount /mnt/loop/

TAREA: Crear una imagen iso9660 Ahora procedamos a quemar, para eso usamos el comando cdrecord. Este comando quema en un CD, los switches son variados, pero estos generalmente funcionan: -v : verbose, hablador, decir todo lo que va haciendo speed=4 : Quemar a una velocidad de 4x, si desean ms velocidad poner el valor adecuado (8, 16, etc) ./rh9.img : Es la imagen que cre en el paso anterior (con mkisofs) por supuesto puede tener cualquier nombre.
[root@eperez ~]# cdrecord -v speed=4 ./rh9.imgY listo, con esto habremos

creado una compilacin (imagen, mkisofs) y la habremos quemado con cdrecord. Ya en secciones anteriores habamos visto cmo evitar que el sistema consumiera recursos previniento, limitando, el uso del atime en los filesystems montados. noatime al montar los filesystems ayuda muchsimo a evitar colas de escritura a disco y en filesystems tipo ext3 realmente mejora el performance de sistemas con alta E/S (accesos a disco) en un 30% o ms. ahora, todava tenemos algunas opciones ms que harn que los discos den lo mejor de s. Uno de los parmetros que podemos variar en el kernel es la latencia al acceder a los discos. Esto se hace variando las caractersticas del elevador de E/S del kernel. Qu es el elevador? El elevador es una cola en la que las peticiones de E/S son ordenadas en funcin de su sector del disco. El objetivo de esta ordenamiento es optimizar las bsquedas en disco (minimizndolas) con el fin de mejorar el desempeo del disco. Casi todos los discos duros mejoran al disminuir las bsquedas en el disco. Adems se estima que tambin la vida til de un disco sea mayor al no esforzarlo constantemente con bsquedas de sectores. Supongamos en nuestro sistema hay tres procesos A, B y C. Asumamos los tres procesos hacen E/S en este orden:
tiempo |proceso -------|------0 |A 1 |B 2 |C 3 |A 4 |B 5 |C sector accedido --------------10 14 12 11 15 13

Sin el elevador, el disco se movera de esta forma:


sector |10 | 11 | 12 | 13 | 14 | 15 |-----------------------------------------tiempo

Pero gracias al elevador que est presente en el sistema operativo linux, el disco se mueve de la siguiente forma:
sector |10 | 11 | 12 | 13 | 14 | 15 |-----------------------------------------tiempo

Y no ocurre ninguna bsqueda (es decir, el disco no se mueve para alante y para atrs constantemente escribiendo en sectores) por lo tanto la E/S a disco se completa de una forma mucho ms rpida. Deficiencia (escasez) del elevador: escasez en el elevador (elevator starvation) es el trmino que se usa en el mundo de los sistemas operativos para el efecto que se produce debido a que el elevador, en su funcionamiento, puede demorar una peticin de E/S por un tiempo demasiado largo, prcticamente infinito. Esto era lo que siempre sucedia en las versiones del kernel de linux anteriores a la 2.4 (2.2 por ejemplo). Asumamos que hay dos procesos A y B. El proceso A est escribiendo a disco continuamente 2TeraBytes de datos comenzando desde el sector 0. Esta es la forma en que la cola de E/S a disco se representa en linux debido a la accin del proceso A. (asumamos por simplicidad que la cola contiene espacio solamente para 10 peticiones de E/S, la parte izquierda de la cola es por donde el kernel toma los paquetes para procesarlos)
sector |0 1 2 3 4 5 6 7 8 9 proceso |A A A A A A A A A A

Despus de un tiempo, la cola lucir as:


sector |100 101 102 103 104 105 106 107 108 109 proceso |A A A A A A A A A A

As poquito a poco la cola se ir vaciando y llenando, saldr por ejemplo el sector 100 y entrara un nuevo proceso detrs del 109:

sector |101 102 103 104 105 106 107 108 109 proceso |A A A A A A A A A

Entonces en este punto el proceso B intenta leer un solo sector (solamente 512 bytes!) en una posicin del disco que est a 3TeraBytes de separacin:
sector |101 102 103 104 105 106 107 108 109 6442450944 proceso |A A A A A A A A A B

Un tiempo despus el controlador de E/S completa tambin la peticin 101:


sector |102 103 104 105 106 107 108 109 6442450944 proceso |A A A A A A A A B

Por lo tanto una nueva peticin llegar a la cola, ser de A en este caso. Como A va secuencialmente escribiendo, le tocar poner al 110 en cola. El viejo elevador (el presente en las versiones del kernel 2.2 y anteriores) nota que 109 < 110 < 6442450944 y por lo tanto inserta la peticin para escribir al 110 en el medio (delante de B que est muy lejos):
sector |102 103 104 105 106 107 108 109 110 6442450944 proceso |A A A A A A A A A B

Entonces, al terminar la peticin del sector 102 el sector 111 se encolar en orden:
sector |103 104 105 106 107 108 109 110 111 6442450944 proceso |A A A A A A A A A B

Como podemos ver, el elevador antiguo en las versiones de linux 2.2.x las peticiones encoladas para el proceso B eran demoradas de forma indefiniday el proceso B se detenia esperando por E/S completamente hasta que se completara A. Bsicamente B tendr que esperar hasta que A termine de escribir 2TeraBytes de datos para poder leer 512Bytes del disco. Escribir 2TeraBytes de datos toma unas 29 horas si se hace a unos 20MB/s. Es por esto que linux no responda bien ante altas peticiones de E/S. El programador de E/S Para superar esta dificultad del elevador de E/S, ste fu reescrito hacindolo un verdadero programador de E/S que obligue a cierta latencia de las peticiones que han sido encoladas. En el kernel 2.4.x cada peticin de la cola de E/S se encola con un nmero de secuencia del valor de la latencia permitida y ste se decrementa cada vez que se encola una nueva peticin. Este nmero de latencia es el mximo nmero de peticiones de E/S que podrn procesarse antes que esta peticin. Una vez llegado al mnimo valor, el kernel tiene la obligacin de procesarlo, evitando de esta forma que las peticiones sean demoradas por otras ms cercanas. Ahora, durante la versin 2.4 del kernel este fue el scheduler que sirvi a satisfaccin, sin embargo, gracias a la gran comunidad de open source, muchas otras variantes parecidas a este scheduler existen al momento. El kernel de RHEL4 viene con 4 schedulers precompilados:

1. 2. 3. 4.

Completely Fair Queuingelevator=cfq (este es el scheduler por defecto) Deadlineelevator=deadline NOOPelevator=noop Anticipatoryelevator=as

El scheduler por defecto, y el que realmente recomendamos si no se conoce es el CFQ El scheduler CFQ (Completely Fair Queuing). Como su nombre lo implica trata de distribuir el ancho de banda disponible para E/S de forma equitativa (fair) para todas las peticiones E/S. CFQ es muy recomendado para sistemas medianos/grandes multiprocesadores y para sistemas que requieren balancear la E/S entre diferentes bahas o puertos de dispositivos de E/S El Deadline usa un algoritmo de Fecha tope (deadline) para minimiza la latencia de E/S (espera) para una determinada peticin de e/s. El scheduler provee al sistema de un comportamiento similar al de sistemas en tiempo real y usa una poltica de round robin para intentar ser equitativo entre varias peticiones de e/s y para evitar deficiencias en el scheduler. Prioriza las lecturas sobre las escrituras. Se considera que es muy bueno para sistemas de Bases de datos. NOOP es sencillamente un algoritmo FIFO en el que no se hace labor de optimizacin de lecturas/escrituras a disco. Este algoritmo ahorra mucho costo de CPU que los otros gastan en manejar las colas y dems complejidades sin embargo no realiza ninguna optimizacin en disco. Es til sin embargo para sistemas que tienen la seguridad de que otros manejarn los accesos a disco, como por ejemplo arreglos externos de discos, HBA o para discos de RAM (ramdisks). Anticipatory introduce una demora en cada una de las E/S, con el objetivo de esperar a ver si las siguientes solicitudes son contiguas y pueden disminuir las bsquedas (desplazamientos) en el disco, con el objetivo de hacerlas ms rpidas. Antiguamente era el algoritmo por defecto, pero redhat ya lo dej en favor del CFQ. Se considera que es bueno para dispositivos lentos (discos antiguos), mantiene alta latencia pero ahorra accesos a disco. Escogiendo a un elevador para nuestro sistema La descripcin anterior nos debe haber dado una idea de cul elevador usar, pero realmente no hay nada como la prctica. A mi entender el AS es el scheduler ms similar al elevador anteriormente explicado para las versiones del kernel 2.4. Sin embargo, para servidores que requieren de buen desempeo est demostrado que no sirve. Indican varias fuentes (google) que el AS es muy bueno para sistemas de desktop, de hecho ahora lo estoy usando y no noto mayor diferencia en el arranque del sistema. Si queremos hacer una apuesta segura, debemos dejar el scheduler por defecto, que es el CFQ. Este sistema definitivamente est demostrando lograr un muy buen desempeo para todo tipo de aplicaciones y es por mucho (300% aproximadamente) ms rpido que el AS para sistemas multiusuarios donde se requiere baja latencia.

El deadline es muy bueno para sistemas en tiempo real, pero no demuestra una gran diferencia en contra del CFQ y sin embargo el comportamiento con arreglos externos (HBA, NFS, etc) es psimo por lo que no se recomienda en caso de que se usen estos discos. Sin embargo se podra tomar como opcin a analizar en caso de que nuestro sistema sea de bases de datos puro. El NOOP reduce en un 25% aproximadamente el consumo de procesador para manejar E/S, sin embargo tambin baja en el desempeo de acceso a disco. Si usamos un sistema que est requiriendo mucha CPU, podemos analizar el noop como alternativa para mejorar el rendimiento de la CPU. Si usamos un sistema con arreglos externos de disco que son los que se ocuparn de manejar los elevadores y dems detalles, podemos usar el noop, pero como alternativa general para su uso normal, no lo recomendamos. El definir qu scheduler usar no es una tarea de un momento, definitivamente si queremos comprobar el performance de nuestro sistema debemos cambiar el scheduler a usar y reiniciar la mquina, comprobar los datos de comportamiento del sistema y volver a probar con otro scheduler, as durante un tiempo hasta determinar el mejor scheduler para nuestro sistema. Repetimos, no existe una receta fija para el uso de schedulers, depende ms bien de qu querramos hacer con nuestro sistema y sus caractersticas fisicas particulares as como uso por parte de los usuarios. Para cambiar el sheduler, podemos editar /boot/grub/menu.lst y buscar una lnea que dice as: kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet puede variar el nmero del kernel, no preocuparse, la idea es que comience con la palabra kernel. Al final de la lnea agregar el scheduler de nuestra preferencia, por ejemplo: kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet elevator=as En este caso, al reiniciar nuestro sistema, ste levantar con el scheduler AS (anticipatory). Si queremos usar el CFQ podemos poner elevator=cfq o sencillamente dejar la lnea sin la variable elevator (como estaba originalmente): kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet Tarea: hagmos unas pruebas cambiando los schedulers en el sistema. Para cada uno de ellos midamos el impacto de la una utilera que siempre correremos (esto es un escenario hipottico y la utilera es trivial) time find / -name "*GPG*" -print|xargs grep prueba El comando time sacar una estadstica del tiempo consumido por el comando find El comando time devuelve 3 valores:

real: Tiempo total (real) usado para ejecutarse un comando user: Tiempo usado por el proceso del usuario (el proceso ejecutado) sys: Tiempo usado por el kernel (sistema) Para mi el ms interesante es el real. Veamos la tabla que logr en MI CASO:
real user sys

0AS . 3 7 s 1 . 1 1 1 s
CFQ1m35.43s Deadline NOOP 1m38.61s 1m43.24s 1m40.06 0.367s 0.39s 0.37s 1.099s 1.156s 1.168s

Qu podemos extraer de esta tabla?


El scheduler que menos demor en esta pequea prueba fu el AS, demor unos 3 segundos menos en ejecutar este comando. Durante las pruebas, el deadline no respondi tan bien como esperaba, comparativamente el cfq y el AS respondieron mejor cuando llam a otros procesos (firefox, thunderbird) El NOOP fu realmente demorado a los efectos de que cualquier accin que tom usando firefox y thunderbird demostraron real lentitud. Me pareci (impresin personal, no tengo datos reales) de que el AS hizo que la mquina y las aplicaciones levantaran ms rpidos.

En resumen, mi mquina es un desktop, la uso yo slo para un nmero finito y determinado de procesos trabaja mejor con AS, era de esperar pues reportan que el AS es mucho mejor para mquinas desktop. Sugiero que se hagan pruebas ms exhaustivas a los efectos de manejar los schedulers para determinar cul es el adecuado para un servidor determinado. hdparm Muchos, muchsimos, seguimos teniendo y seguiremos usando discos IDE para manejar nuestros servidores y mquinas de desktop. Ahora veremos cmo hacer para optimizar un poco los accesos a nuestro disco duro. Simple, las distribuciones de linux vienen por defecto sin hacer mucho esfuerzo en optimizar los accesos a disco. Y la razn es muy lgica.. los discos son muy variados, y

es virtualmente imposible una receta mgica para que todos los discos den lo mejor de s.
Advertencia: Estos cambios pueden hacer que el disco duro deje de funcionar. Es ms, estos cambios pueden eventualmente echar a perder la informacin y hasta daar totalmente al disco.

Aunque nunca he tenido ningun problema ms que el de tener que reiniciar la mquina porque el disco deje de responder al realizar las pruebas, nunca est de ms advertir que cualquier cambio que haga, lo debe hacer bajo su total responsabilidad Suponiendo que nuestro disco est en /dev/hda: 1- verifiquemos los parmetros actuales del disco:
hdparm /dev/hda /dev/hda: multcount I/O support unmaskirq using_dma = 16 (on) = = = 0 (default 16-bit) 0 (off) 1 (on) 0 (off) 0 (off) 0 (off) 8 (on)

keepsettings = nowerr readonly readahead geometry = = =

= 39704/16/63, sectors = 40021632, start = 0

Segundo, miremos y anotemos los parmetros de performance de nuestro disco antes de hacer cuqlquier cambio:
hdparm -tT /dev/hda

aqui estn los resultados de mi disco antes de optimizarlo:


Timing buffer-cache reads: 128 MB in Timing buffered disk reads:

0.36 seconds =357.54 MB/sec 4.47 MB/sec

64 MB in 14.33 seconds =

Estos son los resultados despus de optimizado:


Timing buffer-cache reads: 128 MB in 64 MB in Timing buffered disk reads:

0.33 seconds =390.24 MB/sec 4.63 seconds = 13.82 MB/sec

Si ven, los parmetros que el hdparm mide, se han incrementado, en algunos caso unas 3 veces. (buffered disks reads)

Yo siempre me centro en varios parmetros de estos, por ejemplo el IO support est en el valor por defecto de 16 bits.. cuando los discos mayormente soportan 32bits, PIOs, etc. Esto hay que cambiarlo. unmaskirq est desactivado, sin embargo permite enmascaras las IRQ para que cualquier otro programa que est usando la misma IRQ que el disco le d posibilidad al disco a usarla tambin. Sino, el disco como que se traba. Esto debemos activarlo. using DMA, direct memory access. Si compramos discos con soporte para DMA cmo no activarlo? multicount: cuntos sectores se leen con un acceso del cabezal, normalmente aumenta el performance en un 30%-50% Ahora comencemos poquito a poco, si el disco deja de responder, lamentablemente hay que apretar ese botoncito que dice reset:
hdparm -c3 -m16 /dev/hda

Aqu hemos activado 32bits as como multicount a 16.. el multicount lo podemos llevar hasta 32 a veces. Procedamos a probar de nuvo nuestro disco:
hdparm -tT /dev/hda

Supongo que hayan anotado previamente los datos del -tT anterior. Comparen y vean si ha aumentado o no, si no ha aumentado, es que algn parmetro en vez de ayudar al disco de ustedes, lo afect. En mi caso, esto casi dobl los accesos a discos. Sigamos:
hdparm -X34 -d1 -u1 /dev/hda /dev/hda: setting unmaskirq to 1 (on) setting using_dma to 1 (on) HDIO_SET_DMA failed: Operation not permitted setting xfermode to 34 (multiword DMA mode2) unmaskirq = 1 (on) using_dma = 0 (off)

En mi caso, no pude activar el DMA, posiblemente porque no lo tengo activado en el BIOS, es de asegurarse que lo est, el DMA s ayuda muchsimo en los accesos. En mi caso no puedo reiniciar la mquina pues es en la que todos compilamos los paquetes pero por lo dems, activ unmaskirq y el modo de transferencia lo puse a multiword DMA modo 2. A m personalmente no me mejor, pero supongo que haya sido porque no pude activar el DMA, pero si a ustedes le trabaja, mejor, mode2 es PIO2, si el disco de ustedes es PIOotracosa entonces busquen el parmetro adecuado para mejorar los accesos.

A propsito, posiblemente los discos de muchos hayan dejado de funcionar, porque no soporta X34 , prueben con:
hdparm -X66 -d1 -u1 -m16 -c3 /dev/hda

Al final de las pruebas, ya muchos tendrn idea de qu parmetros les sirven y cules no, los que les sirvan, los pueden unir en una sola llamada al hdparm y ponerlo en /etc/rc.d/rc.local para que se ejecute cada vez que linux comience. Espero les ayude a mejorar un poquito los accesos a discos. Recuerden, el mayor cuello de botella ahora, son los accesos por el bus de datos a los dispositivos mecnicos, discos por ejemplo, por lo tanto no hacemos nada con tener una super mquina con 5Ghz de velocidad, 10 procesadores y un disco mal optimizado tar La forma ms comn de hacer respaldos, ya sea a cinta o a disco o a cualquier medio de almacenamiento, est siendo el comando tar. En realidad es un comando antiguo, probado, realmente casi siempre funciona para hacer respaldos. tar permite realizar copias exactas, manteniento intactos los permisos y caractersticas de los archivos. tar devuelve un archivo que contendr a su vez toda la informacin del directorio o conjunto de directorios que hayamos respaldado. tar devuelve un slo archivo por la simple razn de que se usaba y se usa para escribir en cinta. Como las unidades de cinta no mantienen un filesystem, se hace un poco complicado el almacenar archivos y directorios pues estos tendran que conocerse de antemano dnde estaran localizados, etc. El tar se ocupa de guardar el orden y posicin exacto de cada uno de los archivos y directorios almacenados en este archivo.tar que creamos y por lo tanto podramos fcilmente extraer este archivo y tomar de ahi el orden en que fueron almacenados. el tar es muy fcil de usar, de hecho yo al inicio hasta comprender su funcionamiento lo memoric directamente los dos comandos ms importantes. Antes veamos algunos switches que podemos usar con el tar:

v - La v siempre viene de verbose (ser hablador), permite que el tar hable bastante sobre lo que est haciendo f - indica el archivo tar que vamos a crear o a extraer c - create, crear un archivo (c o x, no ambas) x - eXtract, extraer un archivo (c o x, no ambas) z - comprimir el tar que estamos creando con gzip (z o j, no ambas) j - comprimir el tar que estamos creando con bzip2 (z o j, no ambas)

Ejemplos del tar para crear un archivo:


tar -cf /root/etc.tar /etc

Esto es, crea (c) un archivo .tar hacia (f) /root/etc.tar con todos los contenidos del directorio /etc, el tar actuar calladito pues no tenemos el v puesto. Este tar quedar del mismo tamao prcticamente que el directorio /etc, pues no lo hemos comprimido slo lo creamos (c) hacia un archivo (f) llamado /root/etc.tar

Cmo hacer para crear un archivo comprimido? Tenemos dos opciones, la j y la z (bzip2: j, gzip:z):
tar -zcvf /root/etcyvar.tar.gz /etc /var

Qu hicimos aqu: Creamos un tar (c) comprimido (z) con gzip, le pedimos al tar que hablara (v, verbose) lo que fuera realizando y que el archivo creado (f) lo pusiera en /root/etcyvar.tar.gz, tambin le indicamos DOS directorios a poner dentro del tar (/etc y /var). Esto crear un slo archivo (root/etcyvar.tar.gz) conteniendo ambos directorios (/etc y /var). Cmo extraer los contenidos de tar? Simple:
tar -zxvf /root/etcyvar.tar.gz

Este comando extraer (x) un archivo tar comprimido con gzip (z), le pedir al tar que hable bastante (v) y el archivo desde donde proceder a extraer (f) es /root/etcyvar.tar.gz Al extraer, el tar no respeta el /, es decir, el tar ignora, por seguridad ese / de etc y var, a fin de que no sobreescriba nuestro propio /etc y /var, el tar al extraer extraer pensando que el lugar donde proceder a extraer los contenidos es el directorio donde estemos parado. As podemos recuperar respaldos hacia cualquier directorio y decidir con calma qu hacer con lo que hemos recuperado. Cmo podemos recuperar una parte de lo que guardamos en tar? A veces tenemos un archivo tar muy muy grande, de digamos 50GB, y slo queremos recuperar el archivo /etc/passwd por ejemplo de dentro de todo ese archivote. Cmo podemos hacer para recupear un archivo que sabemos dnde est? Le indicamos precisamente el directorio y nombre de archivo a recuperar, pensemos en el archivo etcyvar.tar.gz que creamos anteriormente:
tar -zxvf etcyvar.tar.gz etc/passwdLe hemos indicado que queremos extraer (x)

informacin comprimida (z) en un archivo tar (f) llamado etcyvar.tar.gz y que lo que queremos extraer es un archivo llamado passwd que est dentro de etc (etc/passwd) fjense que quit el / del etc, porque el tar no guarda / por seguridad, as al extraer algo no tenemos que preocuparnos que nos sobreescriba archivos o directorios de dentro de la raz. Lo mismo aplica si queremos extraer un directorio entero:
tar -zxvf etcyvar.tar.gz etc/

extraera TODOS los contenidos del directorio etc, pero no extraera los de var (recuerden que este etcyvar.tar.gz yo lo cre con los contenidos de /etc y /ver). Cmo hacemos para guardar los contenidos en una cinta? La cinta es un dispositivo de bloques de e/s que como ya dijimos no tiene formato especficamente, lo que hace que tengamos que referirnos a ella sin montarla, es decir, hablar directamente con el dispositivo. La cinta se atiende mediante dos posibles dispositivos: /dev/st0 es el que recomiendo que siempre se use, este dispositivo permite leer y escribir en la cinta, pero adems al terminar de leer/escribir, este dispositivo rebobina la

cinta hacia el inicio. /dev/nst0 este no lo recomiendo, pero en todo caso, hace lo mismo que /dev/st0 slo que no rebobina la cinta al terminar. Esto con el fin de que el que quiera complicarse la vida pueda tener varios archivos tar en una misma cinta. Entonces para escribir un tar hacia una cinta, nos aseguramos que tenemos un dispositivo de cinta instalado en nuestro servidor linux as como que tenemos una cinta puesta en el dispositivo y ponemos:
tar -cvf /dev/st0 /etc /var

Esto crear un tar (c) e indicar al tar que hable (v) hacia el dispositivo (f) /dev/st0 y en ese tar incluir /etc y /var, ya tenemos una forma de hacer respaldos! Y por qu no comprimo? Bueno, no soy un experto en cintas, pero la enorme mayora de las cintas tienen sistemas de compresin de datos al vuelo incluidos en su hardware. Esto es, nosotros le pasaremos el tar sin comprimir (sin z ni j) a la cinta (/dev/st0) y el sistema de la cinta se ocupar de comprimir estos datos. As logramos no gastar tiempo realizando la compresin nosotros (gastando ciclos de cpu) y le pasamos ese trabajo a la cinta que lo har transparentemente. Si nuestra cinta no realizara compresin al vuelo, entonces no est de ms el ponerle z al comando tar para de una vez comprimir nosotros y que la cinta as mismo guarde los datos. Comparando bzip2 con gzip nuevamente: Analicemos ahora el nivel de compresin de /etc con bz2 y con gz:
[root@eperez ~]# tar -zcf etc.tar.gz /etc [root@eperez ~]# tar -jcf etc.tar.bz2 /etc [root@eperez ~]# ll etc* -rw-r--r-- 1 root root 4828393 Aug 19 11:00 etc.tar.bz2 -rw-r--r-- 1 root root 6731130 Aug 19 10:58 etc.tar.gz

En este caso, /etc es un directorio lleno de archivos de texto mayormente, por lo que bzip2 tiene muchas ms opciones para comprimir, como podemos ver, bzip2 comprimi a unos 4.8MB mientras gzip slo logr 6.7MB de compresin. En resumen realizando comparaciones, el bzip2 es bueno para grandes cantidades de informacin de texto pero es muy lento, mientras que gzip es muy rpido y acta muy bien para bajos niveles de compresin. star Ahora, el comando tar tiene ciertas dificultades ya probadas por nosotros. Y es que al realizar respaldos muy grandes, tiende a dejar de responder y a veces hasta nos ech la mquina al piso. Cuando decimos respaldos muy grandes, estamos hablando de aproximadamente 50 GB en informacin sumamente fraccionada (mayormente compuesta por archivos menores

a 5kb) que hay que respaldar en una mquina intel dual Xeon con 2.4GHz de velocidad y 6GB de memoria as como un arreglo de discos SCSI de 570GB. Por eso aqu veremos otro comando ms moderno llamado star. Definitivamente hemos comprobado que es un gran porcentaje (posiblemente 25% ms rpido) que el antiguo tar. Y el star es ms eficiente en el manejo de memoria y procesador por lo que los problemas en mquinas que demoraban un mundo o fallaban haciendo un respaldo con tar los hemos logrado controlar usando star sin mayor complicacin. Al momento la utilidad star es la ms rpida conocida que imita al tar. Se ha comprobado que puede trabajar a velocidades superiores a 14mbit/s y que ofrece una tecnoloca de doble buffering que mantiene la unidad de cinta alimentada con datos constantemente. El star comenz a implementarse por el ao 1982 y sigue siendo un trabajo en progreso. Es muy eficiente adems con respaldos mayores a 1GB y es capaz de manejar una enorme cantidad de archivos (inodos) sin mayor uso de memoria (este es un grave problema del tar cuando hablamos de millones de archivos, tiende a crear grandes zonas de memoria con todo el rbol de directorio y eventualmente la mquina puede colapsar). El star tiene cierta compatibilidad con el tar, es capaz de abrir archivos hechos en tar. Definitivamente por todas estas razones y muchas ms, aqui pondremos el procedimiento para usar el star. Primero verificar que tengan el comando star en la mquina, en redhat y clones de redhat, est en un paquete aparte que se llama star, buscar este rpm e instalarlo si es que no est instalado ya en el sistema. Este paquete no sobreescribe al tar, siguen siendo dos comandos apartes e independientes. Seguidamente, hagamos el respaldo, comencemos con el ms simple:

star -cv f=/dev/st0 /etc /varCon este comando haramos un respaldo (c) siendo

hablador (v) hacia el dispositivo (f) de cinta (/dev/st0). Si queremos comprimirlo usaremos adems la z: star -zcv f=/dev/st0 /etc /var Esto lo comprimira con gzip. No conocemos de compresin va bzip2 de forma directa. Es decir, el star no sabe usar bzip2 para comprimir. Si queremos usar un archivo en vez de cinta pondramos:
star -cv f=/backup/respaldo.tar /etc /var

y listo, creara (c) el tar en un archivo (f) llamado /backup/respaldo.tar dentro de un directorio. No lo creara comprimido (no usamos z).abriran (x) todos los contenidos de la cinta (f). Si deseamos solamente un directorio o archivo en especfico, se lo hacemos saber con el nombre al lado, sin / inicial:
star -xv f=/dev/st0 etc/passwd

este sacara slo /etc/passwd y nada ms de todo el respaldo, lo que me permitira recuperar cierto archivo si conozco su nombre o directorio. Definitivamente consideramos por la capacidad que puede trabajar el star, que este es el recomendado para manejar grandes cantidades de archivos dispersos o respaldos mayores a 1GB, es mucho ms rpido en estas circunstancias y seguro les dar menos problemas de performance. Realizar respaldos es una de las tareas ms penosas de preparar y una de las pocas consideradas por los administradores. Por qu decimos esto? Porque pocos administradores se preocupan por mantener respaldos actualizados de sus sistemas, y menos an se ocupan de revisar si los respaldos funcionan, y a la hora de la verdad, cuando el sistema deja de responder, ahi vienen las quejas y los lamentos. Es por esto que una de las primeras tareas que todo administrador debe realizar es precisamente preparar algn tipo de sistema de respaldos, de ser posibles automticos. Los respaldos son la ltima lnea de defensa en la seguridad, en el tema de seguridad debemos ser bastantes repetitivos y vern durante el curso como tomamos muchas precauciones sobre cmo seguir asegurando nuestro sistema, esto por el hecho de que nunca hay seguridad de ms y la seguridad es en capas. Los respaldos en realidad se usarn cuando las otras medidas de seguridad hayan fallado, cuando ya no nos quede ms que volver a empezar desde cero y comenzar a reponer datos de nuestros respaldos. Los respaldos tambin sirven para ayudar cuando un usuario o cliente de nuestro servidor ha perdido algn dato valioso y desea que le busquemos en los respaldos una copia anterior de este. Pasos para realizar los respaldos:

El primer paso para realizar los respaldos es definir hacia dnde se escribirn:

1. Hacia otro disco: Es una forma rpida y fcil, tiene de bueno el que podemos

recuperar un respaldo sin tener que perder mucho tiempo pues el disco est puesto en la misma mquina o en una mquina contigua. Tiene de inconveniente que cuando el sistema se daa, existe la posibilidad de que tambin se dae ese disco. 2. Hacia una unidad de cinta: Es el proceso ms recomendado para empresas serias y tiene de inconveniente que las cintas son un poco lentas tanto para

respaldar como para recuperar adems que de vez en cuando hay que revisar que estn guardando correctamente la informacin pues tienden a daarse. 3. Hacia un CD: Tiene de inconveniente que posteriormente al respaldo hacia un directorio en el disco, hay que preparar un iso con mkisofs y quemar ese ISO con cdrecord. Pero es una variante factible.

El segundo paso ser definir cada cunto tiempo realizaremos los respaldos.

Esto depender mucho de las polticas de la empresa donde trabajemos y del tiempo que demoran los respaldos. Hay muchas empresas que realizan respaldos diarios y guardan copias de al menos 7 o 15 das de los respaldos, para poder buscar informacin. Otras empresas no pueden realizar respaldos diarios pues estos demoran mucho tiempo (digamos 12 horas) y consumira muchos recursos el realizar respaldos cada da. Es por tanto que algunas empresas prefieren realizar respaldos semanales o an quincenales o mensuales. Estos dos ltimos se realizan sobre todo cuando el sistema no cambia en mucho tiempo. Algunos sistemas son sencillamente inmutables en el tiempo, esto es, una vez instalados no reciben ni guardan en disco informacin que cambie en el tiempo, por lo que crear una sla vez un respaldo con la configuracin del sistema normalmente es suficiente para ellos. Estos sistemas son mayormente sistemas de firewall o proxy que no varan sus datos de configuracin ni de uso durante el tiempo y que en caso de una rotura que requiera de restablecer un respaldo, slo con la configuracin del sistema nos bastara.

El tercer paso sera definir qu directorios y archivos deseamos respaldar.

Esto depende mucho del tipo de sistema que estamos trabajando. Como ejemplo tabularemos diferentes tipos de sistemas y qu consideramos apropiado respaldas. Hemos de advertir que esto no debe tomarse como una receta, y si ustedes o su empresa tienen otras polticas o requieren de otros sistemas a respaldarse, deben respaldarlos de la forma ms conveniente a sus necesidades.
Tipo de sistema Mailserver Qu sugerimos respaldar? /etc /var/spool /var/log /home /root /etc /etc /var/www /home /root /etc /home /directoriodelaBD dump (vaciado) de las BD

Proxy y/o firewall Web server

BD

Tipo de sistema Mailserver

Qu sugerimos respaldar? /etc /var/spool /var/log /home /root /etc /etc /home /var/named

Proxy y/o firewall DNS

En linux normalmente no se respaldan los binarios, si nos fijamos en la tabla anterior, siempre hemos escogido los directorios donde se conservan datos valiosos e irrecuperables para nuestra empresa. Los binarios y libreras del sistema siempre se reinstalan al reinstalar el sistema, por lo tanto son recuperables, pero no son recuperables sin un respaldo datos tales como nombres de usuarios, pginas web, bases de datos, en fin, todo tipo de informacin especfica para nuestra empresa que no est presente en un sistema linux por defecto. Si nos fijamos bien uno de los directorios que siempre est presente es /etc, pues es aqu donde siempre se almacenan las claves y datos esenciales de configuracin del sistema y siempre, a ojos cerrados, debemos siempre incluir /etc en nuestros respaldos para mantener una copia de toda la info esencial del sistema. Otro directorio que nunca olvido respaldar, as sea necesario o no, es /home, para mantener de una vez los directorios de los usuarios ya sean miles o sean unos 2 o 3.. as poder realizar una recuperacin rpida sin tener que crear estos directorios.

Definir cmo respaldar

Es algo ms que importante y es qu utilera usaremos para respaldar, cualquiera de las dos anteriormente descritas (tar y star) son buenas, igual si tenemos la oportunidad o el inters podemos echar a andar el rsync que permite sincronizar directorios entre dos servidores. Una forma cmoda sera por ejemplo respaldar a otro directorio usando tar:
tar -zcf /otrodiscomontadoaqui/respaldo.tar.gz /etc /home /var/spool /var/log

Este ejemplo realizara un respaldo en un disco montado en un directorio (llamado en nuestro caso: /otrodiscomontadoaqui) de los directorios /etc /home /var/spool y /var/log Al hacer respaldos no debemos usar v porque puede resultar una cantidad de informacin tediosa de leer, confusa y puede conducir a que no notemos diferentes advertencias que el tar nos quiera comunicar.

Verificar respaldos

Una vez finalizado de realizar los respaldos debemos verificar que estos se estn creando correctamente. La forma ms usual que tengo de hacerlo es probando que est correctamente comprimido o guardado el respaldo (usando -t en el gzip o abriendo totalmente el respaldo) y sobre todo verificando que todos los contenidos de nuestros directorios respaldados estn intactos. Para eso bsicamente abro el paquete y verifico todo. Esta labor debe realizarse de vez en cuando. Siempre es bueno al realizar respalos, realizar comprobaciones de restauraciones (restores) de vez en cuando para estar seguros de que nada ha afectado la poltica de realizacin de respaldos y poder reaccionar prontamente ante una falla por algn cambio en el sistema. Cmo realizar una recuperacin? Supongamos pas lo peor de lo peor y tenemos que reinstalar el sistema. Cmo recuperamos los respaldos? Aqu algunos pasos comunes a seguir para recuperar la informacin:
1. Tratar antes de reinstalar de guardar una imagen de nuestro sistema daado

2.

3. 4.

5.

actual, esto lo podemos hacer con dd posiblemente o con un tar. Bsicamente con esto logramos guardar el estado actual del sistema para posterior anlisis y hasta logramos tener un respaldo del ultimo instante en que el sistema estuvo funcionando. Reinstalar normalmente el sistema linux, asegurarlo, optimizarlo, actualizarlo y realizar todas las tareas previas e inmediatas posteriores a una instalacin. Por supuesto la instalacin debe incluir todos los paquetes que nosotros sabemos requeriremos para nuestro trabajo normal con el sistema. Traer de otro disco o de la cinta o del CDrom los tar con los respaldos Abrir estos respaldos hacia un directorio temporal (normalmente los abro en /home/tmp o en /root/tmp, en la particin que tenga ms espacio), para esto me cambio primero al directorio donde abrir los respaldos (cd /home/tmp por ejemplo) y despus los abro para tenerlos todos ahi. Los directorios: /home, /var/spool y /var/www normalmente se pueden copiar hacia sus destinos de forma inmediata. Es decir, una vez abiertos en /home/tmp/var/spool, podemos por ejemplo:
cp -a /home/tmp/var/spool/* /var/spool/

6. pues estos directorios no afectan en nada el funcionamiento actual de nuestro nuevo sistema. 7. Del directorio /etc solamente sugiero que trabajemos con /etc/passwd, /etc/shadow y /etc/group. Por supuesto si queremos la copia antigua de nuestro servidor web, trabajaramos con el directorio de configuracin web (/etc/httpd/) y lo mismo con cada demonio que requiramos (/etc/squid para el squid, /etc/named* para el named). La idea con /etc es solamente tomar del directorio recuperado los archivos que necesitemos y de ser posible no sobreescribamos los archivos recin instalados sino que los unamos o manualmente editemos ( El etc recuperado deber estar en /home/tmp/etc pues recuerden siempre nos debemos cambiar al directorio /home/tmp para abrir los respaldos) 8. Recuperar y poner en su lugar todos los archivos que necesitemos segn el caso.

La recuperacin en linux es un proceso que no es difcil, aqu no trabajamos con registros ni ningn tipo de informacin complicada, sino que sencillamente trabajamos con archivos de texto los cuales son muy fciles de reemplazar o de editar para agregar la nueva informacin. Por ejemplo para recuperar los usuarios lo que yo hago es: editar el archivo passwd que estar en /home/tmp/etc y borrar todos los usuarios privilegiados (esos que el UID sea menor a 500), de forma tal que quedar un archivo passwd solamente con los usuarios propios de mi empresa (los que hemos creado y su UID es igual o mayor que 500). Una vez guardado ese passwd podemos proceder a unirlo:
cat /home/tmp/etc/passwd >> /etc/passwd

Aqu lo que habremos hecho ser agregar (>>) al archivo /etc/passwd los contenidos de /home/tmp/etc/passwd, que es el archivo al que hemos eliminado los usuarios privilegiados (esos ya estn presentes en /etc/passwd al instalarlo nuevo) y de esta forma nos queda original y adaptado a nuestro sistema. Lo mismo debemos hacer con group y con shadow (eliminar los usuarios propios del sistema y solamente dejar los usuarios que hemos creado nosotros, los usuarios con UID mayor de 500) Y listo! ya pasamos el problema mayor, ahora por supuesto pasaremos por algunos otros problemas pues siempre ocurren al realizar una recuperacin, lo normal es que se nos olvide instalar algn paquete que s usbamos antes, o que se nos olvide activar o reconfigurar algn servicio, poco a poco, con el transcurso de los minutos nos iremos dando cuenta, gracias a nuestras propias averiguaciones o a los usuarios mismos que vendrn a quejarse. Un detalle a considerar, siempre es importante que antes de sobreescribir un archivo de los recin instalados (por ejemplo /etc/passwd o /etc/group o cualquier otro) realizar una copia de seguridad de este, lo hago copiando el archivo con la extensin .bak:
cp /etc/passwd /etc/passwd.bak As, si algo fallara en nuestro nuevo sistema, podemos al menos recuperar el archivo original que recin habamos instalado y proceder a tomar otra variante para reconfigurarlo.

Tareas automticas
En Linux, las tareas pueden configurarse para que se ejecuten de forma automtica en un perodo de tiempo concreto y en las fechas indicadas. El sistema Red Hat Linux se distribuye preconfigurado para ejecutar determinadas tareas del sistema de modo que el sistema se mantenga actualizado. Por ejemplo, la base de datos slocate se actualiza diariamente. Un administrador del sistema puede utilizar las tareas automticas para realizar copias de seguridad peridicas, controlar el sistema y ejecutar scripts personalizados, entre otras tareas.

Red Hat Linux contiene cuatro utilidades de tareas automticas: cron, anacron, at y batch. De estas 4 tareas, realmente preferimos y usamos el comando cron por sobre las dems, lo que no resta importancia a estas.

Cron
Cron es un demonio que sirve para ejecutar tareas programadas segn una combinacin de la hora, da del mes, mes, da de la semana y semana. Cron asume que el sistema est activo de forma continua. Si el sistema no est activo cuando est programada una tarea, Cron no se ejecuta.

Configuracin de una tarea Cron


El fichero de configuracin principal de cron, /etc/crontab, contiene las lneas siguientes:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root 02 4 * * * root 22 4 * * 0 root 42 4 1 * * root run-parts run-parts run-parts run-parts /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

Las primeras cuatro lneas son variables que se usan para configurar el entorno en el que se ejecutan las tareas cron. El valor de la variable SHELL indica al sistema el entorno de shell que deber utilizarse (en este ejemplo, el shell de bash) y la variable PATH define la ruta usada para ejecutar los comandos. El resultado de las tareas cron se enva por correo electrnico al nombre de usuario definido con la variable MAILTO. Si la variable MAILTO se define como una cadena vaca (MAILTO=""), no se enviar correo electrnico. La variable HOME puede utilizarse para establecer el directorio principal que deber usarse al ejecutar los comandos o scripts. Sugerimos no tocar ninguna de estas variables si no se sabe darle un objetivo preciso o si no le es indicado por algn instalador o programa. Cada lnea del fichero /etc/crontab tiene el formato siguiente:
minute hour day month dayofweek command

minute nmero entero entre 0 y 59 hour nmero entero entre 0 y 23 day nmero entero entre 1 y 31 (debe

ser un da vlido si se especifica un

mes) nmero entero entre 1 y 12 (o nombre corto del mes, por ejemplo, ene, feb, etc.)
month

nmero entero entre 0 y 7, donde 0 o 7 corresponde a Domingo (o el nombre corto del da de la semana, por ejemplo, dom, lun, etc.) command el comando a ejecutar (el comando puede ser uno tal como ls /proc >> /tmp/proc o el comando para ejecutar un script personalizado que usted haya escrito.)
dayofweek

En cualquiera de los valores antes indicados, se puede utilizar un asterisco (*) para especificar todos los valores vlidos. Por ejemplo, un asterisco para el valor de mes significa que el comando se ejecutar cada mes dentro de las limitaciones del resto de los valores. Un guin (-) entre los nmeros enteros indica un intervalo de nmeros enteros. Por ejemplo, 1-4 significa los nmeros enteros 1, 2, 3 y 4. Una lista de valores separados por comas (,) especifica una lista. Por ejemplo, 3, 4, 6, 8 indica esos cuatro nmeros enteros. La barra (/) puede utilizarse para especificar valores de pasos. El valor de un nmero entero se puede omitir dentro de un intervalo si se indica a continuacin del intervalo lo siguiente /<nmero entero>. Por ejemplo, 0-59/2 puede usarse para definir el resto de los minutos del campo minuto. Los valores de pasos tambin pueden utilizarse con un asterisco. Por ejemplo, el valor */3 puede usarse en el campo de mes para omitir el tercer mes. Las lneas que empiezan por almohadilla (#) son comentarios y no se procesan. Como podr observar en el archivo /etc/crontab, usa el script run-parts para ejecutar los scripts en los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, y /etc/cron.monthly cada hora, diariamente, semanalmente o mensualmente, respectivamente. Los ficheros de estos directorios deben ser scripts de shell. Si las tareas cron deben ejecutarse segn una programacin distinta a la hora, da, semana o mes, esto puede agregarse en el directorio /etc/cron.d. Todos los ficheros de este directorio utilizan la misma sintaxis que /etc/crontab. Remtase al Ejemplo para ms ejemplos.
# record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh

Ejemplos de Crontab Los usuarios no root pueden configurar las tareas cron tasks con la utilidad crontab. Todos los crontabs definidos por el usuario se almacenan en el directorio /var/spool/cron y se ejecutan utilizando los nombres de los usuarios que los han creado. Para crear un crontab como un usuario, inicie la sesin como ese usuario y escriba el comando crontab -e para modificar el crontab del usuario con el editor

especificado por la variable de entorno VISUAL o EDITOR. El fichero usa el mismo formato que /etc/crontab. Cuando se guardan los cambios en crontab, el crontab se almacena segn el nombre de usuario, y se escribe en el fichero /var/spool/cron/username. El demonio cron controla el fichero etc/crontab, el directorio etc/cron.d/ y el directorio /var/spool/cron cada minuto para cada cambio. Si se encuentra algn cambio, estos se descargan en la memoria. De este modo, el demonio no necesita ser reiniciado si se cambia un fichero crontab.

Control de acceso a Cron


Los ficheros /etc/cron.allow y /etc/cron.deny se usan para restringir el acceso a cron. El formato de los dos ficheros de acceso es un nombre de usuario en cada lnea. No est permitido espacio en blanco en ninguno de los ficheros. El demonio cron (crond) no tiene que ser reiniciado si los ficheros de control de acceso se modifican. Los ficheros de control de acceso se leen cada vez que el usuario intenta aadir o borrar una tarea cron. El usuario root puede utilizar siempre cron, sin prestar atencin a los nombres de usuarios listados en los ficheros de control de acceso. Si existe el fichero cron.allow, tan slo se permitir a los usuarios presentes en la lista utilizar cron y el fichero cron.deny se ignorar. Si cron.allow no existe, todos los usuarios listados en cron.deny no se les permite usar cron.

Iniciar y finalizar el servicio


Para iniciar el servicio cron, use el comando /sbin/service crond start. Para parar el servicio, use el comando /sbin/service crond stop. Se le recomienda que inicie el servicio en el tiempo de arranque. Remtase a la seccin de arranque y parada para ms detalles sobre cmo iniciar el servicio cron automticamente al arrancar el sistema.

Qu es Anacron?
Anacron es un programador de tareas peridicas. Este ejecuta comandos en diferentes intervalos especificados en das. Al contrario de cron, anacron no asume que el sistema est ejecutndose continuamente, por lo tanto puede ser usado para controlar la ejecucin de tareas diarias, semanales o mensuales, en realidad puede ser usado para ejecutar tareas durante cualquier periodo cuya unidad mnima sea el da, es decir, anacron no puede detallar los periodos de ejecucin por horas o minutos, sino que su mnima unidad es el da. Cada vez que se ejecuta al Anacron, este lee la el archivo de configuracin que especifca qu trabajos anacron controla y su periodo en das. Si un trabajo no fue ejecutado en los ltimos n das, donde n es el periodo de ejecucin del trabajo, entonces anacron lo ejecuta y guarda un histrico de cundo fu la ltima vez que se ejecut, de

esta forma concer cundo ejecutarlo de nuevo. Cuando los comandos a ejecutar terminan, anacron sale. Es decir Anacron no se queda en memoria.

Qu utilidad puede tener el Anacron?


Como hemos estudiado anteriormente, la mayora de los sistemas Un*x (linux incluido) tienen formas de prograr la ejecucin de tareas que llevan a cabo diferentes trabajos de mantenimiento como rotacin de logs, actualizando la BD del locate, etc. Estos scripts se manejan normalmente como trabajos que se ejecutarn entre la 1AM y las 7AM. Los Scripts semanales se manejan para ejecutarse los Domingos. En mquinas que estn apagadas durante las horas de madrugada y/o los fines de semana estos scripts escasamente corren. Anacron resuelve este problema. Estos trabajos simplemente sern programados como trabajos de anacron con periodos de 1, 7 y 30 das, de forma tal que cuando se encienda la mquina, un tiempo despus ellos se ejecuten. Anacron intenta ser una ayuda sobre todo para usuarios de laptop y para personas que slo encienden su computadora unas horas al da.

Qu no es Anacron?
No es un intento de hacer algo redundante al cron. No puede ser usado para programar tareas a intervalos menores a un da. Adems tampoco garantiza que un comando se ejecutar en una hora o da en especfico. Anacron har lo mejor posible para ejecutar un comando que le hayan indicado pero no podremos precisar una hora o da exacto. Anacron tampoco es un demonio a tiempo completo, esto es, una vez ejecutado, l terminar. Anacron se debe ejecutar desde algn script de inicio o mediante tareas programadas del cron, pues no est permanentemente levantado.

Configuracin de las tareas de Anacron


Las tareas Anacron estn incluidas en el fichero de configuracin /etc/anacrontab. Cada lnea del fichero de configuracin corresponde a una tarea y tiene el formato siguiente:

period delay job-identifier commandperiod frecuencia (en das) con la que se ejecuta el comando delay tiempo de retraso en minutos job-identifier descripcin de las tareas, usados en los mensajes Anacron

y como el nombre del identificador de la estampilla del proceso, puede contener cualquier caracter no en blanco (excepto barras oblicuas) command comando que debe ejecutarse

Por cada tarea, Anacron determina si la tarea ha sido ejecutada dentro del perodo especificado en el campo period del archivo de configuracin. Si no se ha ejecutado dentro de ese perodo, Anacron ejecutar el comando especificado en el campo command despus de esperar la cantidad de tiempo especificado en el campo delay. Una vez finalizada la tarea, Anacron registra la fecha en el fichero de marca de fecha que se encuentra en el directorio /var/spool/anacron. Slo se utiliza la fecha (no la hora), y se usa el valor de job- identifier como nombre de fichero del fichero de marca de hora. Las variables de entorno, como SHELL y PATH , pueden definirse en la parte superior de /etc/anacron, de forma similar al fichero de configuracin de cron. El aspecto del fichero de configuracin por defecto es similar a como se indica a continuacin:
# /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # These 1 7 30 entries 5 10 15 are useful for a Red Hat Linux system. cron.daily run-parts /etc/cron.daily cron.weekly run-parts /etc/cron.weekly cron.monthly run-parts /etc/cron.monthly

Figura. Anacrontab por defecto Tal como puede ver en la Figura, anacron para Red Hat Linux se configura de modo que queda garantizada la ejecucin diaria, semanal y mensual de las tareas cron.

Iniciar y finalizar el servicio


Para arrancar el servicio anacron, use el comando /sbin/service anacron start. Para detener el servicio, use el comando /sbin/service anacron stop. Se recomienda arrancar el servicio en el momento del arranque. Remtase a la seccin de arranque y parada para ms detalles sobre el inicio del servicio anacron de manera automtica al momento de arranque. Mientras que cron y anacron se usan para programar tareas, el comando at se usa para programar una nica tarea en un tiempo especfico. El comando batch se usa para programar que se ejecute una sla tarea cuando la carga del sistema sea menor a 0.8 (ver top). Realmente at no me causa mayor impresin, porque slo permite ejecutar un comando una vez, el cron puede hacer algo parecido ms cmodamente.

Configuracin de tareas
Para programar una tarea no repetitiva en un tiempo especfico, escriba el comando at time, en el que time es el tiempo para ejecutar el comando. El argumento time puede ser uno de los siguientes:

formato HH:MM Por ejemplo,04:00 especifica 4:00AM. Si se inserta el tiempo, se ejecuta en el tiempo especfico el da despus. midnight Especifica 12:00AM. noon Especifica 12:00PM. teatime Especifica 4:00PM. formato del nombre-mes, da y ao Por ejemplo, Enero 15 del ao 2002. El ao es opcional. formato MMDDYY, MM/DD/YY, o MM.DD.YY Por ejemplo, 011502 para el da 15 de Enero del ao 2002. now + tiempo el tiempo est en minutos, horas, das o semanas. Por ejemplo, ahora + 5 days, especifica que el comando debera ser ejecutado a la misma hora en 5 das.

La hora debe ser especificada en primer lugar, seguido por la fecha opcional. Para ms informacin sobre el formato del tiempo, lea el fichero del texto /usr/share/doc/at<version>/timespec. Tras haber escrito el comando at con el argumento del tiempo, el prompt at> ser visualizado. Escriba el comando a ejecutar, pulse [Intro] y escriba Ctrl-D. Se puede especificar ms de un comando escribiendo cada comando seguido de la tecla [Intro]. Despus de haber escrito todos los comandos, pulse [Intro] para obtener una lnea en blanco y escriba Ctrl-D. Alternativamente, se puede introducir un script de shell en el intrprete de comandos y escribir Ctrl-D en una lnea en blanco para salir. Si se introduce un script, la configuracin de la shell usada ser la configuracin de la shell en la SHELL del usuario, la shell de registro del usuario o /bin/sh (el primero que se encuentre). Si la configuracin de comandos o el script intentan visualizar informacin, la salida de datos ser enviada va correo electrnico al usuario.

Configuracin de tareas Batch


Para ejecutar una tarea no repetitiva cuando el promedio de carga est por debajo de 0.8, utilice el comando batch. Tras haber escrito el comando batch, se visualiza el intrprete de comandos at>. Escriba el comando a ejecutar, pulse [Intro] y escriba Ctrl-D. Se puede especificar ms de un comando al escribir cada comando seguido de la tecla [Intro]. Tras haber escrito todos los comandos, pulse [Intro] para acceder a una lnea en blanco y escriba Ctrl-D. Se puede introducir de forma alternativa un script de shell en el intrprete de comandos y escribir Ctrl-D en una lnea en blanco para salir. Si se introduce un script, la shell usada es la configuracin de la she en el entorno SHELL del usuario, la shell de login del

usuario, o /bin/sh (todo lo que se encuentre en primer lugar). Tan pronto como el promedio de carga est bajo 0.8, se ejecutar la configuracin del comando o el script. Si la configuracin de comandos o el script intentan visualizar informacin, la salida de datos ser enviada va correo electrnico al usuario.

Visualizacin de las tareas pendientes


Para visualizar las tareas pendientes at y batch, use el comando atq. Se muestra una lista de tareas pendientes, con cada lnea de trabajo. Cada lnea est en el nmero de tarea del formato, la fecha, la hora, el tipo de tarea y el nombre de usuario. Los usuarios tan slo pueden ver sus propias tareas. Si el usuario root ejecuta el comando atq, se visualizarn todas las tareas para los usuarios.

Opciones adicionales de la lnea de comandos


Opciones adicionales de la lnea de comandos para at y batch incluyen:
Opciones
Enva un email al usuario cuando se ha completado la tarea.-f -v-m

Descripcin Lee los comandos o script del shell desde un archivo en vez de ser especificados en el intrprete de comandos. Muestra la hora en la que la tarea ser ejecutada.

Tabla 28-1. Opciones de lnea de comandos at y batch

Control de acceso a At y Batch


Los ficheros /etc/at.allow y /etc/at.deny pueden ser usados para restringir el acceso a los comandos at y batch. El formato de ambos ficheros de control de acceso es un nombre de usuario en cada lnea. El espacio en blanco no est permitido en ningn fichero. El (atd) demonio at no deber ser reiniciado si los ficheros de control de acceso son modificados. Los ficheros de control de acceso se leen cada vez que un usuario intenta ejecutar los comandos at y batch. El usuario root siempre puede ejecutar los comandos at y batch, sin tener en cuenta los ficheros de control de acceso. Si existe el fichero at.allow tan slo se permitir a los usuarios listados usar at o batch y el fichero at.deny ser ignorado. Si at.allow no existe, a todos los usuarios listados en at.deny no se les permitir usar at o batch.

Iniciar y finalizar el servicio


Para iniciar el servicio at, use el comando /sbin/service atd start. Para detener el servicio, use el comando /sbin/service atd stop. Se le recomienda que inicie el servicio durante el momento de arranque.

mt mt es una utilera para trabajo con cintas. Aunque no es requerido usarlo al realizar respaldos, s es importante conocer qu ayudas nos puede brindar. mt se debe invocar con el nombre del dispositivo de cinta al que nos estamos refiriendo (normalmente /dev/st0) y un comando que le deseamos enviar a la cinta. El comando mt puede demorarse en dar una respuesta y no lo debemos detener si notamos que no est respondiendo, a veces demora horas.
mt mt mt mt mt -f -f -f -f -f /dev/st0 /dev/st0 /dev/st0 /dev/st0 /dev/st0 status eject retension erase rewind

Existen otras herramientas como cpio, pero no las analizaremos pues redundaramos en el tema y realmente a mi entender el tar es mucho ms potente.
Cmo se abre un archivo star? star -xv f=/dev/st0 cdrecord: No write mode specified. cdrecord: Asuming -tao mode. cdrecord: Future versions of cdrecord may have different drive dependent defaults. cdrecord: Continuing in 5 seconds... Cdrecord-Clone 2.01-dvd (i686-pc-linux-gnu) Copyright (C) 1995-2004 Jrg Schilling Note: This version is an unofficial (modified) version with DVD support Note: and therefore may have bugs that are not present in the original. Note: Please send bug reports or support requests to http://bugzilla.redhat.com/bugzilla Note: The author of cdrecord should not be bothered with problems in this version. TOC Type: 1 = CD-ROM

scsidev: '/dev/cdrom' devname: '/dev/cdrom' scsibus: -2 target: -2 lun: -2 Linux sg driver version: 3.5.27 Using libscg version 'schily-0.8'. cdrecord: Warning: using inofficial libscg transport code version (schily - Red Hat-scsi-linux-sg.c-1.83-RH '@(#)scsi-linux-sg.c 1.83 04/05/20 Copyright 1997 J. Schilling'). Driveropts: 'burnfree' SCSI buffer size: 64512 atapi: 1 Device type : Removable CD-ROM Version : 0 Response Format: 1 Vendor_info : 'ATAPI ' Identifikation : 'CD-R/RW 40X12 ' Revision : '1.HB' Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr). Driver flags : MMC-2 SWABAUDIO BURNFREE Supported modes: TAO PACKET SAO RAW/R16 RAW/R96R Drive buf size : 1630208 = 1592 KB FIFO size : 4194304 = 4096 KB Track 01: data 65 MB Total size: 74 MB (07:25.00) = 33375 sectors Lout start: 75 MB (07:27/00) = 33375 sectors Current Secsize: 2048 ATIP info from disk: Indicated writing power: 5 Is not unrestricted Is not erasable Disk sub type: Medium Type B, low Beta category ( (4) ATIP start of lead in: -11607 (97:27/18) ATIP start of lead out: 359849 (79:59/74) Disk type: Short strategy type (Phthalocyanine or similar) Manuf. index: 18 Manufacturer: Plasmon Data systems Ltd. Blocks total: 359849 Blocks current: 359849 Blocks remaining: 326474 Speed set to 706 KB/s Starting to write CD/DVD at speed 4.0 in real TAO mode for single session. Last chance to quit, starting real write 0 seconds. Operation starts. Waiting for reader process to fill input buffer ... input buffer ready. trackno=0 BURN-Free is ON. Performing OPC... Starting new track at sector: 0 Track 01: 65 of 65 MB written (fifo 100%) [buf 98%] 4.7x. Track 01: Total bytes read/written: 68347904/68347904 (33373 sectors). Writing time: 122.900s Average write speed 3.6x. Min drive buffer fill was 89% Fixating... Fixating time: 70.034s cdrecord: fifo had 1077 puts and 1077 gets. cdrecord: fifo was 0 times empty and 592 times full, min fill was 92%.

este archivo: imagenhda1.img quedar con una copia exacta de hda1 en el momento que la tomamos. Podemos con confianza borrar hda1, equivocarnos con hda1, o lo que querramos, podemos reponer esa copia cuando querramos, cmo se repone la info?
dd if=/root/imagenhda1.img of=/dev/hda1 bzip2 archivo service network restart chkconfig --add servicio

Como siempre debemos ahorrar recursos de nuestro sistema para que este funcione lo mejor posible, sugerimos que se comenten al menos 4 de ellos (por ejemplo del terminal 3 al 6) para que el sistema slo cargue 2 minguetty, y as consumir un poco menos de recursos. Quedara as:
# Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 #3:2345:respawn:/sbin/mingetty tty3 #4:2345:respawn:/sbin/mingetty tty4 #5:2345:respawn:/sbin/mingetty tty5 #6:2345:respawn:/sbin/mingetty tty6

You might also like