Sie sind auf Seite 1von 218

ndice general_

formacin digital

1. INTRODUCCIN A GNU/LINUX .........................................................1 2. INSTALACIN DE LA VERSIN DE ESTABLE DE LA DISTRIBUCIN DEBIAN ..........................................................................................19 3. PRIMEROS PASOS EN LINUX ..........................................................63 4. MANEJO DEL SHELL ........................................................................79 5. GESTIN DE PERMISOS................................................................115 6. INTRODUCCIN A LA GESTIN DE USUARIOS ..............................127 7. GESTIN DE SOFTWARE EN DEBIAN.............................................139 8. ESTUDIO DEL KERNEL ..................................................................151 9. X WINDOW ..................................................................................173 10. SHELL SCRIPTS .........................................................................187

GLOSARIO .........................................................................................211

1
ndice_

Introduccin a GNU/Linux

1.1. INTRODUCCIN.............................................................................3 1.1.1. Historia ..............................................................................3 1.2. CARACTERSTICAS ........................................................................4 1.3. MBITOS DE USO ..........................................................................5 1.4. LINUX, GNU Y SOFTWARE LIBRE ...................................................6 1.4.1. El software libre: licencia GPL.............................................7 1.5. PROGRAMACIN ...........................................................................8 1.6. REDES ...........................................................................................9 1.6.1. Integracin con distintos entornos ...................................10 1.6.2. Servicios para Internet e intranet .....................................10 1.7. DISTRIBUCIONES DE GNU/LINUX ...............................................11 1.7.1. Las distribuciones ms importantes..................................13 1.7.2. Distribucin debian gnu/linux ..........................................16 1.7.2.1. Modelo de Desarrollo de Debian: Estable, Prueba, Inestable ...............................................16

1
1.1. INTRODUCCIN populares.

Introduccin a GNU/Linux

Linux es un sistema operativo de libre distribucin, clnico del UNIX creado a principios de la dcada de los 70. Durante todos estos aos, se han creado distintos sistemas operativos basados en l, y ste que estamos estudiando, Linux, es en la actualidad uno de los ms

Generalmente, se conoce como Linux al conjunto formado por el kernel y las aplicaciones que lo acompaan. El kernel (ncleo) de un sistema operativo es la parte del mismo que se sita entre el hardware y las aplicaciones. Aunque es una costumbre muy extendida, slo al ncleo se le debe llamar Linux, ya que el resto del software proviene de distintas fuentes no ligadas especficamente a l. Por nuestra parte, cuando hablemos de Linux, nos estaremos refiriendo indistintamente al kernel y al software de usuario. Sin embargo, para referirnos a algo relacionado exclusivamente con el ncleo, lo indicaremos de forma explcita. El sistema operativo UNIX es uno de los ms importantes y conocidos a nivel mundial como indica el enorme nmero de instalaciones existentes. Fue desarrollado a principios de los aos 70 como un sistema multitarea y multiusuario para microcomputadores y mainframes. Desde entonces, ha ido creciendo y evolucionando hasta nuestros das. Existen versiones de UNIX muy antiguas. Algunas de ellas han estado enfocadas a ordenadores personales, mientras que otras se han empleado en supercomputadores. La gran mayora de las versiones de UNIX destinadas a ordenadores personales eran complejas y poco asequibles para usuarios domsticos. Linux aporta la novedad de poder ser libremente distribuido y con un coste bajo, que suele ser el medio de distribucin empleado, normalmente un CD. 1.1.1. Historia Linux fue desarrollado, en un principio, por Linus Torvalds, estudiante en la Universidad de Helsinki, en 1991 como simple entretenimiento. Se inspir en el sistema operativo Minix, un pequeo clnico de UNIX creado con fines acadmicos. En un primer momento, el objetivo de Torvalds era crear una versin de Minix que aprovechase las caractersticas del procesador Intel 386, de reciente aparicin en el mercado por aquellas fechas. Linus Torvalds comenz en solitario el desarrollo hasta que pidi ayuda en Internet: cuando anunci la disponibilidad de la versin 0.02, junto con el cdigo fuente, muchos programadores se interesaron en su desarrollo y colaboraron con l. As, se sucedieron varias versiones de prueba, hasta que en marzo de 1992, se lanz la versin 1.0. En el

1
sistema y el soporte para nuevas tecnologas.

Introduccin a GNU/Linux

momento de escribir este manual, la versin actual es la 2.6.8. Las nuevas versiones se han ido sucediendo sin descanso desde su creacin, muchas veces casi semanalmente debido a que cada vez era cada vez ms y ms conocido y cualquier persona interesada poda colaborar en su desarrollo. De esta forma, se fueron incrementando las capacidades del

Actualmente, gran parte del software que se encuentra en un sistema Linux proviene del proyecto GNU de la Free Software Foundation (FSF). Adems, muchos programadores y nuevos proyectos contribuyen con software a Linux. En la actualidad, Linux ha sido portado a una amplia variedad de plataformas como PowerPc, SPARC, MIPS, strongARM, etc., adems de haber sido desarrollada ya una versin para los procesadores de 64 bits de AMD. Con la llegada de las distribuciones Red Hat y SuSE, Linux comenz a hacer su entrada en entornos empresariales. En los ltimos aos, grandes empresas como IBM se han volcado en el proyecto Linux. De hecho, en las comunidades de Extremadura y Andaluca se han desarrollado sistemas Linux personalizados para el uso en instituciones de dichas regiones. En definitiva, podemos concluir que en apenas 13 aos de vida, Linux ha pasado de ser un simple sistema operativo creado en los ratos libres de un estudiante, a hacer temblar los cimientos de la industria del software y revolucionar las formas de hacer negocio. El hecho de que su cdigo fuente sea pblico junto con el desarrollo de Internet, ha propiciado la creacin, en pocos aos, de una enorme comunidad de usuarios y desarrolladores alrededor del este sistema y de todas las aplicaciones y tecnologas relacionadas.

1.2. CARACTERSTICAS Las caractersticas ms notables del sistema operativo Linux son las siguientes: Estabilidad: los sistemas UNIX han sido reconocidos por su estabilidad.

Habitualmente se ha usado UNIX en lugares donde la fiabilidad ha sido prioritaria, como en centrales nucleares, control de maquinaria, etc. Escalabilidad: la escalabilidad de un sistema operativo es la capacidad de adaptacin al hardware sobre el que se ejecuta. Desde sus comienzos, Linux ha sido un sistema operativo con unos requerimientos muy bajos. Esto ha permitido crear servidores en hardware prcticamente obsoleto.

1
ofimtica, diseo, multimedia, etc.

Introduccin a GNU/Linux

Flexibilidad: aunque en sus comienzos se orient como sistema operativo para servidores, en la actualidad, se pueden realizar en Linux un amplio abanico de tareas alejadas de las funciones de servidor. Entre estas tareas destacamos: programacin,

Multitarea: es la capacidad de un sistema operativo de ejecutar al mismo tiempo varios programas. En la actualidad hay dos tipos de multitarea: una de ellas, multitarea cooperativa, muy utilizada en Windows, en la que los programas se ejecutan hasta que deciden que sea otro el que ocupe el procesador. Por el contrario, en Linux existe la multitarea prioritaria y en ella hay un proceso del sistema operativo (planificador de procesos) que se encarga de controlar que todos los programas tengan garantizado un tiempo mnimo de ejecucin en el procesador.

Multiusuario: un sistema operativo multiusuario es aqul que permite que haya distintos usuarios, en un momento determinado, usando la mquina. De esta manera, estos usuarios pueden ejecutar distintos programas o incluso el mismo.

Multiplataforma: esta caracterstica permite ejecutar Linux en distintas arquitecturas de procesadores, desde los procesadores Intel hasta Atari, Amiga, SPARC, ARM, etc.

1.3. MBITOS DE USO Gracias a las caractersticas citadas, podemos encontrar sistemas Linux en reas muy distintas del panorama informtico, lo que da una idea del desarrollo que se ha obtenido con este sistema operativo: Servidores: tradicionalmente ha sido ste el campo en el que Linux ha alcanzado mayor xito. En pocos aos, ha pasado de ser una alternativa econmica para pequeos servidores a ser el sistema operativo ms robusto, flexible y escalable del mercado, superando ampliamente a otros sistemas operativos comerciales. As pues, en la actualidad, los servidores web bajo Linux dominan Internet, grandes corporaciones estn migrando sus sistemas de informacin de sistemas propietarios a Linux; empresas punteras como IBM, Sun, HP, etc., estn enfocando gran parte de sus inversiones en tecnologas relacionadas con Linux y el cdigo abierto. Escritorio: el segmento de mercado de los sistemas operativos de escritorio ha estado dominado hegemnicamente por Microsoft durante muchos aos. Es precisamente en la orientacin al escritorio donde Linux ha progresado, de forma ms visible, en los

Introduccin a GNU/Linux

ltimos aos. El desarrollo de los entornos KDE y GNOME junto con las mejoras implementadas en el sistema grfico X Window, han permitido canalizar toda la potencia y fiabilidad de Linux a usuarios domsticos de una forma impensable hasta hace bien poco. Actualmente, bajo Linux se pueden desarrollar todas las tareas habituales de un PC de escritorio: ofimtica, Internet, juegos, multimedia, etc. Aplicaciones empotradas: el mercado para pequeos dispositivos como telfonos mviles, agendas, asistentes personales PDA, puntos de informacin, etc., es uno de los de mayor crecimiento actualmente. En la opinin de diversos analistas, el mercado para pequeos dispositivos ser el ms importante en pocos aos superando al omnipresente PC de escritorio. La escalabilidad y flexibilidad de Linux, le permite adaptarse a las caractersticas limitadas de estos dispositivos en cuanto a memoria, capacidad de almacenamiento y velocidad de proceso. En la actualidad ya existen exitosos proyectos en el mercado como el popular vdeo digital Tivo. Computacin paralela: la computacin paralela (clustering) es, sin lugar a dudas, un rea de expansin en los prximos aos. El clustering es una tcnica para incrementar la capacidad de clculo consistente en usar varios ordenadores independientes, comunicndose a travs de una red local de alta velocidad, de tal forma que se comporten, de cara al usuario, como un slo ordenador. ste campo ha estado tradicionalmente reservado a los grandes centros de investigacin. La computacin paralela es aplicable a muchos campos, como pueden ser el tratamiento de vdeo, creacin de imagen de sntesis, bases de datos paralelas, etc. Actualmente, Linux permite implementar distintas tipos de clustering, algunos de ellos, de forma sencilla y transparente al usuario.

1.4. LINUX, GNU Y SOFTWARE LIBRE Cual es la relacin de Linux con GNU y el software libre? Anteriormente mencionamos que slo debamos llamar Linux al ncleo (kernel). Esto es debido a que un sistema operativo se compone, a grandes rasgos, de un ncleo (kernel), aplicaciones del sistema y de aplicaciones de usuario. Retrocedamos a 1990 cuando el sistema operativo GNU, perteneciente a la Free Software Foundation (FSF), estaba a punto de ser completado: desde la segunda mitad de los aos 80, esta organizacin haba desarrollado programas y libreras para crear un sistema operativo propio, clon de UNIX, libre de ataduras comerciales, y slo necesitaban un kernel.

1
HURD para GNU. el nombre correcto del sistema operativo es GNU/Linux.

Introduccin a GNU/Linux

Richard M. Stallman, lder de FSF, decidi en ese ao empezar la construccin del ncleo

En 1991 Linus Torvalds desarroll las primeras versiones del ncleo Linux y aquellas personas interesadas en el sistema operativo GNU comenzaron a ensamblar los programas y utilidades, que ya haban sido desarrolladas, con Linux como ncleo. Es por esto por lo que

1.4.1. El software libre: licencia GPL El modelo de software libre ha sido objeto de muchas interpretaciones a lo largo de su historia. Una de ellas, errnea y bastante difundida, proviene de la denominacin en ingls del software libre: "Free software". El hecho de que el trmino free se use indistintamente para designar libre y gratis ha llevado a algunas personas a pensar que la nica caracterstica diferenciadora del software libre es su gratuidad. Como veremos a continuacin, sta es una interpretacin errnea, ya que el software libre tiene implicaciones que van ms all de su precio. Es conveniente que aclaremos que en castellano la traduccin correcta de "free software" es "software libre". El trmino "Software Libre" se refiere a la libertad que posee un usuario de interactuar con un software determinado. Podemos dividir en cuatro las diferentes formas de libertad de un usuario con respecto a un programa: Libertad 0: la libertad de usar el programa con cualquier propsito. Libertad 1: la libertad de estudiar cmo funciona el programa, y adaptarlo a sus necesidades. Es necesario tener acceso al cdigo fuente del software para poder estudiarlo. Libertad 2: la libertad de distribuir copias. Libertad 3: la libertad de mejorar el programa y hacer pblicas las mejoras a otras personas. Para mejorar un programa, es necesario tener acceso al cdigo fuente. Estas 4 libertades son las que garantiza la licencia GPL (GNU General Public License) por la cul se distribuye Linux: un programa se considera software libre si los usuarios disponen de todas las libertades citadas. As pues, se debera tener la libertad de distribuir copias, ya sea

1
para realizar copias o distribuir un programa. publican cambios, no es necesario anunciarlos.

Introduccin a GNU/Linux

con o sin modificaciones, gratis o cobrando una cantidad por la distribucin, a cualquier persona y en cualquier lugar. Bajo ningn concepto ser necesario pedir permiso a nadie

Adems, se debe tener la libertad de hacer modificaciones y utilizarlas de manera privada en el trabajo u ocio, sin ni siquiera tener que anunciar que dichas modificaciones existen. Si se

La libertad para usar un programa significa la libertad para cualquier persona u organizacin de usarlo en cualquier tipo de sistema informtico, para cualquier clase de trabajo, y sin tener obligacin de comunicrselo al desarrollador o a alguna otra entidad especfica. Asimismo, la libertad de distribuir copias debe incluir tanto las formas binarias o ejecutables del programa como su cdigo fuente, sean versiones modificadas o sin modificar (distribuir programas de modo ejecutable es necesario para que los sistemas operativos libres sean fciles de instalar). Para que las libertades de hacer modificaciones y de publicar versiones mejoradas tengan sentido, se debe tener acceso al cdigo fuente del programa. Por lo tanto, la posibilidad de acceder al cdigo fuente es una condicin absolutamente necesaria para el software libre. Y para que estas libertades sean reales, deben ser irrevocables: si el desarrollador del software tiene el poder de cambiar la licencia, el software no es libre.

1.5. PROGRAMACIN Dado que Linux ha sido creado por programadores, es fcil adivinar que el soporte, en materia de programacin, que ofrece el sistema es bastante grande. De esta forma, afirmamos que existen compiladores e intrpretes para, prcticamente, todos los lenguajes existentes en la actualidad. Algunos lenguajes especialmente representativos dentro de la programacin en Linux son: C/C++: el lenguaje de mayor uso en Linux es C. El propio ncleo y muchas de las aplicaciones importantes estn escritos en C. El soporte para C++ que proporciona Linux est muy desarrollado y ya existen proyectos que lo usan como lenguaje principal, como es el caso del escritorio KDE.

1
mquinas virtuales y compiladores.

Introduccin a GNU/Linux

Java: la plataforma de desarrollo de Sun se encuentra ampliamente soportada en Linux, existiendo el JDK oficial y numerosas implementaciones, de cdigo abierto, de

Perl: el lenguaje Perl ha estado histricamente muy ligado a UNIX, aunque en la actualidad, es un lenguaje multiplataforma con intrprete para cualquier sistema operativo conocido. Resulta adecuado para tareas de administracin de sistemas y algunos operadores lo prefieren al uso del shell, ya que ste se vuelve excesivamente confuso a medida que los programas aumentan de tamao y complejidad.

PHP: actualmente es el lenguaje ms utilizado de Internet para crear sitios web dinmicos. Proporciona un acceso muy cmodo a las principales Bases de Datos y una excelente integracin con el servidor web Apache.

En estos momentos estn madurando herramientas de desarrollo rpido (RAD) como Kylix, el producto estrella de Borland para Linux o Qt Designer, de Trolltech. Un lenguaje ampliamente utilizado en la administracin de sistemas es el incluido en el shell Bash, el cual estudiaremos en profundidad para conocer todas las posibilidades que ofrece.

1.6. REDES Los sistemas UNIX han sobresalido especialmente en entornos de red. As pues, numerosos premios entregados por publicaciones especializadas, han reconocido a Linux como el mejor sistema operativo de red del momento. Protocolos de red soportados: TCP/IP TCP/IP v6 IPX/SPX AppleTalk ISDN (RDSI) T-1, T-3, X.25, Frame-Relay PPP, SLIP, PLIP Amateur Radio ATM etc

1
Hardware:

Introduccin a GNU/Linux

Linux dispone de soporte para, prcticamente, todo el hardware de red actual, incluyendo determinados dispositivos obsoletos. El soporte de hardware se extiende hasta los dispositivos para crear las nuevas redes inalmbricas 802.11. 1.6.1. Integracin con distintos entornos Este sistema nos permite la integracin con los siguientes entornos: Entorno Windows: la aplicacin Samba permite a un sistema Linux participar en una red Windows (grupo de trabajo o dominio) actuando tanto de servidor como de cliente. Como servidor, Samba permite que clientes Windows accedan a ficheros e impresoras tal como lo haran en un servidor Windows NT/2000/XP. Entorno UNIX: al ser un clnico de UNIX, Linux se integra adecuadamente dentro de una red formada por sistemas UNIX, compartiendo ficheros e impresoras mediante el uso de los protocolos NFS o CODA, entre otros. Entorno Novell: es posible configurar Linux para actuar dentro de una red Novell tanto de servidor como de cliente. Entorno Apple: con el paquete Netatalk, Linux puede proveer servicios de ficheros e impresin en una red local con otros ordenadores Macintosh. En la actualidad, estn soportados los protocolos AppleShare IP y classic Appletalk. Con Netatalk, los ordenadores Macintosh pueden acceder a los ficheros y las colas de impresin en el servidor Linux, como si se tratara de un dispositivo Appletalk estndar. 1.6.2. Servicios para Internet e intranet Entre otros servicios para Internet/Intranet, dispone de los siguientes: Correo electrnico: existen distintos servidores de email disponibles para Linux. Entre ellos se encuentran los conocidos servidores sendmail y qmail. Servidor Web: casi todas las distribuciones incluyen el servidor Apache, que es el servidor web ms extendido en Internet. Ms del 60% de las pginas que circulan por la Red son entregadas por un servidor Apache.

10

1
transferencia de ficheros. servidor de Usenet.

Introduccin a GNU/Linux

Servidor FTP: Linux soporta diversos servidores de este popular protocolo de

Servidor de News: podemos usar programas como Inn para crear un completo

Servidor de DNS: existen distintos servidores de DNS para sistemas Linux como bind o djbdns. Estos servidores nos permitirn usar la misma tecnologa de resolucin de nombres de Internet en nuestra red local.

Groupware: todas las suites de groupware punteras tienen su versin para Linux, actuando tanto de cliente como de servidor.

Adems de la comunicacin con otros sistemas a travs de red, Linux puede coexistir en la misma mquina junto a cualquier otro sistema operativo. Es posible acceder, desde Linux, a una enorme variedad de particiones que utilizan otros sistemas operativos como Windows, Solaris y Macintosh.

1.7. DISTRIBUCIONES DE GNU/LINUX Para comprender correctamente la filosofa de Linux, conviene entender la forma en la que se distribuye a los usuarios. Como ya se ha visto anteriormente, lo que se conoce como Linux es, nicamente, el ncleo del sistema. Este ncleo se puede complementar con distintos tipos de aplicaciones para orientar el conjunto hacia una funcionalidad determinada: servidor, escritorio, seguridad, etc. Cualquier persona puede obtener el kernel, complementarlo con algunos programas y crear su propia versin del sistema operativo. Este mtodo, aunque ofrece una libertad total, resulta excesivamente complicado para la gran mayora de usuarios, y sus ventajas quedan oscurecidas por la enorme dificultad que conlleva. En este punto es donde radica la importancia de las distribuciones de Linux. Una distribucin es un sistema operativo completo creado por una empresa u organismo que usa una determinada versin del kernel Linux e incluye gran cantidad de software listo para usar. Algunas compaas ofrecen distintas distribuciones que varan en la funcionalidad, orientacin, soporte y cantidad de software que incluyen. Habitualmente, estas empresas

11

1
continuacin:

Introduccin a GNU/Linux

permiten la descarga de la distribucin desde Internet, mientras que, por otro lado, venden la versin en caja del mismo producto por los canales de comercializacin habituales. Las ventajas de usar una distribucin, en lugar de crearla nosotros mismos, se describen a

Seguridad: todas las empresas mantienen una actualizacin continua de los paquetes afectados por vulnerabilidades. Actualizar peridicamente los paquetes inseguros es una de las tareas principales de un administrador de sistemas.

Herramientas de configuracin: es norma comn entre las distintas distribuciones incluir programas que permiten realizar de forma sencilla las tareas relacionadas con la administracin del sistema.

Software probado y actualizado: la enorme cantidad de software disponible para Linux hace complicada la tarea de crear un sistema desde cero sin que aparezcan conflictos entre distintos programas. Una de las prioridades de los creadores de distribuciones es lograr que todo el software funcione sin problemas.

Documentacin: adems de la documentacin sobre Linux existente en forma de libros y sitios web, cada distribucin proporciona unos manuales especficos sobre su producto. Esto facilita mucho las tareas de explotacin del sistema dado que la informacin que proporcionan estos manuales es muy especfica y fcilmente aplicable.

ltimas versiones del software: la creacin de software para Linux sigue un ritmo vertiginoso, con nuevas versiones apareciendo cada pocos meses. Resulta mucho ms sencillo el usar los paquetes actualizados que nos proporciona la empresa creadora de nuestra distribucin que instalar el software directamente desde las fuentes.

Actualizaciones de versiones anteriores: es habitual, en todas las distribuciones, que se pueda actualizar el sistema actualmente instalado a una versin ms moderna sin tener que formatear el disco duro. Esto nos permite tener un sistema completamente actualizado sin tener que eliminar informacin cada vez que queramos actualizarnos a una nueva versin de nuestra distribucin.

12

1
algunos inconvenientes como son los siguientes:

Introduccin a GNU/Linux

Aunque las distribuciones de Linux solucionan muchos problemas, tambin presentan

Falta de optimizacin: aunque Linux se caracteriza por ser un sistema rpido, siempre es posible optimizarlo para lograr mayores prestaciones. Habitualmente, las distribuciones se crean para ser compatibles con la mayor variedad de hardware posible a costa de una prdida de prestaciones. Por ejemplo, la gran mayora de las distribuciones se compilan para el procesador 386 de Intel. De esta forma, se aumenta la compatibilidad dado que la mayora de procesadores actuales son compatibles con el 386. Por otro lado, compilando para procesadores antiguos no se aprovechan las caractersticas avanzadas de los micros actuales. Es posible compilar programas de nuestra distribucin para aumentar las prestaciones pero, en algunos casos, el proceso puede ser complicado para un usuario inexperto.

Incompatibilidades

entre

distintas

distribuciones:

aunque

todas

las

distribuciones parten de la misma base, presentan pequeas incompatibilidades que hacen que, instalar un paquete de una distribucin en otra, pueda resultar problemtico. Dificultad para aadir software no preparado para la distribucin: el sistema de gestin de software de la distribucin guarda toda la informacin relevante de cada fichero instalado en el sistema. Esta informacin es, entre otra, la fecha de la instalacin, si ha sido modificado, las dependencias existentes con otros ficheros, etc. Generalmente, el software no nativo de la distribucin puede presentar problemas a la hora de instalarse dado que no est bajo la supervisin del sistema de gestin de paquetes. 1.7.1. Las distribuciones ms importantes Las distribuciones de uso general ms importantes disponibles en la actualidad son las siguientes: Debian. Es una de las distribuciones que ms antiguas (1993). El proyecto Debian es una comunidad de desarrolladores que han hecho causa comn para crear un sistema operativo libre y sin ataduras comerciales: todo es desarrollado por la comunidad. Esto tiene como contrapartida que las versiones de Debian suelen ser lentas en aparecer, ya que al no haber detrs ninguna compaa comercial, no se sacan versiones hasta que no se han comprobado exhaustivamente todos los posibles fallos. Destacan de esta

13

1
de aplicaciones que incluye. empresa externa.

Introduccin a GNU/Linux

distribucin su probada estabilidad, la excelente documentacin y la enorme cantidad

La ausencia de una empresa que respalde la distribucin, puede retraer a algunas compaas a adoptar Debian, ya que el soporte tcnico debe ser encargado a una

Knoppix. Esta es una distribucin, basada en Debian, que aporta la novedad de poder ser ejecutada directamente desde el CD (Live CD), de manera que los usuarios noveles pueden probar un sistema Linux sin necesidad de instalarlo en su ordenador. Posteriormente, pueden hacerlo si lo desean. Esta distribucin se caracteriza por detectar automticamente todo el hardware que tengamos en nuestro equipo. Por otra parte, incorpora la ltima versin del escritorio KDE y OpenOffice.org.

Guadalinex. Este es el CD Live creado por la Junta de Andaluca para su uso en dicha comunidad autnoma. Esta basada en Debian y Linex (distribucin Live CD de la Junta de Extremadura), con un sistema de instalacin fcil de usar que incluye QtParted, un interfaz grfico para crear particiones. Al igual que Knoppix, si posteriormente deseamos instalarlo en nuestro disco duro, podemos hacer uso del icono que a tal efecto aparece en el escritorio Gnome de esta distribucin.

Red Hat. Red Hat es actualmente el lder mundial en desarrollo, instalacin y gestin de Linux y soluciones de cdigo abierto para aplicaciones que cubren desde sistemas empotrados hasta servidores web seguros. La distribucin Red Hat es un producto muy completo y fiable. Est especialmente indicada para entornos empresariales por lo que priman las funciones de servidor. Dispone de innumerables herramientas que facilitan la configuracin de todos los servicios y las posibilidades del sistema. Esto la hace muy indicada para administradores que deseen iniciarse en el mundo de Linux, sin verse abrumados por la dificultad del cambio. A partir de la versin 9, Red Hat decidi separar el producto desarrollando la distribucin para uso empresarial (Red Hat Enterprise Edition) y colaborando en otra para uso domstico, Fedora Core, junto con la comunidad GNU.

14

Introduccin a GNU/Linux

Mandrake. Mandrake Linux es una distribucin creada en 1998, basada en Red Hat, con el objetivo de hacer Linux ms fcil de usar para todo el mundo. En el momento de su creacin, Linux era ya conocido como un sistema operativo potente y estable pero complicado de usar y que requera de grandes conocimientos tcnicos para su uso. La empresa creadora, MandrakeSoft, vi una oportunidad para integrar los entornos grficos ms potentes junto con unas herramientas propias de configuracin y pronto alcanz fama por establecer el estndar en facilidad de uso e instalacin. Actualmente, MandrakeSoft ofrece todo el poder de Linux en un entorno de gran facilidad de uso destinado tanto a usuarios principiantes, profesionales y servidores.

SuSE. SuSE Linux es una distribucin altamente profesional dirigida principalmente al mercado empresarial. Destaca de esta distribucin, sus herramientas propietarias de configuracin que proporcionan a los administradores de sistemas un control enorme bajo una interfaz muy sencilla.

Slackware. La distribucin Slackware Linux es la ms veterana de las existentes ya que es la primera que tuvo repercusin internacional. Es una distribucin muy actualizada y que ofrece, desde su creacin, una instalacin y un entorno de trabajo basado en la sencillez. Apenas dispone de herramientas de configuracin y todo su mantenimiento debe hacerse al nivel ms bajo, es decir, editando los ficheros de configuracin de las distintas aplicaciones. Es la distribucin ms parecida al sistema UNIX original.

Gentoo. Gentoo Linux en una distribucin rpida, verstil y abierta enfocada a desarrolladores, profesionales y usuarios avanzados. Gentoo utiliza un sistema de gestin de software, heredado de los sistemas UNIX BSD, denominado "ports". A diferencia de otras distribuciones, Gentoo no ofrece software ya compilado y listo para instalar sino que, el proceso de instalacin de nuevo software consiste en descargar el paquete de Internet y compilarlo siguiendo unas reglas que hayamos definido en nuestro sistema. Todo el proceso de instalacin de nuevos paquetes est supervisado por un avanzado sistema de gestin denominado "Portage". Este acercamiento proporciona una enorme flexibilidad en la instalacin de software en nuestro sistema. Por otra parte, Gentoo es tambin conocida por la excelente actualizacin de todas las aplicaciones que ofrece.

15

1
1.7.2. Distribucin debian gnu/linux su mismo sistema gestin de paquetes de software.

Introduccin a GNU/Linux

Para la creacin de este curso optamos por el uso de la distribucin Debian, ya que no hay detrs de ella una compaa comercial. De hecho, es recomendable conocerla ya que las distribuciones Live CD la usan como base. De esta forma, una vez conocidos los aspectos fundamentales de Debian podremos hacer uso de cualquiera de estas distribuciones y usar

Debian es un sistema operativo libre, es decir, un conjunto de programas y utilidades que hacen que nuestros ordenadores funcionen. Una caracterstica importante de ella es su til sistema de paquetes (DEB) para facilitar la instalacin, desinstalacin y actualizacin del software. Un paquete es un conjunto de componentes compilados, necesarios para hacer que un programa funcione. Cada paquete incorpora informacin muy diversa: dnde instalar el programa, cmo se configura el programa o qu otros paquetes se necesitaran usar. Mediante el sistema de paquetes, otros desarrolladores pueden contribuir con software propio a la distribucin. Con ms de 8000 paquetes disponibles y habiendo sido portada con xito a otras plataformas, la distribucin Debian es por el momento la distribucin ms grande. 1.7.2.1. Modelo de Desarrollo de Debian: Estable, Prueba, Inestable Ya hemos comentado antes que la comunidad Debian no publica una nueva versin hasta que no ha comprobado exhaustivamente los errores que puedan presentarse. Esto hace que la sucesin de versiones no sea muy rpida, como en otras distribuciones. En Debian, tenemos las siguientes versiones principales: En todo momento, se dispone de una versin stable, que es la recomendada para uso en servidores, ya que el software que se utiliza en esta versin ha sido comprobado exhaustivamente en busca de errores. Para uso en una estacin de trabajo no sera vlido ya que los programas que incorpora son obsoletos en su mayor parte. En la actualidad, la versin estable recibe el nombre de Lenny. A continuacin, tendramos la que sera la siguiente versin a publicar como stable, cuando se hayan solucionado gran parte de los errores encontrados. Se denomina testing (su nombre actual Squeeze) y contiene software ms actualizado que la versin estable. Esta versin sera ms idnea para una estacin de trabajo.

16

1
de Linux hace que en cuestin de horas se hayan solucionado. distribucin estable es el siguiente: a.

Introduccin a GNU/Linux

Por ltimo encontramos la versin unstable (la cul siempre recibe el nombre de Sid), en la que se encuentran las ltimas versiones de los programas. Por esta razn, puede incorporar muchos fallos. Aunque no debe preocuparse, ya que el modelo de desarrollo

El proceso que se sigue cualquier software desde que su autor lo crea hasta que llega a la

Cuando un colaborador sube un programa al sitio web de la distribucin, ste es almacenado en el directorio incoming.

b.

Una vez al da se trasladan de aqu a la distribucin unstable y permanecen all, estando disponibles para pruebas e incluso para ser descargados por los usuarios.

c.

Ah permanecern durante cierto tiempo hasta que se decida su traslado a la rama testing. As se va construyendo la distribucin testing, que ser la prxima versin estable.

d.

Cuando la distribucin de prueba testing est suficientemente madura, se congela (distribucin frozen): no se aceptan programas nuevos y los desarrolladores slo dedican su tiempo a corregir fallos.

e.

Una vez que los errores estn por debajo de un mximo exigible, la distribucin congelada se transforma en la nueva distribucin estable, pasando la anterior estable a obsoleta.

17

1
recuerde_
operativo UNIX. flexibilidad.

Introduccin a GNU/Linux

Linux es un sistema operativo perteneciente a la familia de los sistemas

