Linux Basic o

Embed Size (px)

Citation preview

  • GNU/LinuxBsico

    P07/M2102/02688

  • FUOC P07/M2102/02688 GNU/Linux Bsico

    ndice

    1. Presentacin.................................................................................... 71.1. Qu es el GNU? ....................................................................... 71.2. Qu es GNU/Linux? ................................................................ 91.3. Distribuciones ............................................................................ 111.4. Programas y documentacin .................................................... 14

    2. Conceptos y comandos bsicos................................................... 172.1. Introduccin .............................................................................. 172.2. Usuarios y grupos ..................................................................... 182.3. El sistema de ficheros ............................................................... 23

    2.3.1. La jerarqua del sistema de ficheros .............................. 232.3.2. Directorios del sistema .................................................. 252.3.3. Movindonos ................................................................. 262.3.4. Enlaces ............................................................................ 272.3.5. Permisos ......................................................................... 282.3.6. Manipulacin, patrones y bsquedas ............................ 302.3.7. Tipos y contenido de ficheros ....................................... 32

    2.4. Los procesos .............................................................................. 332.5. Otros comandos tiles .............................................................. 36

    2.5.1. La ayuda del sistema ..................................................... 362.5.2. Empaquetado y compresin .......................................... 372.5.3. Operaciones de disco ..................................................... 38

    2.6. Operaciones con comandos ...................................................... 412.6.1. Redireccionamientos ...................................................... 412.6.2. Comandos especficos del bash...................................... 422.6.3. Shell scripts con bash....................................................... 44

    3. Taller de Knoppix.......................................................................... 463.1. Introduccin .............................................................................. 463.2. Arranque del sistema ................................................................ 473.3. Paro del sistema ........................................................................ 503.4. Configuracin del teclado ........................................................ 503.5. Inspeccin del sistema .............................................................. 533.6. Manejo de directorios y ficheros .............................................. 583.7. Administracin de usuarios ...................................................... 643.8. Gestin de procesos .................................................................. 683.9. Activacin y uso del ratn ....................................................... 703.10.Otras operaciones ...................................................................... 713.11.Conclusin ................................................................................ 73

    4. Instalacin de GNU/Linux........................................................... 744.1. Introduccin .............................................................................. 74

  • FUOC P07/M2102/02688 GNU/Linux Bsico

    4.2. Arrancando ................................................................................ 744.3. Particionando del disco ............................................................ 754.4. Instalacin de mdulos ............................................................ 774.5. Configuracin bsica de la red ................................................. 784.6. Sistema de arranque .................................................................. 794.7. Eleccin de paquetes ................................................................. 794.8. Otros aspectos ........................................................................... 80

    5. Taller de instalacin de Debian Etch....................................... 825.1. Introduccin .............................................................................. 82

    5.1.1. Sistemas de instalacin .................................................. 845.1.2. Tipos de paquetes .......................................................... 865.1.3. Estado de desarrollo de los paquetes ............................. 87

    5.2. Instalacin de Debian Etch ....................................................... 875.2.1. Sabores de Debian Etch ................................................. 885.2.2. Installing Debian GNU/Linux 4.0 For Intel x86 ............ 88

    5.3. Instalacin de Debian Etch mediante DVD-ROM .................... 885.3.1. Antes de empezar la instalacin .................................... 885.3.2. Arranque del sistema de instalacin ............................. 905.3.3. Configuracin del idioma de instalacin ...................... 935.3.4. Configuracin del teclado ............................................. 945.3.5. Detectar y montar el CD-ROM ...................................... 955.3.6. Configuracin de la red ................................................. 965.3.7. Particin del disco duro ................................................ 985.3.8. Configuracin horaria ................................................... 1025.3.9. Configurar usuarios y contraseas ................................ 1035.3.10. Instalacin del sistema base .......................................... 1065.3.11.Configurar el gestor de paquetes ................................... 1085.3.12.Seleccionar e instalar programas ................................... 1085.3.13. Instalacin de GRUB ..................................................... 1085.3.14.Reinicializacin del sistema ........................................... 1095.3.15.Arranque del sistema base ............................................. 1095.3.16.Configuracin de apt ..................................................... 1105.3.17.Tasksel ............................................................................ 111

    5.4. Instalacin de Debian Etch por Red ......................................... 1145.4.1. Particularidades de una instalacin por Red ................. 1145.4.2. Aspectos comunes de los distintos mtodos de

    instalacin ...................................................................... 1145.4.3. Instalacin del mdulo de Red ..................................... 1155.4.4. Configuracin de la red ................................................. 1165.4.5. Configuracin de apt ..................................................... 117

    5.5. Conclusin ................................................................................ 117

    6. Configuraciones bsicas............................................................... 1186.1. El sistema de login...................................................................... 1186.2. Explorando el bash..................................................................... 1196.3. El sistema de arranque .............................................................. 121

  • FUOC P07/M2102/02688 GNU/Linux Bsico

    6.3.1. Grub ............................................................................... 1226.4. Acceso a otras particiones y dispositivos .................................. 1256.5. Configuracin de dispositivos .................................................. 128

    6.5.1. El teclado ....................................................................... 1286.5.2. Tarjeta de red (tipo Ethernet) ........................................ 1306.5.3. Tarjeta WiFi .................................................................... 1326.5.4. Mdems .......................................................................... 1336.5.5. ADSL y PPPoE ................................................................ 1356.5.6. Tarjeta de sonido ........................................................... 1356.5.7. Impresora ....................................................................... 136

    7. Daemons y runlevels...................................................................... 1387.1. Los daemons................................................................................ 1387.2. Los runlevels................................................................................ 1417.3. El arranque del sistema ............................................................. 1447.4. Daemons bsicos ........................................................................ 144

    7.4.1. Logs de sistema (sysklogd) ............................................. 1457.4.2. Ejecuciones peridicas (cron) ........................................ 1477.4.3. Ejecuciones retardadas (at y batch) ............................... 149

    8. Instalacin de aplicaciones......................................................... 1518.1. Introduccin .............................................................................. 1518.2. El sistema de paquetes Debian ................................................. 1528.3. Compilacin de nuevos programas .......................................... 156

    9. Taller de configuraciones bsicas.............................................. 1589.1. Introduccin .............................................................................. 1589.2. El gestor de arranque ............................................................... 158

    9.2.1. Instalacin de Grub ...................................................... 1599.3. El sistema de paquetes .............................................................. 161

    9.3.1. /etc/apt/sources.list ........................................................ 1629.3.2. apt .................................................................................. 1639.3.3. dpkg ............................................................................... 1679.3.4. dselect ............................................................................ 1689.3.5. aptitude .......................................................................... 168

    9.4. locales: configuracin regional ................................................. 1689.5. El archivo principal de arranque, /etc/inittab .......................... 1699.6. Montaje de dispositivos, /etc/fstab ........................................... 1699.7. Configuracin de dispositivos .................................................. 171

    9.7.1. Configuracin del ratn ................................................ 1729.7.2. Configuracin de mdems ............................................ 1749.7.3. Configuracin de mdems DSL .................................... 1769.7.4. Configuracin de tarjetas de red ................................... 1779.7.5. Configuracin de impresoras ........................................ 1799.7.6. Configuracin de tarjetas de sonido ............................. 181

    9.8. Conclusin ................................................................................ 181

  • FUOC P07/M2102/02688 GNU/Linux Bsico

    10. Arquitectura X-Window.............................................................. 18310.1.Qu es X-Window? .................................................................. 18310.2.Configuracin ............................................................................ 18810.3.X display manager....................................................................... 191

    11. Taller de X-Window...................................................................... 19411.1.Introduccin .............................................................................. 19411.2.Instalacin y configuracin del servidor X .............................. 194

    11.2.1.Distintas estrategias para la instalacin de lospaquetes ......................................................................... 194

    11.2.2. Instalacin de paquetes bsicos ..................................... 19511.3.Configuracin de X .................................................................. 197

    11.3.1.Seccin ''Device'' ............................................................ 19811.3.2.Seccin ''Monitor'' .......................................................... 19811.3.3.Seccin ''Screen'' ............................................................. 19911.3.4.Seccin ''InputDevice'' ................................................... 20011.3.5.Seccin ''ServerLayout'' .................................................. 20211.3.6.Seccin ''DRI'' ................................................................. 20211.3.7.Seccin ''Files'' ................................................................ 20311.3.8. Inicializacin del servidor ............................................. 20311.3.9.El fichero de log.............................................................. 204

    11.4.Window managers........................................................................ 20411.5.X Session manager .................................................................... 20611.6.X Display manager ................................................................... 20611.7.Desktop managers........................................................................ 207

    11.7.1.GNOME .......................................................................... 20711.7.2.KDE ................................................................................ 208

    11.8.Personalizacin de algunos aspectos ........................................ 20911.8.1.Personalizacin de aspectos locales ............................... 20911.8.2.Personalizacin de aspectos de red ............................... 211

    11.9.Configuracin de impresoras .................................................... 21211.10. .OpenOffice ................................................................................ 21511.11. .Conclusin ................................................................................ 216

  • FUOC P07/M2102/02688 7 GNU/Linux Bsico

    1. Presentacin

    1.1. Qu es el GNU?

    Para entender todo el movimiento del software libre, debemos situarnos a fi-nales de la dcada de los sesenta, principios de los setenta. En aquellos tiem-pos las grandes compaas de ordenadores no otorgaban el valor que hoy enda se da al software. En su gran mayora eran fabricantes de ordenadores queobtenan sus principales ingresos vendiendo sus grandes mquinas, a las queincorporaban algn tipo de sistema operativo y aplicaciones. Las universida-des tenan permiso para tomar y estudiar el cdigo fuente del sistema opera-tivo para fines docentes. Los mismos usuarios podan pedir el cdigo fuentede drivers y programas para adaptarlos a sus necesidades. Se consideraba que elsoftware no tena valor por s mismo si no estaba acompaado por el hardwa-re que lo soportaba. En este entorno, los laboratorios Bell (AT&T) disearonun sistema operativo llamado UNIX, caracterizado por la buena gestin de losrecursos del sistema, su estabilidad y su compatibilidad con el hardware dediferentes fabricantes (para homogeneizar todos sus sistemas). Este ltimo he-cho fue importantsimo (hasta entonces todos los fabricantes tenan sus pro-pios operativos incompatibles con los otros), ya que devino el factor que leproporcion mucha popularidad.

    Stallman, sin drivers

    El mismo Stallman cuenta como ancdota lo mucho que se enfad al descubrir que lacompaa que les haba vendido una nueva impresora para el laboratorio donde traba-jaba no le quera facilitar el cdigo fuente de los drivers. l slo quera modificarlos pa-ra que le avisara automticamente cuando se atascaba el papel! La compaa se neg aproporcionrselos.

    Poco a poco, las grandes empresas empezaron a tomar conciencia del valor delsoftware: primero fue IBM la que en 1965 dej de dar el cdigo fuente de susistema operativo, a finales de los setenta Digital Research empez a venderel suyo, etc. Este hecho hizo que todas las compaas se dieran cuenta de queel software poda ser muy rentable y les poda aportar grandes beneficios. Apartir de este hecho, la mayora de las empresas empezaron a poner reticenciasa dejar el cdigo fuente de sus programas y sistemas operativos, y empezaron avender sus programas como un valor aadido a su hardware. En este entornocada vez ms cerrado, Richard Stallman (que trabajaba en el MIT, Massachu-setts Institute of Technology) se sinti indignado al comprobar que cada vezera ms difcil conseguir el cdigo fuente de los programas que utilizaba paraadaptarlos a sus necesidades, tal como haba hecho hasta entonces.

  • FUOC P07/M2102/02688 8 GNU/Linux Bsico

    A partir de ese momento, Stallman decidi ser consecuente con sus ideales einiciar un gran proyecto para intentar abrir otra vez el cdigo fuente de losprogramas. Consciente de que no podra conseguir que las compaas cedieranen este punto, se propuso crear su propio sistema operativo y aplicacionesiniciando un proyecto denominado GNU.

    De especial inters para entender los motivos que llevaron a Stallman a iniciarGNU es su primer manifiesto, el documento donde explic a toda la comu-nidad en qu consistira el proyecto, cmo lo orientara y por qu tena quehacerlo. En l empez a describir el concepto de software libre y para qu creanecesario que programadores y desarrolladores de todo el mundo contribuye-ran con l. Aunque en muchas ocasiones se confunde el concepto de softwa-re libre con el de software gratuito (en ingls, free tiene los dos significados),en posteriores documentos se ha dejado muy claro que el software libre nodebe por qu ser gratuito. Hemos de entender como software libre programasde los cuales podemos conseguir su cdigo fuente, estudiarlo, modificarlo yredistribuirlo sin que nos obliguen a pagar por ello. Lo que debemos tenerclaro es que s que podemos pedir el dinero que queramos por los programasy su cdigo fuente, el soporte que podemos ofrecer a los usuarios, los librosque vendamos o el material que proporcionemos, tal y como muchas compa-as que distribuyen GNU/Linux hacen. Sin embargo, en ningn momento,podemos obligar a que los usuarios no distribuyan el software que les hemosvendido. ste debe poder ser distribuido de manera libre. Es un modo diferen-te de entender el software al que estamos acostumbrados. En muchos de lostextos de la FSF (Free Software Foundation) se habla ms de filosofa que deingeniera. Debemos entender todo este movimiento ms como un modo depensar o hacer las cosas que como una compaa ms de software.

    La filosofa que en la FSF se tiene del software lo define con las siguientescuatro libertades:

    La libertad 0 se refiere a la libertad de poder usar el programa para cualquierpropsito.

    La libertad 1 es la que permite estudiar cmo funciona el programa y adap-tarlo a las propias necesidades. El acceso al cdigo fuente es una condicinnecesaria para garantizar esta libertad.

    La segunda libertad es la que permite distribuir libremente copias del soft-ware, ayudando al vecino.

    La ltima libertad es la que permite mejorar el programa y hacer pblicaslas propias mejoras, en beneficio de toda la comunidad. El acceso al c-digo fuente, asimismo, es un requisito imprescindible para asegurar estalibertad.

  • FUOC P07/M2102/02688 9 GNU/Linux Bsico

    Para dar todas estas libertades al software que se desarrollaba en el proyectoy a los usuarios finales del mismo se escribi la licencia GPL (General PublicLicense), con la cual se ha protegido todo este tipo de programas. Esta licenciapone por escrito las ideas anteriormente comentadas.

    El proyecto empez a producir software a partir de 1984, comenzando conel desarrollo de todas las herramientas necesarias para poder implementar unsistema operativo completo. Aunque realizar un proyecto de estas caracters-ticas es un proceso largo y complejo, desde el principio muchos programado-res y desarrolladores de software se vieron cautivados por la idea de Stallmany empezaron a colaborar con l de manera gratuita. La comunidad no parde crecer, y poco a poco empezaron a disponer de las herramientas necesarias(editores, compiladores, etc.) para implementar el ncleo del sistema operati-vo, que era la tarea que requera las herramientas que se estaban desarrollan-do. Desde el primer momento se quiso crear un sistema operativo parecido aUNIX y siguiendo las normas POSIX (Portable Operating System Interface). Sibien UNIX tambin tena sus problemas y carencias, era, y sigue siendo, sufi-cientemente bueno como para adaptarse a la mayora de las necesidades. Latarea de disear y escribir el ncleo del sistema operativo fue la que se dejpara el final del proceso. An actualmente est por finalizar definitivamentey el ncleo del GNU, llamado Hurd, permanece en fase de desarrollo.

    Kernel

    Como su nombre indica, el ncleo (kernel) de un sistema operativo es el corazn con elcual puede funcionar. Es el ncleo de software que gestiona los recursos del ordenador:se comunica con los dispositivos y las aplicaciones instaladas, administra la memoriaadecuadamente, reparte tiempo de procesamiento para todos los programas, se comunicacon los dispositivos de almacenamiento para guardar los archivos, etc.

    Actividad

    1.1 Leed el primer mensaje escrito por Stallman en 1983 que anuncia su proyecto (tra-ducido al castellano): http://www.fsf.org/gnu/initial-announcement.es.html.

    Actividad

    1.2 Leed El manifiesto GNU original de Stallman (traducido al castellano).

    Actividad

    1.3 Leed la General Public License.

    1.2. Qu es GNU/Linux?

    En este contexto, y cuando la FSF todava no tena ningn ncleo estable pa-ra su sistema operativo, un profesor de la Universidad de Holanda, AndrewTanenbaum, decidi escribir un sistema operativo para que sus estudiantespudieran estudiarlo. Igual que Stallman, hasta el momento haba podido uti-lizar el cdigo fuente del UNIX de AT&T para que sus alumnos aprendieran adisear sistemas operativos. Su idea era escribir un sistema operativo que pu-diera ser estudiado y modificado por quien quisiera hacerlo. En 1987 se puso

  • FUOC P07/M2102/02688 10 GNU/Linux Bsico

    manos a la obra y llam a su proyecto mini UNIX, que dio lugar a MINIX.Al no utilizar ni una sola lnea de cdigo del UNIX de AT&T, no hay ningunarestriccin en tomar el cdigo, utilizarlo y modificarlo libremente.

    Tecnologa micro-kernel

    La tecnologa micro-kernel se basa en dividir las diferentes funcionalidades del ncleode un sistema operativo en programas totalmente separados y que se comunican entres. Esto lo hace muy modular, lo que facilita muchsimo el test, la deteccin y la correc-cin de errores, el mantenimiento, etc. Actualmente, algunos sistemas operativos comoAmoeba, Chorus, Mach o WindowsNTTM han incorporado este tipo de tecnologa.

    Tanenbaum quiso crear un sistema orientado a fines docentes, por lo que lodise utilizando una arquitectura micro-kernel, ideal para una fcil compren-sin, y aportando una tecnologa muy novedosa para la poca que le permitaversatilidad, multiplataforma, etc. ste ha sido uno de los puntos fuertes y d-biles a la vez del MINIX: aunque el sistema es una pequea joya para su estu-dio y diseo, es muy probable que nunca se pueda utilizar en entornos reales.Se opt por hacerlo entendedor, modular y muy pedaggico, pero no rpido.De todos modos, Tanenbaum tampoco pretenda eso; a lo largo de los aosMINIX ha ido evolucionando y realmente hoy en da todava sigue existiendoy siendo estudiado por muchos alumnos de universidades de todo el mundo.

    Aqu es cuando entra en juego Linux. Mientras la FSF segua con su gran pro-yecto proporcionando herramientas para la construccin de un sistema ope-rativo, Tanenbaum orientaba MINIX para fines docentes y muchas empresasseguan haciendo evolucionar sus propias versiones de UNIX. LinusTorvalds,estudiante de la Universidad de Helsinki, decide crear en agosto de 1991 supropio ncleo para un nuevo sistema operativo, Linux. Su idea era crear unUNIX para PC con el fin de que todos los que quisieran lo pudieran utilizar ensu ordenador. La primera aparicin en escena que hizo fue en un debate sobreMINIX y sistemas operativos, donde expuso las siguientes ideas:

  • FUOC P07/M2102/02688 11 GNU/Linux Bsico

    Si accediramos al foro de debate donde apareci este primer mensaje, vera-mos cmo rpidamente gente de todo el mundo empez a interesarse por estenuevo sistema, que al utilizar el compilador e intrprete de comandos de GNU(gcc y bash) como piezas fundamentales, tambin tena las caractersticas desoftware libre. Aunque en palabras del mismo Torvalds, si l hubiera sabidola cantidad de trabajo necesario para lograr que su idea funcionase, nunca lohubiera hecho: esfuerzos de muchos expertos en informtica de todo el mun-do hicieron posible este proyecto.

    Kernel monoltico de Linux

    Linux, el ncleo de GNU/Linux, es de tipo monoltico. Esto indica que no se separansus diferentes funcionalidades en distintos mdulos, sino que todo forma parte de unmismo programa. El principal inconveniente de este tipo de diseo es que la localizacinde errores y su mantenimiento son muy costosos. En contrapartida, el rendimiento quese consigue es mucho mayor que en otros tipos de diseo.

    De hecho, en los primeros aos de su existencia, GNU/Linux se identificabacomo el sistema operativo de los hackers. Su difcil instalacin, manipulaciny falta de drivers lo hacan una herramienta apta nicamente para gente muyentendida en el tema. Fueron estos primeros usuarios los que disearon losdrivers para los discos, impresoras, tarjetas, etc. y los que empezaron a dar aconocer al mundo este sistema. Poco a poco, el nmero de usuarios empeza crecer y actualmente ya existen muchas empresas y grupos de usuarios quecrean sus propias distribuciones de GNU/Linux.

    1.3. Distribuciones

    En la actualidad, existen muchas distribuciones diferentes basadas en GNU/Linux. Las hay para toda clase de ordenadores y dispositivos electrnicos: or-denadores porttiles o de sobremesa, pocketPC o PDA, puntos de acceso de re-des inalmbricas, etc. La naturaleza del software libre permite esto: cualquierapuede tomar el cdigo desarrollado hasta el momento y adaptarlo a sus pro-pias necesidades. Es un hecho que, cada vez ms, empresas y usuarios eligensistemas basados en GNU/Linux por sus elevadas prestaciones y la cantidadde software disponible.

    Linux y el proyecto GNU

    Aunque muchas distribuciones de GNU/Linux se denominan solamente Linux, es im-portante que diferenciemos que realmente Linux es el ncleo del sistema operativo yque el proyecto GNU es el que realmente ha aportado mucha de la estructura para elfuncionamiento del mismo.

    De todos modos, aunque existen decenas de distribuciones, hay algunas mspopulares que se han extendido mucho. La filosofa de software libre provocaque muchas empresas que han creado sus propias distribuciones de GNU/Li-nux no restrinjan el acceso a su cdigo. Aun as, el soporte que ofrecen y elmaterial que venden les aportan beneficios, lo que permite su subsistencia.

  • FUOC P07/M2102/02688 12 GNU/Linux Bsico

    As mismo, cabe considerar que en muchas de estas distribuciones se incluyesoftware propietario que algunos usuarios prefieren, si bien en muchos casosexisten programas homlogos con licencia Free Software.

    A continuacin realizaremos una breve descripcin de algunas de las distribu-ciones de GNU/Linux:

    Slackware: una de las primeras distribuciones que aparecieron. Fue creadapor Patrick Volkerding y tuvo un gran xito en sus primeros aos de exis-tencia.

    Debian GNU/Linux: una de las primeras distribuciones de GNU/Linux queaparecieron y an siguen existiendo y evolucionado. El sistema de paque-tes nos permite diferenciar claramente el software libre del que no lo es,lo que nos permite disponer de todo el sistema solamente con programasde licencia Free Software. Est desarrollada por un grupo de colaboradoresdistribuidos por todo el mundo y no cuenta con el respaldo de ningunaempresa. Aunque es de las ms estables y seguras que existen, su sistemade instalacin y configuracin necesita de conocimientos previos.

    RedHat Linux: junto con SuSE, es una de las distribuciones de mayor po-pularidad. Est creada por una empresa de Estados Unidos y aporta soft-ware de gran calidad. Tiene un entorno muy intuitivo que facilita muchosu instalacin y configuracin.

  • FUOC P07/M2102/02688 13 GNU/Linux Bsico

    SuSE Linux: aunque es una distribucin creada bastante recientemente, hatenido una gran difusin. Est desarrollada por una empresa alemana yaporta mucho software propietario de calidad. Es muy completa y fcil deinstalar y mantener, aunque en algunos aspectos no se siguen algunos delos estndares de la comunidad.

    Knoppix: distribucin en un live-CD basada en Debian. Detecta autom-ticamente todo tipo de hardware y aporta el ltimo escritorio de KDE yla suite OpenOffice.org. Muy til para demostraciones y usuarios novelesen el sistema.

    Ubuntu: es una distribucin Linux que ofrece un sistema operativo predo-minantemente enfocado a ordenadores de escritorio aunque tambin pro-porciona soporte para servidores. Basada en Debian GNU/Linux, Ubuntuconcentra su objetivo en la facilidad de uso, la libertad en la restriccin deuso, los lanzamientos regulares (cada 6 meses) y la facilidad en la instala-cin. Existe tanto en formato CD-live como en formato instalable. Detectaautomticamente todo tipo de hardware (incluso el ms moderno).

    Tampoco podemos olvidar que existen otros sistemas operativos compatiblescon UNIX y los estndares que se siguen actualmente. Muchos de los concep-tos y las herramientas que veremos a lo largo del curso tambin servirn paraestos otros. En especial debemos destacar GNU/Hurd (ncleo desarrollado porel proyecto GNU) y FreeBSD.

    Actividad

    1.4 Leed la descripcin de algunas de las distribuciones actuales basadas en GNU/Linux:http://www.linuxhq.com/dist.html.

  • FUOC P07/M2102/02688 14 GNU/Linux Bsico

    1.4. Programas y documentacin

    Internet ha sido siempre el principal medio de comunicacin entre los desa-rrolladores y usuarios del software libre. Por esta razn ya desde el principio dela gran expansin de GNU/Linux se ha podido encontrar en la Red muchsi-ma informacin sobre el operativo. La mayora de los programas los podemosdescargar de Internet, empaquetados con alguno de los sistemas ms comuneso bien directamente a partir de su cdigo fuente para que lo podamos compilaren nuestro sistema. Adems, la mayora de las distribuciones tambin se pue-den descargar de la Red sin necesidad de comprar ningn paquete especial delas revistas especializadas o de las mismas empresas que lo producen. Tambines cierto que si queremos el soporte que ofrecen algunas de las distribuciones,lo mejor es comprar todo el material que se proporciona (CD, manuales, etc.)y registrarse.

    A medida que nos vayamos introduciendo en el mundo del software libre ydel GNU/Linux, veremos cmo uno de los aspectos clave para moverse por les saber encontrar la documentacin que nos interesa. Cuando nos encontra-mos ante un problema, antes de empezar a dar vueltas sobre cmo resolverlo,debemos pensar que es muy probable que otra gente como nosotros se hayaencontrado con lo mismo o con algo similar. Buscar y encontrar la documen-tacin que se adapte mejor a los problemas que se nos vayan planteando nosahorrar mucho tiempo y esfuerzo. La comunidad del software libre generacentenares de documentos que podemos descargarnos libremente de Internet,adems de los foros de discusin, pginas de rumores y noticias, etc.

    Algunas de las referencias ms populares y que ms nos pueden ayudar son:

    Documentacin The Linux Documentation Project. La mayora de las guas, HOWTOS,

    FAQS, etc. existentes las podemos encontrar en este sitio, que ademsest en varios idiomas. http://www.tdlp.org

    LinUx en CAStellano. Gran proyecto de documentacin en cas-tellano para los HOWTOS, guas, etc. de GNU/Linux. http://lucas.linux.org.mx

    El HOWTO de los HOWTOS. http://lucas.linux.org.mx

    Linux.com. Pgina con diferentes secciones de noticias, documenta-cin, etc. http://www.linux.com

    Documentacin para Debian GNU/Linux. http://www.debian.org/doc/

    Noticias

  • FUOC P07/M2102/02688 15 GNU/Linux Bsico

    Slashdot. Noticias y rumores del mundo GNU/Linux. En ingls. http://slashdot.org

    Barrapunto. La rplica de slashdot en castellano. http://barrapunto.com

    Puntbarra. La rplica de slashdot en cataln. http://puntbarra.com

    Bulmalug. Bisoos usuarios de Linux de Mallorca y alrededores. Noti-cias y secciones dedicadas a temas concretos. http://bulmalug.net

    Noticias de GNU en espaol. http://www.es.gnu.org

    Linuxtoday. Otra pgina de noticias muy prctica para estar a la lti-ma. http://www.linuxtoday.com

    Libertonia. Pgina de noticias. De especial inters es su seccin "Fuen-tes de Noticias", donde hay multitud de otros enlaces a otras pginasdel mismo estilo. http://libertonia.escomposlinux.org

    Foros Foroslinux.org. Varios foros de GNU/Linux dedicados a todo tipo de

    temas.

    Foros de Linux Security. Foros centrados en temas de seguridad y si-milares.

    Bsqueda Linux en Google. El mayor buscador del mundo tambin para GNU/

    Linux. http://www.google.com/linux

    Buscadoc. Buscador de documentacin informtica en castellano.

    Distribuciones La pgina oficial de la Free Software Foundation. http://www.fsf.org

    Pgina oficial de debian GNU/Linux. http://www.debian.org

    Pgina oficial de RedHat Linux. http://www.redhat.com

    Pgina oficial de SuSE. http://www.novell.com/es-es/linux/

    Pgina oficial de Slackware Linux. http://www.slackware.com

    Pgina oficial de Knoppix. http://www.knoppix.com

  • FUOC P07/M2102/02688 16 GNU/Linux Bsico

    Pgina oficial de Ubuntu. http://ubuntu.org

    Descargas Sourceforge. La mayor pgina con proyectos de software libre. http://

    sourceforge.net

    Linux en Softonic. Seccin de descarga para GNU/Linux de una de lasmltiples pginas de downloading. http://www.softonic.com

    Download. Pgina de descargas. http://www.download.com

    Otras Linux Security. Pgina muy actual centrada en todo tipo de temas de

    seguridad en GNU/Linux. http://www.linuxsecurity.com

    LinuxHQ: Informacin general sobre distribuciones de GNU/Linux,seguridad, etc. http://www.linuxhq.com

    Linux Journal. Pgina de noticias y artculos sobre GNU/Linux. http://www.linuxjournal.com

    Linux Gazette. Revista de GNU/Linux. http://www.linuxgazette.com

    Linux-mag. Revista de GNU/Linux. http://www.linux-mag.com

    Pgina oficial del proyecto XFree86. http://www.xfree86.org

  • FUOC P07/M2102/02688 17 GNU/Linux Bsico

    2. Conceptos y comandos bsicos

    2.1. Introduccin

    En este apartado aprenderemos las ideas e instrucciones bsicas para movernosadecuadamente por el sistema. Si no estamos acostumbrados a utilizar la lneade comandos para manipular el sistema operativo, al principio puede parecer-nos un poco complicado, pero a medida que las vayamos utilizando veremosque son muy tiles y nos permiten realizar cualquier tarea que queramos ha-cer. Adems, el hecho de saber utilizar correctamente los comandos nos sermuy til cuando necesitemos conectarnos de manera remota a una mquinay podremos disear, asimismo, pequeos programas (shell scripts) para auto-matizar las tareas de administracin ms comunes.

    La mayora de los comandos que veremos en este apartado forman parte delestndar (normas IEEE POSIX) y son comunes a todos los sistemas GNU/Linuxy a UNIX. Aunque cada distribucin tiene sus propias aplicaciones de admi-nistracin y gestin, muchas de las acciones que se realizan a partir de ellastambin se pueden realizar con los comandos que veremos. A partir de estos,podremos manipular casi todos los aspectos del sistema y movernos eficien-temente por l. Aprendiendo a utilizar correctamente estos comandos, apren-deremos a navegar por cualquier sistema basado en GNU/Linux, sin importarqu distribucin estemos usando.

    Cada uno de los comandos del sistema suele tener multitud de parmetrosdiferentes. Con la utilizacin de los parmetros podemos, con un mismo co-mando, realizar muchas acciones diferentes, aunque todas sean de un mismoestilo. En este documento no especificaremos los diferentes parmetros de ca-da uno de los comandos que veremos, ya que extenderamos el texto ms allde lo permisible y tampoco tiene sentido conocer exactamente la totalidadde los parmetros posibles para cada uno. Todos ellos disponen de un ampliomanual, donde se especifican todas sus opciones, de manera que siempre quenecesitemos realizar alguna accin en concreto podremos recurrir a l. En lostalleres distribuidos a lo largo del curso s que veremos algunas de estas opcio-nes, aunque es importante saber que con el manual siempre podremos descu-brir muchas otras que nos pueden ayudar a realizar todo lo que necesitemos.

    Parmetro de un comando

    Un parmetro no es ms que una opcin determinada de un comando, que aadimosa continuacin del mismo, precedido por un espacio y, en muchas ocasiones, por unguin. Por ejemplo, si un comando fuera listar, podramos pasarle un parmetro comolistar todo.

    Comando

    Un comando es un programaque realiza una determinadaaccin relacionada con el siste-ma operativo.

  • FUOC P07/M2102/02688 18 GNU/Linux Bsico

    2.2. Usuarios y grupos

    Actualmente, la mayora de los sistemas operativos existentes son multiusua-rio y multitarea. Ello implica que ms de un usuario puede trabajar en el siste-ma de manera simultnea a otros, ejecutando una o ms tareas a la vez. Por es-te motivo, es muy importante que el propio sistema operativo incorpore me-canismos para manipular y controlar correctamente a los usuarios: el sistemade entrada e identificacin (login), los programas que puede ejecutar cada uno,mecanismos de seguridad para proteger el hardware del ordenador, proteccinpara los ficheros de los usuarios, etc.

    Poltica de nombres

    Una poltica de nombres muyutilizada suele ser poner co-mo login la primera inicial delnombre del usuario seguido desu apellido.

    Los sistemas operativos basados en UNIX organizan toda esta informacin porusuarios y grupos. Al entrar en el sistema, debemos identificarnos con un lo-gin y una contrasea. El login suele ser un nombre que identifica de manerainequvoca al usuario. En sistemas donde hay ms que unos pocos usuarios,es importante disponer de una buena poltica de nombres para poderlos iden-tificar a todos de manera clara. La contrasea debe ser una combinacin deletras, nmeros y caracteres especiales. No debe estar formada por ningunapalabra de diccionario o similares porque puede representar un problema deseguridad importante. El sistema de contraseas es de tipo unidireccional. Es-to significa que nuestra contrasea no es almacenada como texto, sino que escifrada y guardada tal como es. Cuando entramos en el sistema y escribimosnuestra contrasea, sta es cifrada y comparada con la que est almacenada. Sicoinciden, la identificacin es positiva, si no coinciden, no hay identificacin.Lo importante de todo este sistema es que a partir del cifrado no podemosconseguir, de ninguna manera, la clave original. Los programas que intentanromper las contraseas de los usuarios lo nico que pueden hacer es cifrarpalabras a partir de diccionarios (con sistemas automticos para derivarlas ybuscar variantes) y probar si coinciden con el cifrado de alguna de las con-traseas de usuario. Por este motivo debemos elegir cuidadosamente nuestrascontraseas; de otro modo comprometeremos toda la seguridad del sistema.

    Actualmente, en los sistemas GNU/Linux podemos elegir dos tipos de cifra-do posibles para las contraseas de usuario. El que se viene usando desde losinicios de UNIX es el 3DES. El nico inconveniente de este tipo de cifrado esque slo nos permite contraseas de 8 letras (si escribimos ms, se ignoran),a diferencia del otro tipo de cifrado, llamado MD5, con el que podemos usarcontraseas de la longitud que queramos (de hecho, MD5 es un sistema dehashing, pero tambin se puede utilizar para cifrar contraseas de manera uni-direccional). Cuanto ms larga sea la contrasea, ms segura resulta, con locual, se recomienda utilizar el segundo tipo de cifrado. De todos modos, de-bemos considerar que, si necesitamos usar algunos programas especiales parala gestin de usuarios, como el NIS, puede que no sean compatibles con MD5.

    NIS

    NIS son una serie de aplicacio-nes que nos permiten gestio-nar todos los usuarios de unamisma red de manera centrali-zada en un solo servidor.

  • FUOC P07/M2102/02688 19 GNU/Linux Bsico

    Si bien un usuario es un individuo particular que puede entrar en el sistema, ungrupo es un conjunto de usuarios con acceso al sistema que comparten unasmismas caractersticas, de modo que nos es til agruparlos para poder darlesuna serie de permisos especiales en el sistema. Un usuario debe pertenecer,al menos, a un grupo, aunque puede ser de ms de uno. El sistema tambinutiliza todo este mecanismo de usuarios y grupos para gestionar los servidoresde aplicaciones instalados y otros mecanismos. Por esta razn, adems de losusuarios reales, en un sistema habr muchos otros vinculados a otras tareasque se deben realizar en el operativo. Generalmente, este tipo de usuario nopodr entrar (con un login normal) al sistema.

    En todo sistema operativo debe haber un superusuario (root). ste posee privi-legios mximos que le permitirn efectuar cualquier operacin sobre el siste-ma. Es necesario que este exista, ya que ser quien se encargar de toda la ad-ministracin y gestin de servidores, grupos, etc. Esta cuenta no debe utilizar-se para trabajar normalmente en el sistema. Slo deberamos entrar como rootcuando sea realmente necesario y utilizaremos otras cuentas para el trabajonormal de los usuarios. De este modo nunca podremos daar el sistema conoperaciones errneas o con la prueba de programas maliciosos, etc.

    Toda la informacin de usuarios y grupos se guarda en los siguientes archivos:

    /etc/passwd: informacin (nombre, directorio home, etc.) del usuario.

    /etc/group: informacin sobre los grupos de usuarios.

    /etc/shadow: contraseas cifradas de los usuarios y configuracin parasu validez, cambio, etc.

    Utilizar el archivo de shadow es opcional. En un principio, las contraseascifradas de los usuarios se guardaban en el mismo fichero de passwd, pero,por razones de seguridad (muchos mecanismos deben poder leer este fichero,con lo cual era muy fcil hacerse con l e intentar "crackear" las contraseas)se opt por cambiar este mecanismo para hacer que el fichero de shadow slofuera accesible para algunos usuarios con privilegios especiales en el sistema.Esta opcin es configurable en el proceso de instalacin del sistema y sueleser recomendable utilizarla. Todos estos ficheros estn organizados por lneas,donde cada una de ellas identifica a un usuario o grupo (dependiendo del fi-chero). En cada lnea hay varios campos separados por el carcter ":". En tareasde administracin, es importante saber qu son estos campos, por lo que va-mos a explorarlos con un poco ms de detalle:

    Configuracin de contraseas

    Tambin es posible configurar el sistema para que se utilice un fichero shadow paralos grupos (en caso de que sea necesario ponerles contrasea). Este fichero se nombrara/etc/gshadow. Generalmente, la configuracin de contraseas se indica al instalar elsistema, aunque todo se puede cambiar y adaptar a nuestro gusto utilizando los mdu-

    Servidor

    Un servidor es un programaque se encarga de proporcio-nar algn tipo de servicio (co-mo servir pginas web, dejarque los usuarios se conectenremotamente, etc.), general-mente vinculado a la Red.

  • FUOC P07/M2102/02688 20 GNU/Linux Bsico

    los PAM (Pluggable Authentication Modules for Linux), que son los programas que seencargan de todo el sistema de autentificacin de usuarios.

    passwd

    1)Login: el nombre del usuario. No puede haber dos nombres iguales, aun-que s alguno que coincida con un grupo del sistema.

    2) Contrasea cifrada: si no se utiliza el fichero de shadow, las contraseascifradas se almacenan en este campo. Si utilizamos el fichero de shadow,todos los usuarios existentes en este fichero deben existir tambin en elde shadow y en este campo se pone el carcter "x".

    3) User ID: nmero de identificacin del usuario. Es el nmero con el cualel sistema identifica al usuario. El 0 es el nico que est reservado parael root.

    4) Group ID: el nmero de grupo al cual pertenece el usuario. Como unusuario puede pertenecer a ms de un grupo, este grupo se denominaprimario.

    5)Comentarios: campo reservado para introducir los comentarios quequeramos sobre el usuario. Se suele utilizar para poner el nombre comple-to o algn tipo de identificacin personal.

    6) Directorio home: el directorio home del usuario es donde este podrguardar todos sus ficheros. Suelen ponerse todos en alguna carpeta delsistema (generalmente /home/) y organizados por grupos.

    7) Intrprete de comandos: un intrprete de comandos (shell) es un pro-grama que se encarga de leer todo lo que escribimos en el teclado y ejecu-tar los programas o comandos que le indiquemos. Hay decenas de ellos,aunque el ms utilizado es, sin duda, el bash (GNU Bourne-Again SHell).Si en este campo escribimos /bin/false no permitiremos que el usuarioejecute ningn comando en el sistema, aunque est dado de alta en elmismo.

    group

    1) Nombre del grupo.

    2) Contrasea cifrada: la contrasea de un grupo se utiliza para permitirque los usuarios de un determinado grupo se puedan cambiar a otro opara ejecutar algunos programas con permisos de otro grupo (siempre quese disponga de la contrasea).

    "Crackear" una contrasea

    "Crackear" una contrasea sig-nifica conseguir la palabra cla-ve utilizando programas espe-ciales para ello. Estos progra-mas tambin los usan los ad-ministradores de sistemas pa-ra descubrir qu usuarios utili-zan contraseas demasiado f-ciles de descubrir (las contrase-as buenas no se pueden rom-per de ningn modo sin utili-zar grandes supercomputado-ras).

  • FUOC P07/M2102/02688 21 GNU/Linux Bsico

    3) Group ID: nmero de identificacin del grupo. Es el nmero con elcual el sistema identifica internamente a los grupos. El 0 es el nico queest reservado para el grupo del root (los administradores).

    4)Lista de usuarios: los nombres de los usuarios que pertenecen al gru-po, separados por comas. Aunque todos los usuarios deben pertenecer aun determinado grupo (especificado en el cuarto campo del fichero depasswd), este campo se puede utilizar para que usuarios de otros grupostambin dispongan de los mismos permisos que tiene el que se est refe-renciando.

    shadow

    1)Login: debe ser el mismo nombre que se utiliza en el fichero de passwd.

    2) Contrasea cifrada.

    3) Das que han pasado, desde el 1 de enero de 1970, hasta que la contra-sea ha sido cambiada por ltima vez.

    4) Das que deben pasar hasta que la contrasea pueda ser cambiada.

    5) Das que han de pasar hasta que la contrasea deba ser cambiada.

    6) Das antes de caducar la contrasea en el que se avisar al usuario deque debe cambiarla.

    7) Das que pueden pasar despus de que la contrasea caduque, antes dedeshabilitar la cuenta del usuario (si no se cambia la contrasea).

    8) Das, desde el 1 de enero de 1970, desde que la cuenta est deshabili-tada.

    9) Campo reservado.

    Cuando un usuario entra en el sistema, se le sita en su directorio home y seejecuta el intrprete de comandos (shell) configurado. De este modo ya puedeempezar a trabajar. Slo el root del sistema (o los usuarios de su grupo) tienenpermiso para manipular la informacin de los usuarios y grupos, darlos dealta, de baja, etc. Existen muchos comandos para manipular todo esto. Cadauno de ellos tiene, adems, varios parmetros diferentes para gestionar todoslos campos que hemos visto anteriormente de manera amena. A continuacinmostramos algunos de estos comandos:

    adduser: nos sirve para aadir un nuevo usuario al sistema. La formacomo este se aade (si no le especificamos nada) se puede configurar enel fichero /etc/adduser.conf. Se le pueden pasar multitud de opciones

    Fechas en sistemas UNIX

    En sistemas UNIX es muy co-mn representar las fechas apartir del nmero de segun-dos transcurridos desde el 1 deenero de 1970.

  • FUOC P07/M2102/02688 22 GNU/Linux Bsico

    diferentes para especificar el directorio home, el shell que hay que utilizar,etc.

    useradd: crea un nuevo usuario o cambia la configuracin por defectode estos. Este comando y el anterior nos pueden servir para realizar lasmismas acciones.

    usermod: con este comando podemos modificar la mayora de los camposque se encuentran en el fichero de passwd y shadow, como el directoriohome, el shell, la expiracin de la contrasea, etc.

    chfn: cambia la informacin personal del usuario, contenida en el campode comentarios del fichero de passwd.

    chsh: cambia el shell del usuario.

    deluser: elimina un usuario del sistema, borrando o guardando todos susficheros segn los parmetros que le pasemos, haciendo copia de seguridadde los mismos o no, etc. La configuracin que se utilizar por defecto coneste comando est especificada en el fichero /etc/deluser.conf.

    userdel: comando con las mismas posibilidades que el anterior.

    passwd: nos sirve para cambiar la contrasea de un usuario, la informa-cin de expiracin de las mismas o para bloquear o desbloquear una de-terminada cuenta.

    addgroup: permite aadir un grupo al sistema.

    groupadd: lo mismo que el comando anterior, pero con diferentes par-metros.

    groupmod: nos permite modificar la informacin (nombre y GID) de undeterminado grupo.

    delgroup: elimina un determinado grupo. Si algn usuario todava lo tie-ne como primario, no se podr eliminar.

    Cuota de disco

    En sistemas donde hay cente-nares de usuarios, es frecuen-te poner algn tipo de meca-nismo para restringir el espa-cio de disco que puede utili-zar cada uno. En los sistemasGNU/Linux este sistema se lla-ma cuota.

  • FUOC P07/M2102/02688 23 GNU/Linux Bsico

    groupdel: igual que en el caso anterior.

    gpasswd: nos sirve para cambiar la contrasea del grupo.

    Para saber qu usuario somos, podemos utilizar el comando whoami, que nosmostrar nuestro login. groups nos sirve para saber a qu grupos pertenece-mos e id nos mostrar usuario y grupos. Tambin es interesante poder con-vertirnos en otro usuario sin tener que salir de la sesin (comando login osu) o cambiarnos de grupo con el comando newgrp. Este ltimo comandodebemos utilizarlo slo cuando no pertenecemos al grupo en cuestin y sabe-mos su contrasea (que debe estar activada en el fichero de group). Si slonecesitamos los permisos del grupo en cuestin para ejecutar un determinadocomando, tambin podemos utilizar sg.

    Versatilidad de GNU/Linux

    Como vemos, en GNU/Linux tenemos ms de una manera para llevar a cabo una deter-minada accin. sta es la tnica general que se sigue en el sistema: podemos editar direc-tamente los ficheros y modificarlos nosotros mismos, utilizar algunos de los comandosque existen, crernoslos nosotros mismos, etc. En definitiva, tenemos la posibilidad deelegir qu es lo que ms nos gusta.

    Tal como decamos anteriormente, GNU/Linux es un sistema operativo mul-tiusuario, por lo que en un mismo momento puede haber varios usuarios co-nectados al sistema de manera simultnea. Para saber qu usuarios hay en undeterminado momento, podemos utilizar el comando who, que nos muestra lalista de usuarios dentro del sistema. w, adems, nos muestra qu es lo que estnhaciendo. Nos podemos comunicar con ellos utilizando el comando write,con el cual aparece el mensaje que hayamos escrito en la pantalla del usuarioindicada o wall, que escribe el contenido del fichero que hayamos especifica-do a todos los usuarios dentro del sistema. Para activar o desactivar la opcinde recibir mensajes tenemos el comando mesg. Tambin podemos hacer unchat personal con algn usuario a partir del comando talk.

    2.3. El sistema de ficheros

    2.3.1. La jerarqua del sistema de ficheros

    Todo sistema operativo necesita guardar multitud de archivos: desde los de laconfiguracin del sistema, los de log, los de los usuarios, etc. En general, cadaoperativo utiliza su propio sistema de ficheros y lo caracteriza en muchos as-pectos, como pueden ser el rendimiento, la seguridad, la fiabilidad, etc. GNU/Linux es capaz de leer/escribir archivos con cualquiera de los sistemas de fi-cheros que actualmente existen, aunque para su propia raz y directorios prin-cipales es necesario un sistema de ficheros que le permita ciertas operaciones.Generalmente, se suele utilizar el tipo ext2, ext3 o ReiserFS. El ext2 es el mstpico y extendido. Su rendimiento es bastante bueno, incorpora todo tipode mecanismos de seguridad y tunning y es muy fiable. ext3 es la evolucindel mismo e incorpora una tecnologa denominada de journaling. Una de las

  • FUOC P07/M2102/02688 24 GNU/Linux Bsico

    principales ventajas de esta tecnologa es que si hay un corte en el suministrode energa y el ordenador se apaga sin cerrarse adecuadamente, los sistemasde recuperacin de ficheros son ms efectivos. ReiserFS es un nuevo tipo desistema que incorpora nuevas tecnologas de diseo que le permiten ser msrpido. En el proceso de instalacin del sistema operativo se nos preguntarcul de estos tres queremos usar. Generalmente se suele utilizar ext2 o ext3por estar ms probados que el ReiserFS.

    Sistema de ficheros

    El sistema de ficheros es el programa (o mdulos del ncleo del operativo) que se encargade realizar todas las operaciones relacionadas con el almacenamiento y la manipulacinde los archivos. Son las funciones que tratan con los dispositivos fsicos de almacena-miento del ordenador, como el disco duro.

    Una caracterstica muy importante de todos los sistemas operativos basados enUNIX es que todos los dispositivos del sistema se pueden tratar como si fueranficheros. Igualmente, cuando queramos acceder al contenido de un CD, dis-quete o cualquier otro dispositivo de almacenamiento, deberemos montarloen un directorio ya existente en el sistema y navegaremos por l como si setratara de una carpeta ms (el uso de diferentes unidades A:, B:, C:, D:, etc.

    es un esquema existente nicamente en sistemas operativos tipo WindowsTM).

    Sistema de ficheros ext2

    El sistema de ficheros ext2 ha sido diseado para manejar de manera muy rpida ficherospequeos, que es lo que ms suele tener un sistema operativo. Con el manejo y la mani-pulacin de grandes ficheros multimedia no se desenvuelve tan bien, aunque siempre sepuede hacer un poco de tunning para adaptarlo ms a nuestras necesidades.

    Lo primero que debemos tener claro es que todo el sistema de ficheros partede una misma raz, a la cual nos referiremos con el carcter "/". Es el origende todo el sistema de ficheros y slo existe una. Para organizar los ficherosadecuadamente, el sistema proporciona lo que denominaremos directorios (ocarpetas), dentro de las cuales podemos poner archivos y ms directorios. Deeste modo conseguimos una organizacin jerrquica como la que vemos enla siguiente figura:

  • FUOC P07/M2102/02688 25 GNU/Linux Bsico

    Figura 2.1

    2.3.2. Directorios del sistema

    La mayora de los sistemas operativos del mercado siguen el estndar FHS,donde se especifican las principales caractersticas que debera tener cualquiersistema operativo. Entre ellas se encuentra la distribucin en directorios quedebemos efectuar de nuestros archivos para tenerlos correctamente organiza-dos y poder localizarlos de manera rpida y sencilla. En la mayora de las dis-tribuciones basadas en GNU/Linux se siguen estas recomendaciones y se en-cuentran los siguientes directorios principales:

    /bin/: comandos bsicos para todos los usuarios del sistema.

    /boot/: archivos estticos necesarios para el arranque del sistema.

    /dev/: dispositivos del sistema.

    /etc/: archivos de configuracin del sistema y de las aplicaciones insta-ladas en el mismo.

    /home/: directorio para poner las carpetas home de los usuarios.

    /lib/: libreras esenciales para el ncleo del sistema y mdulos del mismo.

    /mnt/: punto de montaje temporal para dispositivos.

    /proc/: procesos y variables del ncleo del sistema.

    /root/: directorio home para el root del sistema.

  • FUOC P07/M2102/02688 26 GNU/Linux Bsico

    /sbin/: comandos especiales para el root del sistema.

    /tmp/: archivos temporales. Segn la distribucin utilizada (o la configu-racin que utilicemos) se borran al arrancar el sistema o cada cierto pero-do de tiempo.

    /usr/: segunda estructura jerrquica, utilizada para almacenar todo elsoftware instalado en el sistema.

    /var/: directorio para los spoolers de impresin, ficheros de log, etc.

    Es muy recomendable conservar y no eliminar ninguno de estos directorios (olos que por defecto nos crea la distribucin que utilizamos), ya que son bsi-cos para el buen funcionamiento del sistema. Generalmente, los procesos deinstalacin de nuevas aplicaciones necesitan que exista la organizacin daday muchos de los archivos de configuracin de los programas deben estar endeterminados directorios. Lo que s que podemos hacer sin ningn tipo derestriccin es crear nuevos directorios en la raz del sistema o en cualquier otracarpeta.

    2.3.3. Movindonos

    Para movernos por la estructura de directorios debemos utilizar los comandospara listar contenidos y cambiar de carpeta. Cuando entramos en el sistema, esusual que el login nos site en nuestro directorio home, que generalmente sesuele referenciar con el carcter "~". Si queremos ver lo que hay en el directoriodonde estamos situados, podemos listar los contenidos utilizando el comandols. Debemos tener en cuenta que por defecto el comando no nos muestralos archivos que empiezan por un punto. Con el parmetro -a s que nosmostrara absolutamente todos los ficheros. En todos los directorios existe unaentrada "." y otra "..". El punto es la referencia al directorio actual, mientrasque los dos puntos seguidos hacen referencia al directorio inmediatamentesuperior (en el rbol de jerarquas) al actual. Naturalmente, cuando estamossituados en la raz del sistema de ficheros, la entrada ".." no existir porquenos encontramos en el nivel superior.

    Para cambiar de directorio podemos utilizar el comando cd. Si no le pasamosningn parmetro, por defecto nos situar en nuestro directorio home. Gene-ralmente, se le suele indicar dnde queremos ir, pasndolo de forma absolutao relativa. De forma relativa significa que partiremos del directorio donde es-tamos en el momento de ejecutar el comando. Por ejemplo, si estamos en eldirectorio /usr/bin/ y queremos ir al /root/, deberamos introducir el si-guiente comando: cd ../../root (los dos primeros puntos indican /usr/ ylos siguientes, la raz / del sistema, a partir de la cual ya podemos acceder a

  • FUOC P07/M2102/02688 27 GNU/Linux Bsico

    /root/). De forma absoluta siempre partimos de la raz, de manera que el co-mando que utilizaramos para el ejemplo anterior sera: cd /root. Para saberen qu directorio estamos, podemos utilizar el comando pwd.

    2.3.4. Enlaces

    Otros mecanismos que nos proporcionan la gran mayora de sistemas de fi-cheros son los que denominamos enlaces. Un enlace es un puente a un archi-vo o directorio perteneciente al sistema; una referencia que podemos poner encualquier sitio que nos interese y que acta como un acceso directo a cualquierotro. Este mecanismo nos permite acceder a carpetas o archivos de manerams rpida y cmoda, sin haber de desplazarnos por la jerarqua de directo-rios. Vamos a verlo con un ejemplo: imaginemos que somos un usuario (user1)que necesita acceder frecuentemente al directorio /usr/share/man/man3/.En lugar de escribir el largo comando que nos situara en el directorio en cues-tin cada vez que necesitramos desplazarnos a l, podemos crear un enlaceen nuestro propio directorio que nos redireccione directamente hacia all. Elcomando ln -s /usr/share/man/man3 mmm nos creara este puente, quehemos denominado mmm. El usuario slo debera escribir (desde su directoriohome) cd mmm y automticamente el sistema lo redirigira hacia /usr/sha-re/man/man3/. Es importante tener en cuenta que al hacer un cd .. parair al directorio superior, volveramos al directorio home y no a usr/share/man/, ya que hemos accedido a l a partir de nuestro enlace. Podemos ver esteesquema de forma grfica en la siguiente figura:

    Figura 2.2

    Al crear el enlace del ejemplo anterior hemos pasado el parmetro -s al co-mando. Ello indica que queremos crear un enlace simblico. Los enlaces sim-blicos significan que slo estamos creando un apuntador o puente hacia elfichero o directorio, de modo que si borrsemos el fichero destino, el enlaceno apuntara a ninguna parte. Si no ponemos el parmetro -s se creara lo quellamamos un enlacefuerte (hard link) que, a diferencia del anterior, realiza unduplicado del fichero. De hecho, internamente no es exactamente un dupli-cado, es como dos entradas que apuntan a los mismos datos. De este modo,

    Creacin de enlacesfuertes

    Un enlace fuerte slo se pue-de crear entre ficheros o direc-torios de una misma unidaddebido al mecanismo internoque se utiliza para gestionar-los.

  • FUOC P07/M2102/02688 28 GNU/Linux Bsico

    si modificamos uno u otro, los dos quedan iguales. La ventaja de este tipo deenlace es que si borramos cualquiera de las dos copias del fichero la otra toda-va se conserva. Este tipo de enlace no se utiliza demasiado porque complica lagestin y manipulacin de los ficheros (siempre es mejor tener una sola copiade los archivos). Adems, si hacemos un enlace fuerte de un directorio, todoslos archivos y subdirectorios que contuviera tambin se deberan referenciar.Por esta razn slo el root del sistema puede efectuar enlaces fuertes de direc-torios. Otra diferencia es que con un enlace simblico podemos ver a qu fi-chero estamos apuntando, mientras que con uno fuerte no podemos (debidoal mecanismo que se utiliza internamente para ellos).

    2.3.5. Permisos

    En cualquier sistema operativo multiusuario necesitamos que los ficheros queguardamos en nuestro disco puedan tener una serie de propiedades que nospermitan verlos, modificarlos o ejecutarlos para los usuarios que nosotros de-finamos. Aunque hay varias alternativas para llevar a cabo esto, GNU/Linuxutiliza el sistema clsico de usuarios y grupos, nos permite cualquier configu-racin posible. Lo que interesa es definir, para cada fichero o directorio, a quusuario y grupo pertenece y qu permisos tiene para cada uno de ellos, ascomo para el resto de usuarios del sistema. Ejecutando ls -l veremos cmoen cada archivo del directorio donde estamos aparece una lnea parecida a lasiguiente:

    -rwxr-xr-x 1 user1 grupo1 128931 Feb 19 2000 gpl.txt

    Los primeros diez caracteres (empezando por la izquierda) nos indican los per-misos del fichero de la siguiente manera:

    Carcter 1: esta entrada nos indica si es un fichero o un directorio. En casode ser un fichero, aparece el carcter "-", mientras que por los directoriosaparece una "d".

    Caracteres 2, 3, 4: nos indican, respectivamente, los permisos de lectura,escritura y ejecucin para el propietario del fichero. En caso de no tenerel permiso correspondiente activado, encontramos el carcter "-" y si no"r", "w" o "x", segn si lo podemos leer (read), escribir (write) o ejecutar(execute). En el tercer carcter, adems, podemos encontrarnos una "s", quenos indica si el archivo es de tipo SetUserId, que significa que al ejecutarloobtendr los permisos del propietario del fichero. Si slo tiene el permiso"x", cuando el programa se ejecuta lo hace con los permisos de quien lohaya lanzado.

  • FUOC P07/M2102/02688 29 GNU/Linux Bsico

    Caracteres 5, 6, 7: estos caracteres tienen exactamente el mismo significa-do que los anteriores, pero hacen referencia a los permisos concedidos alos usuarios del grupo al que pertenece el fichero.

    Caracteres 8, 9, 10: igual que en el caso anterior, pero para los otros usua-rios del sistema.

    Despus de estos 10 caracteres encontramos una cifra que nos indica el n-mero de enlaces fuertes que tiene el fichero. Para los directorios, este nmeroindica cuntas carpetas hay dentro de l adems de los enlaces fuertes quetiene (cuando no hay ninguno, el nmero es 2, debido a la gestin internadel operativo). A continuacin vemos el propietario y el grupo del archivo,seguido del tamao (en bytes) que ocupa y la fecha de la ltima modificacin.En todos los ficheros se guarda su fecha de creacin, del ltimo acceso y demodificacin, que podemos manipular con el comando touch. Al final se en-cuentra el nombre del fichero, donde se diferencian minsculas de mayscu-las y podemos tener todo tipo de caracteres sin ningn problema.

    El mecanismo de SetUserId

    El mecanismo de SetUserId es muy til cuando un programa necesita tener los permisosde su propietario para acceder a ciertos archivos o realizar algn tipo de operacin en elsistema. De todos modos, debemos vigilar mucho este tipo de ficheros porque puedensuponer fallos de seguridad en el sistema si son mal utilizados.

    Para cambiar los permisos de un determinado archivo podemos utilizar el co-mando chmod. Debemos tener en cuenta que slo el propietario del archivo (oroot) puede cambiar estos permisos, ya que de lo contrario, el mecanismo notendra ningn sentido. Podemos utilizar este comando de muchas manerasdiferentes, pero las dos ms frecuentes son las siguientes:

    El primer modo de utilizarlo es del estilo chmod XXX nombreArchivo.Las X deben ser tres nmeros entre 0 y 7. El primer nmero indica los per-misos que queremos establecer para el usuario, el segundo, para el grupoy el tercero, para el resto. Para interpretar correctamente los permisos quedaremos utilizando los nmeros del 0 al 7, debemos hacer uso de la repre-sentacin binaria del nmero en cuestin, de modo que el primer dgitoindicar el permiso de escritura, el segundo, el de lectura y el tercero, el deejecucin. En cada caso un 0 indica que no se da el permiso en cuestin yel 1 indica que s que se da. En la siguiente tabla podemos ver esta relacin:

    Tabla 2.1

    Representacindecimal Representacinbinaria Significado

    0 000 -

    1 001 x

    2 010 -w-

    3 011 -wx

  • FUOC P07/M2102/02688 30 GNU/Linux Bsico

    Representacindecimal Representacinbinaria Significado

    4 100 r

    5 101 r-x

    6 110 rw-

    7 111 rwx

    El otro modo de utilizar el comando es indicando de manera explcitaqu permiso queremos dar o eliminar del fichero. El modo de hacerlo esindicando, primero, si nos referimos a los permisos del usuario, grupo o alresto con las letras "u", "g" u "o" respectivamente. Seguidamente, debemosaadir un "+" o "-" segn si queremos aadir o eliminar el atributo, queindicaremos con "r", "w", "x" o "s" (este ltimo para el SetUserId). Adems,podemos realizar todas las combinaciones posibles, refirindonos a msde un permiso y/o usuarios. Por ejemplo, chmod go+r gpl.txt dara elpermiso de lectura al grupo y a los otros usuarios para el fichero gpl.txt.

    Para cambiar el propietario de un fichero existe el comando chown, que slopuede utilizar el root por razones de seguridad. Para cambiar el grupo de undeterminado archivo, se puede utilizar el comando chgrp. Como podemossuponer, cuando un usuario crea un nuevo archivo, el sistema pone comopropietario al usuario que lo ha creado y lo da como perteneciente al grupoprimario del mismo usuario. Los permisos que se ponen por defecto al crear unnuevo archivo los podemos configurar con el comando umask, al que debemospasar la misma notacin de tres nmeros decimales entre 0 y 7 que veamosanteriormente pero complementados. Por ejemplo, si queremos que nuestrosficheros se inicialicen con los permisos rwr##r##, deberamos escribir umask133.

    Poltica de seguridad de ficheros

    Si se permitiera a los usuarios cambiar el propietario de sus ficheros, la seguridad delsistema quedara comprometida, ya que se podran realizar acciones maliciosas y despuscambiar el propietario de los archivos utilizados inculpando a otros usuarios.

    2.3.6. Manipulacin, patrones y bsquedas

    Ahora que ya sabemos movernos correctamente por la jerarqua de directorios,tambin necesitamos saber cmo copiar, eliminar y manipular correctamenteotros aspectos de los ficheros. El comando rm es el que se encarga de eliminarlos archivos que le indiquemos. Para eliminar un directorio, podemos utilizarel comando rmdir, aunque slo lo borrar cuando este est vaco (si quisi-ramos borrar completamente un directorio y todo su contenido, podramosutilizar rm r). Para copiar archivos de un lugar a otro tenemos el comandocp, al que siempre debemos indicar el fichero o directorio origen y el lugar onombre de destino, aunque sea en el directorio actual. De este modo, si que-remos copiar el archivo /home/user1/gpl.txt en el directorio actual (y conel mismo nombre) deberamos escribir cp /home/user1/gpl.txt (es decir,

    Sintaxis de patrones

    La sintaxis de los patronespuede llegar a ser muy com-pleja, lo que nos permite refe-renciar cualquier conjunto dearchivos que queramos.

  • FUOC P07/M2102/02688 31 GNU/Linux Bsico

    usando el punto "."). Si en lugar de copiar los archivos queremos moverlosde sitio, podemos utilizar el comando mv. Un mecanismo muy til que nosproporciona el sistema son los patrones. Hasta ahora hemos visto cmo apli-car ciertas operaciones sobre un determinado archivo. Cuando estamos ma-nipulando un sistema, en muchos casos nos interesar aplicar alguna de lasoperaciones que hemos visto pero sobre un grupo grande de ficheros. Los pa-trones nos permitirn aplicar las operaciones que queramos especificando enuna sola instruccin varios ficheros que cumplan con una serie de caracters-ticas concretas. Debemos verlos como plantillas de nombres, de manera queel carcter "*" significa cualquier cadena de caracteres posibles y el "?" nos sirvecomo comodn a cualquier carcter. De este modo, si queremos listar todoslos archivos que empiecen por "s", que despus tengan cualquier otro carcter,les siga una "a", y despus cualquier otra cadena, podramos utilizar ls s?a*.Entre "[ ]" podemos incluir otros caracteres, indicando que el patrn tiene xi-to si se encuentra alguno de ellos en el nombre. Por ejemplo, si quisiramosreferenciar todos los archivos que empiecen por "a" o por "b" y que continancon cualquier otra cadena, podramos escribir el patrn [ab]*. Si despus de"[" pusiramos el carcter "!" ([!ab]*) indicaramos que el patrn coincidecon cualquier archivo que no empiece por "a" o "b". Finalmente, para facilitarciertas bsquedas, dentro de "[ ]" podemos especificar clases de caracteres dela siguiente manera: [:clase:], donde la clase puede ser cualquiera de lasindicadas en la siguiente tabla:

    Tabla 2.2

    clase significado clase significado

    alnum [A-Za-z0-9] alpha [A-Za-z]

    blank [ \] cntrl cars de control

    digit [0-9A-Fa-f] graph cars imprimibles (sin espacios)

    lower [a-z] print cars imprimibles (con espacios)

    punct [.,!?:;] ... space []

    upper [A-Z] xdigit [0-9A-Fa-f]

    A-Z indica caracteres de la A a la Z, \t es el tabulador y \n es un salto de lnea.

    Naturalmente, los patrones los podemos utilizar con cualquiera de los coman-dos que hemos visto y la mayora de los que veremos a continuacin. Adems,la mayor parte de los comandos de listado, eliminacin, copia, etc. de ficherostambin permiten que se les pase de manera recursiva. De este modo, se irentrando y ejecutando la instruccin correspondiente en todos los archivos ydirectorios, a partir de donde nos encontramos y hasta llegar al ltimo nivelde la jerarqua.

  • FUOC P07/M2102/02688 32 GNU/Linux Bsico

    Otro tipo de operacin muy til es la bsqueda de ficheros. Tenemos varioscomandos que nos permiten realizar bsquedas de diferentes tipos sobre todoslos ficheros del sistema.

    Tabla 2.3

    find Es el comando ms verstil para realizar esta accin. Nos permite filtrar los fi-cheros para encontrar desde los que tienen un determinado nombre, los mo-dificados o creados a partir de una cierta fecha, los que tienen ciertos permi-sos, etc. Su nica desventaja es que no utiliza ningn tipo de mecanismo paraacelerar la bsqueda, con lo cual, stas pueden tardar bastante.

    locate Se trata de otro comando que, a diferencia del anterior, utiliza una base de da-tos interna que se actualiza peridicamente y nos permite realizar bsquedasbastante ms rpidas. Debemos tener en cuenta, sin embargo, que los resulta-dos no siempre estarn actualizados, adems de que no podemos realizar bs-quedas tan verstiles como con find.

    whereis Por ltimo, whereis est orientado a la bsqueda de los archivos binarios (losejecutables), de ayuda o los de cdigo fuente de un determinado programa.

    2.3.7. Tipos y contenido de ficheros

    Orden updatedb

    Si queremos actualizar la basede datos interna que utiliza elcomando locate, podemosutilizar la orden updatedb.

    Los archivos que tenemos en nuestro sistema pueden ser de muchos tipos di-ferentes: ejecutables, de texto, de datos, etc. A diferencia de otros sistemas queutilizan la extensin del archivo para determinar de qu tipo son, GNU/Linuxutiliza un sistema denominado magic numbers, que determina con un nmeromgico el tipo de fichero segn sus datos (se pasan una serie de tests que in-tentan determinar de qu tipo es el fichero). El comando file nos lo indica.

    Si necesitamos ver el contenido de un fichero, uno de los comandos bsicoses el cat. Pasndole el nombre o los nombres de los archivos que queremosver, se muestra por pantalla. Debemos intentar no mostrar ficheros ejecutableso de datos por pantalla, ya que el volcado de caracteres no imprimibles nosdejara la consola con caracteres no comprensibles (siempre la podemos reini-ciar tecleando reset o tset). Para ficheros muy extensos, nos irn muchomejor los comandos less o more, que permiten desplazarnos por el ficherode manera progresiva. Si el tipo de fichero es binario y queremos ver qu con-tiene, podemos utilizar los comandos hexdump u od para ver el contenido deforma hexadecimal u otras representaciones. strings nos buscar las cadenasde caracteres dentro de un fichero binario y las mostrar por pantalla.

    Otro tipo de comandos muy tiles son los que nos buscan un cierto patrn enel contenido de los ficheros. Con el comando grep le podemos pasar comosegundo parmetro el nombre del archivo y como primero el patrn que que-ramos buscar (con la sintaxis que veamos anteriormente, extendida a otrasopciones). Adems, el comando nos permite otras mltiples acciones, comocontar el nmero de lneas donde aparece el patrn (parmetro -c), etc. Concut podemos separar en campos el contenido de cada lnea del fichero espe-cificando qu carcter es el separador, muy til en tareas de administracindel sistema para su automatizacin. Tambin podemos tomar un determinadonmero de lneas del principio o fin de un archivo con los comandos head

    Extensin de archivos

    Utilizar la extensin para de-terminar el tipo de un archivono es un sistema muy eficaz,ya que cualquiera puede cam-biarla y generar confusiones yerrores en el sistema.

  • FUOC P07/M2102/02688 33 GNU/Linux Bsico

    y tail respectivamente. Con wc podemos contar el nmero de lneas o pala-bras, la mxima longitud de lnea de un fichero, etc. Finalmente, para acabarcon este subapartado de manipulacin de ficheros, lo nico que nos falta porver es cmo comparar diferentes archivos. Igual que con las otras operaciones,tenemos varios comandos que nos permiten hacerlo. diff, cmp y comm reali-zan comparaciones de diferentes maneras y mtodos en los ficheros que indi-camos. sdiff, adems, permite mezclarlos a nuestra eleccin.

    2.4. Los procesos

    El hecho de que el sistema operativo sea multitarea implica que podemos lan-zar ms de un programa a la vez. Un proceso no es ms que un programa oaplicacin que se encuentra cargado en la memoria y en proceso de ejecucin.Aunque nuestro ordenador slo disponga de una CPU, el sistema operativo seencarga de repartir el tiempo de procesamiento de sta para que varios proce-sos puedan ir realizando sus operaciones, con lo que da la sensacin de quese estn ejecutando todos a la vez.

    Para identificar de manera inequvoca cada proceso, el ncleo del sistema lesasigna un nmero llamado PID (Process IDentification). Aunque podramospensar que nicamente con el nombre ya los podramos referenciar, es impres-cindible disponer de este nmero porque podemos ejecutar un mismo progra-ma tantas veces como queramos, al mismo tiempo que se ejecutan diferentesinstancias del mismo. Para saber qu procesos se estn ejecutando, podemosutilizar el comando ps. Para explorar un poco ms todo este mecanismo deprocesos, explicaremos con ms detalle algunos de los parmetros que le po-demos pasar a este comando:

    T: esta opcin viene por defecto y nos indica que slo se mostrarn losprocesos que se estn ejecutando en el terminal donde nos encontramoso que se hayan lanzando a partir de l.

    -a: nos muestra los procesos de todos los terminales del sistema.

    -: nos muestra todos los procesos del sistema. Si ejecutamos el comando,veremos que, aparte de los programas que los usuarios ejecutan, hay otros.Muchos de ellos ejecutan las funciones necesarias para que el operativofuncione correctamente, otros son los servidores de aplicaciones configu-rados, etc.

    -l: ensea informacin extendida para cada proceso, como el tiempo deCPU que ha utilizado, el terminal donde se ejecuta, etc. En la segundacolumna tambin podemos ver el estado del proceso. Aunque el sistematenga muchos procesos ejecutndose en un mismo instante de tiempo,ello no implica que todos necesiten tiempo de CPU constantemente. Porejemplo, cuando un servidor de pginas web no tiene ninguna peticin,no es necesario en absoluto que haga ninguna operacin. Aunque est en

    Gestin de procesos

    La gestin de procesos es unaspecto vital en todo sistemaoperativo, ya que determina eltiempo de respuesta de nues-tras aplicaciones, la eficienciacon que se utiliza la memoria yla CPU, etc.

  • FUOC P07/M2102/02688 34 GNU/Linux Bsico

    memoria preparado para ejecutarse al recibir una peticin, es mejor queno pase en ningn momento por la CPU, ya que sta puede utilizarse paraotros procesos que s que la necesitan. Internamente, el sistema operativotiene implementados una serie de mecanismos muy eficaces para gestionartoda esta clase de operaciones. De este modo, un proceso puede estar enlos siguientes estados (mostrados con el carcter correspondiente): D: proceso ininterrumpible. Este tipo de proceso generalmente suele

    pertenecer a la entrada/salida de algn dispositivo que se daara sidejara de ser atendido.

    R: proceso que en el momento de ejecutar el comando tambin se estejecutando, o sea, todos aquellos que estn en cola de ejecucin. Lacola de ejecucin de procesos es donde se ponen todos aquellos quese van repartiendo el tiempo de la CPU.

    S: proceso dormido o esperando que ocurra algn tipo de evento paraque el sistema lo despierte y lo ponga en la cola de ejecucin.

    T: proceso que ha sido detenido por el usuario o el sistema.

    Z: proceso zombi. Este estado indica que el proceso ha tenido algnfallo y no funciona correctamente. Generalmente es mejor eliminareste tipo de procesos.

    Otro comando muy til es el top, que nos informa de manera interactivade los procesos del sistema, del estado de utilizacin de la CPU, la memoriautilizada y libre, la RAM que utiliza cada proceso, etc. Este programa esmuy indicado cuando el sistema no responde adecuadamente o notamosalguna disfuncin extraa, ya que nos permite localizar rpidamente quproceso est afectando negativamente al rendimiento del sistema.

    Como vemos, el sistema nos informa sobre todos los aspectos posibles de losprocesos del sistema. Adems de esto, podemos enviar ciertas seales a losprocesos para informarles de algn evento, podemos sacarlos de la cola de eje-cucin, eliminarlos, darles ms prioridad, etc. Saber manipular correctamentetodos estos aspectos tambin es muy importante, ya que nos permitir utilizarnuestro ordenador de manera ms eficiente. Por ejemplo, si somos adminis-tradores de un centro de clculo donde la mayora de las aplicaciones que seejecutan necesitan mucho tiempo de CPU, podramos configurar el sistemapara hacer que los ms urgentes se ejecuten con ms prioridad que otros yacaben primero. El comando kill nos permite enviar seales a los procesosque nos interese. En general, todos los programas se disean para que puedanrecibir este tipo de seales. De este modo, segn el tipo de seal recibido sabenque deben realizar unas operaciones u otras. Hay muchos tipos diferentes deseales, que podemos ver en el manual de kill, aunque las ms utilizadasson las que nos sirven para obligar a un proceso a que termine o pause suejecucin. Con la seal TERM (kill -15 PID), le indicamos al proceso que

    Comando trap

    Para tratar las seales en unshell script (vase ms adelantecmo programarlos), podemosutilizar el comando trap.

  • FUOC P07/M2102/02688 35 GNU/Linux Bsico

    queremos que termine, de modo que al recibir la seal deber guardar todo lonecesario y acabar su ejecucin. Si hay algn tipo de problema o el programano est preparado para recibir este tipo de seal, podemos utilizar kill (kill-9 PID), que automticamente lo expulsa de la cola de ejecucin. killallsirve para referirnos al nombre de varios procesos a la vez en lugar de referen-ciarlos por su PID y, de este modo, enviarles una seal a todos a la vez. Con elcomando skill tambin podemos enviar seales a los procesos, pero con unasintaxis diferente. Por ejemplo, si queremos detener todas las ejecuciones deun determinado usuario, podramos utilizar skill -STOP -u nombreLogin,con lo que todos los procesos de dicho usuario se pararan. Para reiniciarlosde nuevo, podramos pasar la seal de CONT. Cuando estamos ejecutando al-gn programa en una consola y queremos pasarle la seal de TERM, podemosutilizar la combinacin de teclas "Ctrl+C". Con "Ctrl+Z" podemos pausar unprograma y revivirlo con fg.

    Manipulacin de procesos

    Con los comandos de manipulacin de procesos podemos realizar cualquier accin quenos interese: desde pausar los procesos de un usuario concreto, eliminar aquellos que nonos interesan o hacer que algunos ocupen ms tiempo la CPU para que vayan ms rpido.

    Otra manera de ver los procesos es por su jerarqua. Igual que en el sistemade ficheros, los procesos siguen una cierta jerarqua de padres a hijos. Todoproceso debe ser lanzado a partir de otro, sea el propio intrprete de coman-dos, el entorno grfico, etc., de manera que se crea una relacin de padres ahijos. Con el comando pstree podemos ver esta jerarqua de manera grfica.Si lo ejecutamos, veremos cmo el padre de todos los procesos es uno llamadoinit. A partir de este parten todos los dems, que a la vez pueden tener mshijos. Esta estructura jerrquica es muy til, ya que, por ejemplo, matando aun proceso padre que contiene muchos otros hijos, tambin matamos a todossus hijos. Tambin nos puede servir para identificar de dnde parten ciertosprocesos, etc. Si no le pasamos ningn parmetro al comando, por defectocompacta todos los procesos con un mismo nombre para no mostrar una es-tructura demasiado grande, aunque esto tambin es configurable a partir desus parmetros.

    Todos los procesos del sistema tienen una cierta prioridad. Como decamosantes, esta prioridad indica el tiempo de CPU que se le dejar al proceso. Cuan-to ms prioritario sea el proceso, ms tiempo de ejecucin tendr respecto alos otros. El rango de prioridades va desde el 20 al 19, de mayor a menor.Para lanzar un proceso con una determinada prioridad, podemos utilizar elcomando nice. Si queremos dar una prioridad diferente a un proceso que yaest en ejecucin, podemos utilizar renice. Slo el root puede utilizar el rangode prioridades negativas; as, el sistema se asegura de que el root cuente siemprecon la posibilidad de ejecutar procesos ms rpidamente que los usuarios. Pordefecto, la prioridad con la que se ejecutan los programas es la 0. Un aspectoque habr que considerar es que con todo este mecanismo de prioridades nopodemos medir el tiempo de ejecucin real de un proceso porque la CPU sereparte entre todos los que tengamos en la cola de ejecucin. En centros de

  • FUOC P07/M2102/02688 36 GNU/Linux Bsico

    clculo donde se factura segn el tiempo de utilizacin de las mquinas, esmuy importante poder medir adecuadamente este aspecto. Por este motivo, elsistema nos proporciona el comando time, el cual, al pasarle el programa quequeremos medir, nos devuelve el tiempo real de CPU que ha utilizado.

    2.5. Otros comandos tiles

    2.5.1. La ayuda del sistema

    Como hemos dicho a lo largo del documento, todos los comandos tienen mul-titud de opciones y parmetros diferentes que nos permiten manipularlos anuestra eleccin. Desde el principio se tuvo muy en cuenta que es imprescin-dible contar con una buena documentacin para todos ellos. Igualmente, todaesta informacin es necesaria para los ficheros de configuracin del sistema,las nuevas aplicaciones que utilizamos, etc. Por ello, el propio sistema incor-pora un mecanismo de manuales con el que podemos consultar casi todos losaspectos de los programas, utilidades, comandos y configuraciones existentes.El comando ms utilizado es el man, que nos ensea el manual del programaque le indicamos como parmetro. Por defecto, esta documentacin se mues-tra por medio del programa less, con el que podemos desplazarnos hacia de-lante y hacia atrs con las teclas de "AvPg" y "RePg", buscar una palabra conel carcter "/" seguido de la palabra ("n" nos sirve para buscar las siguientesocurrencias y "N" para las anteriores), "q" para salir, etc. Los manuales del sis-tema estn divididos en diferentes secciones segn su naturaleza:

    1) Programas ejecutables (aplicaciones, comandos, etc.).

    2) Llamadas al sistema proporcionadas por el shell.

    3) Llamadas a libreras del sistema.

    4) Archivos especiales (generalmente los de dispositivo).

    5) Formato de los archivos de configuracin.

    6) Juegos.

    7) Paquetes de macro.

    8) Comandos de administracin del sistema (generalmente aquellos que sloel root puede utilizar)

    9) Rutinas del ncleo.

  • FUOC P07/M2102/02688 37 GNU/Linux Bsico

    Si hay ms de un manual disponible para una misma palabra, podemos espe-cificarlo pasndole el nmero correspondiente de la seccin deseada antes dela palabra, por ejemplo man 3 printf. Como los otros comandos, man tie-ne multitud de opciones diferentes documentadas en su propio manual (manman), a partir de las cuales podemos realizar bsquedas automticas, crear unfichero del manual en formato imprimible, etc. Una de estas opciones, quenos puede ir muy bien en las ocasiones que no sepamos exactamente el pro-grama que estamos buscando, es -k (el comando apropos realiza casi lo mis-mo). Con man -k seguido de una palabra que haga referencia a la accin quequeramos realizar se buscar por entre todos los manuales del sistema y semostrarn los que en su descripcin o nombre aparezca la palabra indicada.As, podemos encontrar lo que queremos sin tener que recurrir a ningn libroo referencia externa al sistema.

    Comando mandb

    Para realizar sus bsquedas de manera rpida, la aplicacin man utiliza una base de datosinterna que va a buscar por los archivos que contienen los manuales y los indexa de modoadecuado. Si queremos actualizar este manual (aunque normalmente el mismo sistemaya lo hace automticamente), podemos utilizar el comando mandb.

    Si el manual no nos proporciona toda la informacin que necesitamos, pode-mos usar el comando info, que es lo mismo que el manual pero an msextendido. Si lo nico que queremos es tener una breve referencia de lo quehace un determinado programa, librera, etc., podemos utilizar el comandowhatis.

    2.5.2. Empaquetado y compresin

    Comprimir un archivo, agrupar varios en uno solo o ver qu contiene un ar-chivo comprimido son tareas que efectuaremos frecuentemente para hacer co-pias de seguridad, transportar archivos de un sitio a otro, etc. Aunque existenmultitud de programas diferentes que nos permiten llevar a cabo esta clasede operaciones, generalmente en todos los sistemas GNU/Linux encontrare-mos la herramienta tar. Este programa nos permite manipular de cualquiermanera uno o varios archivos para comprimirlos, agruparlos, etc. Aunque susmltiples opciones son inacabables y tiene muchsima flexibilidad, aqu sloexplicaremos algunas de las ms bsicas para hacernos una idea de lo que po-demos hacer con l. La sintaxis que utiliza es la siguiente: tar opciones ar-