Sus caractersticas ms importantes son la estabilidad, escalabilidad y

Podemos encontrar Linux en servidores, sistemas de escritorio, aplicaciones empotradas y computadores paralelos.

Linux es software libre. El concepto de software libre engloba a distintos tipos de licencias que tienen como punto en comn la libertad que proporcionan al usuario. Esta libertad engloba el uso, la modificacin y la distribucin.

La forma ms habitual de obtener un sistema Linux es adquiriendo una distribucin. Una distribucin consiste en el ncleo de Linux, aplicaciones y documentacin.

Existen muchas distribuciones de Linux en la actualidad. Las ms populares son: Debian, Knoppix, Red Hat, Mandrake, SuSE, y Gentoo.

En Debian, existen 3 diferentes versiones o distribuciones: estable, inestable y testing.

18

2
ndice_

Instalacin de la versin estable de la distribucin Debian

2.1. INTRODUCCIN...........................................................................21 2.2. PLANIFICACIN ..........................................................................21 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.2.6. 2.3.1. 2.3.2. 2.3.3. 2.3.4. 2.3.5. Copia de seguridad ..........................................................21 Dispositivo de arranque...................................................22 Mtodo de instalacin......................................................22 Particionamiento del disco duro.......................................23 2.2.4.1. Tipos de particiones ..........................................23 Particin swap.................................................................24 Denominacin de discos y particiones en Linux................24 Inicio de la instalacin.....................................................25 Seleccin del idioma (Choose lenguaje)...........................27 Teclado ...........................................................................28 Configurar la red .............................................................29 Particionado de discos .....................................................35 2.3.5.1. Tipos de particiones ..........................................37 2.3.5.2. Utilizacin del particionado manual...................38 2.3.6. 2.3.7. 2.3.8. 2.3.9. 2.3.10. 2.3.11. 2.3.12. 2.3.13. 2.3.14. Configurar la zona horaria ...............................................46 Configurar usuarios y contraseas...................................47 Configurar el gestor de paquetes .....................................50 Configuracin de popularity-contest ................................55 Seleccin de programas .................................................56 Configuracin de xserver-xorg .......................................57 Instalar el gestor de arranque .......................................58 Reiniciar el sistema........................................................59 Entrar en el sistema.......................................................60

2.3. INSTALACIN..............................................................................25

19

2
2.1. INTRODUCCIN

Instalacin de la versin estable de la distribucin Debian

La instalacin de una distribucin de Linux es un proceso muy flexible, dado que nos ofrece muchas alternativas. El proceso se ha simplificado de forma notable desde sus inicios: instalar las primeras distribuciones era un proceso complejo que slo estaba al alcance de usuarios avanzados. Pero actualmente la instalacin de una distribucin no resulta ms complicada que la instalacin de cualquier otro sistema operativo. Debian proporciona muchas opciones antes y durante el proceso de instalacin. Es posible hacer instalaciones a travs de una red, con CD-ROMs/DVD-ROMs, variando el nmero de particiones, etc. Aunque iremos comentando todas las posibilidades de instalacin existentes, nos centraremos en el caso ms comn, el de un usuario que dispone de los DVDs de Debian y un ordenador que posea esta unidad. Si poseemos una versin oficial de Debian Linux, dispondremos de la versin impresa de la "Gua de instalacin", pero si hemos obtenido nuestra distribucin descargndola de Internet o a travs de otros medios, podremos consultar la gua de instalacin junto a otros documentos en la siguiente direccin: http://www.debian.org/releases/stable/installmanual. Debian soporta once arquitecturas distintas (Intel x86, Intel IA-64, AMD64, Motorota, etc.). Este manual tratar la instalacin sobre una arquitectura basada en Intel x86. Si poseemos otra, podemos seguir tambin este manual, consultando la url: http://www.debian.org/ports/ para ms informacin.

2.2. PLANIFICACIN Antes de comenzar el proceso de instalacin de Debian, es conveniente seguir una serie de pasos que aumentarn nuestras posibilidades de xito. Si somos usuarios noveles y sta es nuestra primera instalacin de Linux, tendremos que extremar las precauciones especialmente para que todo el proceso discurra adecuadamente. 2.2.1. Copia de seguridad En el proceso de instalacin no es preciso eliminar la informacin existente de otros sistemas operativos. En cualquier caso, es una buena costumbre siempre que se vaya a realizar una accin potencialmente peligrosa, como instalar un nuevo sistema operativo, realizar una copia de seguridad de la informacin del disco duro.

21

2
2.2.2. Dispositivo de arranque

Instalacin de la versin estable de la distribucin Debian

Los mtodos para efectuar una copia de seguridad dependen del sistema operativo que se est utilizando y de los medios fsicos de los que dispongamos.

El dispositivo de arranque permite a Debian comenzar el proceso de instalacin. Los dispositivos ms habituales sern el propio CD o DVD autoarrancable de Debian. Para que nuestro ordenador arranque desde DVD, probablemente debamos modificar, en la BIOS, el orden de arranque de los dispositivos. Dependiendo del tipo y fabricante de la BIOS, el procedimiento para modificar el orden de arranque puede variar. Por lo tanto, se recomienda consultar el manual de la placa base para averiguar cules son los pasos a seguir. 2.2.3. Mtodo de instalacin Para realizar la copia de archivos, el programa instalador necesitar localizar en qu soporte se encuentran. Debian permite que estos ficheros se encuentren en distintos soportes: CD-ROM/DVD-ROM: es el tipo de instalacin ms habitual. Durante la instalacin, todos los archivos se leern del lector del soporte en el que est alojado el CD o DVD de Debian. Disco duro: en este mtodo de instalacin, los datos se leen desde el disco duro. Este sistema se utiliza generalmente cuando el equipo no dispone de CD-ROM/DVD-ROM o tarjeta de red. Se deben haber volcado previamente las imgenes ISO de los CDs o DVDs de Debian al disco duro local de la mquina donde queramos instalar. Se necesitar un disquete de arranque. Dispositivo de memoria USB: Es muy til en aquellos equipos donde podemos evitar instalar unidades de disquete o CD-ROM porque slo sean necesarias para instalar el sistema operativo o recuperar el sistema (servidores, TPV, etc.). Imagen NFS: si tenemos alojadas las imgenes ISO de instalacin de Debian en un servidor NFS, podemos utilizar este mtodo. Este tipo de instalacin es adecuado si necesitamos instalar Debian en muchas mquinas conectadas en red local. FTP: la instalacin desde un servidor FTP es similar a la instalacin desde un servidor NFS cambiando nicamente el tipo de servidor.

22

2
datos. 2.2.4. Particionamiento del disco duro

Instalacin de la versin estable de la distribucin Debian

HTTP: la instalacin mediante HTTP proporciona la misma funcionalidad que la instalacin desde FTP nicamente cambiando el protocolo por el que se reciben los

Nos centraremos en la instalacin desde DVD-ROM, dado que es la ms habitual.

Las particiones nos permiten dividir el espacio disponible en un disco duro para distintos usos: Instalar varios sistemas operativos: las particiones se comportan como discos duros independientes, por lo tanto, sta es la forma ms adecuada de instalar varios sistemas operativos en la misma mquina. Organizar la informacin dentro de un mismo sistema operativo: algunos sistemas operativos, como Linux, permiten distribuir sus datos en varias particiones. De esta forma, se aumenta la seguridad, ya que se delimitan claramente distintas partes del sistema operativo. 2.2.4.1. Tipos de particiones Los tipos de particiones que se pueden encontrar en un disco duro son los siguientes: Particiones primarias: estas particiones permiten almacenar sistemas operativos. Pueden existir cuatro particiones primarias en cada disco duro. Particiones extendidas: para subsanar el lmite de slo cuatro particiones primarias, surgen las particiones extendidas. Una particin extendida es un contenedor donde podemos crear otras particiones. Las particiones extendidas no son utilizables por s solas. Solamente puede existir una particin extendida en cada disco duro. Particiones lgicas: son las particiones que podremos crear dentro de la particin extendida. La decisin de arrancar un sistema operativo situado en una particin determinada es tarea del gestor de arranque (boot loader). Existen varios gestores de arranque disponibles para Linux, aunque los ms habituales son LILO y GRUB.

23

2
2.2.5. Particin swap

Instalacin de la versin estable de la distribucin Debian

El swaping (intercambio) es una tcnica empleada por todos los sistemas operativos modernos para aumentar la cantidad de memoria disponible para el usuario. Consiste en utilizar una parte del disco duro (fichero o particin) para almacenar los fragmentos de la memoria RAM que se utilicen con menor frecuencia. Siguiendo diversas tcnicas, el sistema operativo transfiere zonas de memoria al espacio de swap liberando RAM para uso de otros programas. Este esquema de funcionamiento tiene un inconveniente claro y es que el disco duro es mucho ms lento que la memoria principal. El uso de una particin de intercambio permite a la mquina soportar un uso de la memoria elevado durante algunos instantes. Esta situacin no debe extenderse en el tiempo, puesto que, al hacer uso del swapping, las prestaciones del sistema se degradan considerablemente. Para su instalacin, Es recomendable que Linux disponga de al menos una particin de swap. La utilizacin de ms de una particin para swap nicamente tiene sentido en servidores de altas prestaciones. En el proceso de instalacin, se nos pedir que definamos un tamao para la particin de swap. En general, el tamao depender de la cantidad de memoria que posea la mquina, el uso que se le vaya a dar, la carga de trabajo esperada, etc. Aun as, se considera correcto reservar para swapping una cantidad igual a la memoria RAM instalada en el equipo, con un mximo de 2GB para arquitecturas de 32 bits. Por tanto, para un equipo con 1GB de memoria RAM ser adecuada una particin swap de 1GB y para uno con 4GB de memoria RAM crearemos una particin swap de 2GB. 2.2.6. Denominacin de discos y particiones en Linux La nomenclatura usada para referirse a discos y particiones vara enormemente entre distintos sistemas operativos. Por ejemplo, en Windows las distintas unidades de disco se nombran utilizando letras. El mtodo usado en sistemas Linux es completamente diferente y consiste en identificar cada disco y cada particin dentro de ste por una cadena que sigue un formato determinado. El formato de la cadena ser como se describe a continuacin. En primer lugar, aparecer la cadena 'hd' para discos IDE y 'sd' para discos SCSI o SATA. A continuacin, tendremos una letra que identifica el nmero de disco dentro del sistema. sta ser 'a', 'b', 'c', etc. El ltimo elemento de la cadena ser un nmero que identifica a la

24

2
unos ejemplos.

Instalacin de la versin estable de la distribucin Debian

particin. Si nos referimos al disco completo, ste ltimo nmero no aparecer. Veamos

La denominacin de los discos duros IDE del sistema es: hda es el dispositivo maestro del primer canal IDE. hdb es el dispositivo esclavo del primer canal IDE. hdc es el dispositivo maestro del segundo canal IDE. hdd es el dispositivo esclavo del segundo canal IDE.

La tercera particin del segundo disco duro IDE ser: hdb3 La sptima particin del tercer disco duro SCSI o SATA ser: sdc7 Cabe destacar, que esta nomenclatura tambin se aplica a otros dispositivos como lectores de CD-ROM, discos ZIP, etc.

2.3. INSTALACIN Una vez que hemos completado la fase de planificacin y conocemos las posibilidades existentes, nos disponemos a comenzar la instalacin propiamente dicha. 2.3.1. Inicio de la instalacin Para comenzar la instalacin, debemos iniciar el ordenador desde el DVD-ROM nmero 1 de Debian. Se nos mostrar una pantalla con el logotipo de Debian y texto en ingls, que nos da la posibilidad de ver la ayuda, comenzar el proceso de instalacin o poner alguna opcin a dicho proceso.

25

Instalacin de la versin estable de la distribucin Debian

Al pulsar la tecla F1, nos muestra la pantalla de ayuda en la que nos podremos informar de cmo arrancar el sistema en modo rescate, de distintos parmetros de instalacin o de los mtodos de arranque entre otras opciones.

Hay cuatro posibles mtodos de arranque, los cuales describimos a continuacin: install: Instalacin sencilla en modo texto. Es la opcin predeterminada, basta pulsar ENTER para arrancar con este mtodo. installgui: Instalacin sencilla utilizando una interfaz grfica de usuario (GUI). expert: Instalacin experta en modo texto. Proporciona el mximo control, pero est recomendada nicamente si tenemos amplios conocimientos de informtica y conocemos nuestro equipo perfectamente. expertgui: Igual que la anterior pero utilizando la GUI.

26

2
pulsar ENTER.

Instalacin de la versin estable de la distribucin Debian

Para comenzar la instalacin con cualquiera de ellos, tendremos que escribir su nombre y

En este manual mostraremos las pantallas de los dos primeros mtodos. El primero por ser el predeterminado y el segundo por ser ms cmodo a pesar de tener las mismas opciones. 2.3.2. Seleccin del idioma (Choose lenguaje) La primera opcin que se nos presenta es referente al idioma en el que queremos que se desarrolle el proceso de instalacin. En este paso y en los siguientes usaremos las teclas arriba y abajo de los cursores para movernos por los mens y ENTER para seleccionar. Si estamos en la instalacin grfica tambin podremos utilizar el ratn.

27

2
pantalla nos solicita que escojamos nuestro pas.

Instalacin de la versin estable de la distribucin Debian

As pues, nuestra primera accin ser seleccionar Spanish Espaol. En la siguiente

2.3.3. Teclado A continuacin, nos pide que elijamos la distribucin de teclado.

28

Instalacin de la versin estable de la distribucin Debian

Tras seleccionar el mapa de teclado deseado, el programa de instalacin realizar varias operaciones de forma automtica.

NOTA: A pesar de estar utilizando un DVD-ROM, Debian mostrar que es un CD-ROM. La razn para esto es que ambas tecnologas son equivalentes desde el punto de vista del sistema operativo.

2.3.4. Configurar la red Tras el punto anterior se intentar configurar la red automticamente mediante DHCP. En el caso de tener un servidor DHCP en nuestra red, se nos asignar una direccin IP, un DNS y una puerta de enlace. En caso contrario se mostrar la siguiente imagen y tendremos que configurar la red manualmente.

29

Instalacin de la versin estable de la distribucin Debian

Vamos a suponer que no tenemos DHCP en nuestra red para ver la configuracin manual. Al pulsar continuar, se muestra una pantalla donde nos da la opcin de volver a intentar la configuracin automtica, configurar automticamente o no configurar la red de momento.

30

Instalacin de la versin estable de la distribucin Debian

Seleccionamos: Configurar la red manualmente. Lo primero que tendremos que introducir para configurar la red, es la direccin IP de nuestro equipo. Si no conocemos qu IP poner, tendremos que preguntrselo al administrador de red. En caso de que el equipo est en una red domstica posiblemente sera vlida la direccin que se muestra en la imagen.

31

Instalacin de la versin estable de la distribucin Debian

El siguiente paso ser establecer la mscara de red, que habitualmente es 255.255.255.0.

Ahora, indicamos la direccin del router (encaminador) por donde saldremos a internet. Si no tenemos un router dejamos este campo en blanco.

32

Instalacin de la versin estable de la distribucin Debian

Y para terminar con los parmetros que se habran configurado automticamente, en caso de que hubiese un DHCP, pondremos la direccin del DNS, que suele coincidir con la direccin del router.

33

Instalacin de la versin estable de la distribucin Debian

Tras la configuracin automtica o manual de la red, le asignamos un nombre a nuestro ordenador y un nombre de dominio con el que identificaremos toda nuestra red.

34

Instalacin de la versin estable de la distribucin Debian

2.3.5. Particionado de discos

NOTA: Debemos prestar especial atencin a este punto, porque la integridad del sistema y de nuestra informacin depende la realizacin correcta de las particiones.

35

Instalacin de la versin estable de la distribucin Debian

De las cuatro opciones que se muestran en la pantalla anterior, las tres primeras implican utilizar el disco duro completo nicamente para Debian y no tendremos flexibilidad a la hora de organizar nuestros discos. Esto no es lo deseable. Cuesta mucho trabajo comenzar a trabajar con un nuevo sistema operativo. Al comenzar este aprendizaje, echamos en falta operaciones que nos proporcionaba nuestro sistema anterior y an no sabemos cmo realizarlas en el nuevo. As pues, lo mejor (al menos al principio) ser disponer de los dos sistemas operativos, generalmente Windows y Linux. Para conseguirlo debemos tener control absoluto sobre las particiones del disco duro. En este manual describimos cmo instalar Debian como nuestro nico sistema operativo, pero al conocer bien el particionado de disco no tendremos problema para hacer que puedan coexistir dos sistemas operativos. Seleccionamos el particionado manual para tener el mximo control en la estructuracin de nuestros discos duros. En la siguiente imagen se muestran todos los discos duros disponibles y sus particiones. En nuestro caso se muestra un nico disco (sda) sin ninguna particin.

36

Instalacin de la versin estable de la distribucin Debian

2.3.5.1. Tipos de particiones A la hora de crear una nueva particin, debemos asignarle un sistema de ficheros. En el siguiente captulo desarrollaremos este importante concepto. No obstante, indicamos aqu algunos de los sistemas de ficheros de uso comn: Ext2: era el sistema de ficheros ms popular en Linux. Proporciona todas las caractersticas necesarias de un sistema UNIX (fichero, directorios, enlaces, permisos, etc.). Permite crear nombres de ficheros de 255 caracteres. Actualmente, el sistema ext2 ha sido sustituido por los llamados sistemas de ficheros "journaling" como ext3. Ext3: el sistema de ficheros ext3 est basado en el ext2 al que aade caractersticas de "journaling". Los sistemas de ficheros con "journaling" reducen el tiempo que se debe emplear en recuperar la informacin de un disco despus de una cada del

37

Instalacin de la versin estable de la distribucin Debian

sistema, dado que no es necesario hacer una comprobacin de todo el disco. El sistema ext3 es el recomendado para una instalacin nueva de Debian. Software RAID: el sistema RAID permite combinar varios discos para aumentar la fiabilidad, las prestaciones o ambas caractersticas. Swap: las particiones de swap son utilizadas para implementar la memoria virtual. El sistema transfiere informacin desde la memoria a esta particin cuando exista poca memoria disponible. VFAT: el sistema de ficheros VFAT es compatible con Windows.

2.3.5.2. Utilizacin del particionado manual Debemos tener en cuenta, que si Debian va a ser instalado para un sistema servidor es aconsejable crear particiones separadas para los distintos directorios (/boot, /usr, /home, etc.) que componen el sistema. De esta forma, la corrupcin de una de ellas no destruye el sistema completo. Nosotros crearemos slo dos particiones primarias: una para albergar el sistema (particin root /) y otra para swap (intercambio). Si el disco es nuevo o no tiene tabla de particiones habr que crearla pulsando ENTER sobre el disco e indicando que s queremos crear una nueva tabla de particiones.

38

Instalacin de la versin estable de la distribucin Debian

Una vez realizado este paso, se muestra, bajo el disco, una lnea indicando su capacidad total como espacio libre.

39

Instalacin de la versin estable de la distribucin Debian

Para comenzar a crear las particiones, pulsaremos ENTER sobre ESPACIO LIBRE y en la siguiente pantalla pulsamos ENTER sobre Crear una particin nueva.

Indicamos el tamao de la particin principal, donde estar toda la informacin. Como slo vamos a crear dos particiones el tamao ser aproximadamente el total del disco menos el espacio reservado para la particin swap. El tamao se puede establecer en porcentaje (usando el smbolo %), en bytes (poniendo el nmero de bytes), en megabytes (aadiendo MB tras el nmero) o en gigabytes (aadiendo GB).

40

Instalacin de la versin estable de la distribucin Debian

Seleccionamos Primaria como tipo de particin.

41

Instalacin de la versin estable de la distribucin Debian

Y la ubicamos al principio del disco.

42

2
parmetros.

Instalacin de la versin estable de la distribucin Debian

En la siguiente pantalla es donde configuraremos la particin. Aqu podemos indicar el sistema de archivos, el punto de montaje, la etiqueta y la marca de arranque entre otros

El punto de montaje indica en qu punto del rbol de directorios estar esta particin. Necesariamente, debe haber una particin raz con el punto / desde el que partirn todos los ficheros. Como en nuestro caso slo tenemos una particin para datos, no modificaremos el punto de montaje; pero en el caso de tener ms particiones tendremos que indicar un punto del rbol de directorios, siendo comn /home, /boot, /usr o cualquier otro que consideremos necesario, como /DiscoDuro/Windows, etc. La etiqueta har que podamos identificar una particin por su nombre. Nosotros hemos puesto debian como nombre de la particin principal. La marca de arranque es necesario que est activa en la particin que contenga el sistema operativo. En este caso la hemos activado.

43

2
definir la particin.

Instalacin de la versin estable de la distribucin Debian

Una vez establezcamos los parmetros debemos pulsar ENTER sobre Se ha terminado de

Utilizando el espacio libre restante creamos una nueva particin primaria para el swap. Para indicar que sea la particin de intercambio hay que fijar el parmetro Utilizar como: con el valor rea de intercambio tal y como se muestra en la siguiente imagen:

44

2
continuacin:

Instalacin de la versin estable de la distribucin Debian

Una vez terminemos de definir las particiones, debe quedar la distribucin que se muestra a

Pulsamos ENTER sobre Finalizar el particionado y escribir los cambios en el disco y nos pide confirmacin con una nueva pantalla.

45

Instalacin de la versin estable de la distribucin Debian

En este punto, an no se ha realizado ninguna operacin en el disco duro, pudiendo cancelar toda la instalacin sin consecuencias para el ordenador. Pero si confirmamos, ya no habr marcha atrs, aplicando los cambios indicados al disco duro y grabando los ficheros de Debian. Si estamos totalmente seguros de haber realizado los pasos correctamente pulsamos ENTER sobre <S>. 2.3.6. Configurar la zona horaria Debemos indicar nuestra zona horaria para poder controlar el reloj del ordenador correctamente.

46

Instalacin de la versin estable de la distribucin Debian

2.3.7. Configurar usuarios y contraseas A continuacin, se nos pide una contrasea para el superusuario (usuario root). En un tema posterior estudiaremos la importancia de este usuario en cualquier sistema UNIX. Introduciremos una clave, la confirmaremos y pulsaremos ENTER. En el caso de estar en la instalacin en modo texto, esta operacin se realiza con dos pantallas.

47

Instalacin de la versin estable de la distribucin Debian

48

2
nuevo usuario:

Instalacin de la versin estable de la distribucin Debian

Adems del superusuario, es importante que tengamos un usuario para la utilizacin no administrativa del equipo. En la siguiente pantalla nos pregunta el nombre completo del

Tras confirmar, nos solicita el nombre con el que dicho usuario acceder al sistema (login) y su contrasea.

49

Instalacin de la versin estable de la distribucin Debian

Una vez terminemos de configurar el usuario, comenzar automticamente con la instalacin del sistema base. 2.3.8. Configurar el gestor de paquetes El gestor de paquetes permitir aadir o quitar software de nuestro sistema.

50

Instalacin de la versin estable de la distribucin Debian

Al estar instalando Debian desde DVD-ROM, tenemos 3 discos repletos de software, pero el software incluido se va quedando desactualizado conforme pasa el tiempo. Esta es una importante razn para que, si tenemos acceso a internet, utilicemos una rplica en red. Las rplicas en red de Debian tienen el software actualizado y programas que no estn incluidos en el conjunto de discos de Debian. Indicaremos al instalador que s deseamos utilizar una rplica en red y que el pas de la rplica es Espaa.

51

Instalacin de la versin estable de la distribucin Debian

En la siguiente pantalla, tendremos que elegir una de las posibles rplicas espaolas que tenemos disponibles. Podemos seleccionar cualquiera de ellas, pero a menos que conozcamos alguna rplica concreta, elegiremos ftp.es.debian.org.

52

Instalacin de la versin estable de la distribucin Debian

Si tenemos que usar un proxy para acceder a la red lo indicaremos en esta pantalla, en caso contrario no escribiremos nada y pulsaremos en Continuar.

53

Instalacin de la versin estable de la distribucin Debian

54

2
2.3.9. Configuracin de popularity-contest

Instalacin de la versin estable de la distribucin Debian

Si indicamos que queremos participar en la encuesta, el sistema operativo enviar annimamente estadsticas de uso del software ms utilizado. Esta informacin ayuda al equipo de desarrollo de Debian en ciertas cuestiones. Debemos recordar que Linux es software libre y abierto, que cualquier usuario puede modificarlo y mejorarlo. Enviar encuestas de forma transparente, sin darnos cuenta, implica ayudar en cierto modo a que Debian sea mejor, por lo que recomendamos que se pulse ENTER en <S>.

55

2
2.3.10. Seleccin de programas

Instalacin de la versin estable de la distribucin Debian

En este punto de la instalacin, indicamos que grupos de programas queremos en nuestro sistema. Para seleccionar o deseleccionar un grupo tendremos que pulsar ESPACIO sobre el grupo en cuestin. Pulsando ENTER comenzar la instalacin.

Este es uno de los puntos flojos de la instalacin de Debian, puesto que no permite elegir individualmente que paquetes queremos instalar o si nos interesa utilizar como entorno grfico Gnome o KDE. Este problema tambin aparece en la configuracin experta. En este manual, continuaremos la instalacin seleccionando Entorno de escritorio y Sistema estndar. Tras darle a Continuar el sistema tardar bastante tiempo antes de que nos pregunte nada ms.

56

2
2.3.11. Configuracin de xserver-xorg

Instalacin de la versin estable de la distribucin Debian

Es recomendable, que en el momento que tengamos conocimiento preciso de los paquetes que deseamos utilizar, los agreguemos manualmente tras concluir la instalacin de Debian. Para esto tendremos que seleccionar nicamente Sistema estndar.

Para que Debian comience con el interfaz grfico de usuario es necesario indicarle qu definiciones permite nuestro monitor.

Debemos seleccionar aquellas resoluciones que deseemos utilizar y el monitor soporte utilizando la tecla ESPACIO. Por defecto ya vienen marcadas 1024x768, 800x600 y 640x480 por permitirlo todos los monitores actuales.

57

2
2.3.12. Instalar el gestor de arranque

Instalacin de la versin estable de la distribucin Debian

Para poder seleccionar qu sistema operativo utilizar o el modo de arranque (normal o seguro), es necesario un gestor de arranque al principio del disco duro. El gestor de arranque ms utilizado actualmente en sistemas con Linux instalado es el Grub. En la siguiente pantalla tendremos que indicar que s queremos instalar Grub.

Posteriormente, podremos configurar Grub para aadir otros sistemas operativos instalados en caso de que el instalador no los haya detectado.

58

2
2.3.13. Reiniciar el sistema DVD-ROM de instalacin.

Instalacin de la versin estable de la distribucin Debian

Para concluir debemos reiniciar el sistema asegurndonos de que hemos extrado el

59

2
2.3.14. Entrar en el sistema captura del Grub:

Instalacin de la versin estable de la distribucin Debian

Para entrar en el sistema elegiremos la primera opcin que se muestra en la siguiente

Y en la pantalla de Bienvenida, escribiremos el nombre de nuestro usuario y a continuacin la contrasea. A este proceso se le conoce como login o logarse en el sistema.

60

2
recuerde_
de preparacin.

Instalacin de la versin estable de la distribucin Debian

Debian GNU/Linux nos proporciona un amplio abanico de opciones de instalacin que conviene conocer para sacarle todo el partido que ofrece. Antes de realizar la instalacin de Debian debemos seguir una serie de pasos

Puede moverse por el programa de instalacin mediante las teclas de cursores. Pulse ENTER para seleccionar.

Es

recomendable

crear

otro

usuario

dejar

al

root

slo

para

la

administracin del sistema. Si tiene dudas de las resoluciones soportadas por su monitor no seleccione ninguna mayor que 1024x768.

61

3
ndice_

Primeros pasos en Linux

3.1. ARRANQUE Y DETENCIN DEL SISTEMA ..................................65 3.1.1. Niveles de ejecucin (runlevels) ...................................65 3.1.2. Secuencia de arranque .................................................66 3.1.3. El archivo /etc/inittab ..................................................67 3.2. SISTEMA DE FICHEROS............................................................70 3.2.1. Montaje y desmontaje de sistemas de ficheros .............71 3.2.2. El fichero /etc/fstab .....................................................74 3.3. LA CUENTA DEL USUARIO ROOT ...........................................75 3.3.1. El comando su ...........................................................76

63

3
3.1. ARRANQUE Y DETENCIN DEL SISTEMA ejecutando diversos procesos en segundo plano. 3.1.1. Niveles de ejecucin (runlevels)

Primeros pasos en Linux

Una vez que hemos instalado correctamente Debian, el primer conocimiento que debemos adquirir es saber cmo arrancar y cmo detener correctamente el sistema. Cualquier sistema operativo avanzado como es Linux, requiere de un procedimiento de apagado adecuado. No podemos apagar simplemente la mquina, ya que, en cualquier momento, se estarn

Un sistema Linux siempre se encuentra funcionando dentro de un nivel de ejecucin. Un nivel de ejecucin (runlevel) define un entorno de ejecucin del sistema. Linux define siete niveles de ejecucin que se enumeran del cero al seis.

Nivel de ejecucin 0

Estado del sistema Proceso de apagado del sistema. Se detienen todos los procesos activos, se desmontan los sistemas de ficheros y se desactiva la particin de swap. Sistema en modo monousuario. nicamente puede entrar en el sistema root. Servicios de red desactivados. Sistema en modo multiusuario. Servicios de red activados. Junto con el 5, ste es el runlevel habitual. No se utiliza. No se utiliza. Sistema en modo multiusuario. Servicios de red activados. Inicia automticamente X Window y se permite hacer login grfico. Proceso de reinicio del sistema. Es idntico al runlevel 0 con la excepcin de que no apaga la mquina, sino que la reinicia.

1 2 3 4 5 6

Como usuario root, podemos visualizar el runlevel actual de la mquina usando el comando 'runlevel' (# indica que somos el usuario root).

#runlevel N3

La salida de runlevel nos muestra dos caracteres separados por un espacio. La segunda es el runlevel actual. La primera es S cuando estamos en el runlevel 1 y N para el resto.

65

3
ejecutaremos el siguiente comando: # init 5

Primeros pasos en Linux

Para cambiar el nivel de ejecucin se utiliza el comando 'init'. Slo el usuario root tiene permitido cambiar entre los distintos runlevels. Por ejemplo, para cambiar al runlevel 5

Para apagar la mquina se utiliza el comando 'shutdown' (este comando solo puede ser ejecutado por el usuario root). Entonces, para apagar o reiniciar puede usar:

#shutdown h now #shutdown r now #init 0

(Apaga la mquina) (Reinicia la mquina) (Como hemos visto antes, indicar el runlevel 0 tambin apaga la mquina)

Generalmente, todas las distribuciones admiten que la pulsacin Ctrl+Alt+Supr desde la consola inicie el proceso de apagado o reinicio del sistema. Si estamos utilizando un escritorio como KDE o GNOME, en el men de salida del escritorio tambin dispondremos de una opcin para apagar la mquina. 3.1.2. Secuencia de arranque Para alcanzar un conocimiento ms profundo del sistema Linux, es muy interesante estudiar cmo se produce el arranque. Conocer qu sucede internamente durante el proceso de arranque nos ayudar a resolver problemas y a configurar distintos aspectos del sistema. La secuencia de arranque de Linux est compuesta por los siguientes pasos: a. Cuando el kernel toma el control del sistema, despus de que el cargador de arranque (LILO, etc) lo cargue en memoria y se descomprima, configura los dispositivos de la mquina. Posteriormente, monta y accede a la particin /. En esta particin, se encuentran alojados los ficheros /sbin/init y /etc/inittab. El programa 'init' es el primero que ejecuta el kernel. El comportamiento de 'init' se configura a travs del fichero 'inittab'. b. El programa 'init' ejecuta el script /etc/init.d/rcS. Este script contiene multitud de tareas relacionadas con el arranque del sistema. Algunas de estas tareas incluyen la activacin de la particion de swap, la asignacin del nombre de la mquina, etc.

66

3
c. de inicio fuera 5, ejecutara los de /etc/rc5.d).

Primeros pasos en Linux

A continuacin, busca el runlevel en el que debe arrancar, configurado en inittab. Por defecto, en Debian es el modo 2, as que obtendr un shell al arrancar. A continuacin, se ejecutan los script de /etc/rc2.d (debido a que arranca en el modo 2, si el runlevel

Los directorios /etc/rcN.d (siendo N de 0 a 6) tienen una misin clave: especificar los servicios que deben ejecutarse en cada runlevel. Estn formados por dos tipos de ficheros: Los que empiezan por K se procesan primero, y detienen los servicios que no deben ejecutarse en este runlevel. Junto a la K, aparecen dos cifras que indican el orden en el que deben detenerse los servicios. La numeracin comienza en el 00 y finaliza en el 99. Tras los dgitos, encontramos el nombre del servicio. Los que comienzan por S se procesan a continuacin y arrancan servicios que deben estar activos en ese nivel, tambin en el orden especificado por los dgitos. 3.1.3. El archivo /etc/inittab La configuracin del programa init se guarda, como hemos comentado, en el archivo /etc/inittab. El fichero inittab describe qu procesos se inician en el arranque y durante la ejecucin normal. El comando init distingue diferentes niveles de ejecucin y cada uno de estos niveles de ejecucin pueden tener distintos procesos asociados. Cada entrada en el archivo inittab tiene la siguiente forma:

id:runlevels:accin:proceso

Donde: id: es el identificador de cada entrada del archivo. Debe ser nico y estar formado por una cadena de uno a cuatro caracteres. runlevels: lista los niveles de ejecucin para los cuales se debe ejecutar la accin asociada a la entrada. accin: describe la accin que se debe ejecutar. proceso: especifica el proceso que se debe ejecutar.

67

3
Podemos ver un ejemplo de un fichero /etc/inittab a continuacin: # /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow).

Primeros pasos en Linux

#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

68

3
# What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> #

Primeros pasos en Linux

# Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line. # #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

Podemos ver entre otras configuraciones, que el runlevel de inicio es 2 (indicado en la lnea initdefault) y el comando ejecutado cuando se pulsa Control-Alt-Del (lnea ctrlaltdel: vemos que es el comando shutdown con varios parmetros, entre ellos r).

69

3
3.2. SISTEMA DE FICHEROS de directorios.

Primeros pasos en Linux

Una de las diferencias ms importantes que presenta el sistema de ficheros de UNIX con respecto a otros sistemas operativos, es que todos los archivos, independientemente del dispositivo de almacenamiento en el que se encuentren, se integran dentro del mismo rbol

El directorio raz de este rbol se representa por el carcter /. Conviene destacar que las rutas de ficheros se indican en UNIX con la barra inclinada hacia la derecha '/', mientras que en MS-DOS y Windows se indican con la barra inclinada hacia la izquierda '\'. Por lo tanto, dentro del mismo rbol de directorios podemos encontrar los ficheros de varios discos duros, CDROMs e incluso unidades de red sin que, en muchos casos, notemos siquiera la diferencia. Este rbol se comporta de forma homognea de cara al usuario, ya que no tiene que recordar en qu dispositivo se encuentra la informacin, sino en qu directorio. A continuacin, se presenta un listado de los directorios ms importantes de un sistema Debian: /bin: usado para almacenar comandos de usuario. El directorio /usr/bin tambin alberga otros comandos de usuario. /sbin: localizacin de muchos comandos del sistema. Las utilidades en este directorio son utilizadas solamente por el superusuario (root). /root: el directorio personal del usuario root. /mnt: este directorio contiene los puntos de montaje para los sistemas de ficheros montados despus del arranque del sistema. /boot: contiene el kernel y otros ficheros necesarios durante el arranque del sistema. /lost+found: este directorio es utilizado por fsck (utilidad de reparacin de sistemas de ficheros) para alojar los ficheros hurfanos (ficheros sin nombre). /lib: contiene muchas libreras usadas por los programas de /bin y /sbin. /dev: almacena los ficheros de dispositivos. /etc: contiene los ficheros de configuracin del sistema.

70

3
y colas de correo e impresin. sistema.

Primeros pasos en Linux

/var: se usa para ficheros que habitualmente varen su tamao como logs de sistema

/usr: contiene ficheros y directorios relacionados directamente con los usuarios del

/proc: un sistema de ficheros virtual que muestra informacin proporcionada por el kernel.

/tmp: directorio usado por usuarios y programas para crear archivos temporales. Este directorio tiene permisos de lectura y escritura para todos los usuarios del sistema.

/home: localizacin habitual de los directorios home (personales) de los usuarios. /floppy: directorio donde puede montar disquetes. /cdrom: directorio para montar CD-ROMs.

3.2.1. Montaje y desmontaje de sistemas de ficheros Hemos visto que en UNIX, todos los ficheros, independientemente del dispositivo en el que se encuentren, se muestran bajo el mismo rbol de directorios. El proceso de aadir el sistema de ficheros contenido en un dispositivo al rbol de directorios del sistema se denomina montar el dispositivo. El proceso inverso, eliminar un dispositivo del rbol de directorios, se denomina desmontar. Para montar un dispositivo, necesitamos conocer la siguiente informacin: Nodo de dispositivo: un nodo de dispositivo es la forma que utiliza el sistema para identificar los dispositivos. Por ejemplo, en el caso del primer disco duro IDE ser /dev/hda, la disquetera se conocer como /dev/fd0, etc. Tipo de sistema de ficheros del dispositivo: Linux proporciona acceso a muchos sistemas de fichero diferentes. Por ejemplo, habitualmente, los CD-ROMs utilizan como sistema de ficheros el ISO9660, los sistemas Windows utilizan para los discos duros el sistema fat32 y el NTFS, etc. Generalmente, el proceso de montaje reconoce automticamente el sistema de ficheros que est utilizando el dispositivo, pero en algunas ocasiones ser necesario especificarlo.

71

3
hay que crear un directorio vaco dentro de /mnt.

Primeros pasos en Linux

Punto de montaje: es el directorio, dentro de nuestro rbol de directorios, donde queremos montar el dispositivo. Habitualmente, se utiliza el directorio /mnt para montar dispositivos (en realidad puede usar el directorio que desee) que no pertenecen de forma permanente al sistema como CD-ROM, DVD, discos Zip, disquetes, etc. En Debian, por defecto, utiliza el directorio /floppy para montar disquetes y /cdrom para el montaje de CD-ROMs. Si se necesitan otros puntos de montaje, nicamente

Para montar dispositivos se usa el comando mount. Si se ejecuta sin parmetros, muestra los sistemas de ficheros montados en el sistema en ese momento:

/dev/hda1 on / type ext2 (rw) none on /proc type proc (rw) /dev/hdb1 on /mnt/windows type vfat (rw) /dev/hda6 on /home type ext2 (rw) /dev/hda7 on /tmp type ext2 (rw,noexec) /dev/cdrom on /cdrom type iso9660 (ro,nosuid,nodev)

Cada lnea de la salida de mount indica un dispositivo montado. Todas las lneas siguen el siguiente formato:

nodo_de_dispositivo on punto_de_montaje type tipo_de_sistema (opciones_de_montaje)

Del ejemplo anterior, podemos extraer, entre otros aspectos, la siguiente informacin: La primera particin del primer disco duro IDE (hda1) est montada en el directorio raz '/'. La primera particin del segundo disco duro IDE (hdb1) se encuentra montada en /mnt/windows. Esta particin almacena un sistema Windows. Desde Linux podemos acceder a todos los datos de esta particin de forma completamente transparente. Disponemos de un CD-ROM montado en /cdrom. Se puede observar que el tipo de sistema es el iso9660, el habitual en los CD-ROMs. Como podemos ver, el nodo de dispositivo de /proc es 'none', ya que ste es una estructura virtual que no depende de ningn dispositivo fsico.

72

3
La sintaxis ms simple de llamar al comando 'mount' es: # mount dispositivo punto_de_montaje -t tipo Veamos a continuacin diversos ejemplos de montaje de dispositivos: # mount /dev/cdrom /cdrom

Primeros pasos en Linux

Monta el dispositivo /dev/cdrom en /cdrom. No se especifica el tipo, ya que el comando lo reconoce automticamente. El montaje de un disquete es similar a:

# mount /dev/fd0 /mnt/floppy

Una vez que se ha finalizado de trabajar con los datos del dispositivo, debemos desmontarlo. Al desmontarlo, se informa al sistema operativo que los ficheros pertenecientes a ese dispositivo van a dejar de formar parte del sistema de ficheros de la mquina. El comando empleado para desmontar un dispositivo es umount. Como comentario se puede decir que, en ingls, el trmino correcto para desmontar es 'unmount', pero el comando prescinde de la 'n' por razones desconocidas. La sintaxis del comando umount es la siguiente:

# umount dispositivo # umount punto_de_montaje

Como podemos ver, disponemos de dos formas distintas de desmontar un dispositivo, ya sea por el nombre del mismo dispositivo o por el punto en el que se encuentra montado. As, para desmontar el CD-ROM del anterior ejemplo, usaramos indistintamente:

# umount /mnt/cdrom # umount /dev/cdrom

Es muy importante destacar que no debemos extraer un dispositivo que no ha sido desmontado. En determinado hardware, caso de CD-ROM, Zip, etc., que usa un sistema de expulsin elctrico, es el propio sistema el que bloquea la apertura del dispositivo si no est correctamente desmontado. Pero en el caso de disquetes, es posible extraerlos sin haberlos desmontado previamente, por lo que deberemos tener cuidado.

73

3
con ficheros del dispositivo que queremos desmontar. 3.2.2. El fichero /etc/fstab montaje. Este fichero permite:

Primeros pasos en Linux

El proceso de desmontaje no se puede realizar si algn usuario o proceso est trabajando

El fichero /etc/fstab contiene informacin sobre los dispositivos del sistema y sus puntos de

Establecer los sistemas de ficheros que deben montarse durante la carga del sistema. Designar qu dispositivos pueden ser montados por usuarios sin privilegios y las restricciones asociadas ya que en principio solo root puede montar/desmontar.

Veamos un ejemplo de un fichero /etc/fstab:

/dev/hda1 /dev/hdb1 /dev/hda6 /dev/cdrw /dev/cdrom /dev/fd0 none /dev/hda7 /dev/hda5

/ /export /home /mnt/cdrw /cdrom /floppy /proc /tmp swap

ext2 ext2 ext2 auto auto auto proc ext2 swap

defaults defaults defaults noauto,user noauto,user noauto,user defaults defaults,noexec defaults

11 12 12 00 00 00 00 12 00

Cada lnea de este archivo indica un dispositivo y se distinguen los siguientes campos: Dispositivo: especifica el nodo de dispositivo al que se est haciendo referencia. Punto de montaje: indica el punto de montaje donde se va a montar el dispositivo. Tipo: especifica el tipo de sistema de ficheros que utiliza el dispositivo. Si se indica 'auto', se deja en manos del sistema la tarea de averiguar el tipo del dispositivo utilizado. Opciones de montaje: si se desean usar las opciones por defecto, en este campo aparecer 'defaults'. En otro caso, las opciones se escribirn separadas por comas. Cada tipo de sistema de ficheros dispone de unas opciones determinadas que se pueden consultar en la pgina del manual de 'fstab' o 'mount'.

74

Primeros pasos en Linux

Informacin de volcado: este campo especifica si el sistema de ficheros asociado debe ser volcado haciendo uso del comando 'dump'. Si en el campo aparece un '1', el sistema de ficheros ser volcado. Si aparece un '0', no se realizar ningn volcado. Orden de chequeo: indica el orden en el que se chequean los sistemas de ficheros durante el arranque. El sistema de ficheros raz (/), debe tener un '1'. El resto de los sistemas que deseemos chequear, deben tener un '2'. Si un sistema de ficheros no debe ser chequeado en el arranque, aparecer en este campo un '0'.

3.3. LA CUENTA DEL USUARIO ROOT En un sistema UNIX, el usuario root tiene privilegios especiales para poder administrar el sistema a travs de l. La utilizacin de la cuenta root puede ser peligrosa: dado que proporciona poder sin lmites, cualquier error en un comando puede tener consecuencias catastrficas. Siempre debemos tener en cuenta que todos los administradores cometen errores, incluso los ms expertos. Siguiendo los siguientes consejos, mejoraremos la seguridad de nuestra cuenta root: Cuando queramos ejecutar algn comando complejo destructivo (como rm y, especialmente, si contiene comodines), probarlo primero de forma no destructiva. Es muy importante tener conciencia siempre de en qu directorio nos encontramos, ya que alguna llamada a un programa puede alterar el directorio actual sin darnos cuenta. Estudiaremos la orden rm en el siguiente captulo. Slo utilizar root para las tareas que impliquen la administracin del sistema. Para las tareas diarias, debemos utilizar una cuenta de usuario normal sin privilegios. Nunca utilizar root para tareas potencialmente peligrosas como navegar por Internet, probar nuevo software, etc. La variable de entorno PATH es especialmente importante para la cuenta root. Nunca incluir el directorio actual '.' en el PATH. Siempre que se acte como root, pensar dos veces los comandos a ejecutar.

75

3
3.3.1. El comando su

Primeros pasos en Linux

Como consecuencia de la peligrosidad de ser usuario root en manos inexpertas, recomendamos trabajar con la mquina bajo la identidad de otro usuario y solo usar la cuenta root para hacer las tareas que no pueden realizar el resto de usuarios. Si hemos iniciado sesin en el sistema bajo un usuario normal (recomendado), podemos pasar a ser root de la siguiente forma:

$ su Password: #

Una vez que ha introducido su, el sistema le preguntar la contrasea de root, y si es correcta ya puede usar sus privilegios. Observar como el mensaje que presenta el sistema mientras espera rdenes (prompt) cambia del smbolo $ a #. Para dejar de ser root y volver a su usuario, puede introducir la orden exit o pulsar las teclas Control + D. De nuevo cambiar el prompt para reflejar la prdida de privilegios.

76

3
recuerde_
los ficheros de distintos dispositivos. denomina montaje de un dispositivo.

Primeros pasos en Linux

El sistema siempre est funcionando en un nivel de ejecucin determinado. El sistema de ficheros de UNIX nos permite acceder de forma transparente a

El proceso de aadir un dispositivo al rbol de ficheros del sistema se

La accin de eliminar los archivos contenidos en un dispositivo del rbol de ficheros del sistema se conoce como desmontaje del dispositivo.

El comando mount conoce donde debe montar los dispositivos gracias al fichero /etc/fstab.

No utilice la cuenta root para un uso normal del sistema: emplee un usuario normal y, mediante su, eleve sus privilegios para hacer tareas de administracin.

77

4
ndice_

Manejo del Shell

4.1. PRIMER CONTACTO CON EL SHELL...............................................81 4.2. INTRODUCCIN A SHELL .............................................................82 4.3. PRIMEROS COMANDOS ................................................................83 4.3.1. Ficheros y directorios .......................................................84 4.3.1.1. Nombres absolutos y relativos ............................85 4.3.2. Ejecucin de comandos: path............................................85 4.3.3. Cmo obtener ayuda.........................................................86 4.3.4. Comodines .......................................................................90 4.3.5. Comandos bsicos ............................................................91 4.3.5.1. ls ........................................................................91 4.3.5.2. pwd ....................................................................93 4.3.5.3. cd .......................................................................93 4.3.5.4. mkdir..................................................................94 4.3.5.5. cp .......................................................................95 4.3.5.6. mv ......................................................................96 4.3.5.7. rm ......................................................................97 4.3.5.8. touch ..................................................................97 4.3.5.9. cat ......................................................................98 4.3.6. Uso del disco ....................................................................98 4.3.6.1. du ........................................................................98 4.3.6.2. df.......................................................................100 4.4. EDITORES .................................................................................100 4.4.1. Vi ...................................................................................102 4.4.1.1. Modos de funcionamiento ..................................102 4.5. EDICIN DE LA LNEA DE COMANDOS .......................................104 4.6. GESTIN DE PROCESOS.............................................................104 4.6.1. Comunicacin con los procesos.......................................106 4.7. FLUJOS DE DATOS Y REDIRECCIONES........................................106 4.8. PIPELINE ..................................................................................109 4.9. CONFIGURACIN EL SHELL........................................................110 4.9.1. Archivos de inicio ...........................................................110 4.9.2. Entorno ..........................................................................110 4.9.3. Alias ...............................................................................111 4.10. ENLACES.................................................................................112

79

4
4.1. PRIMER CONTACTO CON EL SHELL

Manejo del Shell

Una vez haya terminado el proceso de carga del sistema operativo, tendremos que acceder al sistema utilizando nuestro nombre y contrasea. El login (entrada al sistema) se puede realizar a travs de una de las consolas de texto o a mediante el sistema grfico X Window: Si lo hacemos desde una consola de texto, una vez que hayamos hecho login, ya estaremos en el shell. Si hemos accedido al sistema de forma grfica, tendremos que abrir un emulador de terminal para acceder al shell. Para abrir un emulador de terminal en KDE o GNOME, pulsaremos el botn derecho sobre el escritorio y elegiremos 'Nuevo terminal' del men que se despliega o bien buscaremos el icono en la barra de tareas. Por otra parte, es posible pasar de X Window a una consola virtual del sistema pulsando Ctrl+Alt+Fx (siendo x de 1, 2, 3, 4, 5 6). El aspecto del emulador de terminal de KDE es el siguiente:

Para realizar las prcticas de este tema, recuerde que no debe usar el usuario root: se utilizar el usuario que creamos en la instalacin del sistema.

81

4
4.2. INTRODUCCIN A SHELL bash aunque puede cambiar a otros fcilmente.

Manejo del Shell

El shell es el programa que recoge las lneas de comandos del usuario, las interpreta y las ejecuta. Los shells actuales tienen caractersticas ms parecidas a un lenguaje de programacin que a un simple ejecutor de comandos. El shell por defecto de Linux se llama

Podemos separar en dos grupos a las personas que trabajan en un sistema Linux, el de los usuarios finales y el de los administradores del sistema. No es extrao que algunas personas pertenezcan a los dos grupos pero siempre deben tener claro qu tipo de trabajo estn realizando. Mientras que para un usuario final no es necesario, aunque s recomendable, el conocimiento del shell, sta es una materia obligada para el administrador del sistema. No es posible llegar a ser un buen administrador de sistemas UNIX sin dominar el shell. Las distribuciones actuales, cada vez simplifican ms la administracin del sistema incorporando potentes utilidades grficas. Estas utilidades proporcionan una valiosa herramienta para la configuracin de determinados programas pero es necesario conocer cmo funcionan internamente si se desea exprimir todas las funcionalidades. El aprendizaje del shell puede resultar un poco rido al principio dado que, en apariencia, se pierde productividad con respecto al uso de herramientas grficas. Esta percepcin inicial es errnea ya que, a medida que se profundiza en su estudio, veremos que ofrece una potencia y flexibilidad difcilmente equiparable a una herramienta grfica. La filosofa general de los comandos UNIX es que sean pequeos, potentes y realicen una sola funcin. Es una prctica habitual combinar varios comandos sencillos para realizar una tarea compleja. UNIX proporciona diversas formas de combinar unos comandos con otros. Es comn en UNIX que todos los programas guarden su configuracin en forma de un archivo de texto. Generalmente, configurar un programa consistir en editar este fichero para conseguir el funcionamiento requerido. Esta forma de trabajar tiene varias ventajas: Configuracin localizada: habitualmente, todos los programas guardan su fichero de configuracin global en el directorio /etc. Esto nos permite tener localizada en un nico directorio toda la informacin de configuracin de la mquina.

82

4
Fcil actualizacin: generalmente, los archivos de configuracin en la configuracin.

Manejo del Shell


presentan

compatibilidad hacia delante. Esto nos permite una cmoda actualizacin a las nuevas versiones de los programas ya que, normalmente, no habr que hacer ningn cambio

Front-end: los ficheros de configuracin utilizan un lenguaje muy sencillo. Esto facilita la creacin de pequeos programas de configuracin (generalmente grficos) que generan, de forma cmoda, estos ficheros de configuracin.

Como acabamos de ver, el manejo de ficheros de texto en Linux es muy importante. Esta importancia se refleja en las herramientas para el manejo de texto, que son muy numerosas y verstiles.

4.3. PRIMEROS COMANDOS En sus aspectos bsicos, el manejo del shell de UNIX es similar al manejo de MS-DOS. No obstante, a medida que vayamos avanzando en su estudio, veremos que existen grandes diferencias en trminos de flexibilidad y potencia. A lo largo de este manual, se usara $ como el prompt o indicador del sistema. El prompt es una pequea cadena de texto que suele consistir en uno de los caracteres $, #, opcionalmente precedido por el directorio actual y otra informacin como puede ser el nombre de la mquina. El prompt nos indica que el sistema est preparado para recibir un comando. Habitualmente, el smbolo '$' indica que el usuario no tiene privilegios especiales. Por el contrario, si nos encontramos con un prompt '#', indicar que estamos utilizando el usuario root. ste es un convenio muy extendido y es el que se seguir a lo largo de este texto. Al igual que en MS-DOS, en UNIX ejecutaremos un comando escribiendo su nombre y pulsando 'enter'. Veamos un ejemplo de la ejecucin del comando 'date':

$ date [ENTER] Mon Sep 16 19:13:50 CEST 2002 En UNIX, un comando suele constar de 3 partes:

1. 2.

Nombre del comando: Indica a la mquina el programa que queremos ejecutar. Opciones: Modifican el comportamiento por defecto del comando. Habitualmente, las opciones van precedidas de uno o dos guiones.

83

4
3. Argumentos: Indican sobre qu elementos acta el comando. $ ls -la *.TXT Veamos un ejemplo de un comando: '*.TXT'.

Manejo del Shell

En este caso, el nombre del comando es 'ls', las opciones son '-la' y los argumentos son

Conviene destacar que UNIX distingue entre maysculas y minsculas. Generalmente, todos los nombres de los comandos se escriben en minsculas pero es posible encontrarnos con alguna excepcin. 4.3.1. Ficheros y directorios Los conceptos de ficheros y directorios se utilizan de la misma forma que en otros sistemas operativos como Windows. La diferencia ms destacable entre Windows y UNIX es la barra de separacin de directorio: En Windows utilizamos \ mientras que en UNIX se utiliza /. UNIX permite nombre de ficheros largos. En los sistemas actuales, es normal poder utilizar nombres de ms de 200 caracteres. El nombre de un fichero puede contener cualquier carcter, no obstante, existen algunos caracteres que no son recomendables ya que el shell puede interpretarlo de otra forma. Estos caracteres peligrosos incluyen espacios, signos de puntuacin, acentos, etc. En la medida de lo posible, los evitaremos al nombrar nuestros ficheros. El carcter punto . es equivalente a cualquier otro, excepto cuando el fichero comienza por punto. Esto significa que podemos tener un nombre de fichero que contenga varios puntos. Por ejemplo, es un nombre perfectamente vlido el siguiente:

copia_de_seguridad.tar.gz

En UNIX, un fichero que comienza por un punto se considera un fichero oculto y no se muestra, por defecto, en un listado usando el comando 'ls'. Generalmente, se usan ficheros ocultos para los archivos de configuracin existentes en los directorios de los usuarios.

84

4
tanto, son distintos los siguientes ficheros: copia_de_seguridad.tar.gz Copia_de_seguridad.tar.gz COPIA_DE_SEGURIDAD.TAR.GZ

Manejo del Shell

Nuevamente, conviene recordar que UNIX diferencia entre maysculas y minsculas. Por lo

4.3.1.1. Nombres absolutos y relativos Podemos designar cualquier fichero del sistema de dos formas distintas: Nombre absoluto: formado por una secuencia de nombres de directorios a recorrer para ir desde el directorio raz hasta el fichero que deseamos. Estos nombres comienzan por el carcter /, que es la denominacin del directorio raz en la jerarqua de directorios del sistema. Como ejemplo:

/home/manuel/foto.jpg

(Este nombre indica: el fichero foto.jpg del directorio manuel, el cual pertenece al directorio home del directorio raiz (/) del sistema). Nombre relativo: formado por la secuencia de directorios y ficheros desde el directorio actual en que nos encontramos (o desde el que se lanza una aplicacin). El nombre relativo no comienza por /. Suponiendo que nos encontramos en el directorio /home, el nombre relativo de foto.jpg sera:

manuel/foto.jpg

4.3.2. Ejecucin de comandos: path Habitualmente, utilizaremos comandos que estn almacenados en directorios del sistema. Para ejecutarlos, nicamente tendremos que escribir su nombre y el sistema buscar el comando en los directorios que aparecen en la variable PATH, por orden. Si lo encuentra lo ejecutar, si no dar un error. Para ver el contenido de nuestra variable PATH ejecute en el terminal la siguiente orden (el comando echo se utiliza para escribir en el terminal):

$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

85

4
rdenes que introduzcamos. cul se encuentra en /bin: $ ls $

Manejo del Shell

Estos son los directorios (separados por el carcter :) en los que el sistema buscar las

Vamos a ejecutar el comando ls (proporciona la lista de ficheros del directorio actual), el

El sistema nos devuelve de nuevo el prompt, ya que no hay ningn fichero en este directorio. Si ahora intentamos ejecutar un comando que no est en ninguno de los directorios del PATH, obtendremos un mensaje de error:

$ casa -bash: casa: command not found

Sin embargo, si vamos a utilizar comandos que residen en el mismo directorio en el que nos encontramos, deberemos utilizar la siguiente llamada:

$./comando_local

Es decir, habr que preceder el nombre del comando por './'. Si no hacemos esto, el shell intentar buscar la orden en los directorios de PATH y no la encontrar ya que el directorio actual (representado por el carcter punto .) no suele estar en PATH (por motivos de seguridad). 4.3.3. Cmo obtener ayuda Dada la gran cantidad de comandos existentes, cada uno con decenas de opciones, se hace imprescindible la existencia de un sistema de ayuda en lnea. Linux proporciona varios sistemas de asistencia al usuario: la ayuda proporcionada por el comando, las pginas man (manual), las pginas info y la documentacin del paquete. La forma ms rpida de obtener ayuda sobre un comando es a travs del propio comando. Es comn que todos los comandos acepten un parmetro para mostrar ayuda sobre si mismos. Habitualmente, este parmetro ser alguno de los siguientes: -h -help

86

4
Por ejemplo, la forma de que el comando 'ls' nos muestre su ayuda es: $ ls --help

Manejo del Shell

--help (dos guiones). ste es el parmetro estndar para mostrar la ayuda de todas las utilidades del proyecto GNU. Casi todos los comandos que vamos a ver a continuacin son GNU as que sta ser la forma de obtener informacin sobre los mismos.

El comando 'ls' posee una ayuda tan extensa que probablemente no quepa en una sola pantalla. Cuando queramos leer la salida de un comando que no cabe en la pantalla, utilizaremos una llamada como la siguiente:

$ ls --help | more

De esta forma, la salida de ls nos mostrar una pantalla cada vez, pudiendo avanzar pulsando ESPACIO. Cuando ya no quede texto por visualizar, volveremos al prompt del sistema. Otro de los sistemas estndar de ayuda que nos proporciona un sistema UNIX son las llamadas pginas 'man' o pginas del manual. Estas pginas proporcionan informacin sobre comandos, ficheros claves, funciones C y otras caractersticas del sistema. Habitualmente se llama con 'man palabra_a_buscar' donde palabra_a_buscar es el nombre del comando que nos interesa. Por ejemplo, para recabar informacin sobre el comando ls, haremos una llamada de la siguiente forma:

$ man ls

87

Manejo del Shell

Todas las pginas del manual se estructuran de forma similar. A grandes rasgos, nos encontraremos con las siguientes secciones: NAME: nombre del comando o comandos sobre los que trata la pgina del manual. SYNOPSIS: breve explicacin de la forma en la que se debe llamar al comando. DESCRIPTION: descripcin de todas las opciones que admite el comando. ALSO: otras fuentes de informacin donde continuar nuestra bsqueda. Generalmente son otras pginas del manual pero tambin se pueden indicar direcciones web, listas de correo, etc. Utilizaremos las siguientes teclas dentro de una pgina del manual: Flecha abajo o j Baja una lnea. Flecha arriba o k Sube una lnea. Barra espaciadora Avanza una pantalla. / Busca una cadena de texto dentro de la pgina. Escribiremos la barra seguida del texto a buscar. n Nos muestra la siguiente cadena que concuerde con el patrn buscado usando /. q Salir de la pgina.

88

4
Si queremos obtener ayuda sobre el propio uso del sistema man ejecutaremos: $ man man

Manejo del Shell

Otra de las fuentes de ayuda importantes son las pginas info. La informacin que muestran estas pginas es similar a la del manual pero tienen la ventaja de que estn enlazadas unas con otras permitiendo una navegacin parecida a la de pginas web. Existen varios visualizadores de pginas info, tanto en modo texto como grficos. Podemos llamar a info junto con el comando del que queremos obtener informacin. Si no especificamos ningn comando en la llamada, nos mostrar la pgina principal de la ayuda desde la que podremos acceder a las distintas secciones.

$ info ls

Dentro de una pgina info, podremos mover el cursor usando las flechas. Si nos situamos encima de alguno de los enlaces indicados por un asterisco '*', podremos pulsar 'Intro' para saltar a la pgina enlazada. Para subir un nivel en la jerarqua de pginas usaremos la tecla 'u'. Para avanzar una pgina, usaremos la tecla 'n' mientras que para retroceder usaremos 'p'. Al igual que en sistema man, para salir de info usaremos la tecla 'q'. En algunas utilidades es bastante comn que la pgina del manual y la pgina info de un comando muestren la misma informacin. En otras ocasiones, la pgina man contiene informacin breve sobre el comando mientras que la pgina info profundiza ms en las explicaciones.

89

4
usuario.

Manejo del Shell

Dentro de los entornos GNOME y KDE, existen sistemas integrados de ayuda que nos muestran tanto las pginas man, como las pginas info de una forma ms cmoda para el

Adems de la ayuda en lnea, las pginas man y las pginas info, podremos obtener ayuda a travs de los documentos que acompaan a los paquetes de software. Estos archivos estarn localizados habitualmente en /usr/doc o /usr/share/doc. 4.3.4. Comodines Un comodn es un carcter con un significado especial que el shell sustituye antes de ejecutarlo. Los comodines permiten escribir expresiones extensas con pocos caracteres. La sustitucin del carcter comodn por una cadena depende del texto con el que concuerde el carcter. Los caracteres comodines utilizados por bash son los siguientes: *: Concuerda con cualquier cadena, incluida la cadena nula. ?: Concuerda con cualquier carcter. [...]: Concuerda con cualquiera de los caracteres encerrados entre los corchetes. Si dentro de los corchetes aparecen dos caracteres separados por un guin, se indica un rango de caracteres. Si el primer carcter despus del corchete de apertura es '^' o '!', la expresin concuerda con cualquier carcter que no est dentro de los corchetes.

90

4
con cualquier cadena que comience por las letras amigo. amigo* 'mente'.

Manejo del Shell

Veamos varios ejemplos de expresiones con comodines. La siguiente expresin concuerda

La siguiente expresin concuerda con cualquier cadena que comience por vocal y termine en

[aeiouAEIOU]*mente

En el siguiente ejemplo veremos una expresin que concuerda con cualquier cadena que no empiece por el carcter 'z'.

[!z]*

4.3.5. Comandos bsicos Estudiaremos primero los comandos bsicos para el manejo de archivos y directorios. Estos comandos son ls, pwd, cd, cp, mv, rm, mkdir, touch, cat y less. 4.3.5.1. ls El comando 'ls' lista un conjunto de ficheros, el contenido de un directorio, el contenido de un rbol de directorios o cualquier combinacin de los anteriores. El comando 'ls' equivale al comando 'dir' del sistema operativo MS-DOS. El formato de su llamada es:

ls [OPCIONES]... [FICHERO]...

Las opciones ms importantes del comando 'ls' son las siguientes: -a, --all: Muestra tambin los ficheros ocultos (los que comienzan por .). -h, --human-readable: Muestra el tamao de los ficheros de forma ms clara para el usuario. -l: Muestra informacin extendida (tamao, propietario, fecha de creacin, etc.). -R, --recursive: Muestra los directorios de forma recursiva, es decir, va expandiendo el rbol de directorios hasta llegar a las hojas.

91

4
/. Podremos usar cualquiera de las dos al escribir el comando.

Manejo del Shell

-F: indica si es un fichero, un directorio, etc adiendole un carcter especial al final del nombre. Por ejemplo, un directorio lo indicara adiendole al nombre el carcter

Como se puede observar, algunas opciones se pueden escribir de dos formas distintas.

Para ver el amplio abanico de opciones que nos ofrece el comando 'ls' podemos consultar su pgina del manual (man) o ejecutarlo con el parmetro --help. Veamos unos ejemplos del uso del comando 'ls'. En primer lugar, veremos una llamada a 'ls' sin ninguna opcin.

$ ls gcookbook.pl* ps99.jpg vim.i386.rpm tmp/

Vemos como se muestran los archivos pertenecientes al directorio de trabajo actual. Obtengamos ahora un listado largo en el que se muestre ms informacin.

$ ls -l total 5276 -rwx---r--rw----r-drwx------rw----r-1 manuel 1 manuel 2 manuel 1 manuel manuel 5251 manuel manuel manuel 48383 4096 Sep 16 20:09 Sep 16 20:09 Sep 16 19:57 gcookbook.pl* ps99.jpg tmp/ vim.i386.rpm

5328840 Sep 16 20:09

Observamos que, en un listado largo, la informacin se distribuye en columnas. En la quinta columna se nos muestra el tamao del fichero. Resulta complicado interpretar el tamao cuando ste es grande. Para estos casos, podemos utilizar la opcin -h y el tamao se nos mostrar de forma ms til al usuario.

$ ls -lh total 5.2M -rwx---r--rw----r-drwx------rw----r 1 1 2 1 manuel manuel manuel manuel manuel manuel manuel manuel 5.1K 47K 4.0K 5.1M Sep 16 20:09 Sep 16 20:09 Sep 16 19:57 Sep 16 20:09 gcookbook.pl* ps99.jpg tmp/ vim.i386.rpm

92

4
lh y ls l h $ls F / bin/ boot/ cdrom/ dev/ etc/ floppy/ home/ initrd/ lib/ lost+found/ mnt/ opt/ proc/ root/ sbin/ sys/ tmp/ usr/ var/

Manejo del Shell

Observemos la forma en la que se han agrupado los parmetros: es equivalente escribir ls

Por ltimo, veamos como hacer que ls nos liste el contenido de otros directorios. Examinemos el contenido del directorio raz, /, y veamos que entradas son directorios:

Observamos que el directorio raz tiene a su vez 19 subdirectorios. 4.3.5.2. pwd El comando pwd muestra el directorio de trabajo actual. Veamos un ejemplo del uso del comando 'pwd':

$ pwd /home/manuel

Durante todos los ejemplos, estamos utilizando un prompt en el que slo se muestra el '$'. Este prompt se puede configurar para mostrar cualquier informacin: el directorio actual, la hora, el usuario, etc. Veremos la forma de crear un prompt personalizado cuando estudiemos las variables de entorno. 4.3.5.3. cd El comando 'cd' nos permite cambiar el directorio actual, usando para ello nombres absolutos o relativos. Su funcionamiento es equivalente al comando 'cd' de MS-DOS/Windows.

$pwd /home $cd manuel $pwd /home/manuel

93

4
fichero con el nombre '.' representa el directorio actual. Si escribimos: $ pwd /home/manuel $ cd . pwd /home/manuel

Manejo del Shell

Conviene recordar en este momento el significado de los ficheros especiales '.' y '..'. El

Como hemos podido ver en el ejemplo, realizar un 'cd' al directorio actual no modifica el directorio de trabajo actual. Por otra parte, el fichero con nombre '..' representa el directorio padre al actual. Si hacemos un cd a '..', ascenderemos al directorio padre del actual. Veamos un ejemplo:

$ pwd /home/manuel $ cd .. $ pwd /home

4.3.5.4. mkdir El comando 'mkdir' nos permite crear directorios. Si los directorios que estamos intentado crear ya existen, el comando 'mkdir' no hace nada. El formato de la llamada es el siguiente:

mkdir [OPCIONES] DIRECTORIO...

Donde: DIRECTORIO: es una lista separada por espacios con los directorios que queremos crear. La opcin ms importante del comando 'mkdir es: -p, --parents: Si el directorio padre del directorio que queremos crear no existe, tambin se crea.

94

4
directorio. /home/manuel/tmp$ ls -l total 0 /home/manuel/tmp$ mkdir dir_prueba /home/manuel/tmp$ ls -l total 4 drwxrwxr-x 2 manuel manuel 4096 Sep 20 12:02 dir_prueba/

Manejo del Shell

Veamos varios ejemplos del uso de mkdir. En el primer ejemplo crearemos un slo

Podemos crear varios directorios en una sola llamada a 'mkdir'.

/home/manuel/tmp$ ls -la total 8 drwx------ 2 manuel manuel 4096 Sep 20 12:06 ./ drwxr-xr-x 11 manuel manuel 4096 Sep 20 10:21 ../ /home/manuel/tmp$ ls /home/manuel/tmp$ mkdir dir1 dir2 dir3 /home/manuel/tmp$ ls -l total 12 drwxrwxr-x 2 manuel manuel 4096 Sep 20 12:06 dir1/ drwxrwxr-x 2 manuel manuel 4096 Sep 20 12:06 dir2/ drwxrwxr-x 2 manuel manuel 4096 Sep 20 12:06 dir3/

4.3.5.5. cp El comando 'cp' copia ficheros y directorios. El formato de su llamada es:

cp [OPCIONES]... FUENTE DESTINO cp [OPCIONES]... FUENTE... DIRECTORIO

Donde: FUENTE: son los ficheros o directorios que se desean copiar. Cuando se copian mltiples ficheros, el destino debe ser obligatoriamente un directorio. DESTINO: es el nombre del fichero destino al que se copia. DIRECTORIO: es el nombre del directorio destino al que se copia.

95

4
Las opciones ms importantes del comando 'cp' son: -f, --force: Sobrescribe los ficheros de destino sin avisar. -i, --interactive: Pregunta antes de sobrescribir los ficheros de destino. -R, --recursive: Copia subdirectorios de forma recursiva.

Manejo del Shell

En el siguiente ejemplo, copiaremos el fichero ps99.jpg desde el directorio actual al directorio tmp:

$ ls gcookbook.pl* ps99.jpg tmp/ vim.i386.rpm $ cp ps99.jpg tmp/ $ ls tmp/ ps99.jpg

4.3.5.6. mv El comando mv mueve/renombra ficheros o directorios. El formato de su llamada es:

mv [OPCIONES]... FUENTE DESTINO mv [OPCIONES]... FUENTE... DIRECTORIO

Donde: FUENTE: son los ficheros o directorios que se desean mover. Cuando se mueven mltiples ficheros, el destino debe ser obligatoriamente un directorio. DESTINO: es el nombre del fichero destino al que se mueve. DIRECTORIO: es el nombre del directorio destino al que se mueve.

Las opciones ms importantes del comando 'mv' son: -f, --force Sobrescribe los ficheros de destino sin avisar. -i, --interactive Pregunta antes de sobrescribir los ficheros de destino.

96

4
4.3.5.7. rm recuperar un fichero una vez borrado. El formato de su llamada es: rm [OPCIONES]... FICHERO...

Manejo del Shell

El comando 'rm' elimina uno o varios ficheros. Conviene recordar que, en UNIX, no se puede

Donde: FICHERO Son los ficheros a borrar.

Las opciones ms importantes del comando 'mv' son: -f, --force No pide confirmacin para borrar ficheros. -i, --interactive Pide confirmacin para borrar ficheros. -r, -R, --recursive Elimina el contenido de los directorios recursivamente, es decir, elimina un directorio y todo lo que tenga almacenado. Veamos un ejemplo del uso de 'rm'. Borraremos un archivo llamado 'borrame'.

/home/manuel/tmp$ ls -l total 0 -rw-rw-r-- 1 manuel manuel 0 Sep 20 12:33 borrame /home/manuel/tmp$ rm -i borrame rm: remove `borrame'? y /home/manuel/tmp$ ls -l total 0

Como se puede ver, el comando nos solicita confirmacin ya que hemos utilizado la opcin -i. 4.3.5.8. touch El comando 'touch' se utiliza para modificar la fecha de creacin de un archivo. No obstante, es habitual el uso de 'touch' para crear un archivo vaco. El formato de la llamada es:

touch [OPCIONES]... FICHERO...

97

4
ejemplo: /home/manuel/tmp$ ls /home/manuel/tmp$ touch fichero1 fichero2 /home/manuel/tmp$ ls -l total 0 -rw-rw-r-- 1 manuel manuel 0 Sep 20 12:41 fichero1 -rw-rw-r-- 1 manuel manuel 0 Sep 20 12:41 fichero2

Manejo del Shell

Si lo utilizamos para crear ficheros vacos, no hace falta utilizar ninguna opcin. Veamos un

4.3.5.9. cat El comando 'cat' muestra por la salida estndar (generalmente el terminal) el contenido de un archivo. Su uso habitual es mostrar el contenido de pequeos archivos de texto o concatenar el contenido de varios archivos en uno. El formato de su llamada es:

cat [OPCIONES] [FICHERO]...

Generalmente, 'cat' se utiliza sin opciones. Veamos un ejemplo de su utilizacin:

/home/ manuel manuel /tmp$ ls -l total 4 -rw-rw-r-- 1 manuel manuel 34 Sep 20 12:54 muestrame.txt /home/ manuel/tmp$ cat muestrame.txt Soy el contenido de muestrame.txt

4.3.6. Uso del disco Veremos los comandos du y df para controlar el espacio ocupado en los discos del sistema. 4.3.6.1. du El comando (disk usage) 'du' nos muestra el tamao ocupado por cada fichero. Si se le pasa como argumento un directorio, mostrar recursivamente el tamao de todos los ficheros que contiene. El formato de su llamada es:

du [OPCION]... [FICHERO]...

98

4
Las opciones ms habituales son: (1K 234M 2G). -s, --summarize Muestra el total para cada argumento.

Manejo del Shell

-h, --human-readable Imprime los tamaos de forma ms legible para las personas

Veamos varios ejemplos de su utilizacin. Para obtener el tamao ocupado por nuestro directorio home:

/home/manuel$ du -sh ~ 572K /home/manuel

Como se aprecia, hemos utilizado el carcter ~ para identificar el directorio home. Cuando el shell se encuentra ste, lo sustituye por /home/nombre_usuario. En el caso del usuario ramon, el smbolo ~ se sustituye por /home/ramon. Por lo tanto, el ejemplo anterior es equivalente al siguiente:

/home/manuel$ du -sh /home/manuel 572K /home/ramon

Obtengamos ahora el tamao de todos los ficheros en el directorio raz del directorio personal de ramon.

/home/manuel$ du -h * 8.0K gcookbook.pl 8.0K INSTALL.txt 48K ps99.jpg 8.0K tmp

Es destacable de este ejemplo el uso que se hace del carcter comodn '*'. Como se puede ver, no es necesario indicar *.* para seleccionar todos los ficheros dado que el punto '.' se considera como un carcter normal en UNIX.

99

4
4.3.6.2. df la mquina. El formato de su llamada es: df [OPCIONES]... [FICHERO]...

Manejo del Shell

El comando 'df' (disk free) muestra informacin sobre los sistemas de ficheros montados en

Si no se indica ningn fichero, 'df' muestra informacin sobre todos los sistemas de ficheros montados en ese momento. Las opciones ms habituales son:

-h, --human-readable Imprime los tamaos de forma ms legible para el usuario (1K 234M 2G).

Veamos un ejemplo de su utilizacin:

/home/manuel$ df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 3.4G 2.1G 1.1G 64% / /dev/hdb1 37G 30G 5.7G 84% /export /dev/hda6 19G 17G 1.5G 92% /home /dev/hda7 988M 12M 926M 2% /tmp

4.4. EDITORES En UNIX es muy frecuente la utilizacin de ficheros de texto ASCII configuracin de programas, scripts de arranque, cdigo fuente, etc. Por lo tanto, resulta imprescindible manejar con soltura algunos de los editores de texto disponibles en el sistema. Los dos editores de textos ms populares en entornos UNIX son vi y emacs. Vi es el editor ms extendido en el mundo UNIX. Este programa naci casi con el sistema operativo y, desde entonces, ha sido el estndar de facto en todas las mquinas UNIX. Actualmente, se usan clnicos del Vi original: nvi, vim, elvis, etc. Por defecto, nvi es el que encontrar en Debian aunque le recomendamos que instale vim, el vi mejorado, con ms funcionalidades:

100

Manejo del Shell

El segundo editor ms conocido en UNIX es Emacs, creado por Richard M. Stallman cuando trabajaba en el MIT. Al igual que Vim, Emacs es un editor muy potente que ofrece muchas facilidades para el tratamiento de textos. Emacs es programable internamente lo que le proporciona una gran versatibilidad. Existe un enorme nmero de utilidades que se integran dentro de Emacs ofreciendo una funcionalidad que va mucho ms all que el simple tratamiento de textos. Existen otros editores para consola con una curva de aprendizaje menos pronunciada que Vim y Emacs. Entre stos podemos encontrar pico, nano, joe, etc. La instalacin bsica de Debian incorpora por defecto el editor nano. Utilcelo si tiene problemas con vi. Como puede observar, los comandos son de la forma ^X, ^J, etc, donde ^ se refiera a la tecla CONTROL.

101

4
operativos como Windows o MacOS. 4.4.1. Vi

Manejo del Shell

Por supuesto, tambin existen editores de textos grficos en Linux. Los ms interesantes los podemos encontrar integrados dentro de los entornos GNOME y KDE. Estos editores tienen una filosofa de funcionamiento mucho ms cercana a la existente en otros sistemas

El editor vi (de visual) es un programa potente y flexible que permite realizar infinidad de tareas relacionadas con la edicin de texto: programacin, desarrollo de documentos, libros, etc. La curva de aprendizaje de Vi es bastante pronunciada ya que su funcionamiento no sigue los cnones de las aplicaciones actuales pero, una vez que se domina, todas las tareas de edicin se realizan con mucha eficiencia. Aunque se adopte otro editor para el uso diario, conviene conocer los comandos bsicos de Vi dado que, por su pequeo tamao, suele ser el editor que se incluye en los discos de rescate. Daremos aqu un breve repaso al funcionamiento del editor vi. No obstante, se recomienda instalar la versin mejorada Vim. Para ejecutar este editor escribiremos en la consola:

$vi

4.4.1.1. Modos de funcionamiento Vi tiene dos modos de trabajo: Modo comandos: las entradas del usuario se interpretan como comandos. Modo insercin: todo lo que introduzca el usuario se interpreta como texto para el fichero. Modo ex: este modo se utiliza principalmente para salir de vi o salvar el fichero.

El modo comando es en el que se inicia el editor y en l podemos ejecutar diferentes comandos, casi todos consistentes en la pulsacin de 1 2 teclas. Las ms usadas son:

102

4
Combinacin de teclas i a x u o O v p dd Accin Insertar en la posicin actual del cursor. Insertar en la siguiente posicin del cursor. Borra el carcter sobre el que est el cursor. Deshace la ltima accin (Undo).

Manejo del Shell

Inserta una lnea en blanco bajo la posicin del cursor. Inserta una lnea en blanco antes de la lnea en la que se encuentra el cursor. Esta tecla es especfica de vim, y nos permite seleccionar un rango. Pega el contenido que hayamos seleccionado previamente. Borra la lnea donde esta el cursor

Desde el modo comando podemos ir al modo de insercin mediante algn comando de insercin, por ejemplo, pulsando la tecla i o a. Una vez en el modo insercin, podemos insertar cualquier carcter y vi los interpretar como texto de nuestro fichero. Cuando deseemos volver al modo comandos pulsaremos la tecla ESC. Para entrar en el modo ex, debemos estar en el modo comando y pulsar la tecla : y a continuacin las correspondientes a la accin que queramos realizar. Entre las ms comunes estn:

Combinacin de teclas :w nombrefichero :wq :q! :sh nombrefichero.

Accin Salva el fichero que estamos editando con el nombre Salva el fichero y Sale de vi. Sale de vi sin salvar. Ejecuta un shell sin salir del editor.

103

4
4.5. EDICIN DE LA LNEA DE COMANDOS encuentran las siguientes:

Manejo del Shell

El shell Bash ofrece muchas facilidades para editar la lnea de comandos. Entre ellas se

Acceder a los comandos tecleados anteriormente: Usaremos las teclas del cursor arriba y abajo para ir avanzando o retrocediendo en la lista de comandos tecleados.

Buscar entre los comandos tecleados previamente: Pulsando Ctrl+r podremos introducir un patrn de bsqueda. A medida que vamos tecleando, la lnea cambiar mostrndonos los resultados de la bsqueda. Si queremos ir alternando entre los resultados, pulsaremos nuevamente Ctrl+r.

Completar comandos automticamente: Usando el tabulador podemos completar comandos sin necesidad de escribirlos completos. Por ejemplo, si escribimos 'star' y pulsamos el tabulador, el sistema nos mostrar todos los comandos del sistema que comienza por 'star'. Si slo existe un comando que concuerda con nuestro patrn, el shell escribe el comando completo.

Desplazarnos rpidamente entre distintos puntos de la lnea: Usando la tecla 'inicio' nos desplazaremos al comienzo de la lnea. Con 'Fin' saltaremos al final. Usando Alt+b, nos desplazaremos una palabra a la izquierda mientras que con Alt+b lo haremos una palabra a la derecha.

Bash ofrece otras muchas facilidades que podemos consultar en su pgina man o en la documentacin que lo acompaa.

4.6. GESTIN DE PROCESOS Linux es un sistema multiusuario y multiproceso. Esto significa que, en un momento dado, se estarn ejecutando simultneamente en la mquina varios procesos de distintos usuarios. Cada vez que se lanza un proceso, el sistema le asigna un nmero identificador nico denominado PID. Es importante conocer el PID de un proceso para comunicarnos con l usando el mecanismo de seales. Para obtener un listado de los procesos que se estn ejecutando en el sistema usaremos el comando ps.

104

4
terminal donde nos encontramos: /home/manuel$ ps PID TTY TIME CMD 5522 pts/1 00:00:00 bash 5558 pts/1 00:00:00 ps

Manejo del Shell

Si llamamos a 'ps' sin parmetros nos mostrar un listado de los procesos lanzados desde el

La salida de 'ps' nos muestra la siguiente informacin: PID Nmero identificador del proceso. TTY El terminal desde donde se lanz el proceso. TIME Tiempo de procesador consumido por el proceso. CMD Comando asociado al proceso.

Aunque ps es el comando estndar en UNIX para la visualizacin de procesos, existen otros programas que nos permiten realizar la misma tarea de forma ms cmoda. Para la consola, uno de los ms populares es 'top'.

Existen muchos visualizadores grficos de procesos como 'gtop'.

105

4
4.6.1. Comunicacin con los procesos el programador o mediante la respuesta predefinida.

Manejo del Shell

Los procesos pueden recibir distintas seales enviadas desde el intrprete de comandos u otro proceso. Existen distintas seales que comunican distintos tipos de sucesos. Todos los programas responden a todas las seales disponibles, ya sea usando una rutina creada por

El comando utilizado para enviar seales a un proceso se denomina 'kill'. El formato de llamada de kill es el siguiente:

$ kill -seal PID

Donde: Seal: es la seal que queremos enviar al proceso. Las seales se pueden identificar por su cdigo numrico o por su cadena asociada. Si no se especifica ninguna seal, se enviar la seal SIGTERM cuyo cdigo numrico es el 15. PID: cdigo identificador del proceso al que deseamos enviar la seal.

Existe otra forma de enviar una seal a un proceso aparte del comando kill. Esta forma consiste en pulsar una determinada combinacin de teclas durante la ejecucin del programa. Las combinaciones de teclas aceptadas por todos los sistemas UNIX son: Ctrl+c: Enva la seal SIGQUIT que interrumpe el programa. Ctrl+z: Enva la seal SIGINT que suspende el programa.

Habitualmente, para eliminar un proceso le enviaremos una seal SIGTERM. Si el programa no responde a esta seal, enviaremos una seal SIGKILL (cdigo numrico 9).

4.7. FLUJOS DE DATOS Y REDIRECCIONES En UNIX, todos los programas tienen asociados unos flujos de datos denominados entrada estndar, salida estndar y salida estndar de error. Habitualmente, la entrada estndar corresponde al teclado y la salida estndar y salida estndar de error corresponde al monitor. Estos flujos de informacin son muy importantes ya que permiten conectar comandos aumentado su potencia y versatilidad.

106

4
error tiene asociado el descriptor 2.

Manejo del Shell

Desde el shell, podemos alterar la entrada y salidas de los comandos que ejecutemos mediante el proceso denominado redireccin. La entrada estndar tiene asociado el descriptor de fichero 0. La salida estndar tiene asociado el descriptor de fichero 1. La salida estndar de

El operador utilizado para redireccionar la entrada de un comando es '<'. Si este operador se utiliza sin especificar ningn descriptor de fichero, se supone que se redirecciona la entrada estndar (descriptor 0). El operador utilizado para redireccionar la salida de un comando es '>'. Si se utiliza el operador sin especificar el descriptor de fichero, se supone que se redirecciona la salida estndar. Veamos varios ejemplos del uso de la redireccin. En el primer ejemplo, redireccionaremos la salida del comando 'ls' a un fichero:

/home/manuel$ ls -l > salida_ls.txt /home/manuel$ cat salida_ls.txt total 764 -rw-rw-r--rw-rw-r--rwx------rwxrwxrwx -rw-------rw-rw-r-drwx-----1 manuel manuel 350917 Sep 22 13:28 archivo.zip 1 manuel manuel 350917 Sep 21 12:06 a.zip 1 manuel manuel 5251 Sep 16 20:09 gcookbook.pl* 1 manuel manuel 7983 Sep 17 15:39 INSTALL.txt* 1 manuel manuel 48383 Sep 16 20:09 ps99.jpg 1 manuel manuel 0 Sep 22 13:54 salida_ls.txt 2 manuel manuel 4096 Sep 20 12:54 tmp/

Vamos a redireccionar la entrada del comando 'sort' para ordenar el fichero que acabamos de crear:

/home/manuel$ sort -r < salida_ls.txt total 764 -rwxrwxrwx -rwx------rw-rw-r--rw-rw-r--rw-rw-r--rw------1 manuel manuel 7983 Sep 17 15:39 INSTALL.txt* 1 manuel manuel 5251 Sep 16 20:09 gcookbook.pl* 1 manuel manuel 350917 Sep 22 13:28 archivo.zip 1 manuel manuel 350917 Sep 21 12:06 a.zip 1 manuel manuel 0 Sep 22 13:54 salida_ls.txt 1 manuel manuel 48383 Sep 16 20:09 ps99.jpg

107

4
drwx-----2 manuel manuel 4096 Sep 20 12:54 tmp/ Vamos a ver ahora la diferencia entre salida estndar y salida estndar de error: /home/manuel$ ls no_existo > salida ls: no_existo: No such file or directory

Manejo del Shell

Hemos intentado redireccionar la salida estndar al fichero salida. El comando 'ls' nos informa de un error dado que intentamos listar un fichero inexistente. Aunque tenemos la salida redireccionada, el mensaje de error se nos sigue mostrando en la consola. Esto es debido a que la salida estndar de error es independiente de la salida estndar aunque, habitualmente, se nos muestren juntas en el terminal. Para redirigir la salida estndar de error a un fichero, tendremos que utilizar su descriptor de fichero, el 2.

/home/manuel$ ls no_exito >salida 2>errores /home/manuel$ cat salida /home/manuel$ cat errores ls: no_exito: No such file or directory

En este ejemplo, hemos redireccionado la salida estndar del comando ls a 'salida' y la salida estndar de error a errores. Despus, visualizamos el contenido de cada fichero. Lgicamente, 'salida' estar vaco mientras que 'errores' contendr el mensaje del error. El operador '>' elimina el contendido del fichero destino. Si queremos aadir informacin a ese fichero sin alterar su contenido usaremos el operador '>>'. Veamos un ejemplo:

/home/manuel$ ls -l gcookbook.pl >> salida.txt /home/manuel$ ls -l ps99.jpg >> salida.txt /home/manuel$ cat salida.txt -rwx------ 1 manuel manuel 5251 Sep 16 20:09 gcookbook.pl* -rw------- 1 manuel manuel 48383 Sep 16 20:09 ps99.jpg

108

4
4.8. PIPELINE utilizadas en sistemas UNIX para combinar distintos comandos. Veamos ejemplos de pipeline simple:

Manejo del Shell

Un pipeline (encadenamiento de tuberas) es una secuencia de comandos simples conectados por el operador '|'. La salida de cada comando del pipeline se convierte en la entrada del siguiente comando. Las asociaciones mediante pipes (tambin llamadas tuberas) son muy

/home/manuel$ ls -l | grep txt -rwxrwxrwx 1 manuel manuel 7983 Sep 17 15:39 INSTALL.txt* -rw-rw-r-- 1 manuel manuel 135 Sep 22 14:22 salida.txt

La salida del comando 'ls' la pasamos como entrada del comando 'grep' que muestra nicamente las lneas que contienen la cadena 'txt'.

/home/manuel$ cat file | more

En este caso, estamos examinando el fichero file mediante cat, y pasamos la salida a more, que es un paginador, que nos muestra el contenido de file parando cuando llena la pantalla, de forma que podamos ver ficheros largos cmodamente. Para que avance a la siguiente pgina pulsaremos la tecla de espacio y para terminar q. Un ejemplo de pipeline ms complejo que el anterior:

find $HOME -size 0b | sort | mail manuel -s "Ficheros vacos"

El pipeline presentado busca (comando find) en el directorio home de 'ramon' los ficheros vacos (tamao cero), los ordena (comando sort) alfabticamente y enva un email (comando mail) a 'ramon' con la lista generada y el ttulo "Ficheros vacos" como subject. Como podemos ver, combinando comandos simples podemos conseguir una funcionalidad muy elevada. En estos ejemplos hemos utilizado los comandos more, grep, sort, mail y find. Podemos obtener informacin sobre los mismos utilizando los sistemas de ayuda estudiados al principio del tema.

109

4
4.9. CONFIGURACIN EL SHELL diferencias entre unos y otros.

Manejo del Shell

Aunque en sus funciones bsicas, todos los shell disponibles se comportan de forma similar, es cuando entramos en caractersticas avanzadas como la programacin, cuando aparecen

Para UNIX existe una variedad importante de shells. Entre los ms conocidos se encuentran el bash (sucesor del Bourne Shell, sh), el ksh( Korn Shell) y csh (C Shell). Centrndonos en Linux, el shell ms extendido sin duda alguna es Bash. Se puede considerar bash como el shell estndar de facto de este sistema operativo. 4.9.1. Archivos de inicio Cuando un usuario hace login en una mquina UNIX, el sistema lee la informacin contenida en diversos archivos de configuracin del shell. En un primer momento, si existe, se lee el archivo /etc/profile que es comn a todos los usuarios. Posteriormente si existe se lee el fichero ~/.bash_profile. Si no existiese este fichero se leera ~/.bash_login. Si no existiese ninguno de los dos, se leera el archivo ~/.profile. Cuando un usuario abandona su cuenta, el shell lee el fichero ~/.bash_logout. En este fichero podremos colocar los comandos que deseamos ejecutar al terminar la sesin. 4.9.2. Entorno Cuando se ejecuta un programa, se le pasa un conjunto de cadenas que se denomina "entorno". Las cadenas son pares etiqueta/valor de la forma etiqueta=valor denominadas variables de entorno. El shell utiliza las variables de entorno para configurar el entorno de trabajo. Algunos programas utilizan el valor de determinadas variables de entorno para modificar su funcionamiento. Para poder consultar la lista completa de variables de entorno podemos usar el comando set. Si nicamente deseamos visualizar una variable de entorno, usaremos el comando 'echo $variable' o set | grep variable. Algunas de las variables de entorno ms importante utilizadas por Bash son las siguientes: HOME: Guarda la ruta del directorio personal del usuario.

110

4
llamemos desde la lnea de comandos. PS1: Especifica qu debe mostrarse como prompt principal del sistema.

Manejo del Shell

PATH: Almacena la lista de directorio entre los que el shell busca los ejecutables que

PS2: Especifica de qu forma se debe mostrar el prompt secundario del sistema. Este prompt se muestra cuando pulsamos 'intro' sin terminar de escribir el comando.

Para

TERM: Almacena el tipo de terminal con el que estamos trabajando. especificar una variable de entorno en Bash, usaremos el formato 'export

variable=valor'. Por ejemplo, para cambiar el prompt principal del sistema PS1 usaremos:

/home/manuel$ echo $PS1 $(pwd)$ /home/manuel$ PS1="Soy el prompt principal\$ " Soy el prompt principal$

4.9.3. Alias Los alias permiten la sustitucin de una cadena por una palabra cuando se usa como la primera palabra de un comando simple. La lista de los alias almacenados por el shell se puede consultar usando el comando alias. Por ejemplo, un usuario puede tener definidos los siguientes alias:

$ alias alias cd..='cd ..' alias cp='cp -i' alias d='ls' alias l='ls' alias la='ls -a' alias ll='ls -l -k' alias ls='ls -F --color=auto' alias lsd='ls -d */' alias md='mkdir' alias mv='mv -i' alias p='cd -'

111

4
alias rd='rmdir' alias rm='rm -i' alias s='cd ..' cadena 'd' en lugar de 'ls' para llamar a este comando.

Manejo del Shell

En la tercera lnea se puede ver un alias de la forma d=ls. Esto significa que podemos usar la

$d a.zip gcookbook.pl* INSTALL.txt* ps99.jpg tmp/ $ ls a.zip gcookbook.pl* INSTALL.txt* ps99.jpg tmp/

Para definir un alias, usaremos la siguiente llamada 'alias cadena=valor'. Por ejemplo, para crear un alias para el comando 'cp' procederemos as:

$alias cp=copia $ copia a.zip archivo.zip $ ls archivo.zip a.zip gcookbook.pl* INSTALL.txt* ps99.jpg tmp/

Un alias as definido se pierde al salir del shell donde se ha definido. Si queremos utilizar un alias siempre que se inicie un shell debemos aadir la lnea de la definicin a uno de los archivos de inicio del shell.

4.10.

ENLACES

Si conoce el sistema operativo Windows, probablemente ya conoce el concepto de acceso directo. En Linux, tambin hay accesos directos, denominados enlaces. Bsicamente, cuando enlazamos un fichero o directorio a con otro fichero o directorio b, cada acceso a b se convierte en un acceso a. Esta caracterstica es interesante pues permite que podamos acceder a un mismo fichero destino desde varios puntos del rbol de directorios. La orden que se utiliza para crear un enlace es ln:

ln [OPCIONES] ARCHIVO-ORIGEN ARCHIVO-ENLACE

112

4
Hay dos tipos de enlaces: permite a los usuarios crear enlaces a directorios. Se crean de la forma: - ln archivo enlace

Manejo del Shell

Enlaces duros: son enlaces a ficheros dentro de un mismo sistema de ficheros. No se

Enlaces simblicos: son enlaces a directorios, o a ficheros en otros sistemas de ficheros. Se crean mediante la opcin s de ln.

Ejemplo: crear un enlace en el directorio Desktop llamado foto que apunte al fichero foto.jpg del directorio home de manuel. Con enlaces duros ejecutaramos:

$ln /home/manuel/foto.jpg /home/manuel/Desktop/foto

Aqu tenemos el mismo ejemplo con enlaces simblicos:

ln s /home/manuel/foto.jpg /home/manuel/Desktop/foto

Los enlaces simblicos son fcilmente reconocibles con la orden ls l, ya que el campo de permisos comienza por l, y en el campo del nombre del fichero aparece una flecha y el fichero al que apunta. Ejemplos de enlaces puede encontrarlos en los directorios /etc/rcN.d que intervienen en el arranque. Concretamente, si examina los ficheros de /etc/rc2.d/ (runlevel por defecto) mediante un listado largo ls l, comprobar que apuntan al directorio /etc/init.d.

113

4
recuerde_
pequeos scripts para acelerar distintas tareas. muchas herramientas del sistema.

Manejo del Shell

El dominio del shell proporciona una herramienta muy valiosa para el administrador de sistema. El shell es potente, verstil y permite crear

UNIX distingue entre maysculas y minsculas. Esta distincin no slo se produce en los nombres de ficheros y directorios, sino que se extiende a

Podemos obtener ayuda de un comando usando las pginas del manual, las pginas info, la documentacin del paquete o a travs del propio comando.

Los comandos en UNIX estn creados con la idea de combinarlos usando asociaciones llamadas pipelines.

Podemos redireccionar la entrada y salida de un comando usando los operadores > y <.

114

5
ndice_

Gestin de permisos

5.1. TEORA DE PERMISOS ...............................................................117 5.2. VISUALIZACIN DE LOS PERMISOS ...........................................118 5.3. INTERPRETACIN DE LOS PERMISOS ........................................119 5.4. MODOS DE REPRESENTACIN DE PERMISOS .............................120 5.4.1. Modo simblico de permisos ...........................................120 5.4.2. Modo numrico de los permisos ......................................122 5.5. EJEMPLOS DEL USO DE PERMISOS .............................................123

115

5
5.1. TEORA DE PERMISOS

Gestin de permisos

Una de las medidas de seguridad bsicas de todo sistema UNIX son los permisos de ficheros y directorios. Cada fichero o directorio de nuestro sistema tiene asociados un usuario propietario, un grupo propietario y unos permisos. Generalmente, el usuario propietario ser la persona que ha creado el fichero pero esto es alterable despus de la creacin. UNIX controla el acceso a ficheros y directorios a tres grupos de personas diferentes: owner (propietario): es el propietario del fichero o directorio. group (grupo): comprende los usuarios que estn en el mismo grupo del fichero o directorio. others (otros): el resto de los usuarios del sistema, que no sean el usuario propietario ni pertenezcan al grupo. Existen tres tipos de permisos bsicos que un usuario puede tener con respecto a un fichero o directorio. 'read' (lectura): Para ficheros, este permiso permite leer el contenido del mismo. Para directorios, el permiso permite listar el contenido del directorio. 'write' (escritura): Aplicado a ficheros, este permiso permite escribir contenido en el archivo. Para directorios, el permiso permite crear y borrar ficheros dentro del directorio. 'execute' (ejecucin): Aplicado a ficheros, el permiso permite ejecutar el programa almacenado en el archivo. Usado en directorios, este permiso permite acceder al contenido de los ficheros almacenados dentro del directorio. Adems de los permisos mostrados denominados bsicos, existen otros, menos utilizados, denominados extendidos. Estos permisos slo afectan a ficheros ejecutables (programas) y, en algunos sistemas, a directorios. Los permisos extendidos son los siguientes: SUID (set user id): cuando un fichero tiene este permiso activado, se ejecuta con los privilegios del usuario que posee el fichero, no del usuario que lo ha ejecutado. Este permiso no tiene efecto en directorios.

117

5
slo tiene validez en algunos sistemas y no est muy extendido.

Gestin de permisos

SGID (set group id): se comporta de forma similar al permiso SUID pero la ejecucin se realiza con los permisos del grupo al que pertenece el fichero. Su uso en directorios

Sticky bit: usado principalmente para directorios. Cuando un directorio tiene activado el sticky bit, un usuario slo puede borrar los ficheros que posee o para los que tiene acceso de escritura explcito. Este permiso se usa generalmente en el directorio /tmp. Este directorio posee permiso de escritura para todo el mundo pero un usuario slo puede borrar los ficheros que haya creado.

Cuando se crea un fichero o directorio, automticamente se les asigna un propietario y un grupo. Generalmente se le asigna el usuario actual y el grupo del directorio donde se crea el fichero. Se pueden cambiar el propietario y grupo de un fichero mediante los comandos 'chgrp' y 'chown'.

5.2. VISUALIZACIN DE LOS PERMISOS El propietario, grupo y permisos de un fichero se pueden visualizar mediante el comando 'ls l'. Veamos el contenido del directorio home de nuestro usuario de prueba:

/home/manuel$ ls -l total 228 -rwx------rw-------rw------drwx------rw------1 manuel 1 manuel 1 manuel 2 manuel 1 manuel manuel 5251 Sep 16 20:09 gcookbook.pl manuel 7983 Sep 17 15:39 INSTALL.txt manuel 48383 Sep 16 20:09 ps99.jpg manuel 4096 Sep 16 20:28 tmp/ manuel 156809 Sep 17 15:39 xli-1.17.0-4mdk.i586.rpm

En la primera columna del listado se muestran los permisos, en la tercera el propietario y en la cuarta el grupo.

118

5
5.3. INTERPRETACIN DE LOS PERMISOS tiene la siguiente forma:

Gestin de permisos

La representacin de los permisos puede resultar confusa a primera vista. Para ver mejor qu permisos son aplicables a un fichero, activaremos todos los bsicos en el fichero INSTALL.txt (ms adelante se detallar cmo se realiza esta operacin). El listado ahora

/home/manuel$ ls -l INSTALL.txt -rwxrwxrwx 1 manuel manuel 7983 Sep 17 15:39 INSTALL.txt*

Centrmonos ahora en la primera columna. Los permisos se representan mediante una cadena de 9 bits. El primer campo no es binario e indica el tipo de la entrada. El significado de cada uno de los bits es el siguiente: 1. Tipo de la entrada: - Fichero normal d Directorio l Enlace simblico c Dispositivo de caracteres b Dispositivo de bloques 2. 3. 4. 5. 6. 7. 8. 9. r (read, lectura) para owner (propietario) w (write, escritura) para owner (propietario) x (execute, ejecucin) para owner (propietario) r (read, lectura) para grupo (grupo) w (write, escritura) para grupo (grupo) x (execute, ejecucin) para grupo (grupo) r (read, lectura) para el resto w (write, escritura) para el resto

10. x (execute, ejecucin) para el resto En el anterior ejemplo, vemos que el fichero INSTALL.txt tiene todos los permisos activados. Eso significa que permite acceso de lectura, escritura y ejecucin para el propietario, el grupo y el resto de los usuarios del sistema. El primer bit no indica ningn permiso, sino el tipo del fichero. En este caso, es un fichero normal ya que presenta un guin '-' en ese campo.

119

5
5.4. MODOS DE REPRESENTACIN DE PERMISOS en unas circunstancias determinadas. 5.4.1. Modo simblico de permisos El formato de los modos simblicos es:

Gestin de permisos

Existen dos modos diferentes de indicar al sistema los permisos de un fichero, el modo simblico y el modo numrico. Conviene conocer los dos modos porque cada uno se utiliza

[ugoa...][[+-=][rwxXstugo...]...][,...]

Las operaciones simblicas bsicas son aadir, eliminar y asignar un determinado permiso. Estas operaciones tienen el siguiente formato:

USUARIOS OPERACIN PERMISOS

Los espacios se han aadido para aumentar la legibilidad. Una operacin real no contiene espacios. La parte de USUARIOS indica para qu usuarios se va a cambiar los permisos. Consiste en una o ms de las siguientes letras sin importar el orden: u (user) Usuario que posee el fichero. g (group) Usuarios en el mismo grupo que el fichero. (other) El resto de usuarios. a (all) Todos los usuarios. Es equivalente a 'ugo'.

La parte OPERACIN indica cmo va a cambiar el acceso al fichero. Es uno de los siguientes smbolos: +: Aade PERMISOS a los permisos que USUARIOS tuvieran en el fichero. : Elimina PERMISOS de los permisos que USUARIOS tuvieran en el fichero. =: Asigna exactamente PERMISOS a USUARIOS en el fichero.

120

5
parte de cero o ms de las siguientes letras: r (Read) Permiso a USUARIOS para leer el fichero. w (Write) Permiso a USUARIOS para escribir el fichero. x (Execute) Permiso a USUARIOS para ejecutar el fichero.

Gestin de permisos

La parte de PERMISOS indica que tipo de acceso se debe cambiar al fichero. Al igual que la USUARIOS el orden no importa cuando se escriben ms de una letra. PERMISOS puede ser

De la misma forma que podemos modificar los permisos bsicos, podemos cambiar tambin los permisos extendidos: Para cambiar el permiso SUID, utilizaremos 'u' en USUARIOS y 's' en PERMISOS. Para cambiar el permiso GUID, utilizaremos 'g' en USUARIOS y 's' en PERMISOS. Para cambiar el permiso Sticky, utilizaremos 'o' en usuario y 't' en PERMISOS. El modo simblico se entiende rpidamente mediante unos ejemplos. Por ejemplo, para dar a todos el permiso de leer y escribir un fichero pero no ejecutarlo usaremos:

a=rw

Para eliminar el permiso de escritura para los usuarios del mismo grupo que el del fichero usaremos:

g-w

Para activar el permiso SUID a un programa, usaremos:

u+s

Para eliminar los permisos SUID y GUID de un programa, usaremos:

ug-s

121

5
5.4.2. Modo numrico de los permisos lenguaje C. Lo primero es saber en binario los nmeros del 0 al 7: 0=0 / 1=1 / 2=10 / 3=11 / 4=100 / 5=101 / 6=110 /

Gestin de permisos

Los permisos de los ficheros se almacenan internamente como enteros. Se puede utilizar un nmero en octal (base 8) para asignarle unos permisos determinados a un fichero. Este nmero siempre se interpreta en octal, no hay que precederlo de un 0 como se hace en el

7=111.

Ahora hemos de saber que cada permiso consta a su vez de tres permisos: lectura, escritura y ejecucin. Como tenemos tres grupos de usuarios (propietario, grupo y otros), les ponemos a cada uno las posibilidades que queramos, dndonos un grupo de nueve cifras (tres grupos de tres). Entonces no tenemos ms que substituir cada grupo de tres en binario por su equivalente en decimal. Recordemos que r ser lectura, w escritura y x ejecucin. Ejemplos: Propietario (rwx), grupo (r-x), otros (r-x). Esto dara como resultado lo siguiente: 111/101/101, donde se pone 1 donde el permiso est concedido, y 0 donde no. Pasamos a decimal (111 es 7 / 101 es 5 / 101 es 5). De este modo, con las caractersticas que deseamos queremos poner el permiso 755, y la orden sera como en este ejemplo, donde Rf significa que sea retrospectivo a todos los archivos que haya en la carpeta y subcarpetas: # chmod 755 Rf /home/usuario/ Otro ejemplo sera: rwx/rw-/r-Aqu el permiso sera 741. Igualmente hemos de hacerlo con cualquier otra combinacin. Por ejemplo, el modo numrico 4755 se corresponde con el modo simblico `u=rwxs,go=rx'.

122

5
El modo numrico 664 se corresponde con `ug=rw,o=r'. El modo numrico 0 se corresponde con el modo simblico 'ugo='. 5.5. EJEMPLOS DEL USO DE PERMISOS

Gestin de permisos

Veamos un caso prctico del uso de los permisos. Para modificar los permisos de un fichero utilizaremos el comando chmod que sigue el siguiente formato en su llamada:

chmod [OPCIONES]... MODO[,MODO]... FICHERO... chmod [OPCIONES]... MODO-OCTAL FICHERO...

Como es habitual, podremos consultar la ayuda del comando mediante la opcin '--help', la pgina del manual o el sistema info. Partimos de la siguiente situacin:

/home/manuel/tmp$ ls -l total 48 -rw------- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg

Tenemos un fichero normal de nombre ps99.jpg que pertenece al usuario ramon y al grupo ramon. Tiene permisos de lectura y escritura para el propietario (ramon). Vamos a aadir permiso de lectura para todos los usuarios usando el modo simblico:

/home/manuel/tmp$ chmod a+r ps99.jpg /home/manuel/tmp$ ls -l total 48 -rw-r--r-- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg

Como se puede ver, los permisos para el propietario no han variado puesto que ya dispona de permiso de lectura. Vamos a eliminar ahora el permiso de lectura para 'otros' mientras aado permiso de escritura para el grupo.

123

5
/home/manuel/tmp$ chmod o-r,g+w ps99.jpg /home/manuel/tmp$ ls -l total 48 -rw-rw---- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg Restauremos los permisos iniciales usando notacin numrica:

Gestin de permisos

/home/manuel/tmp$ chmod 600 ps99.jpg /home/manuel/tmp$ ls -l total 48 -rw------- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg

Podemos modificar los permisos de varios ficheros simultneamente, incluso usando comodines.

/home/manuel/tmp$ ls -l total 224 -rwx------ 1 manuel manuel 5251 Sep 17 18:38 gcookbook.pl* -rwxrwxr-x 1 manuel manuel 7983 Sep 17 18:38 INSTALL.txt* -rw------- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg -rw------- 1 manuel manuel 156809 Sep 17 18:38 xli-1.17.0-4mdk.i586.rpm /home/manuel/tmp$ chmod 600 * /home/manuel/tmp$ ls -l total 224 -rw------- 1 manuel manuel 5251 Sep 17 18:38 gcookbook.pl -rw------- 1 manuel manuel 7983 Sep 17 18:38 INSTALL.txt -rw------- 1 manuel manuel 48383 Sep 16 20:30 ps99.jpg -rw------- 1 manuel manuel 156809 Sep 17 18:38 xli-1.17.0-4mdk.i586.rpm

124

5
recuerde_
usuario, al grupo o al resto de usuarios.

Gestin de permisos

En UNIX, todos los ficheros y directorios del sistema tienen asignados usuario y grupo propietarios junto con una serie de permisos de acceso. Los permisos son: lectura, escritura y ejecucin y pueden ser asignados al

Existen permisos especiales (UID, SGID) que modifican la forma de ejecutar programas, ya que se usarn los privilegios del usuario o grupo propietarios. Por otro lado, el permiso sticky bit suele ser usado con directorios.

Los permisos se pueden visualizar mediante ls l . Existen dos modos de indicar los permisos: modo simblico y modo numrico.

125

6
ndice_

Introduccin a la gestin de usuarios

6.1. INTRODUCCIN A LA GESTIN DE USUARIOS ...........................129 6.1.1. Creacin de un usuario ...................................................130 6.1.1.1. Almacenamiento interno de usuarios: ficheros passwd y shadow ................................131 6.1.2. Bloqueo de un usuario ....................................................134 6.1.3. Eliminacin de un usuario...............................................134 6.2. GESTIN DE GRUPOS ................................................................135 6.2.1. Almacenamiento interno de grupos ................................135

127

6
6.1. INTRODUCCIN A LA GESTIN DE USUARIOS

Introduccin a la gestin de usuarios

Linux es un sistema operativo multiusuario y debido a esta caracterstica, todos los accesos al sistema se deben realizar usando una cuenta de usuario. Aunque generalmente un usuario es una persona fsica, esto no siempre es as ya que algunos servicios utilizan una cuenta de usuario para ejecutarse. Cuando se crea una cuenta de usuario, tambin llamado dar de alta al usuario, el administrador, o en su defecto el sistema, le asigna un identificador UID (User Identification number). Este UID es un nmero entero que la mquina utiliza internamente, para identificar a los usuarios. Un grupo es un conjunto de usuarios con algn elemento en comn. Cada usuario debe pertenecer, al menos, a un grupo. Un grupo puede contener a varios usuarios aunque se puede dar el caso de que exista un grupo al que no pertenece ningn usuario. Adems, la organizacin por grupos permite al administrador asignar permisos sin necesidad de hacerlo a cada usuario individualmente. El administrador del sistema debe clasificar a los usuarios en grupos siguiendo diferentes mtodos. Para realizar esta clasificacin, se pueden utilizar polticas como las siguientes: Cada usuario pertenece a su propio grupo (generalmente con el mismo nombre). Esta es la poltica por defecto que utilizan muchas distribuciones. Todos los usuarios pertenecen a un mismo grupo. No suele ser una opcin recomendable cuando el nmero de usuarios es elevado. Una combinacin de las dos anteriores. Por ejemplo, cada usuario pertenece a un grupo con su nombre pero tambin pertenece a otros grupos como profesores, alumnos, dpto. contabilidad, etc. La tendencia que siguen casi todos los sistemas UNIX actuales consiste en crear un grupo por cada usuario del sistema. Adems de a este grupo personal, podemos hacer que el usuario pertenezca a otros grupos comunes de la mquina.

129

6
6.1.1. Creacin de un usuario (secundarios) a los que va a pertenecer el nuevo usuario.

Introduccin a la gestin de usuarios

Internamente, la creacin de un usuario implica los siguientes pasos: a. Asignar un username (nombre de usuario) y un grupo (principal) o grupos b. Almacenar esta informacin en los archivos /etc/passwd y /etc/group. c. Asignarle una contrasea al nuevo usuario. d. Modificar la cuenta mediante una serie de modificadores. e. Crear el directorio home del usuario. Generalmente ser /home/usuario. f. Copiar los archivos de sistema bsicos al directorio creado. g. Cambiar los permisos del directorio y todo su contenido al nuevo usuario. h. Dar de alta el usuario en otros servicios del sistema: Impresoras, cuotas de disco, etc. i. Probar la cuenta creada. Aunque es posible realizar todos estos pasos manualmente, esto no es lo normal. Lo habitual ser utilizar uno de los siguientes comandos: adduser o useradd (ambos crean un usuario, aunque la primera opcin es ms completa que la segunda) o alguna herramienta grfica en X Window. Los comandos adduser (o useradd), deluser (o userdel) y usermod nos permiten, respectivamente, crear, borrar y modificar cuentas de usuario. Por ejemplo, para crear un nuevo usuario 'alex' utilizando los valores por defecto del sistema, escribiremos:

# useradd alex

Para crear un nuevo usuario 'alex' aadiendo nosotros los valores, escribiremos:

# adduser alex

A continuacin tendremos que asignarle una contrasea a la cuenta creada usando el comando passwd: El usuario root puede cambiar la contrasea de cualquier otro usuario del sistema, sin embargo un usuario slo puede cambiar la contrasea a l mismo.

# passwd alex Changing password for user alex

130

6
New UNIX password: Retype new UNIX password:

Introduccin a la gestin de usuarios

passwd: all authentication tokens updated successfull

Como es habitual con todos los programas que manejan informacin confidencial, el comando 'passwd' no muestra en pantalla las contraseas a medida que se teclean. 6.1.1.1. Almacenamiento interno de usuarios: ficheros passwd y shadow Toda la informacin sobre los usuarios de un sistema se encuentra almacenada en el fichero /etc/passwd. ste es un archivo de texto ASCII con un contenido similar al siguiente:

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: gdm:x:42:42:GDM User:/var/lib/gdm: htdig:x:51:51:HTDIG User:/var/www/html/htdig: dhcpd:x:19:19:Dhcpd User:/var/dhcpd: manuel:x:504:504::/home/ramon:/bin/bash

Habitualmente, el fichero es de mayor longitud pero, en este caso, se han eliminado algunas lneas para aumentar la legibilidad. El archivo passwd contiene una lnea por cada usuario dado de alta en el sistema. Como vimos antes, tambin aparecen pseudo usuarios como htdig, lp, etc., que no son personas reales sino mecanismos que utilizan algunos servicios para ejecutarse. Vemos que todas las lneas del fichero estn compuestas de unos campos separados por el carcter dos puntos ':'. El significado de cada uno de estos campos es el siguiente: Username: nombre asignado al usuario. Password: contrasea cifrada del usuario. Si en este campo aparece una 'x', eso indica que el sistema est utilizando shadow password. sta es una tcnica que permite aumentar la seguridad y que veremos a continuacin.

131

6
con el mismo UID.

Introduccin a la gestin de usuarios

UID: identificador numrico del usuario. No pueden existir dos usuarios en el sistema

GID: identificador numrico del grupo primario al que pertenece el usuario. Un usuario puede pertenecer a varios grupos pero slo ste se considerar como primario. GECOS: este campo suele contener el nombre completo del usuario junto con otra informacin que se considere de inters. El usuario puede cambiar el contenido de este campo haciendo uso del comando 'chfn'.

Directorio home: directorio de trabajo del usuario. Habitualmente estar localizado en /home/nombre_del_usuario.

Shell: indica el intrprete de comandos (shell) que utilizar el usuario en su trabajo. El usuario puede cambiar su shell haciendo uso del comando 'chsh'.

Por ejemplo, analicemos la ltima lnea de nuestro fichero /etc/passwd de ejemplo.

manuel:x:504:504::/home/ramon:/bin/bash

Podemos observar que el username es ramon y su password es 'x' lo que nos indica que se estn usando 'shadow passwords'. Tambin podemos deducir que el UID y GID es 504. En este caso, el campo GCOS se encuentra vaco. Aunque esto es perfectamente vlido lo habitual es que en el campo GCOS aparezca el nombre del usuario. Podemos ver tambin que el directorio home de ramon es /home/ramon y que est utilizando el shell bash cuyo ejecutable se encuentra localizado en /bin/bash. El archivo /etc/passwd debe tener permisos de lectura para todos los usuarios del sistema. En apariencia, esto no parece ser un problema dado que las claves se guardan cifradas. En la realidad, esto no es as debido al sistema que emplea UNIX para el cifrado de claves. Cuando un usuario crea un password, el sistema lo encripta utilizando una funcin de una sola va y lo almacena en el fichero passwd. La utilizacin de una funcin de una va nos asegura que, desde la contrasea cifrada, no es posible recuperar la original. Cuando un usuario hace login, el sistema cifra la clave introducida utilizando la misma funcin y la compara con la almacenada en el fichero passwd. Si las claves coinciden, se le permite el acceso.

132

Introduccin a la gestin de usuarios

Tenemos entonces un fichero con unas contraseas almacenadas cifradas de las que no se pueden obtener las originales. Cul es el problema entonces?. El problema proviene del hecho de que, al igual que en el proceso de login, el sistema comprueba si la contrasea coincide con alguna almacenada, la misma operacin la puede realizar un atacante. Existen programas que comprueban sistemticamente miles de claves sobre un archivo passwd. Esta tcnica se denomina "ataque por fuerza bruta" y, generalmente, es bastante efectiva ya que los usuarios, y algunas veces el propio administrador, eligen claves muy sencillas de descifrar como sus nombres, ciudad de nacimiento, etc. Para solventar este problema se desarroll el sistema de shadow passwords. La idea consiste en extraer el campo de la clave del fichero passwd y trasladarlo a un fichero /etc/shadow donde slo el administrador tenga permisos de lectura. Cuando se estn utilizando shadow passwords, en el archivo /etc/passwd aparecer, en vez de la contrasea cifrada, el carcter 'x'. Un archivo /etc/shadow tiene un aspecto similar al siguiente:

root:$1$Ef1e3X.T$lnjNLNAs1EB7Hp9TzTwYx0:11892:0:99999:7::: bin:*:11892:0:99999:7::: daemon:*:11892:0:99999:7::: adm:*:11892:0:99999:7::: lp:*:11892:0:99999:7::: sync:*:11892:0:99999:7::: shutdown:*:11892:0:99999:7::: halt:*:11892:0:99999:7:::

Como se puede observar, el formato del archivo /etc/shadow es similar al del archivo /etc/passwd. Los campos importantes son el primero y el segundo. En el primero se guarda el nombre del usuario y el segundo almacena, ahora s, la contrasea cifrada. En este caso, podemos ver la contrasea cifrada del usuario root. El resto de usuarios tiene un * en el segundo campo, lo que quiere decir que dichos usuarios no podrn acceder al sistema (si alguien intenta hacerse pasar por ellos). Puesto que este fichero slo tiene permisos de lectura para el superusuario, un atacante, actuando como un usuario sin privilegios, no puede acceder a las contraseas cifradas.

133

6
6.1.2. Bloqueo de un usuario

Introduccin a la gestin de usuarios

En ocasiones, sabemos que algn usuario de nuestro sistema dejar de usarlo durante un perodo largo de tiempo. Como medida de seguridad, convendr bloquear la cuenta para que no se pueda utilizar hasta que el usuario legtimo vuelva a hacer uso del sistema. Para bloquear una cuenta, usaremos el comando passwd -l. Por ejemplo, para bloquear la cuenta del usuario alex, actuaremos de la siguiente forma:

# passwd -l alex

Para desbloquear una cuenta, usaremos nuevamente el comando 'passwd -u alex'.

# passwd -u alex Changing password for user alex Unlocking password for user alex passwd: Success

6.1.3. Eliminacin de un usuario Cuando estemos seguros de que un usuario ha dejado de hacer uso del sistema de forma definitiva, deberemos borrar la cuenta. Es una buena costumbre avisar al usuario antes del borrado de su cuenta por si desea salvar la informacin de su directorio home. Para eliminar una cuenta usaremos el comando userdel. Por ejemplo, para eliminar la cuenta del usuario alex teclearemos:

# userdel alex

Si adems queremos eliminar tambin la informacin de su directorio home, su cola de correo, etc., usaremos 'userdel -r':

# userdel -r alex

134

6
6.2. GESTIN DE GRUPOS

Introduccin a la gestin de usuarios

La gestin de grupos se realiza de forma similar a la gestin de usuarios. Usaremos los comandos groupadd (o addgroup), groupdel (o delgroup) y groupmod para crear, eliminar y modificar grupos respectivamente. El funcionamiento de estos comandos es muy sencillo. Por ejemplo, para crear un nuevo grupo procederemos de la siguiente forma:

# groupadd contabilidad

Aadiremos el usuario 'manuel' al grupo 'contabilidad':

# usermod -G contabilidad manuel

Eliminaremos un grupo de la siguiente forma:

# groupdel contabilidad

6.2.1. Almacenamiento interno de grupos Anlogamente al archivo /etc/passwd para almacenar los usuarios, existe el archivo /etc/group donde se guardan los grupos. Este archivo tiene un contenido similar al siguiente:

root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon,ldap,rpc sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5:galan disk:x:6:root lp:x:7:daemon,lp mem:x:8: kmem:x:9: wheel:x:10:root mail:x:12:mail

135

6
por ':'. La interpretacin de los campos es la siguiente: Nombre: nombre del grupo. 'x'.

Introduccin a la gestin de usuarios

Al igual que el fichero passwd, el fichero group tambin est dividido en campos separados

Clave de acceso: en sistemas Linux, esta clave no se utiliza y siempre tendr el valor

GID: identificador numrico del grupo. Este nmero es el que realmente utiliza el sistema en sus operaciones internas.

Usuario: lista de usuarios adscritos al grupo. Si hay ms de un usuario, se separarn por comas.

136

6
recuerde_
una cuenta de usuario. una contrasea.

Introduccin a la gestin de usuarios

En una mquina UNIX, todos los accesos al sistema deben hacerse utilizando

Dentro del sistema, cada usuario se identifica por un nombre de usuario y

Es posible agrupar a distintas personas dentro de un grupo de usuarios para dotarlos de permisos comunes.

Toda la informacin sobre los usuarios y grupos del sistema se guarda en los ficheros /etc/passwd y /etc/group.

Si, por seguridad, la mquina est utilizando 'shadow passwords', las contraseas se guardarn en /etc/shadow.

137

7
ndice_

Gestin de software en Debian

7.1. INSTALACIN Y GESTIN DE SOFTWARE...................................141 7.2. MANIPULACIN DE PAQUETES EN DEBIAN ................................142 7.2.1. Fichero sources.list.........................................................142 7.2.2. Apt .................................................................................143 7.2.3. Dpkg ..............................................................................146 7.3. INSTALACIN DE SOFTWARE DESDE LOS FUENTES....................147 7.3.1. El formato .tar.gz (tgz) ...................................................148 7.3.2. Compilacin....................................................................149

139

7
7.1. INSTALACIN Y GESTIN DE SOFTWARE

Gestin de software en Debian

Algunas de las tareas ms importantes de un administrador de sistemas son las relacionadas con la gestin del software. De hecho, a requerimiento de los usuarios, el administrador debe instalar diversos programas y comprobar que funcionen adecuadamente. Las tareas de administracin de software han sido tradicionalmente muy complejas y propensas a fallos. Hace unos aos, el administrador de un sistema Linux obtena los programas en cdigo fuente y deba instalarlos a mano, cuidando de que no se produjese un conflicto con alguna aplicacin ya instalada. Aunque la instalacin de software desde las fuentes es adecuada en algunas circunstancias, no es una prctica cmoda y puede resultar compleja para usuarios sin muchos conocimientos. Con la creacin de los sistemas de paquetes RPM y DEB, la situacin ha cambiado radicalmente. Un paquete es un archivo que contiene una o varias aplicaciones junto con informacin relativa a esas aplicaciones. Actualmente, la instalacin de una aplicacin puede ser tan sencilla como seleccionarla en un men, mientras que un programa automticamente la obtiene de un CD o Internet, comprueba las dependencias y la instala en nuestro sistema. Habitualmente, usaremos aplicaciones preparadas para nuestra distribucin y es que una de las ventajas de utilizar una distribucin conocida, es la gran cantidad de software listo para instalar que proporciona. Adems, todo este software ha sido probado de tal forma que funcione correctamente instalado en la misma mquina. Es muy comn en Linux que una aplicacin dependa de otras, ya sea mediante la lnea de comandos o utilizando libreras. Esta relacin provoca, especialmente en aplicaciones grandes, que instalar un programa nos obligue a instalar otros muchos de los que depende. Este problema se agrava cuando la aplicacin no slo depende de otras, sino que tambin depende de una determinada versin de otra aplicacin. El problema de las dependencias entre aplicaciones ha sido, en parte, solucionado con el uso de paquetes. Una ventaja importante de usar software en paquetes, consiste en la gestin de las actualizaciones. Por ejemplo, si estamos ejecutando un servidor web y queremos actualizarlo a una versin ms nueva, automticamente el sistema se encarga de detener el servicio, actualizar el software y volver a arrancar el servidor sin necesidad de que el administrador intervenga. Actualmente existen dos sistemas de gestin de paquetes muy extendidos, el RPM (propio de las aplicaciones basadas en Red Hat) y el DEB (perteneciente a las aplicaciones basadas en

141

7
comprimido y sin informacin extra de ningn tipo. 7.2. MANIPULACIN DE PAQUETES EN DEBIAN

Gestin de software en Debian

Debian). El cdigo fuente se suele distribuir en formato tar.gz, es decir, simplemente

Los paquetes de software utilizados por la distribucin Debian se reconocen por la extensin .deb. A diferencia de los paquetes RPM, las posibilidades del formato DEB proporcionan a Debian su facilidad de instalacin y actualizacin. Para la gestin de los paquetes en Debian existen dos tipos de herramientas: De bajo nivel: El nico programa que encontramos aqu es dpkg, el instalador de paquetes individuales .deb. Su nico objetivo es instalar, actualizar, eliminar un solo paquete. El aspecto negativo de esta herramienta es que no resuelve dependencias: si intentamos instalar un programa que depende de otros, no lo instalar. De alto nivel: En esta categora encontramos ms programas, algunos de ellos para X Window. Estos gestores si resuelven las dependencias, de tal manera que si intentamos instalar un programa que dependa de otros, primero instalar los otros y luego el que nosotros pedimos, automticamente. Ejemplos de este tipo de programas: Apt Dselect Aptitude Synaptic

Apt, dselect y aptitude son programas de texto para la consola mientras que Synaptic funciona bajo X Window. 7.2.1. Fichero sources.list La funcin del fichero /etc/apt/sources.list es almacenar la lista de fuentes (en ingls, sources) desde donde descargar o copiar los paquetes .deb. Estas fuentes pueden ser de dos tipos: URL: direcciones http, ftp o directorios locales. CD-ROM: los CD-ROM de la distribucin Debian.

142

7
#apt-cdrom add sources.list relativa a l. El otro comando es

Gestin de software en Debian

Existen dos tiles comandos para modificar este fichero. Por un lado, si queremos introducir un CD-ROM como una fuente donde buscar paquetes, debemos ejecutar la orden:

A continuacin el sistema nos pedir que insertemos el CD y actualizar la informacin de

#apt-setup

Y nos mostrar una ventana en la consola desde donde podremos elegir cmodamente que tipos de fuentes deseamos introducir en sources.list. Sin embargo, ya que sources.list es un fichero de texto, podemos editarlo (vi, nano, emacs,) e introducir nosotros mismos los fuentes de paquetes. Puede encontrar ms informacin sobre sources.list y apt-cdrom en sus pginas man. Si dispone de conexin a Internet no dude en incluir fuentes para poder descargar paquetes desde cualquiera de los mltiples sitios disponibles. De esta manera podr tener su sistema ms actualizado que con los CD de la distribucin. Puede consultar ms informacin sobre sources.list en su pgina man. 7.2.2. Apt Para poder manipular paquetes mediante APT necesitamos conocer el nombre de dicho paquete. Para esto podemos usar los comandos apt-cache que buscan en la base de datos de paquetes disponibles. Los comandos ms usados de este tipo son:

Comando apt-cache search <nombre> apt-cache show <paquete>

Funcin Busca en la lista de paquetes disponibles para instalar, aquellos que estn relacionados con <nombre>. Muestra informacin sobre el paquete especificado.

Veamos un ejemplo de utilizacin de estas rdenes para buscar el paquete correspondiente al navegador Firefox. Empezamos buscando la palabra firefox en la base de datos, ya que por ahora es lo nico que sabemos pues el nombre concreto del paquete puede ser otro.

143

7
#apt-cache search firefox mozilla-firefox - lightweight web browser based on Mozilla

Gestin de software en Debian

mozilla-firefox-dom-inspector - tool for inspecting the DOM of pages in Mozilla Firefox mozilla-firefox-locale-ca - Mozilla Firefox Catalan language/region package mozilla-firefox-locale-de - Mozilla Firefox German Language/Region Package mozilla-firefox-locale-es - Mozilla Firefox Language/Region Package mozilla-firefox-locale-fr - Mozilla Firefox Language/Region Package mozilla-firefox-locale-gl - Mozilla Firefox Galician language package mozilla-firefox-locale-it - Mozilla Firefox Italian Language/Region Package mozilla-firefox-locale-ja - Mozilla Firefox Japanese Language/Region Package mozilla-firefox-locale-nb - Mozilla Firefox Norwegian Bokml Language/Region Package mozilla-firefox-locale-tr - Mozilla Firefox Turkish Language/Region Package mozilla-firefox-locale-uk - Mozilla Firefox Ukrainian Language/Region Package

Obtenemos en la salida varios paquetes que contienen la palabra buscada, pero muchos corresponden a traducciones, y el primero es el que parece ser el paquete principal, as que vamos a ver la informacin de l:

#apt-cache show mozilla-firefox Package: mozilla-firefox Priority: optional Section: web Installed-Size: 28020 Maintainer: Eric Dorland <eric@debian.org> Architecture: i386 Version: 0.9.3-2.2 Provides: www-browser Depends: fontconfig, psmisc, debianutils (>= 1.16), libatk1.0-0 (>= 1.6.0), libc6 (>= 2.3.2.ds1-4), libfontconfig1 (>= 2.2.1), libfreetype6 (>= 2.1.5-1), libgcc1 (>= 1:3.4.1-3), libglib2.0-0 (>= 2.4.1), libgtk2.0-0 (>= 2.4.4), libidl0, libjpeg62, libpango1.0-0 (>= 1.4.1), libpng12-0 (>= 1.2.5.0-4), libstdc++5 (>= 1:3.3.4-1), libx11-6 | xlibs (>> 4.1.0), libxext6 | xlibs (>> 4.1.0), libxft2 (>> 2.1.1), libxp6 | xlibs (>> 4.1.0), libxrender1, libxt6 | xlibs (>> 4.1.0), zlib1g (>= 1:1.2.1) Recommends: xprt-xprintorg Suggests: latex-xft-fonts Filename: pool/main/m/mozilla-firefox/mozilla-firefox_0.9.3-2.2_i386.deb Size: 9836480 MD5sum: 2665daf29a92fbcafac0a88ab7246dc6

144

7
. This browser was previously known as Firebird and Phoenix.

Gestin de software en Debian

Description: lightweight web browser based on Mozilla Firefox is a redesign of the Mozilla browser component, similar to Galeon, K-Meleon and Camino, but written using the XUL user interface language and designed to be lightweight and cross-platform.

Como podemos ver, este era el paquete pues proporciona una navegador www, como se indica en la lnea Provides. Una vez que ya sabemos que queremos instalar, podemos usar los comandos apt-get. No tenemos que preocuparnos de problemas de dependencias ya que apt es lo suficientemente inteligente como para gestionarlas (podemos ver las dependencias del paquete mozillafirefox en la lnea Depends).

Comando apt-get install <paquete1> <paquete2> Instala los

Funcin paquetes cuyo nombre le

indiquemos. apt-get remove <paquete1> <paquete2> Borra los paquetes que le indicamos. No elimina los ficheros de configuracin. apt-get purge remove <paquete1> <paquete2>.. Borra el paquete completamente, incluyendo los ficheros de configuracin. Utiliza las fuentes definidas en sources.list apt-get update para buscar este paquetes comando nuevos. cada Debera vez que ejecutar

modifique el fichero de fuentes y al menos 1 vez por semana. apt-get upgrade Actualiza aquellos programas de los que existen nuevas versiones. apt-get dist-upgrade Nos permite actualizarnos de distribucin (estable, inestable, testing)

145

7
Para el ejemplo anterior, instalaramos firefox mediante: #apt-get install mozilla-firefox

Gestin de software en Debian

La versin estable de Debian, aunque contiene programas antiguos con respecto a la distribucin inestable, es la mejor opcin para un servidor. No obstante si lo que desea es disfrutar del ltimo software disponible deber instalar los paquetes de la distribucin SID o Testing. Para ello tendr que buscar fuentes de SID o Testing y aadirlas al fichero sources.list (normalmente slo hay que cambiar en este fichero la palabra stable por instable o testing). Se recomienda que elimine entonces todas las fuentes de la distribucin estable. A continuacin, debe actualizar la distribucin mediante:

#apt-get dist-upgrade

Puede hallar ms informacin sobre apt, apt-get y apt-cache en sus pgina man. 7.2.3. Dpkg La utilizacin de esta herramienta slo esta recomendada cuando nos encontremos con paquetes Debian individuales. Recuerde tambin que no resuelve dependencias.

Comando dpkg i <nombre-paquete>.deb

Funcin Instala un paquete .deb. Desinstala un paquete. No borra los ficheros de configuracin.

dpkg --remove <nombre-paquete>

dpkg --purge remove <nombre-paquete>

Desinstala un paquete borrando tambin los ficheros de configuracin.

Puede consultar ms opciones sobre dpkg en su pgina man.

146

7
7.3. INSTALACIN DE SOFTWARE DESDE LOS FUENTES fuentes.

Gestin de software en Debian

Aunque la forma ms habitual de instalar software en un servidor Debian es usando paquetes DEB, existen diversas razones para instalar una aplicacin compilndola desde los

Algunas razones para instalar un programa desde las fuentes en lugar de utilizar un DEB son: Ausencia de un paquete DEB: Debian, al igual que otras distribuciones, proporciona una gran cantidad de software en forma de paquetes pero, lgicamente, no abarcan todo las aplicaciones disponibles en Linux. Puede darse el caso de que necesitemos utilizar un programa que no est disponible como DEB. DEB antiguo: desde que se distribuye el cdigo fuente de un programa hasta que los DEB creados por una distribucin llegan a los usuarios pasa un tiempo. La opcin ms rpida para tener siempre la mquina actualizada es compilar el software desde las fuentes. Compilacin a medida: determinadas aplicaciones, especialmente las grandes, proporcionan muchas opciones en el proceso de compilacin. Puede darse el caso de que el paquete DEB incluido en nuestra distribucin no est compilado con las opciones que nos son necesarias. DEBs alterados: algunas aplicaciones admiten determinadas modificaciones

(parches), generalmente, para aumentar sus posibilidades. Es bastante comn que algunas distribuciones incluyan software parcheado que difiera del original. En algunos casos, puede interesarnos disponer de la versin original del software. Conviene destacar que la instalacin de software en formato no DEB tambin puede provocar problemas: Conflicto con ficheros instalados: los paquetes proporcionados por el creador de la distribucin estn preparados para poderse instalar todos juntos sin que provoquen problemas. Determinadas aplicaciones pueden entrar en conflicto con software que tengamos instalado en el sistema. Problemas al desinstalar: el software que instalemos desde las fuentes no permite la posibilidad de desinstalarse de forma tan limpia como se puede hacer con un RPM.

147

7
aplicacin desde las fuentes.

Gestin de software en Debian

Veremos a continuacin, de forma genrica, los pasos que hay que dar para instalar una

Para compilar el cdigo fuente de un programa necesitaremos el compilador del lenguaje en el que est escrito. En Linux, los lenguajes ms utilizados son C y C++, por lo tanto, tendremos que instalar el compilador 'gcc'. Adems del compilador, tambin ser necesario instalar el programa make, que es el que realmente llamar a gcc. 7.3.1. El formato .tar.gz (tgz) El formato .tar.gz (tambin conocido como tarball) no se puede considerar un paquete como los DEB. Un fichero .tar.gz es un conjunto de ficheros empaquetados por el programa 'tar' y comprimidos usando 'gzip'. El equivalente de un .tar.gz en el entorno Windows sera cualquier tipo de fichero comprimido como zip o rar. Dado que un fichero '.tar.gz' no es un paquete, no guarda informacin sobre los ficheros que contiene. En formato '.tar.gz' es el ms utilizado a la hora de distribuir el cdigo fuente de las aplicaciones. Lo primero que debemos hacer con un .tar.gz es descomprimirlo. Si disponemos de una versin reciente del programa tar podremos descomprimirlo sin necesidad de usar primero gzip:

/home/ramon/tmp$ ls sqlite-2.4.6.tar.gz /home/ramon/tmp$ tar xzf sqlite-2.4.6.tar.gz

Si aadimos al comando 'tar' la opcin 'v', mostrar el nombre de los ficheros a medida que los vaya extrayendo. En el caso de que nuestra versin de 'tar' no permita descomprimir, usaremos la siguiente combinacin de comandos:

$ gzip -cd nombre_de_fichero.tar.gz | tar xvf -

El programa 'gzip' descomprime (opcin d) el fichero a la salida estndar (opcin c), a travs de la tubera (pipe). Esta informacin pasa al comando 'tar' que, utilizando la opcin -, recibe los datos a desempaquetar desde la entrada estndar.

148

7
recin creado para comenzar el proceso de compilacin. 7.3.2. Compilacin

Gestin de software en Debian

Independientemente de la frmula que usemos, el resultado ser el mismo. Habitualmente, el fichero se descomprime en un directorio con un nombre similar. Accederemos al directorio

Generalmente, todo el software para Linux se compila siguiendo las directrices marcadas por el proyecto GNU. Todos los programas GNU se compilan de la misma forma en todos los sistemas para los que estn disponibles. Esta homogeneidad proporciona una gran facilidad a la hora de compilar el instalar este tipo de programas. Los pasos para compilar un programa GNU son muy sencillos, en general, basta con ejecutar los siguientes comandos:

# ./configure # make # make install

'configure' es un script que adapta el cdigo fuente a las caractersticas de nuestro sistema. Adems, tambin comprueba que est instalado todo el software y libreras de los que depende la aplicacin que deseamos instalar. Si faltase algn elemento necesario, nos informara y cancelara el proceso. 'make' inicia el proceso de compilacin. Se mostrar por la terminal gran cantidad de informacin a medida que se van compilando los ficheros. La duracin de la compilacin depender del tamao de la aplicacin y de las capacidades de nuestra mquina como velocidad, memoria, etc. 'make install' realiza la copia de los programas ya compilados de la aplicacin a sus directorios definitivos con /bin, /usr/bin, etc. Este paso se debe realizar como 'root' ya que es el nico usuario que tiene permisos de escritura en esos directorios.

149

7
recuerde_
del administrador del sistema. informacin relativa a esas aplicaciones.

Gestin de software en Debian

La gestin del software de una mquina es una de las principales misiones

Un paquete es un archivo que contiene una o varias aplicaciones junto con

Debian usa el sistema de paquetes DEB. Los nombres de los paquetes terminan en .deb

Para gestionar los paquetes en Debian hay varias herramientas: dpkg es la ms bsica y solo trabaja con paquetes individuales. Para poder resolver dependencias debemos usar apt, deselect, aptitude o synaptic.

El software en paquete proporciona ventajas importantes con respecto al tradicional formato .tar.gz.

El formato habitual de distribucin de cdigo fuente es en ficheros .tar.gz.

150

8
ndice_

Estudio del kernel

8.1. ESTUDIO DEL KERNEL ...............................................................153 8.2. NUMERACIN DE LAS VERSIONES .............................................153 8.3. DMESG ......................................................................................154 8.4. PARMETROS DEL KERNEL ........................................................156 8.5. DIRECTORIO /PROC ..................................................................157 8.6. MDULOS DEL KERNEL ..............................................................160 8.7. DISPOSITIVOS ..........................................................................162 8.8. COMPILACIN DEL KERNEL .......................................................164 8.8.1. Descarga del kernel ........................................................165 8.8.2. Descompresin en /usr/src ............................................166 8.8.3. Configuracin .................................................................166 8.8.3.1. Categoras de configuracin ...............................169 8.8.4. Compilacin e instalacin ...............................................170

151

8
8.1. ESTUDIO DEL KERNEL caractersticas, fiabilidad y estabilidad del conjunto.

Estudio del kernel

Dentro de la estructura de capas que forma un sistema operativo, el Kernel es el software que se sita entre el hardware y los procesos de nivel de usuario. El Kernel es un componente fundamental dentro de cualquier sistema operativo y de l dependen las

Como se dijo en el captulo de introduccin, Linux es nicamente un Kernel. El resto de los programas que lo rodean no son exclusivos de Linux y, en muchos casos, tambin se encuentran disponibles para otros sistemas operativos. Las distintas distribuciones de Linux se diferencian en el software que proporcionan ya que el Kernel es comn.

8.2. NUMERACIN DE LAS VERSIONES Como cualquier otra pieza de software, el Kernel sigue una estricta numeracin entre las distintas versiones. El patrn seguido por la numeracin de las versiones del Kernel de Linux es el siguiente:

Nmero_Mayor.Nmero_Menor.Revisin

El significado de cada campo de la numeracin es: Nmero mayor: el nmero mayor vara con muy poca frecuencia. Actualmente, este nmero es un 2 y se puede decir que fue a partir de la versin 2.X.Y cuando comenz la etapa de madurez del Kernel. Probablemente pasen varios aos hasta que el nmero mayor cambie a 3 ya que el salto de 1 a 2 sucedi en 1996. Nmero menor: este nmero, adems de indicar la progresin de las versiones, indica a qu rama de desarrollo pertenece el Kernel. En la creacin del Kernel se siguen dos ramas, la estable y la de desarrollo. A los kernels de la rama estable se les asocia un nmero par mientras que la rama de desarrollo recibe un nmero impar. Las versiones estables son las que suelen usar todos los usuarios ya que son Kernels suficientemente probados y listos para funcionar en un entorno de produccin. En los kernels de desarrollo se prueban caractersticas, drivers y funciones que, ms tarde, pasan a los kernels estables.

153

8
mucho ms rpida que en las versiones estables. 8.3. DMESG

Estudio del kernel

Revisin: indica la progresin alcanzada en una de las dos ramas de creacin del Kernel. Habitualmente, en la rama de desarrollo, las revisiones avanzan de forma

El "Kernel Ring Buffer" (anillo de mensajes del Kernel) es una cola donde se almacenan los mensajes que genera el Kernel durante su ejecucin. El ncleo vuelca a este anillo, mensajes referentes a carga de dispositivos, de pilas de red, caractersticas del hardware detectado, etc. Por lo tanto, el anillo de mensajes del Kernel se constituye como una herramienta muy valiosa para saber qu est ocurriendo al nivel ms bajo del sistema. Para visualizar el contenido de este anillo usaremos el comando 'dmesg'. La salida de este comando la podemos redireccionar a un fichero para de esta forma almacenar informacin muy til de cara a solicitar asistencia tcnica, si existen problemas con el reconocimiento de algn hardware disponible en el sistema. Un extracto de la salida de dmesg (los mensajes varan de forma notable entre distintos sistemas) sera la siguiente:

$dmesg Linux version 2.6.7 (root@MAIDEN) (gcc version 3.3.4 (Debian 1:3.3.4-2)) #8 Sun Jun 27 12:18:22 CEST 2004 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 0000000017ffc000 (usable) BIOS-e820: 0000000017ffc000 - 0000000017fff000 (ACPI data) BIOS-e820: 0000000017fff000 - 0000000018000000 (ACPI NVS) BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) 383MB LOWMEM available. On node 0 totalpages: 98300

154

8
DMA zone: 4096 pages, LIFO batch:1 Normal zone: 94204 pages, LIFO batch:16 HighMem zone: 0 pages, LIFO batch:1 DMI 2.3 present. ACPI: RSDP (v000 ASUS) @ 0x000f5f50

Estudio del kernel

ACPI: RSDT (v001 ASUS A7V8X-X 0x42302e31 MSFT 0x31313031) @ 0x17ffc000 ACPI: FADT (v001 ASUS A7V8X-X 0x42302e31 MSFT 0x31313031) @ 0x17ffc0b2 ACPI: BOOT (v001 ASUS A7V8X-X 0x42302e31 MSFT 0x31313031) @ 0x17ffc030 ACPI: MADT (v001 ASUS A7V8X-X 0x42302e31 MSFT 0x31313031) @ 0x17ffc058 ACPI: DSDT (v001 ASUS A7V8X-X 0x00001000 MSFT 0x0100000b) @ 0x00000000 ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) Processor #0 6:8 APIC version 16 ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) Built 1 zonelists Kernel command line: BOOT_IMAGE=Linux-2.6.7 ro root=342 $

El uso principal de este comando es obtener informacin especfica sobre hardware detectado. Veamos algunos ejemplos: 1) Supongamos que tenemos un problema con nuestra tarjeta de red Ethernet o simplemente queremos obtener informacin sobre la tarjeta o comprobar que el Kernel la haya reconocido. Podemos utilizar este comando:

$dmesg | grep eth eth0: VIA VT6102 Rhine-II at 0xec000000, 00:0c:6e:37:5d:8c, IRQ 9. eth0: MII PHY found at address 1, status 0x786d advertising 01e1 Link 45e1. eth0: Setting full-duplex based on MII #1 link partner capability of 45e1.

Esto nos devolver todas las lneas del comando dmesg en las que aparece la palabra eth, es decir las de las tarjetas Ethernet, las ms comunes. Entre otras informaciones, como la direccin MAC, Linux nos responde que ha detectado una tarjeta de red RhineII, que le ha asociado la interrupcin 9 y que la hace accesible para nosotros a travs del dispositivo eth0. Si hubiera mas tarjetas de red Ethernet, se nombraran eth1, etc.

155

8
$dmesg | grep hd ide0: BM-DMA at 0xb800-0xb807, BIOS settings: hda:DMA, hdb:DMA ide1: BM-DMA at 0xb808-0xb80f, BIOS settings: hdc:DMA, hdd:DMA hda: ST340810A, ATA DISK drive hdb: ST38410A, ATA DISK drive hdc: TOSHIBA ODD-DVD SD-M1802, ATAPI CD/DVD-ROM drive

Estudio del kernel

2) Si quisiramos encontrar informacin sobre las unidades de disco IDE detectadas:

hdd: SAMSUNG CD-R/RW DRIVE SW-224B, ATAPI CD/DVD-ROM drive hda: max request size: 128KiB hda: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hdb: max request size: 128KiB hdb: 16841664 sectors (8622 MB) w/512KiB Cache, CHS=16708/16/63, UDMA(66) Adding 530104k swap on /dev/hdb1. Priority:-1 extents:1 EXT3 FS on hdb2, internal journal

El Kernel ha encontrado 4 unidades: hda, hdb, hdc, hdd, siendo hda y hdb unidades de disco duro, hdc una unidad de lectura CD-ROM y hdd una unidad CD-R/RW. Como se observa, tambin nos informa de la velocidad UDMA y de los tamaos de las unidades.

8.4. PARMETROS DEL KERNEL El Kernel, como cualquier programa, admite una serie de parmetros que varan su comportamiento. Ser necesario pasarle parmetros al Kernel cuando queramos alterar alguna funcionalidad o para obligarlo a utilizar algn dispositivo que no haya podido detectar de forma automtica. Los parmetros se le tienen que pasar al Kernel antes de que ste se cargue en memoria ya que, una vez que el Kernel ha arrancado, no puede recibir parmetros. Dado que los parmetros hay que pasarlos antes de que el Kernel se ejecute, esta funcin recae en el nico programa que se ejecuta antes que el Kernel, el gestor de arranque. Todos los gestores de arranque permiten especificar parmetros para pasarle al Kernel. Veamos el caso del gestor ms popular: LILO. Con l, podemos especificar los parmetros de dos formas distintas: Durante el arranque, cuando se muestra el prompt que permite seleccionar entre las imgenes teclearemos el nombre de la imagen seguido de los parmetros que

156

8
cuando se vuelva a reiniciar el sistema. Mediante el archivo de configuracin de LILO (/etc/lilo.conf). append="parmetro1=valor1 parmetro2=valor2 ..."

Estudio del kernel

deseemos pasar al ncleo. Estos parmetros no son permanentes y se perdern

En

la

seccin

correspondiente a la imagen que queramos cargar, aadiremos la lnea:

Veamos un ejemplo de una lnea con parmetros reales:

append="hdd=ide-scsi"

Dado que el gestor de arranque pasa los parmetros al Kernel en cada arranque, stos pasan a ser permanentes. Para conocer los parmetros y valores admitidos por una versin del Kernel, se debe consultar la documentacin que lo acompaa.

8.5. DIRECTORIO /PROC Dada su trascendencia dentro del sistema, el Kernel maneja informacin que puede resultar de mucho inters para el administrador y el resto de usuarios de la mquina. El Kernel se comunica con los usuarios a travs del directorio /proc. El directorio /proc es una estructura virtual que simula ser un directorio real. De cara al usuario, el directorio se comporta como un directorio comn, con ficheros y subdirectorios. Realmente, el directorio /proc es una representacin dinmica de informacin generada por el Kernel. Aunque con los privilegios adecuados es posible visualizar el contenido de todos los archivos en el directorio /proc, esta informacin no resulta de mucha utilidad dado que se muestra de forma bastante crptica. Es una idea mucho mejor utilizar alguna de las utilidades que, leyendo del directorio /proc, nos muestra la informacin de forma clara y til para el usuario. En el directorio raz de /proc nos encontramos con diversos archivos, muchos de ellos referentes a procesos (los ficheros que tienen nmeros como nombre), mientras que otros contienen informacin importante sobre el Kernel y el funcionamiento del sistema:

157

8
Fichero apm bus cpuinfo devices dma Ide filesystems Informacin asociada Sistema de gestin de energa Procesador o procesadores del sistema. Dispositivos disponibles mediante el Kernel. Canales DMA asignados a dispositivos. Interfaces IDE de la mquina.

Estudio del kernel

Buses del sistema (PCI, USB, etc.) y dispositivo conectados a ellos.

Sistemas de ficheros reconocidos por el Kernel. Muchos sistemas de ficheros se cargan dinmicamente como mdulos, por lo tanto esta lista puede variar. Muestras las interrupciones IRQ asignadas a los diferentes dispositivos. Representa una gran ayuda para solucionar posibles conflictos entre

interrupts ioports

dispositivos producidos por interrupciones. Puertos de E/S de los diferentes dispositivos. Es un archivo del mismo tamao que la memoria. Representa byte a byte el contenido de la memoria RAM del sistema. Dada la informacin que contiene, kcore slo el usuario root puede leer el contenido de este archivo. Conviene recordar que todas las entradas de /proc son virtuales y no ocupan espacio en disco, por lo tanto, no importa el tamao que tenga el kcore ya que realmente no est alojado en nuestro disco duro. modules partitions scsi swaps uptime version Lista los mdulos del Kernel cargados en memoria actualmente. La misma informacin se puede obtener usando el comando 'lsmod'. Particiones utilizadas por la mquina. Informacin sobre el subsistema SCSI, ya sean dispositivos reales o simulados por el Kernel. Muestra las particiones de swap utilizadas por el sistema operativo. Muestra el tiempo de uptime del sistema (tiempo que lleva encendido). Podemos obtener la misma informacin mediante el comando 'uptime'. Visualiza informacin sobre el Kernel actual.

Por ejemplo, si quisiramos conocer informacin sobre nuestro procesador:

$ cat /proc/cpuinfo processor vendor_id cpu family model :0 : AuthenticAMD :6 :8

model name : AMD Athlon(TM) XP 2000+

158

8
stepping cpu MHz cache size fdiv_bug hlt_bug f00f_bug coma_bug fpu fpu_exception cpuid level wp flags 3dnow bogomips $ : 3547.13 :1 : 1800.924 : 256 KB : no : no : no : no : yes : yes :1 : yes

Estudio del kernel

: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext

Observamos, entre otros datos, el fabricante (AMD), el modelo (XP 2000+), frecuencia de trabajo del procesador (1800.924 Mhz) y el tamao de la memoria cach de nivel 2 (256 KB). Adems de las entradas listadas, existen otras de inters dentro de /proc. Para saber qu entradas muestra una determinada versin del Kernel, conviene consultar la documentacin que lo acompaa. No toda la informacin que se muestra en el directorio /proc es de lectura. Es posible modificar determinadas entradas para alterar, de forma dinmica, el comportamiento del Kernel. Es importante resear que estas modificaciones al Kernel, pueden ser peligrosas si no se sabe bien lo que se hace. Si se modifican de manera incorrecta, el sistema puede volverse inestable e incluso sufrir un bloqueo. Existen dos formas de modificar dinmicamente el Kernel: escribiendo directamente en el directorio /proc o modificando el fichero /etc/sysctl.conf. La opcin de escribir directamente en el directorio /proc es la ms rpida, pero los cambios que se realicen no son permanentes y se perdern al reiniciar la mquina.

159

8
# echo 1 > /proc/sys/Kernel/sysreq siguiente aspecto:

Estudio del kernel

Por ejemplo, para activar la funcin del Kernel SysReq, procederemos de la siguiente forma:

Usando el fichero /etc/sysctl.conf podemos modificar distintos parmetros del Kernel de tal forma que siempre se activen al arrancar el sistema. El fichero /etc/sysctl.conf tiene el

# Disables packet forwarding net.ipv4.ip_forward = 0 # Disables IP dynaddr net.ipv4.ip_dynaddr = 0 # Disable ECN net.ipv4.tcp_ecn = 0 # Enables source route verification net.ipv4.conf.default.rp_filter = 1 # Disables the magic-sysrq key #kernel.sysrq = 0 net.ipv4.icmp_ignore_bogus_error_responses=0 net.ipv4.icmp_echo_ignore_all=0 net.ipv4.icmp_echo_ignore_broadcasts=0 net.ipv4.conf.all.log_martians=0 kernel.sysrq=1

Todas

ellas

hacen

referencia

subdirectorios

dentro

de

/proc/sys.

Por

ejemplo,

net.ipv4.ip_forward hace referencia a /proc/sys/net/ipv4/ip_forward. Las opciones proporcionadas por una determinada versin del Kernel, se pueden consultar en la documentacin.

8.6. MDULOS DEL KERNEL Una de las caractersticas ms importantes del Kernel de Linux es que proporciona carga dinmica de mdulos. Un mdulo es una parte del Kernel que realiza una tarea determinada y que se puede cargar de forma independiente. Existen determinadas partes del Kernel que se utilizan continuamente como el acceso a disco y otras, como el acceso a algn dispositivo poco usado, que pueden pasar varios das sin activarse. El Kernel permite que, determinados mdulos, slo se carguen cuando se quiere hacer uso de ellos.

160

8
Esto proporciona una doble ventaja: que el Kernel reconozca esta informacin.

Estudio del kernel

Flexibilidad: en la carga de determinados mdulos se pueden utilizar parmetros como el nmero de interrupciones, o el espacio de E/S que ocupan. Esta caracterstica nos proporciona una gran flexibilidad ya que no es necesario reiniciar el sistema para

Optimizacin: dado que un mdulo nicamente se carga en memoria cuando es indispensable, la ocupacin de la memoria slo se realiza cuando es estrictamente necesaria. As, el ncleo va adecuando su consumo de memoria a las necesidades reales del momento y no se ve lastrado por soportar muchos dispositivos y funciones.

Existen partes del Kernel que no se pueden ejecutar como mdulos y deben ser compiladas en el Kernel, pero, en general, casi todas las funcionalidades no bsicas, se pueden cargar como mdulo. Los mdulos, una vez compilados, se almacenan en /lib/modules/ Para alterar los parmetros que utilizan los mdulos y otras caractersticas asociadas, usaremos el fichero /etc/modules.conf. Por otro lado los comandos de gestin de mdulos son: insmod: Carga un mdulo en memoria. Si dicho mdulo depende de otros mdulos y no estn cargados, dar un error. modprobe: Carga un mdulo en memoria. Si dicho mdulo depende de otros mdulos, cargar estos antes y a continuacin el que habamos pedido. modconf: Permite cargar mdulos de forma grfica. lsmod: Lista los mdulos actualmente cargados en memoria. rmmod: descarga un mdulo de la memoria. modinfo: Proporciona informacin sobre un mdulo, como los parmetros que admite, etc.

161

8
por modprobe. #lsmod Module nls_cp437 agpgart nvidia apm parport_pc lp parport af_packet via_rhine mii crc32 Size 5376 2 27624 0 2075176 10 15980 0 35584 1 8580 0 34632 2 16904 4 18760 0 4032 1 3840 1 via_rhine via_rhine Used by

Estudio del kernel

depmod: Genera una base de datos de dependencias de mdulos modules.dep, usada

Por ejemplo, si quisiramos conocer que mdulos estn actualmente cargados:

parport_pc,lp

La salida de esta orden nos muestra 3 columnas con el nombre del mdulo, el tamao ocupado en memoria y que otros mdulos dependen de l. Se puede consultar la pgina del manual de 'modules.conf', y de las rdenes de gestin de mdulos para conocer su uso.

8.7. DISPOSITIVOS Una de las bases del diseo de los sistemas UNIX es que cualquier dispositivo del sistema se puede representar mediante un fichero (discos duros, impresoras, ratones, teclado, puerto serie,). Este concepto resulta bastante sorprendente para los usuarios provenientes de otros sistemas operativos. Los nodos de dispositivos (device nodes o device files) que representan al hardware se localizan en el directorio /dev. Existen dos tipos diferentes de nodos de dispositivos: los dispositivos de carcter y los dispositivos de bloque: Dispositivos de carcter: La informacin envan y reciben es byte a byte y tienen acceso secuencial. Ejemplos tpicos de este tipo de dispositivos son el puerto serie y el paralelo.

162

Estudio del kernel

Dispositivos de bloque: En este tipo de dispositivos, la informacin se enva y recibe en grupos denominados bloques ( 1 bloque = 1024 Bytes) y se puede acceder a la informacin de forma aleatoria, es decir, no hace falta pasar por toda la informacin inicial si queremos obtener algn dato en el punto medio del dispositivo. El ejemplo ms habitual de un dispositivo de bloque es un disco duro.

Los nodos de dispositivo se identifican, de cara al Kernel, usando dos nmeros caractersticos: el nmero mayor y el nmero menor. Nmero mayor Este nmero identifica la familia a la que pertenece el dispositivo representado por el nodo. Por ejemplo, todos los discos IDE tienen asignados el mismo nmero mayor. Nmero menor El nmero menor identifica un dispositivo dentro del sistema. Por ejemplo, podremos tener dos discos duros IDE con el mismo nmero mayor pero distinto nmero menor. Podemos ver toda esta informacin con el comando ls l:

$ls l /dev/had brw-rw---- 1 root disk 3, 0 2002-03-14 22:51 /dev/hda

En este caso, observamos informacin sobre el primer disco IDE: dispositivo de bloque (lo indica la b al principio de la lnea), con nmero mayor 3 y nmero menor 0.

$ls l /dev/psaux crw------- 1 root root 10, 1 2004-04-28 21:55 /dev/psaux

En este ejemplo, psaux hace referencia a los ratones con conexin PS/2: dispositivo de caracteres (c), nmero mayor 10 y nmero menor 1. Habitualmente, todos los nodos de dispositivos necesarios se encuentran ya creados en el directorio /dev cuando instalamos la distribucin.

163

8
alternativas: #mknod /dev/psaux c 10

Estudio del kernel

En alguna ocasin, puede darse el caso de que necesitemos crear manualmente un nodo de dispositivo para comunicarnos con algn perifrico. Para esta tarea podemos usar dos

El comando mknod, que solo puede utilizarlo el usuario root. Por ejemplo:

Creara un nodo de tipo carcter para un ratn PS/2. El script MAKEDEV, que cualquier usuario puede ejecutar:

MAKEDEV fd0

Creara un nodo de tipo bloque para una unidad de disquete, en el directorio /dev y con valores por defecto para los nmeros mayores y menores.

8.8. COMPILACIN DEL KERNEL La distribucin del Kernel se realiza, nicamente, en forma de cdigo fuente. Son los responsables de crear las distribuciones de Linux los encargados de compilar estas fuentes para crear un Kernel utilizable para los usuarios. Aunque lo habitual es utilizar el Kernel que nos proporciona el creador de nuestra distribucin, es posible compilarnos un Kernel a medida para nuestra mquina. La compilacin del Kernel ofrece las siguientes ventajas: Aumento en las prestaciones: podemos ajustar las opciones de compilacin para que se ajusten a las caractersticas propias de nuestra mquina consiguiendo as un aumento en las prestaciones. Soporte nuevo hardware: en Linux, todo el control del hardware se realiza directamente desde el Kernel. A medida que se lanzan nuevas revisiones, se incrementa la cantidad de dispositivos soportados. Seguridad: en el nivel del Kernel, no suelen producirse muchos problemas de seguridad. En cualquier caso, ninguna pieza de software escapa a posibles

164

8
comportamiento mejor que la anterior.

Estudio del kernel

vulnerabilidades. Como es lgico, las prioridades a la hora de lanzar una nueva versin del Kernel incluyen la correccin de todos los problemas de seguridad detectados. Nuevas caractersticas: como es lgico pensar, en cada versin del Kernel que se lanza, se mejoran sus funciones de gestin de memoria, sistemas de ficheros, escalabilidad, etc. Habitualmente, esto significa que cada versin del Kernel tiene un

Por el contrario, el proceso de compilar un Kernel presenta los siguientes inconvenientes: Complejo: el proceso de compilar el Kernel puede ser complejo para usuarios poco avanzados. Se deben tener un cierto conocimiento del hardware y de compilacin si queremos afrontar con xito la operacin. En algunas ocasiones, al compilar el Kernel, tambin debemos actualizar diversos programas del sistema con lo que la complicacin es mayor. Problemas de inestabilidad: dado que el Kernel es una parte fundamental del sistema operativo, una compilacin realizada con opciones equivocadas puede volver inestable la mquina. Estos problemas de inestabilidad pueden producir "cuelgues", corrupcin de datos, etc., por lo que conviene tenerlos muy en cuenta si el servidor guarda informacin importante. En los siguientes apartados veremos paso a paso el proceso de descarga y compilacin de un kernel. Tenga en cuenta que el proceso de creacin de un kernel necesita ser realizado como root. 8.8.1. Descarga del kernel El sitio web oficial del kernel Linux es www.kernel.org. En el aparecen distintas versiones de las ramas 1.0, 2.0, 2.2, 2.4, y 2.6, adems de versiones beta de ncleos a punto de salir (los enlaces prepatch y snapshot). Descargaremos la ltima versin estable, as que haremos clic en el enlace de la letra F (Full) y nos descargaremos el fichero linux-<version>.tar.bz2 (<versin> hace referencia al nmero de versin del kernel, como 2.4.27, 2.6.7, etc). Otra posibilidad es descargarnos el fichero patch: estos contienen los cambios de una determinada versin a la siguiente en formato de texto, con lo cual tienen un tamao mucho menor. De esta manera, si tenemos instalado actualmente el kernel 2.4.20, no hace falta que descarguemos el kernel 2.4.21 completo, sino que descargamos el patch-2.4.21 y lo

165

8
nmeros de versin. EL patch tambin suele venir en formato .tar.bz2 8.8.2. Descompresin en /usr/src donde deberamos almacenar todos los kernels que instalemos. A continuacin pasaremos a descomprimir el kernel:

Estudio del kernel

aplicamos al kernel 2.4.20 que tengamos. Para descargar el patch, hacemos clic sobre los

Una vez descargado es recomendable mover (comando mv) el kernel al directorio /usr/src,

#tar xjf linux -<version>.tar.bz2

Tras lo cual se nos habr creado un directorio de nombre linux-<version> en /usr/src. Crearemos entonces un enlace simblico de nombre linux a este nuevo directorio, si no estaba ya creado.

#ln s linux-<version> linux

Si estaba creado, lo modificaremos para que apunte al nuevo kernel:

#ln sf linux-<version> linux

En este punto, si lo que habiamos descargado era el fichero patch, debemos aplicarlo. Para descomprimir y aplicar de una vez, ejecutamos:

$ bzcat patch-<version>.bz2 | patch -p1

8.8.3. Configuracin Llegamos ahora al proceso ms importante: seleccionar las caractersticas que deseamos que tenga el kernel.

166

8
Comando make config make menuconfig make xconfig make oldconfig Funcin comete un error deber empezar de nuevo. Presenta una pantalla con mens realizada en ncurses. Permite realizar la configuracin en X Window.

Estudio del kernel

Este es el proceso de configuracin clsico por consola. Se nos realizarn preguntas las que deberemos contestar. No es recomendable ya que si se Esta forma es ms adecuada para realizar la configuracin por consola.

Toma como base una configuracin anterior, preguntndonos slo sobre las nuevas opciones.

Debemos seleccionar un mtodo de los anteriormente especificados as que usaremos make menuconfig: este mtodo requiere que instale los paquetes libncurses5-dev, gcc y make en caso de que no los tenga ya instalados.

$cd linux $ make menuconfig

Antes de continuar, debemos saber la diferencia entre compilar funcionalidad en el ncleo o compilarla como mdulo: Un kernel donde todo esta compilada en l, sin mdulos, ser ms rpido ms grande, ocupando mucho espacio en memoria.

167

8
usuario.

Estudio del kernel

Un kernel muy modular es de menor tamao, no obstante necesitar cargar mdulos para poder trabajar. Esto es lo que ocurre con los ncleos que acompaan a las distribuciones, ya que no se sabe en principio, el hardware que pueda tener un

La solucin es compilar en el kernel slo las funcionalidades que se usarn la mayor parte del tiempo, ya que de esta forma se compensan la carga y descarga de mdulos. Durante el proceso de configuracin deber saber exactamente el equipo y los perifricos que posee. Le sern de ayuda los ficheros del directorio /proc y el comando lspci, el cul muestra la lista de dispositivos que tiene conectados al bus PCI (tarjetas de red, tarjetas grficas, controladoras USB, tarjetas de sonido, etc). Por ejemplo:

#lspci 0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge 0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8235 PCI Bridge 0000:00:0b.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11) 0000:00:0b.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11) 0000:00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 0000:00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 0000:00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 0000:00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) 0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge 0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) 0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50) 0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) 0000:01:00.0 VGA compatible controller: nVidia Corporation NV15DDR [GeForce2 Ti] (rev a4) #

Observamos como el Kernel nos informa de los dispositivos que ha encontrado: puertos USB 1.1 y 2.0, modelo de la tarjeta de sonido, modelo de la tarjeta de red, etc.

168

8
8.8.3.1. Categoras de configuracin seleccionar las caractersticas que deseamos tener.

Estudio del kernel

Estamos ya en la configuracin del kernel. Despus de elegir el mtodo de configuracin se nos presenta una pantalla con distintas categoras. El proceso consiste en entrar en ellas y

En la interfaz menuconfig podemos movernos por las categoras con los cursores, entrando en ellas con ENTER y seleccionando las caractersticas que deseemos con ESPACIO: al pulsar este ltimo, se rota entre las opciones compilar en el kernel, como mdulo o ninguna de las dos. En un Kernel 2.6.X tendremos las siguientes:

Categora CODE MATURITY LEVEL OPTIONS

Funcin Opciones para configurar si deseamos que nos muestre, en otras categoras, drivers incompletos o experimentales. Si deseamos permitir swap, IPC, Sysctl,

GENERAL SETUP

dispositivos de conexin en caliente o el fichero .config resultante de la configuracin del Kernel. Aqu podemos decidir si deseamos tener la

LOADABLE MODULE SUPPORT PROCESSOR TYPE AND FEATURES POWER MANAGEMENT OPTIONS BUS MCA) EXECUTABLE FILE FORMAT OPTIONS (PCI, PCMCIA, EISA,

posibilidad de usar mdulos en nuestro Kernel. Aqu podemos personalizar el kernel indicndole que procesador tenemos. Esta categora est relacionada con el soporte ACPI y APM. Permite definir con que tipos de buses contamos en nuestra mquina. En Linux se pueden utilizar distintos tipos de ejecutables (ELF, a.out, etc). En esta categora podemos dar soporte a ellos. Esta es una categora muy amplia ya que dentro de ella hay subcategoras para configurar los dispositivos del sistema (USB, tarjetas de sonido, tarjetas de red, discos IDE, discos SCSI, etc). Para dar soporte a sistemas de ficheros (ext2, ext3, fat, etc) deberemos dirigirnos a esta rama.

DEVICE DRIVERS

FILE SYSTEMS

169

8
PROFILING SUPPORT cuellos de botella, etc. Las KERNEL HACKING opciones que contienen interesadas de aquellas Kernel. SECURITY OPTIONS CRYPTOGRAPHIC OPTIONS Diferentes configuracin personas restricciones sobre la cuenta root.

Estudio del kernel

Opciones para medir el rendimiento, identificar son en tiles para el y

depurar

seguridad

Diferentes libreras que se pueden usar para temas de criptografa. Mediante esta categora podemos insertar la librera Zlib de compresin y descompresin en el kernel. Es usada por gzip.

LIBRARY ROUTINES

Cuando terminemos de configurar, salvaremos los cambios. Se nos habrn almacenado las configuraciones que hayamos realizado en el fichero .config del directorio del Kernel. 8.8.4. Compilacin e instalacin Estamos ya en la parte final. Ahora lanzaremos la compilacin. Para los ncleos de la seria 2.6.X bastara con:

$ make $ make install $ make modules_install

La primera lanza varios procesos: crear dependencias, compilar el cdigo fuente del kernel para obtener el ejecutable (vmlinuz) y algunos ficheros ms que son necesarios (System.map), etc. La segunda lnea lo instala en el directorio /boot bajo el nombre de bzImage-<version>, junto con System.map-<version> y crea enlaces para poder arrancar este nuevo Kernel. La tercera lnea genera los mdulos, instalndolos igualmente en /lib/modules/<version>. Por ultimo, antes de reiniciar, no est de ms ver el contenido del directorio /boot donde estar nuestro nuevo ncleo (bzImage) comprobando que los enlaces son correctos. Tambin es buena idea revisar el contenido de /etc/lilo.conf para ver los cambios que se hayan introducido en la compilacin. Si debe corregirlo, no olvide reinstalar LILO en el MBR mediante la orden lilo.

170

8
recuerde_
sirviendo las peticiones realizadas desde ambas partes.

Estudio del kernel

El Kernel es una parte fundamental de cualquier sistema operativo ya que de l dependen gran parte de las caractersticas y posibilidades del sistema. El Kernel es el programa que se sita entre las aplicaciones y el hardware

Existen dos ramas en el desarrollo del Kernel de Linux, la estable y la inestable.

Es posible pasar diversos parmetros al Kernel de Linux para modificar su funcionamiento.

Podemos acceder a muchas variables internas del Kernel a travs del pseudodirectorio /proc.

Un mdulo del Kernel es una parte del Kernel con una funcionalidad determinada que slo se carga en memoria cuando es necesario.

En todos los sistemas UNIX, los dispositivos se representan por ficheros localizados en el directorio /dev.

El Kernel de Linux se distribuye como cdigo fuente. Es posible compilar un Kernel con las opciones y parmetros que ms nos interesen.

171

9
ndice_

X Window

9.1. HISTORIA DEL SISTEMA DE VENTANAS X WINDOW ...................175 9.2. X WINDOW................................................................................176 9.2.1. Caractersticas................................................................176 9.2.2. Entornos de escritorio ....................................................177 9.2.3. El servidor X ...................................................................177 9.3. EJECUCIN MANUAL DE X WINDOW ..........................................179 9.4. CONMUTANDO ENTRE X WINDOW Y LAS CONSOLAS VIRTUALES................................................................................179 9.5. OPERANDO CON EL SERVIDOR X WINDOW ................................180 9.6. EJECUCIN DE CLIENTES X WINDOW ........................................180 9.7. KDE ...........................................................................................182 9.8. GNOME ......................................................................................183

173

9
9.1. HISTORIA DEL SISTEMA DE VENTANAS X WINDOW

X Window

Desde la dcada de los 70 se han venido realizando investigaciones con el fin de proporcionar un sistema de interaccin con los usuarios ms sencillo que la introduccin de comandos en un terminal. El primer intento fue realizado en Xerox, donde fue desarrollada la primera Interfaz Grfica de usuario (GUI) que ya inclua los conceptos de ventana e iconos para representar aplicaciones y de un dispositivo apuntador para poder manejarlas. Pero el precursor del sistema que se utiliza actualmente en Linux tiene su origen en 1982, en la Universidad de Stanford, donde fue desarrollado un sistema de ventanas denominado W. Por aquella poca los desarrolladores de Unix decidieron adaptar este sistema de ventanas a su propio sistema operativo lo cual llev a la creacin del proyecto Athena en el MIT, donde tambin participaban IBM y DEC (en DEC trabajaban los desarrolladores de W). El producto final se llamo Sistema de Ventanas X (X Window System) e hizo su aparicin pblica en 1985. En 1987 se liber la version 11 y a partir de ah solo ha habido cambios en el nmero de revisin. En 1988 se cre el Consorcio X, un grupo de empresas a las que el MIT les cedi el control del sistema. En 1990 apareci la revisin 4 (X11R4), la cual alcanz una gran popularidad. Sin embargo, X adoleca de un grave defecto: estaba pensado para potentes ordenadores y servidores, as que Thomas Roell, estudiante alemn, decidi a principios de los 90, crear un proyecto (X386) para portar X11R4 a un ordenador muy popular en aquella poca: los basados en el procesador, recin surgido, 80386 de Intel. Con el tiempo, Roell abandon el proyecto, aunque este fue continuado por algunos de los ya existentes usuarios de X386, pasndose a denominar XFree86. Fue tal la expansin del nuevo sistema que se convirti en el sistema de ventanas estndar de GNU/Linux y fue portado a otras arquitecturas no basadas en Intel, como Sparc o Power PC. Pero en 2003 surgi XFree86 4.4 y con l un cambi en su licencia que la hace incompatible con la licencia GPL. Es por ello que actualmente la mayora de distribuciones estn en proceso de sustitucin del sistema XFree86 por otro sistema de ventanas. En el caso de Debian, se ha vuelto a la versin 4.3.

175

9
9.2. X WINDOW La instalacin de X Window en Debian mediante apt se consigue con: #apt-get install x-window-system Veamos ahora algunos aspectos de este sistema. 9.2.1. Caractersticas

X Window

El sistema grfico X Window es un entorno grfico estndar en sistemas UNIX que tiene las siguientes caractersticas: Es independiente del sistema operativo y del hardware: la condicin para ello es que la plataforma de destino cumpla con los estndares POSIX o ANSI C. La independencia del sistema operativo significa que si X falla por cualquier motivo, no se cuelga el sistema al completo, e incluso podemos reiniciar X Window sin reiniciar la mquina. En cuanto a la independencia del hardware, existen servidores X para Mac y Windows. Opera de forma totalmente transparente en red: X se desarrollo con una arquitectura cliente/servidor. Las aplicaciones con las que actuamos (navegadores, editores de texto, etc.) se denominan clientes y se comunican con el servidor. El servidor X interacta con el usuario recibiendo sus rdenes a travs del teclado, ratn, etc., y muestra la informacin enviada por las aplicaciones clientes. X Window no requiere que el servidor y los clientes se encuentren en la misma mquina. Esta caracterstica nos proporciona una gran flexibilidad ya que podemos ejecutar aplicaciones en mquinas remotas e interactuar con ellas a travs de nuestro servidor local. Libertad de eleccin del gestor de ventanas: El gestor de ventanas (window manager) es un programa encargado de manejar el espacio en la pantalla. Este programa controla la situacin de las ventanas, las opciones que se le ofrece al usuario para manejarlas y los elementos decorativos que la rodean. X Window no proporciona ningn gestor de ventanas por defecto ya que existen gran cantidad de gestores de ventanas cada uno con caractersticas diferenciadoras: atractivo visual, consumo de memoria y procesador, facilidad de manejo, facilidad en la configuracin, etc. Toda esta flexibilidad va en detrimento de la homogeneidad del sistema ya que cada gestor

176

9
resto. 9.2.2. Entornos de escritorio

X Window

de ventanas puede tener un aspecto y comportamiento completamente diferente del

Las aplicaciones (denominados clientes en X Window) hacen uso de una librera de controles para crear la interfaz de la aplicacin. En el mundo UNIX, a los controles se les suele denominar widgets y a las libreras de controles, toolkits. Estas libreras incluyen todos los elementos habituales para crear una interfaz: botones, etiquetas, cuadros de texto, etc. Como no poda ser de otra forma, desde el nacimiento de X han existido muchos toolkits cada uno con un aspecto y funcionalidad diferentes. Esto supone otro serio problema para lograr la homogeneidad del sistema ya que podemos tener varias aplicaciones en pantalla, cada una con interfaz e interaccin con el usuario distinta. Por fortuna, en los ltimos aos, la situacin ha mejorado de forma notable. Actualmente, han surgido dos toolkits que utilizan la casi totalidad de las nuevas aplicaciones: GTK+ y Qt. GTK+ es un toolkit de cdigo abierto de grandes prestaciones y constituye la base del escritorio GNOME. Por otra parte, Qt es una librera creada por la compaa Trolltech, multiplataforma, extensible y escalable. Es la base sobre la que se asienta el sistema KDE. Toda la flexibilidad ofrecida en el sistema X ha conducido a una falta de homogeneidad que ha dificultado enormemente su expansin en entornos domsticos y de oficina. Generalmente, X Window ha estado reservado a investigadores y usuarios de UNIX avanzados. Para paliar este problema, se han desarrollado los escritorios GNOME y KDE. Un escritorio se una aplicacin de ms nivel superior al del gestor de ventanas: define un entorno de trabajo y de desarrollo de aplicaciones para conseguir un aspecto y funcionalidad homognea. Actualmente, tanto GNOME como KDE constituyen la piedra angular para la expansin de Linux en sistemas domsticos y de oficina. 9.2.3. El servidor X Como se ha comentado previamente, un rasgo diferenciador del sistema X Window es que est basado en una arquitectura cliente/servidor. El programa servidor se ejecuta en nuestra mquina y espera conexiones por parte de clientes X. En una mquina, podemos ejecutar varios servidores X Window simultneamente.

177

9
ratn.

X Window

Un servidor X Window inicializa el modo grfico y espera conexiones por parte de los clientes. Si ningn cliente conecta al servidor, la pantalla nicamente mostrar el puntero del

Dado que, en un momento dado, podemos tener acceso a varios servidores X Window, debemos tener un sistema para identificarlos. Para identificar un servidor X Window utilizaremos el "display name" (nombre de display). El nombre de display sigue la siguiente sintaxis:

nombre_del_host:numero_de_display.numero_de_pantalla

El significado de cada una de las partes del nombre de display es el siguiente: Nombre de la mquina: Dado que X Window es un sistema transparente a la red, debemos saber en qu mquina se est ejecutando el servidor. Podremos utilizar el nombre de la mquina o su direccin IP. En el caso de que no indiquemos el nombre de la mquina, se utilizar la mquina actual. Por otra parte, para referirnos a la mquina actual podemos usar el nombre localhost o la direccin de loopback 127.0.0.1. Nmero de display: En una misma mquina podemos ejecutar varios servidores X. El primer display o servidor tomar el nmero cero y se ir incrementando a medida que ejecutemos nuevos servidores. Es posible indicar el nmero del display al lanzar el servidor. Nmero de pantalla: Este parmetro hace referencia al monitor fsico al que queremos conectar. En configuraciones habituales ser cero. Si no se especifica el nmero de pantalla, se supone que es la cero. Veamos algunos ejemplos de nombres de display. En primer lugar, se ver el nombre de display ms habitual que hace referencia a la mquina actual y al primer servidor X Window:

localhost:0.0

Podremos abreviarlo como:

:0

178

9
El segundo servidor dentro de la mquina actual ser :2 El tercer servidor en una mquina remota con direccin IP 192.56.24.6 ser: 192.56.24.6:3

X Window

9.3. EJECUCIN MANUAL DE X WINDOW Supuesto el caso de que ya tenemos XFree86 configurado correctamente, podemos lanzar desde la consola un servidor X Window ejecutando el siguiente comando:

$X

Una vez ejecutado el comando, se iniciar el modo grfico y el servido X Window quedar a la espera de que conecte algn cliente. La consola virtual, desde la que hemos lanzado el servidor, quedar ocupada por los mensajes informativos que muestra X Window. Si queremos lanzar otro servidor en la misma mquina, deberemos usar otro nombre de display distinto. Usaremos la siguiente llamada a 'X' para ejecutar el segundo servidor:

$ X :1

9.4. CONMUTANDO ENTRE X WINDOW Y LAS CONSOLAS VIRTUALES Por defecto, Linux lanza 6 consolas virtuales (VC) de texto. Como ya hemos visto, podemos conmutar entre ellas utilizando las combinaciones de teclas Alt+F1 y Alt+F6. Los servidores X Window que vayamos lanzando se ubicar despus de la ltima consola virtual. Es decir, el primer servidor se situar como si fuese la consola virtual 7. Podremos conmutar entre una consola virtual de texto y el servidor X Window de la misma forma que lo hacemos entre consolas de texto.

179

9
anloga, el segundo servidor X Window (:1) se situar en Alt+F8, etc. combinacin acceder.

X Window

Para acceder al servidor X Window en :0 usaremos la combinacin Alt+F7. De forma

Para conmutar desde el servidor X Window a una consola o a otro servidor usaremos la Ctrl+Alt+Fx donde x es el nmero de la consola o el servidor X Window al que queremos

Aunque abandonemos el servidor, ste sigue ejecutndose en segundo plano y podremos volver a l usando la combinacin Alt+Fx.

9.5. OPERANDO CON EL SERVIDOR X WINDOW Si, durante la configuracin del servidor, hemos definido diferentes resoluciones, podremos conmutar entre ellas utilizando las combinaciones Ctrl+Atl+'+' y Ctrl+Alt+'-' donde '+' y '-' son las teclas correspondientes del teclado numrico. Aunque es una circunstancia extraa, si durante la sesin de trabajo el servidor X Window se bloquea, disponemos de la posibilidad de forzar su finalizacin usando la combinacin de teclas Ctrl+Alt+Retroceso. Cabe destacar que todos los clientes conectados al servidor sern finalizados sin aviso previo por lo que se puede producir una prdida de datos.

9.6. EJECUCIN DE CLIENTES X WINDOW Para conectar un cliente X Window con el servidor hay que especificar cul es el nombre de display que tiene el servidor. Por convenio, todos los clientes X buscarn el nombre de display del servidor en la variable de entorno DISPLAY. Para establecer la variable de entorno DISPLAY al valor del nombre de display de nuestro servidor ejecutaremos:

$ export DISPLAY=:0

En este caso, hemos utilizado el nombre de display :0 que es el ms habitual. A partir de este momento, todas las aplicaciones X que lancemos en esa consola se conectarn automticamente con el servidor X Window que hayamos definido.

180

9
Por ejemplo, podemos lanzar un terminal de la siguiente forma: $ xterm & cmodamente desde la misma consola.

X Window

Si aadimos al programa a ejecutar el carcter &, ste se ejecutar en segunda plano devolviendo el control al shell. De esta forma podremos lanzar varios clientes X

Si cambiamos de la consola al servidor X, veremos que las aplicaciones que estamos lanzando aparecen sin bordes de ventanas. Como vimos en la introduccin del captulo, el servidor X Window no se encarga de esta misin. Existe un cliente X especial denominado gestor de ventanas que es el encargado de dibujar las ventanas, mostrar la barra del ttulo, etc. Si ejecutamos desde la consola un gestor de ventanas como Sawfish, WindowMaker, Blackbox, etc., veremos como aparecen marcos alrededor de las aplicaciones que habamos lanzado con anterioridad. Evidentemente, esta forma de trabajar con X Window no resulta muy cmoda. Para automatizar el proceso de arrancar el servidor X Window y el gestor de ventanas, las distribuciones incluyen un script llamado startx. Ejecutando este script, el sistema arrancar el servidor X y todos los clientes definidos en el fichero ~/.xinitrc. Podemos editar este fichero para adaptarlo a nuestras necesidades. El fichero xinitrc tiene un contenido similar a la siguiente:

imwheel & wmmon -s & wmmon -i & wmCalClock-WindowMaker -24 & wmWeather -s LEZL -m -delay 5 & exec wmaker

Como podemos ver, desde el fichero se lanzan diversos clientes en segundo plano (aadindoles el carcter &). La ltima lnea debe cargar el gestor de ventanas, en este caso WindowMaker. Como podemos ver, la llamada al gestor de ventanas se realiza anteponindole el modificador exec. Ejecutando de esta forma, se elimina el proceso anterior pasndole el control al recin creado, en este caso, al gestor de ventanas WindowMaker.

181

9
9.7. KDE

X Window

El entorno de escritorio K (KDE K Desktop Environment) es un potente escritorio grfico para sistemas UNIX. Combina la facilidad de uso, funcionalidad, usabilidad y un sobresaliente diseo grfico con la superioridad tcnica del sistema operativo UNIX. El proyecto KDE busca satisfacer la necesidad existente de un escritorio grfico de calidad similar a los existentes en Windows y Macintosh. La ltima versin estable de KDE es la 4.1.2, lanzada en octubre de 2008.

De cara al usuario, KDE proporciona las siguientes mejoras: Un escritorio grfico actual y atractivo. Todo el escritorio funciona de forma transparente a travs de una red. Esto permite usar diferentes protocolos para acceder a la informacin. Un aspecto consistente en todas las aplicaciones KDE. Estandarizacin en mens, barras de herramientas, atajos de teclado, colores, etc. Internacionalizacin, KDE se encuentra disponible en ms de 50 idiomas. Configuracin centralizada. Un gran nmero de aplicaciones KDE disponibles.

182

9
hoja de clculo, un programa de presentaciones, un organizador personal, etc.

X Window

Paralelamente se est desarrollando una suite de aplicaciones de oficina basada en la plataforma KDE denominada KOffice. Esta suite incluye las aplicaciones tpicas como una

KDE tambin proporciona una plataforma para el desarrollo de aplicaciones bajo X Window mediante un entorno de desarrollo de aplicaciones denominado KDevelop, parecido a Visual C++ de Windows. Aprovechando las facilidades ofrecidas por esta plataforma de desarrollo, podemos crear potentes aplicaciones que se integren dentro del escritorio KDE y aprovechen todas sus caractersticas. Se han desarrollado un gran nmero de aplicaciones para el escritorio KDE. La distribucin base de KDE incluye las aplicaciones ms importantes mientras que el resto son fcilmente descargables de Internet. El sistema KDE est escrito usando el toolkit Qt, el cual es una librera de clases y widgets escritos en lenguaje C++, lo que le proporciona una base de diseo slida dada su orientacin a objetos. La plataforma de desarrollo KDE presenta una funcionalidad similar a la plataforma de Microsoft MFC/COM/ActiveX. Los primeros pasos del sistema KDE estuvieron marcados por un problema con la licencia de su librera grfica Qt. Actualmente, estos problemas han desaparecido y KDE puede ser incluido sin ningn tipo de problemas en todas las distribuciones de Linux. Puede instalar kde en Debian mediante:

#apt-get install kde

9.8. GNOME El proyecto GNOME (Gnu Network Object Model Environment) naci con la intencin de crear un escritorio libre, ya que las primeras licencias de Qt, el toolkit base de KDE, eran incompatibles con GPL (hoy en da no existe este problema). Desde el comienzo, el principal objetivo de GNOME ha sido el desarrollar un conjunto de aplicaciones accesibles al usuario y un escritorio potente y fcil de usar. La versin actual de GNOME es la 2.22, lanzada en marzo de 2008.

183

X Window

Como la gran mayora del software GNU, GNOME ha sido diseado para ejecutarse en todos los sistemas modernos de tipo UNIX. Eso implica un esfuerzo importante en crear cdigo portable entre distintas plataformas. A medida que el proyecto ha ido progresando, sus objetivos se han extendido para subsanar distintos problemas en la estructura actual de un sistema UNIX. En estos momentos, el proyecto GNOME acta como un paraguas bajo el cual encontramos los siguientes componentes: El escritorio GNOME: Consiste en un entorno grfico basado en ventanas potente, flexible y fcil de usar. La plataforma de desarrollo GNOME: Incluye una variada coleccin de

herramientas, libreras y componentes para desarrollar potentes aplicaciones grficas bajo UNIX. GNOME Office: Es un conjunto de aplicaciones de oficina (procesador de textos, hoja de clculo, etc). En la actualidad, GNOME es una vasta coleccin de software creada en los ltimos aos. Engloba desde pequeas utilidades a poderosas aplicaciones y desde libreras de bajo nivel a aplicaciones para el usuario final.

184

9
ligero y portable entre distintas arquitecturas.

X Window

En el aspecto tcnico, GNOME est plagado de tecnologas de ltima generacin como componentes que se comunican de forma transparente a travs de una red, uso extensivo de XML y uno de los modelos de gestin de imgenes ms avanzados entre todas las plataformas actuales. GNOME est escrito en lenguaje C lo que hace que sea muy rpido,

En el desarrollo de GNOME participan desarrolladores, usuarios, compaas y asociaciones de decenas de pases del mundo por lo que, uno de los puntos principales sobre los que se asienta el proyecto es crear un escritorio donde el usuario pueda trabajar en su idioma nativo. La instalacin de GNOME puede realizarla con:

#apt-get isntall gnome

185

9
recuerde_
versin que se instala en Linux es XFree86. Las caractersticas ms importantes del sistema X travs de una red.

X Window

El sistema grfico estndar de los sistemas UNIX se denomina X Window y la

Window

son

su

independencia de la plataforma y su ejecucin de forma transparente a

Para crear una aplicacin bajo X Window debemos hacer uso de una librera de controles (toolkit).

Los toolkits ms importantes en la actualidad son GTK+ y Qt. En los ltimos aos se han desarrollado los proyectos GNOME y KDE que proporcionan un escritorio homogneo en sistemas UNIX.

186

10
ndice_

Shell Scripts

10.1. 10.2. 10.3. 10.4. 10.5. 10.6. 10.7. 10.8. 10.9.

INTRODUCCIN A LOS SHELL SCRIPTS ...................................189 EJECUCIN Y ELECCIN DEL SHELL A USAR ............................190 COMENTARIOS........................................................................191 VARIABLES .............................................................................191 COMANDOS HABITUALES DEL SHELL.......................................192 QUOTES (COMILLAS) ..............................................................193 ARGUMENTOS .........................................................................195 CONDICIONES ........................................................................197 CONTROL DE FLUJO ................................................................198 10.9.1. 10.9.2. 10.9.3. Estructura condicional if ........................................199 Estructura selectiva mltiple case ..........................200 Estructuras iterativas ...............................................201 10.9.3.1. Instruccin while ..................................201 10.9.3.2. Instruccin until ....................................203 10.9.3.3. Instruccin for ......................................204 10.9.3.4. Instruccin shift .......................................205 10.9.4. Estructura de seleccin interactiva select...............206

10.10. FUNCIONES ............................................................................207

187

10
10.1. INTRODUCCIN A LOS SHELL SCRIPTS estn dentro de l.

Shell Scripts

Un script es una secuencia de comandos almacenados en un archivo de texto. Cuando se ejecuta el script, el shell interpreta cada lnea como si el usuario la hubiese escrito en la consola. Esto nos da una gran comodidad ya que una vez creado el script, para ejecutarlo slo debemos escribir un comando (el que da nombre al script) y no todos los comandos que

Los shell scripts no son algo especfico de UNIX. En los sistemas operativos de Microsoft, tambin es posible crear scripts: pensemos por un momento en MS-DOS y su interprete de comandos, command.com. En l, era posible crear scripts o ficheros de procesos por lotes, que tenan como extensin .bat, con rdenes que eran interpretadas directamente por command.com. En Linux, tenemos disponibles una gran variedad de shells o intrpretes de comandos: sh, bash, csh, ksh., zsh, etc. Tenga en cuenta que cada uno tiene sus propias caractersticas especficas, lo que quiere decir que hay cosas que pueden funcionar en un shell y no en los dems. El shell, por defecto, de Linux es bash. Esto quiere decir que todo lo que escriba en la consola cuando Linux se inicie, ser interpretado por bash. Si desea cambiar a otro shell escriba su nombre en la lnea de comandos y pulse INTRO. En los shell scripts, se suele escribir cada comando en una lnea distinta, aunque no hay problema en escribir todos los comandos en una lnea siempre que los separemos mediante el carcter ;. Veamos que aspecto tiene un script simple de ejemplo: saludo.sh (en realidad no hace falta aadirle una extensin sh al nombre de los scripts, pero se suele hace para saber que contiene el fichero con solo mirar su nombre):

#! /bin/bash # Esto es un comentario. # Todas las lneas que comiencen por # son comentarios. # Aqui ira el cdigo. El nombre de este script es saludo.sh Saludo=Hola echo $Saludo $1

189

10
ejemplo. 10.2. EJECUCIN Y ELECCIN DEL SHELL A USAR

Shell Scripts

En los siguientes apartados explicaremos la sintaxis de los shell scripts basndonos en este

Debido a que tenemos disponibles varios shells para usar, debemos indicar de alguna forma cul es el que debe interpretar nuestro script ya que, como hemos mencionado antes, hay algunas diferencias entre shells que pueden hacer que no obtengamos los resultados previstos. Esto se indica mediante la primera lnea, que debe ser: directorio /bin. En el ejemplo anterior, la primera lnea indica que deseamos que nuestro script sea interpretado por bash. La eleccin del intrprete est relacionada con el modo de ejecutar los shell scripts. Veamos las dos formas de que disponemos para ello: Normalmente, cuando terminamos de crear el script obtenemos en el directorio actual un fichero sin permisos de ejecucin con el contenido del script. Esto hace que no podamos ejecutarlo mediante ./saludo.sh, as que la solucin sera ejecutarlo indicando el intrprete a usar y el nombre del script como argumento. #!<shell> donde <shell> es la

ruta o path al shell. Este puede ser sh, bash, tcsh., etc, y normalmente residen en el

$ bash saludo.sh Hola $

Con este mtodo, no hace falta indicar en la primera lnea el shell a usar, ya que lo indicamos en el momento de la ejecucin. La otra posibilidad, y la ms usada, consiste en dar permiso de ejecucin a nuestro script, mediante

$ chmod u+x saludo.sh

190

10
Ahora, para ejecutarlo escribimos: $./saludo.sh Hola $

Shell Scripts

Para este ltimo mtodo si es necesario especificar en la primera lnea el shell que desee usar.

10.3.

COMENTARIOS

Al igual que en otros lenguajes de programacin, en los script tambin existen comentarios. Dentro de un script, se considerarn comentarios las lneas que comiencen por el carcter '#'. Todo lo que se escriba en esa lnea ser ignorado por el shell. Como en todo lenguaje de programacin, se recomienda encarecidamente el uso de comentarios a lo largo de todo el cdigo para facilitar la depuracin del mismo.

10.4.

VARIABLES

En la programacin de scripts slo existe el tipo de datos cadena (string). No es necesario declarar las variables que vayamos a utilizar. Todas las variables se inicializan automticamente a la cadena vaca. El operador de asignacin a variables es '='. Conviene resaltar que no se debe dejar ningn espacio entre el identificador de la variable, el operador de asignacin y el valor que queramos asignar. Para obtener el valor contenido en una variable, usaremos el operador prefijo '$' o '${variable}: en el ejemplo saludo.sh, asignamos la palabra Hola a la variable Saludo. En la siguiente lnea obtenemos el valor mediante $Saludo. Veamos algunos ejemplos de asignaciones. En primer lugar, veremos un ejemplo de una asignacin del valor 5 a la variable 'a'. Como hemos dicho antes, slo existe el tipo cadena en scripts, por lo tanto, realmente estamos asignando la cadena "5" a la variable a.

191

10
$ a=5 $ echo $a 5 varias palabras. Si fuera una sola, no haran falta).

Shell Scripts

Veamos ahora una asignacin de una cadena normal (aqu usamos porque asignamos

$ b="Soy una cadena" $ echo $b Soy una cadena

Tambin podremos asignar una variable a otra:

$ c=$b $ echo $c Soy una cadena $ echo ${c} Soy una cadena

En este ejemplo hemos utilizado las dos formas de obtener la cadena contenida en una variable.

10.5.

COMANDOS HABITUALES DEL SHELL

A continuacin se ofrece un listado de comandos muy tiles en la creacin de scripts en Bash: Echo: Muestra por la salida estndar todo lo que reciba como argumento. Generalmente, el comando 'echo' se utiliza para mostrar informacin al usuario. Read: Recibe como argumento nombres de variables y lee, por la entrada estndar, argumentos que va almacenando en dichas variables. El uso habitual de read es solicitar informacin al usuario. Una opcin usada frecuentemente es p seguida de una cadena de texto, que hace que se escriba dicha cadena como prompt, antes de que el usuario introduzca la informacin. Exp: Utilizaremos este comando para evaluar expresiones aritmticas. Debido a que el shell no puede operar directamente con nmeros ya que el nico tipo de datos que

192

10
En otro caso, se devolver un valor distinto de 0.

Shell Scripts

entiende son las cadenas, debemos utilizar Expr para construir operaciones numricas. Otra forma de evaluar expresiones aritmticas es utilizar $((expresin)). Exit: Finaliza la ejecucin del script y devuelve como estado el valor que se le pase como argumento. Habitualmente, si el script finaliza sin problemas, se devolver un 0.

Recuerde que puede usar cualquier comando que admita el intrprete dentro de los shells scripts (ls, pwd, cd, medir,). Como ejemplo, modificaremos nuestro script saludo.sh para que nos pregunte nuestro nombre mediante la opcin p de read y que lo almacene en la variable nombre.

#! /bin/bash # Script saludo2.sh #Este script pide el nombre del usuario a saludar read p Escriba su nombre: nombre #Asignamos el tipo de saludo Saludo=Hola #imprimimos echo $Saludo $nombre

Y aqu est el resultado de la ejecucin de este script:

$./saludo2.sh Escriba su nombre: Manuel Hola Manuel $

10.6.

QUOTES (COMILLAS)

En la programacin de scripts, utilizamos caracteres con un significado especial para el shell, como * o ?. Las comillas son utilizadas para delimitar cadenas de texto y deshabilitar el tratamiento, por parte del shell, de ciertos dichos caracteres especiales. El carcter de escape '\' se utiliza para preservar el valor literal del carcter que le sigue. Se puede preservar el valor literal de cualquier carcter con la excepcin del carcter de nueva lnea.

193

10
Veamos un ejemplo del uso del carcter de escape: $ a="Ramon Alvarez" $ echo $a Ramon Alvarez $ echo \$a $a

Shell Scripts

Como se puede ver, si precedemos el carcter '$' con el carcter de escape, ste pierde su valor especial para el shell. Dentro de un script utilizaremos tres tipos diferentes de comillas: las comillas simples ('), las comillas dobles (") y las comillas invertidas (`). Dentro de unas comillas simples, todos los caracteres, excepto las comillas simples, se interpretan literalmente. Veamos un ejemplo:

$ echo $a Ramon Alvarez $ echo '$a' $a

Vemos en el ejemplo que dentro de las comillas simples, no se interpreta el carcter '$'. Una cadena delimitada por comillas dobles '"' preserva el valor literal de todos los caracteres con la excepcin de '$', '`' (comillas invertidas) y '\' (carcter de escape). En nuestro ejemplo saludo.sh, el comando echo se ejecuta con dos argumentos entrecomillados, $Saludo $1 lo cual har que el shell lo entienda como escribir el contenido de las variables Saludo y 1 y no como escribir $Saludo y $1. Las comillas invertidas son utilizadas para almacenar la salida de un comando. El siguiente ejemplo ilustra este procedimiento:

$ ls lemon.html report1.txt $ salida_ls=`ls` $ echo $salida_ls

194

10
lemon.html report1.txt $(comando). Por ejemplo: $ ls lemon.html report1.txt $ salida_ls=$(ls) $ echo $salida_ls lemon.html report1.txt

Shell Scripts

Se puede obtener la misma funcionalidad de las comillas invertidas utilizando la llamada

10.7.

ARGUMENTOS

De igual forma que los comandos pueden recibir argumentos cuando son ejecutados, los scripts que nosotros creemos tambin pueden hacerlo. La variables especiales 1,2,...9 guardan los argumentos en el orden en el que se han especificado. La variable especial 0, guarda el nombre del script. El nmero de argumentos se almacena en la variable #. Por ltimo, la variable * contiene una lista con todos los argumentos empezando por el 1. En saludo.sh puede ver que en la ltima lnea habamos escrito echo $Saludo $1 y slo se imprima en pantalla Hola. Ello se debe a que no le habamos pasado argumentos al script en el momento de ejecutarlo. Si lo hacemos, veremos como $1 es sustituido por el argumento:

$./saludo.sh Manuel Hola Manuel $

Veamos otro ejemplo que ilustra el tratamiento de los argumentos. El contenido del script es el siguiente:

#! /bin/bash # Este script muestra distinta informacin sobre los # argumentos que se le pasan desde la lnea de comandos. echo "Argumentos:" echo "0 - $0"

195

10
echo "1 - $1" echo "2 - $2" echo "3 - $3" echo "4 - $4" echo "5 - $5" echo "6 - $6" echo "7 - $7" echo "8 - $8" echo "9 - $9" echo echo "Numero de argumentos pasados: $#" echo echo "Todos los argumentos" echo "\$* = $*"

Shell Scripts

Llamaremos al script de la siguiente forma:

$ chmod u+x muestra_parametros $ ./muestra_parametros uno dos tres cuatro "Mismo parametro" Distinto parametro

Argumentos:

0 - ./muestra_parametros 1 - uno 2 - dos 3 - tres 4 - cuatro 5 - Mismo parametro 6 - Distinto 7 - Parametro 89Nmero de argumentos pasados: 7 Todos los argumentos $* = uno dos tres cuatro Mismo Parametro Distinto Parametro

196

10
por comillas. 10.8. CONDICIONES

Shell Scripts

Observamos que "Mismo Parmetro" se considera un nico parmetro ya que est rodeado

Para evaluar condiciones dentro de un script, utilizaremos el comando test. El comando test nos devuelve un 0 si la condicin es cierta y un 1 si es falsa. Como podemos ver, este convenio es contrario al usado en la mayora de lenguajes de programacin. Se utilizan estos valores debido a que los programas en UNIX devuelven un 0 cuando su ejecucin se ha realizado con normalidad y otro valor, distinto de 0, cuando se ha producido algn error. Existe otra forma de comprobar una condicin, equivalente a test. Esta forma consiste en rodear la expresin a evaluar por corchetes '[]' de la siguiente manera '[ expresin ]'. Es muy importante dejar un espacio a cada lado de la expresin separndola de los corchetes. Es posible usar operadores relacionales como -a (AND) y -o (OR) para crear condiciones ms complejas. Los lista de operadores aceptados por el comando test es bastante extensa y se puede consultar en su pgina del manual. Para comparar cadenas podemos usar = y !=. Pero si comparamos variables as deberemos encerrar las variables entre comillas ya que a veces se pueden comparar variables con espacios o vacas y dar lugar a situaciones extraas. Usemos esta sintaxis:

[ $cadena1 = $cadena2 ]

Ejemplo:

[ $1 = $2 ]

Esto comparara los dos primeros argumentos de un script.

Para comparar nmeros usaremos los siguientes operadores aritmticos:

Operador -eq -ne Igual a Distinto a

Significado (equal) (not equal)

197

10
-gt -lt -ge -le Mayor que Menor que Mayor o igual a Menor o igual a (greater than) (lower than) (lower or equal than) Ejemplo:

Shell Scripts

(greater or equal than)

$[ 3 -lt 5 ] $echo $? 0 $[ 3 -gt 5 ] $echo $? 1 $

Como puede ver, la primera lnea efecta una comparacin entre 3 y 5, concretamente comprueba si 3 es menor que 5. En la lnea siguiente miramos si tuvo xito o no dicha comparacin mirando el valor devuelto por $?, y resulta ser 0, xito. Si ahora comprobamos si 3 es mayor que 5, y comprobamos de nuevo el valor salida del comando anterior, obtenemos 1, es decir, error.

10.9.

CONTROL DE FLUJO

Aunque en el ejemplo anterior habamos utilizado las condiciones directamente en el intrprete de comandos, es posible usarlas tambin dentro de los scripts. Para ello, deberemos usar unas nuevas estructuras de programacin (instrucciones de control de flujo) que nos permitan ejecutar instrucciones segn el xito o fracaso de las condiciones que introduzcamos: if until while for select case

198

10
10.9.1. Estructura condicional if sintaxis de la instruccin 'if' es la siguiente: if <condicin > then <comandos a ejecutar> else <comandos a ejecutar> fi

Shell Scripts

La instruccin 'if' sirve para bifurcar el control del programa entre dos posibilidades. La

Podemos utilizar 'elif' para anidar varias estructuras 'if':

if <condicin 1 > then <comandos a ejecutar> elif condicin2 then <comandos a ejecutar> else <comandos a ejecutar> fi

Ejemplo:

#! /bin/bash # Script saludo3.sh #Este script es llamado con el saludo y persona a saludar. #Copiamos el valor del primer argumento en la variable Saludo Saludo=$1 #Efectuamos comparaciones If [ $Saludo = Hola ] then echo $Saludo $2 else echo Adios $2

199

10
Veamos el resultado de su ejecucin: $./saludo3.sh Hola Manuel Hola Manuel $./saludo3.sh hola Manuel Adis Manuel $

Shell Scripts

Vemos como en la primera ejecucin, el primer argumento era Hola y la condicin se cumpli. En la segunda ejecucin introdujimos hola como primer argumento y la comparacin no tuvo xito, por lo que se ejecut la rama else de la sentencia if. 10.9.2. Estructura selectiva mltiple case

Si tenemos una instruccin if con muchas ramas podemos utilizar la instruccin case especialmente indicada para este caso. Su sintaxis es:

case <variable> in patron1) patron2) instrucciones ;; instrucciones ;; *) esac instrucciones ;;

El patrn * se utiliza cuando no se ha cumplido ningn patrn anterior. Lo vamos a ver en un ejemplo:

#! /bin/bash # Script saludo4.sh #en este script,determinamos el saludo a imprimir en funcin del primer argumento. En #este ejemplo no lo hemos copiado previamente en la #variable Saludo.

200

10
case $1 in Hola) echo Hola $2;; Adios) echo Adios $2;; *)echo Que tal Manuel? esac

Shell Scripts

Aqu tenemos su ejecucin con diferentes argumentos:

$./saludo4.sh Hola Manuel Hola Manuel $./saludo4.sh Adis Manuel Adis Manuel $./saludo4.sh hola Manuel Que tal Manuel? $./saludo4.sh saludar Manuel Que tal Manuel?

10.9.3.

Estructuras iterativas

Estas instrucciones nos permiten ejecutar sentencias mientras se cumple o no una cierta condicin. Son las instrucciones while, until y for. 10.9.3.1. Instruccin while Una estructura 'while' nos permite iterar en un bucle mientras que se cumpla una condicin. La sintaxis de una estructura 'while' es la siguiente:

while <condicin> do <comandos a ejecutar> done

201

10
Ejemplo: #! /bin/bash # Script saludo5.sh #Este script pide un saludo, saliendo cuando es Adios #Copiamos los argumentos Saludo=$1 Nombre=$2

Shell Scripts

#Saludamos y pedimos un nuevo saludo. Esto lo repetiremos mientras el #saludo sea distinto de Adios. while [ $Saludo != Adios ] do echo $Saludo $Nombre read p Proximo saludo: Saludo done echo Adios $Nombre

Veamos como se ejecuta este script:

$./saludo5.sh Hola Manuel Hola Manuel Prximo saludo: que tal que tal Manuel Prximo saludo: como estas como estas Manuel Prximo saludo: Adis Adis Manuel $

202

10
10.9.3.2. Instruccin until condicin: until <condicin> do <comandos a ejecutar> done

Shell Scripts

La instruccin until permite repetir un conjunto de instrucciones mientras no se cumpla la

Ejemplo:

#! /bin/bash # Script saludo6.sh #Este script pide un saludo saliendo cuando es Adios #Copiamos los argumentos Saludo=$1 Nombre=$2 #Saludamos y pedimos un nuevo saludo. Esto lo repetiremos mientras el #saludo sea distinto de Adios. until [ $Saludo = Adios ] do echo $Saludo $Nombre read p Proximo saludo: Saludo done echo Adios $Nombre

Ejecucin:

$./saludo6.sh Hola Manuel Hola Manuel Prximo saludo: que tal que tal Manuel Prximo saludo: bueeeenas bueeeenas Manuel Prximo saludo: Adis

203

10
Adis Manuel $ 10.9.3.3. Instruccin for

Shell Scripts

Un bucle 'for' nos permite recorrer una lista de valores y ejecutar un conjunto de instrucciones por cada valor. La sintaxis de un bucle for es:

for <variable> in <lista de valores> do <comandos a ejecutar > done

Ejemplo:

#! /bin/bash # Script saludo7.sh #Este script recibe 2 argumentos: el primero es el saludo a imprimir y el #segundo es la lista de personas a saludar for Nombre in $2 do echo $1 $Nombre done

Veamos como llamar a este script:

$./saludo7.sh "que tal" "Ale Juan Sergio Manuel" que tal Ale que tal Juan que tal Sergio que tal Manuel $

204

10
10.9.3.4. Instruccin shift encuentra en esta instruccin.

Shell Scripts

Esta instruccin no es en s misma un bucle, pero se usa muy frecuentemente con ellos. Ya que no podemos acceder a argumentos ms all de la posicin 9 ($9), la solucin se

Su funcin es reasignar los parmetros: el valor de $1 se pierde y en su lugar $1 toma el valor de $2, $2 tomar el valor de $3, $3 el de $4, .., $9 tomar el valor de $10. El valor de $0 permanece inalterable y su valor es el nombre del script. Veamos un ejemplo:

#! /bin/bash # Script saludo8.sh #Este script saludar mientras el primer parmetro no sea la cadena #vaca while [ "$1" != "" ] do echo $1 shift done

Lo ejecutaremos primero pasndole 4 parmetros:

$./saludo8.sh Manuel Sergio Rafael Santi Manuel Sergio Rafael Santi

Ahora no le pasamos ningn parmetro.

$./saludo8.sh $

Vemos como al ser el primer parmetro vaci, no se entra en el bucle while y el script termina.

205

10
10.9.4. Estructura de seleccin interactiva select que el usuario pueda seleccionar la opcin que desea. Veamos un ejemplo: La sintaxis es:

Shell Scripts

Esta instruccin nos permite presentar al usuario un men de opciones numeradas de forma

select <variable> in <lista de opciones> do <lista de instrucciones> done

Para salir del bucle select tenemos que escribir la instruccin exit.

#! /bin/bash # Script saludo8.sh #Este script presenta al usuario 2 opciones, Saludar o Finalizar. Al usuario se le mostrarn numeradas de forma que le sea fcil la eleccin.

OPCIONES=Saludar Finalizar select opt in $OPCIONES do if [ $opt = Finalizar ] then echo Adios exit elif [ opt = Saludar ] then read p A quien saludamos?: Nombre read p Cmo saludamos?: Saludo echo echo $Saludo $Nombre echo fi done #imprime lnea en blanco #imprime lnea en blanco #salimos del bucle select

206

10
La ejecucin de este script sera la siguiente: $./saludo8.sh 1) Saludar 2) Finalizar #? 1 A quien saludamos: Manuel Como saludamos?: Buenos Das Buenos Das Manuel 1) Saludar 2) Finalizar #? 2 Adis $

Shell Scripts

10.10.

FUNCIONES

Al igual que en la mayora de lenguajes de programacin, es posible reutilizar cdigo en forma de funciones. Para definir una funcin escribiremos:

function nombre-funcin { #<comandos dentro de la funcin> }

Una vez definida la funcin, podemos usarla de la misma forma que cuando llamamos a otra orden. Si la funcin necesita parmetros, debemos escribirlos, en la llamada, a continuacin del nombre de la funcin. En la definicin no hace falta definirlos como se suele hacer en los lenguajes de programacin.. Siguiendo con nuestros ejemplos, crearemos unas funcin saludar() a la que pasaremos los nombres de las personas a saludar.

207

10
#! /bin/bash # Script saludo9.sh persona a saludar. function saludar { echo "Hola $1" } saludar Manuel saludar Sergio saludar Rafa saludar Santi

Shell Scripts

#Este script define una funcin saludar() que recibe como parmetro el #nombre de la

$./saludar9.sh Hola Manuel Hola Sergio Hola Rafa Hola Santi $

208

10
recuerde_
entiende el shell. lnea sea la que especifica el shell que deber ejecutarlo.

Shell Scripts

Los Shell Scripts son programas realizados en el lenguaje de comandos que

Tiene a su disposicin diferentes shells (bash, csh, ksh, etc), cada uno con sus propias caractersticas que pueden hacer que su script no se comporte como espera. Por ello, se recomienda que al escribir un script la primera

Para ejecutar un script este debe tener permiso de ejecucin o ser ejecutado como argumento del shell.

Puede escapar los caracteres especiales mediante \. Para las cadenas, se usan dos tipos de entrecomillado: simple, , y doble,. El primero trata los caracteres especiales como si fueran normales, mientras que el segundo considera especiales a $,\ y.

209

glosario_

Administracin. Proceso por el cual se mantiene un sistema a punto y operativo, gracias al administrador o root, el cual determina acciones como: tratamiento del hardware, administracin de cuentas, seguridad del sistema, etc. Alias. Orden interna de Bash que permite sustituir una cadena de texto por otra. Apache. Servidor de pginas web. En la actualidad, el ms utilizado en Internet. B Background. Segundo plano. Un proceso en segundo plano se ejecuta sin nuestra interactividad, o bien por haber pasado a modo suspendido. Bash. Bourne Again Shell. Intrprete de comandos. Shell por defecto en la mayora de las distribuciones de GNU/Linux actuales, cuya funcin es recoger las rdenes del usuario y pasarlas al sistema. Boot. Proceso de arranque de un sistema informtico. BSD. Berkeley software Distribution. Adaptacin del UNIX original de AT&T por la Universidad de Berkeley. C Case Sensitivity. En los sistemas UNIX se distingue entre maysculas y minsculas en nombres de ficheros, passwords, opciones, etc. Compilar. Proceso por el cual se obtiene un ejecutable a partir del cdigo fuente de un programa. Consola. Combinacin de teclado y monitor del equipo donde se encuentra instalado Linux. Cuenta. Espacio de trabajo en la mquina que se concede al usuario. D Demonio. Programa que se ejecuta en segundo plano y que ofrece algn tipo de servicio, como: HTTP, NFS, FTP, etc. DISPLAY. Variable de entorno usada por los clientes X Window para identificar el servidor al que se deben conectar.

211

glosario_

Emacs. Editor de textos con funciones avanzadas. Entrada/salida estndar. Se establece en el teclado la entrada de datos por defecto y la salida estndar de stos en la pantalla del monitor. Ext2. Sistema de ficheros habitual en sistemas Linux, que empieza a ser sustituido por otros ms avanzados (como ext3 o ReiserFS). F Filtro. Programa o conjunto de programas suministrada para generar una salida. Foreground. Primer plano. Un programa se ejecuta en primer plano cuando interacta con el usuario a travs de la entrada y salida estndar. FSF. Free Software Foundation. Fundacin de Software libre. Fundacin que pretende el desarrollo de un sistema operativo libre tipo UNIX. Ftp. File Transfer Protocol. Protocolo de transferencia de ficheros. Servicio de Internet que permite el envo y la recepcin de ficheros. que modifican una entrada

G GCC. GNU C Compiler. Compilador estndar de los sistemas Linux. GCOS o GECOS. General Electric Comprehensive Operating System. Sistema operativo previo a Unix. Se tomo como nombre para el campo de informacin personal en los ficheros /etc/passwd de UNIX, ya que estaba inspirado en l. GID. Group IDentification. Nmero que identifica un grupo de usuarios en una mquina. GNOME. GNU Network Object Model Environment. Escritorio grfico basado en la librera GTK+. GNU. Acrnimo de Gnu is Not Unix. Proyecto de la FSF para crear un sistema operativo libre tipo UNIX. GPL. General Public License. Licencia legal creada por la FSF para proteger la creacin y distribucin de software libre. Groupware: o trabajo colaborativo. Es un software para trabajar en grupo. H Host. Nombre de un ordenador en una red.

212

HOWTO. Documento que trata algn tema relacionado con Linux o con el

glosario_

software libre, que en espaol se denominan COMO. HTTP. HyperText Transfer Protocol. Protocolo de transferencia de hipertextos. Protocolo de red creado para la transmisin de pginas hipertexto. HURD. Hird of Unix-replacing Daemons Horda de Demonios sustituyentes de Unix, HIRD - Horde of Interfaces Representing Depth , Horda de Interfaces representando profundidad. Ncleo micro-kernel, an en desarrollo, para el sistema operativo GNU. Debido a que al poco de comenzar su construccin por Richard M. Stallman, se desarroll el ncleo Linux, se us este como ncleo, dando como resultado el sistema operativo GNU/Linux. I Init. Primer proceso que se ejecuta en el arranque de la mquina, que entre otras funciones, determina el nivel de ejecucin (runlevel) del sistema. K KDE. K Desktop Environment. Entorno de escritorio programado en C++ y con la base de libreras QT, que integra gestor de ventanas propio y una barra de tareas; al igual que GNOME, permite la interaccin entre sus aplicaciones. Kernel. Vase ncleo. Kerneld. Demonio encargado de la carga dinmica de mdulos del kernel. L LaTeX. Lenguaje para el formateado de textos muy utilizado en entornos cientficos por la facilidad que proporciona para crear documentos matemticos. LILO. LInux LOader. Programa que nos permite seleccionar el sistema operativo que se debe arrancar al iniciar la mquina. Linus Torvalds. Creador del ncleo Linux. En la actualidad, sigue siendo uno de los principales desarrolladores. Linux. Ncleo del sistema operativo GNU/Linux. Por extensin, se le llama a Linux al sistema operativo completo Login. Programa encargado de validar un usuario a su entrada en el sistema. Loopback. Dispositivo de red ficticio utilizado para permitir el trabajo local a diferentes programas que requieren el uso de una interfaz de red.

213

Lpd.

Demonio

encargado

de

gestionar

las

peticiones

de

impresin

de

glosario_

documentos. M Man. Sistema de ayuda muy utilizado en sistemas UNIX. Abarca todos los aspectos del sistema: comandos, programacin, ficheros de configuracin, etc. MBR. Master Boot Record. Tabla de informacin referente al tamao de las particiones. MINIX: Mini Unix. Sistema operativo acadmico, basado en UNIX, creado por Andrew S. Tanembaum para impartir la asignatura de Sistemas Operativos. Dado que estaba orientado a estudiantes, fue desarrollado para que pudiera ser ejecutado en una plataforma no muy costosa: los procesadores Intel 8086. Linus tom Minix como base para crear Linux para el procesador Intel 80386 que posea. MIT. Massachussets Institute of Technology. Universidad privada fundada en 1860 en Cambridge, MA. Richard M. Stallman program en ella en los aos 70 el editor EMACS. En los daos 80, se desarroll el Proyecto Athena, que dara lugar al sistema X Window. Mdulos. Porcin de cdigo que se aade en tiempo de ejecucin al kernel para el manejo de dispositivos o aadir funcionalidad. Monousuario. Sistema informtico que nicamente admite el trabajo de un usuario. Montar. Aadir un dispositivo o un sistema de ficheros al rbol de directorios de la mquina. Motif. Librera de funciones para el desarrollo de aplicaciones grficas. Son de carcter comercial, aunque existe una implementacin libre llamada lesstif. Mtools. Conjunto de herramientas para la administracin de ficheros, disquetes o discos duros con el sistema de archivos de MS-DOS. Multitarea. Capacidad de un sistema informtico para ejecutar de forma simultnea varias aplicaciones. Multiusuario. Capacidad de un sistema informtico que permite a varios usuarios utilizar simultneamente la misma mquina. N Ncleo. Componente de un sistema operativo encargado de la gestin de: hardware, memoria y todas las operaciones internas. Linux es el ncleo del sistema operativo GNU/Linux.

214

glosario_

Password. Clave personal de un usuario que le permite el acceso a un sistema informtico o servicio. PATH. Variable de entorno que contiene un listado de directorios del sistema en los que se buscar un comando o aplicacin cuando se llame sin especificar su ruta completa. Permisos. Informacin asociada a un fichero o directorio de un sistema UNIX que establece restricciones de uso a usuarios y grupos del sistema. PID. Process IDentification. Numero nico que identifica un proceso en un sistema UNIX. POSIX. Portable Operating System Interface X. Estndar que define normas para dar homogeneidad a la gran cantidad de sistemas de tipo UNIX existentes. Postscript. Formato profesional de impresin usado habitualmente en dispositivos de impresin de gama alta. Proceso. Programa en ejecucin en un sistema informtico. Prompt. Indicador del sistema que muestra el shell para indicar que est a la espera de recibir una orden. R Redireccin. Procedimiento que permite redirigir los flujos de entrada y salida de un proceso. Es habitual redirigir el flujo de salida de un programa a un fichero. Richard M. Stallman: Fundador del proyecto GNU y de la Free Software foundation( FSF) en 1985. Desarroll el editor EMACS, el compilador gcc (GNU C Compiler) y el depurador gdb (GNU Debugger). Tambin fue el creador del concepto de la licencia GPL. Root. Usuario de un sistema UNIX encargado de la administracin de la mquina. El usuario root opera sin ningn tipo de restriccin, por lo tanto, nicamente debe utilizarse para tareas administrativas. S Seales. Notificaciones que utilizan los procesos de la mquina para informar de diversas circunstancias de funcionamiento. Shell. Aplicacin encargada de interpretar los comandos introducidos por el usuario y comunicarlo al sistema para su ejecucin.

215

Superusuario. Nombre habitual por el que se designa al usuario root.

glosario_

Swap. Parte del disco duro utilizada por el sistema para almacenar los fragmentos de la memoria RAM menos utilizados. T Telnet. Protocolo que nos permite la conexin en modo texto a un ordenador a travs de una red, que est siendo sustituido por el protocolo SSH. Terminal. Teclado y monitor conectado por algn medio a un sistema UNIX. Tubera. Sistema que permite la conexin, en forma de cadena, de las salidas y entradas estndar de distintos procesos. U UID. User IDentification. Nmero mediante el cual el sistema identifica un usuario. UNIX. Sistema operativo creado por AT&T a mediados de los 70. V VI. Editor de texto potente y verstil. Su amplia difusin lo convierte en el estndar de facto entre todos los sistemas UNIX. W Window Manager. Gestor de ventanas. Programa encargado de dar apariencia a los programas que se ejecutan bajo X Window. X X o X Window. Entorno grfico estndar en sistemas UNIX cuya versin ms extendida en Linux se denomina XFree86. Xterm. Terminal virtual que opera bajo X Window.

216

Das könnte Ihnen auch gefallen