Está en la página 1de 74

Introduccin a

Linux

Javier Blanco
blanco@mate.uncor.edu

Damin Barsotti
damian@famaf.unc.edu.ar

Copyright c 2003 Damin Barsotti y Javier Blanco. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.

ndice general
1. Introduccin 1.1. Presentacin de Linux . . . . . . . . . . . . . 1.2. Caractersticas de Linux . . . . . . . . . . . 1.2.1. Caractersticas generales . . . . . . . 1.2.2. Un paseo como usuario . . . . . . . . 1.3. Esquema inicial de Internet . . . . . . . . . . 1.4. Fuentes de informacin . . . . . . . . . . . . 1.4.1. Manuales de sistema (man pages) . . 1.4.2. Manuales en formato info (info pages) 2. Herramientas tiles 2.1. Cambiar el password . . 2.2. Mail . . . . . . . . . . . 2.3. X . . . . . . . . . . . . 2.4. Emacs . . . . . . . . . . 2.5. Trabajando con disquetes 2.6. Ms comandos . . . . . 2.7. Otros programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 5 9 10 10 12 13 13 13 17 19 22 23 25 27 27 27 28 31 32 36 37 39 39 42 43 44 45 45

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Comandos avanzados 3.1. Shells . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Expansin de nombres . . . . . . . . . 3.1.2. Redireccionando la salida . . . . . . . 3.1.3. Variables de entorno . . . . . . . . . . 3.1.4. Envo de seales a procesos . . . . . . 3.1.5. Archivo de conguracin del bash . . . 3.2. Usuarios y Grupos . . . . . . . . . . . . . . . 3.3. Dueos y permisos de archivos . . . . . . . . . 3.3.1. Conceptos generales . . . . . . . . . . 3.3.2. Cambiando dueos, grupos y permisos 3.4. Instalando programas . . . . . . . . . . . . . . 3.4.1. Archivos TAR y GZIP . . . . . . . . . 3.4.2. Archivos en formato RPM . . . . . . . 3.5. Organizacin de directorios FHS . . . . . . . .

II

A. Breve historia de la computacin (el porque de los S.O., la administracin y el Software Libre) 47 A.1. Sus inicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 A.2. Surge la computacin con nes comerciales . . . . . . . . . . . . . . . . . . . . . . . . . 48 A.3. Multitarea y multiusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 A.4. Surge Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 A.5. Crisis del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 A.6. Surgimiento del Software Libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 A.7. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 B. Informacin adicional B.1. Ubicacion de las man pages . . . . . . . . . . . . . . . B.2. Otras fuentes de informacin . . . . . . . . . . . . . . B.2.1. HOWTO y mini HOWTO . . . . . . . . . . . B.2.2. SAG y NAG . . . . . . . . . . . . . . . . . . B.2.3. En Internet . . . . . . . . . . . . . . . . . . . B.2.4. Documentacin de Red Hat . . . . . . . . . . B.2.5. Recomendaciones de bsqueda de informacin B.3. Otras caractersticas de Linux . . . . . . . . . . . . . . B.3.1. rbol de procesos . . . . . . . . . . . . . . . B.3.2. Demonios . . . . . . . . . . . . . . . . . . . . B.3.3. Congurable por archivos de texto . . . . . . . B.3.4. Estructura del S.O. Linux . . . . . . . . . . . . B.3.5. Proceso de arranque del sistema . . . . . . . . C. GNU Free Documentation License C.1. Applicability and Denitions . . . . . C.2. Verbatim Copying . . . . . . . . . . . C.3. Copying in Quantity . . . . . . . . . C.4. Modications . . . . . . . . . . . . . C.5. Combining Documents . . . . . . . . C.6. Collections of Documents . . . . . . . C.7. Aggregation With Independent Works C.8. Translation . . . . . . . . . . . . . . C.9. Termination . . . . . . . . . . . . . . C.10. Future Revisions of This License . . . ndice de Tareas Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 54 55 55 55 55 56 56 57 57 58 58 58 60 61 61 62 62 63 64 64 65 65 65 65 67 69

III

Captulo 1

Introduccin
Este apunte pretende ser una gua para las personas que comienzan a utilizar el sistema operativo Linux. El mismo fue concebido como material para la materia Algoritmos y Estructuras de Datos I de la carrera Licenciatura en Ciencias de la Computacin que se dicta en la Facultad de Matemtica Astronoma y Fsica de la Universidad Nacional de Crdoba. Su contenido est orientado al uso de las plataformas de trabajo que se encuentran actualmente en el laboratorio de computacin de dicha facultad, pero puede ser til como introduccin al uso del sistema operativo Linux en general.

1.1. Presentacin de Linux


El sistema operativo Linux (S.O. Linux) es una implementacin con caractersticas de Software Libre (ver seccin A.6 (pg. 51)) del sistema operativo UNIX para computadoras personales. Uno podra utilizar el sistema sin preguntarse el porque de la existencia de Linux y de manera ms general, del Software Libre. Pero estas preguntas son importantes ya que nos ayudan a comprender la losofa con la que fue desarrollado este sistema operativo y por ende poder entenderlo y aplicarlo en la solucin de problemas concretos. El nacimiento de Linux puede ser entendido como un resultado necesario en el desarrollo de la historia de la computacin. Este desarrollo tambin abarca el nacimiento de la idea de sistema operativo. Adems, la historia de la evolucin de estos sistemas sirve para comprender sus caractersticas en la actualidad y en particular de Linux. Un bosquejo de esta historia puede encontrarse en el apndice A (pg. 47). Un desarrollo ms detallado (principalmente de la historia de Unix y Linux) se puede encontrar en [Ray03].

1.2. Caractersticas de Linux


En esta seccin se har una resumen de la principales caractersticas de Linux. A medida que se expliquen estas caractersticas se mostrar en un Linux corriendo, algunas manifestaciones de las mismas. Para ello primero tendremos que autenticarnos al sistema. Tarea 1.1 Ingresar al sistema En Linux lo primero que debemos hacer antes de poder trabajar con el, es ingresar como un usuario previamente acreditado. Para ello debemos ingresar este, en una pantalla que se vera similar a esto:

Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.28pre1 on an i686 hp01 login: _

El encargado de mostrar esto es un programa llamado login, lo primero a ingresar es el nombre del usuario (denominado login 1 ), luego se nos pedir una contrasea, para ello aparecer en pantalla lo siguiente:
Password: _

Al ingresar la contrasea no se mostrarn en pantalla los caracteres tipeados. Esto es as para que no puedan ver nuestra clave al momento de entrar al sistema. Aclaramos que Linux como todos los UNIX diferencian las mayscula de las minsculas tanto en el nombre de nuestro usuario como en su clave de acceso. Habiendo ingresado un usuario correcto con su palabra clave correcta habremos ingresado al sistema, la pantalla completa de ingreso al sistema seria algo as:
Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.28pre1 on an i686 hp01 login: martin Password: Last login: Wed Jan 9 17:45:09 on tty1 [martin@maq martin]$ _

1.2.1. Caractersticas generales


Como ya se dijo en la seccin anterior, Linux es una implementacin libre de Unix por lo que comparte sus caractersticas con este sistema operativo. Multitarea Linux soporta multitarea de manera muy eciente. Su implementacin incluye la proteccin de los recursos compartidos por distintos procesos y provee mecanismos para administrar polticas de uso de los recursos. Para una descripcin ms detallada ver seccin A.3 (pg. 48). Multiusuario Linux es un sistema totalmente multiusuario. Los usuarios pueden utilizar de forma concurrente un mismo sistema, por lo general por medio de distintas terminales u otras computadoras conectadas en red. Su implementacin tambin incluye sistemas de proteccin y mecanismos para implementar polticas de administracin de los recursos utilizados por distintos usuarios. De esta forma, al autenticarnos con un login y una contrasea (como ya lo hicimos), el sistema administrar los recursos (por ejemplo el mail) para este usuario en particular.
1 Este

nombre es por lo general el que aparece antes del smbolo de arroba (@) en la direccin de mail que tendr el usuario.

Importante: Lo nico que maneja el sistema para corroborar la identidad de un usuario es el login y la contrasea. Esto quiere decir que si otra persona conoce esta informacin puede utilizar nuestros recursos indiscriminadamente. Es por ello que no debe brindar la contrasea a otras personas. Tarea 1.2 Ver terminales virtuales Linux permite que varios usuarios ingresen al sistema al mismo tiempo en la misma consola, utilizando lo que se denomina terminales virtuales. Una vez que ya ingresamos al sistema oprimiendo conjuntamente las teclas [Alt][F2] vamos a ver una pantalla similar a la siguiente:
Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.28pre1 on an i686 hp01 login:

Esta es idntica a la primera pantalla de ingreso al sistema y aqu cualquier usuario (generalmente el mismo) puede utilizarlo tambin. Por lo general estn denidas 6 terminales virtuales (esto es congurable en el sistema), las cuales pueden ser accedidas con las combinaciones de teclas [Alt][F1] a [Alt][F6]. Volvamos ahora a la pantalla original oprimiendo [Alt][F1].

Orientado a Shell Ya entramos al sistema como usuario y vimos que se muestra una pantalla en modo texto con algo parecido a:
Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.28pre1 on an i686 hp01 login: martin Password: Last login: Wed Jan 9 17:45:09 on tty1 [martin@maq martin]$ _

En este momento se activ un proceso llamado shell que se encarga de atender los pedidos del usuario para utilizar el sistema; de aqu en adelante el sistema espera que el usuario ingrese nombres de programas para ser ejecutados. Esta es la forma predenida para utilizar el sistema. Por lo general se utiliza el shell para ejecutar programas. De esta forma funciona como interfase entre el usuario el sistema operativo para indicarle a este ltimo que los ejecute. Se denomina proceso a un programa en ejecucin. Cada proceso tiene un programa asociados: un mismo programa puede estar ejecutndose muchas veces hasta por distintos usuarios. El mismo shell tambin tiene un programa asociado. Si bien Linux cuenta con potentes entornos grcos la interfase por defecto y ms potente para usar Linux es el shell, por varios motivos: Es tremendamente estable, a diferencia de los entornos grcos que son muy inestables, en todos los sistemas operativos, incluso en Linux. Es totalmente programable, lo que lo hace muy verstil. Tiene la rapidez del entorno carcter. 3

Vienen muchas mas herramientas para este, que para los entornos grcos. Es ms, los entornos grcos en Linux son programas que se pueden lanzar desde el shell (generalmente el programa startx). La comunicacin con el sistema por medio del shell es una caracterstica heredada desde los primeros Unix. En la seccin 1.2.2 (pg. 5) se vern algunos programas que se pueden ejecutar por medio del shell. Abstraccin sistema de archivos El sistema de archivos de linux es mucho ms que una representacin o abstraccin de los almacenamientos de memoria. Los archivos pueden tambin representar otros dispositivos como teclados, monitores, impresoras o dispositivos de sonido. As, por ejemplo, si se escribe sobre el archivo que representa el monitor de video se escribirn caracteres en la pantalla del mismo. De la misma forma si se lee el archivo que representa un micrfono conectado a la placa de sonido se estar viendo un archivo de sonido en algn formato predenido. Tambin el sistema de archivos permite representar enlaces de comunicacin entre procesos locales o en red. As, si se quiere enviar cierta informacin a algn proceso, solo hay que escribir en el archivo que representa una conexin con el mismo. La comunicacin para comprobar o modicar el comportamiento del sistema operativo tambin se realiza leyendo o modicando ciertos archivos especiales (generalmente estos archivos estn en el directorio /proc). Como se puede observar, todo en Linux es un archivo. Esta inclinacin a basar toda la interfase entre las funcionalidades del hardware con el usuario a travs del sistema de archivos es tambin heredada de los viejos sistemas Unix y provee cierta uniformidad en el manejo del sistema operativo. Software Libre Linux no es un programa de dominio pblico, varios de sus componentes tienen derecho de autor; los derechos de autor del kernel bsico2 son de propiedad de Linus Torvals. La mayora de los componentes de Linux estn regidos bajo las leyes del GNU General Public License. El software GNU tiene copyright, pero sus autores han dado su autorizacin para que se distribuya de acuerdo a algunas condiciones. Estas condiciones se reeren a la necesidad de suministrar el cdigo fuente y que a ninguna de las partes del software se las someta a copyright. Esto signica que si un programador, por ejemplo, tomara el cdigo fuente de algn programa GNU y lo modicara en alguna parte, este a su vez debe permitir al acceso a ese cdigo modicado. En ocasiones esta licencia se denomina GNU Copyleft, cubre todos los programas producidos por GNU y por la Free Software Fundation. El GNU Copyleft o GPL permite a los creadores de programas conservar sus derechos de autor, pero permitiendo al resto de los usuarios la posibilidad de copiarlos y modicarlos a sus necesidades. Esta licencia benecia fuertemente la distribucin de Linux. Es as que existen empresas que se encargan de empaquetar el kernel junto con otros programas (editores, juegos, entorno grco, etc.) y creando programas instaladores del sistema (generalmente bajo la misma licencia). Las ms representativas quiz sean la Red Hat, Slackware, Suse, Caldera, Debian, etc. Auto-documentado El sistema operativo Linux, por su caracterstica de software libre benecia la documentacin de todas sus funcionalidades. Todas las distribuciones brindan esta documentacin en varios formatos aunque la documentacin ms importante es el cdigo de los programas en s.
2 El kernel de Linux es el sistema que provee los servicios bsicos, como por ejemplo administrador de procesos, memoria virtual, drivers, manejo de archivos, etc. En otras palabra es el nivel ms bajo del sistema operativo.

Distintas fuentes de informacin se vern en la seccin 1.4 (pg. 10). Comunicacin por red Linux es un sistema orientado a comunicacin en red. Provee distintos protocolos (TCP/IP, IPX, Samba, etc) junto con aplicaciones que brindan servicios para redes (servidores de web, mail, etc.). El mismo sistema de ventanas grco (XFree) esta orientado para ser utilizado en red. Sistema X Windows El sistema X Windows est basado en el modelo cliente-servidor en donde el X server es un programa que corre sobre el sistema Linux y maneja el hardware grco. Un cliente X es un programa que se comunica con el servidor, envindole pedidos tales como dibujar una lnea o atender el teclado. Ejemplos de estos clientes son editores de texto, juegos, navegadores web, etc. X es un sistema grco orientado a red; los clientes X pueden estar corriendo (utilizando cpu, memoria, etc.) en otra mquina. El servidor escucha los pedidos de estos (por conexiones TCP/IP) tanto como los locales, y acta sobre el hardware grco donde est corriendo. Es as que uno podra tener funcionando un editor de texto en una mquina en otro pas y usarlo en casa. Es importante tener en cuenta que el sistema X Windows no hace gran diferencia si el cliente es remoto o local; los protocolos de conexin entre el servidor y los clientes son, en un nivel ms alto, el mismo. Para una explicacin sobre este tipo de arquitectura cliente-servidor sobre Internet leer la seccin 1.3 (pg. 9). Otra caracterstica del sistema es la idea de manejador de ventanas (window manager). Los clientes corriendo bajo X son presentados dentro de una o ms ventanas en la pantalla. Pero la forma en que son manipuladas (cambiar de tamao, moverlas, etc.) y decoradas no es controlada por el servidor, si no por otro cliente llamado window manager que corre concurrentemente con los otros clientes. De esta forma uno puede elegir como ver y manipular el entorno (looks and feels) cambiando el window manager a gusto personal. Ms caractersticas de este s.o. se pueden encontrar en el apndice B.3 (pg. 57).

1.2.2. Un paseo como usuario


Una vez arrancado el sistema ingresemos al mismo (con el login y el password).
Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.28pre1 on an i686 hp01 login: martin Password: Last login: Wed Jan 9 17:45:09 on tty1 [martin@maq martin]$ _

pwd

La linea que comienza con [martin@maq martin]$_ se la denomina lnea de comando y all es donde, escribiendo con el teclado, me comunico con el shell. Ahora veremos un poco ms como el usuario interacta con el s.o. a travs del shell, haciendo hincapi en el sentido de multiusuario y tratando el sistema de archivos como un recurso compartido con proteccin. Lo ms frecuente es que cada usuario en Linux tenga su propio directorio, lo que se llamara el home del usuario. En la mayora de los casos los usuarios comunes tienen un directorio en /home. Por ejemplo si nuestro usuario se llama martin tendr un directorio de home /home/martin3 . Para saber en que directorio nos encontramos debemos de ejecutar el comando pwd.
3 En

sistemas con gran cantidad de usuarios este directorio puede ser distinto.

Tarea 1.3 Ver en que directorio nos encontramos Ejecutemos el mismo:


[martin@maq martin]$ pwd /home/martin [martin@maq martin]$ _

Este seria equivalente al comando cd de DOS sin ningn argumento.


ls

Otra funcin muy til es listar los archivos del directorio donde nos encontramos. Para ello usamos el comando ls. Tarea 1.4 Usemos ls Ejecutemos el comando:
[martin@maq martin]$ ls Desktop [martin@maq martin]$ _

Como podemos observar, ls nos presenta los archivos que tenemos en nuestro directorio, sin embargo es conveniente usarlo con algunos argumentos para que se nos muestre mas informacin de estos archivos:
[martin@maq martin]$ ls -la total 88 drwx-----6 martin martin drwxr-xr-x 6 root root -rw------1 martin martin -rw-r--r-1 martin martin -rw-r--r-1 martin martin -rw-r--r-1 martin martin drwxr-xr-x 3 martin martin -rw-r--r-1 martin martin drwxr-xr-x 4 martin martin -rw-r--r-1 martin martin -rw-rw-r-1 martin martin -rw------1 martin martin -rw------1 martin martin [martin@maq martin]$ _

4096 4096 233 24 224 124 4096 747 4096 3728 52 0 1763

ene 25 00:36 . feb 6 1996 .. ene 24 02:15 .bash_history dic 4 17:47 .bash_logout dic 4 17:47 .bash_profile dic 4 17:47 .bashrc dic 5 21:21 Desktop dic 4 17:47 .emacs dic 4 17:54 .kde dic 4 17:47 .screenrc dic 4 17:57 .sversionrc dic 5 21:21 .Xauthority dic 5 21:21 .xsession-errors

El argumento -la hace que se muestre todos los archivos incluidos los ocultos (en Unix son los que comienzan con un .) y que utilice el formato de salida completa, que incluyen los permisos, propietarios, tamao, fecha y hora de creacin de cada archivo.
cd

En el caso de que queramos movernos por la estructura de subdirectorios, tenemos el comando cd que sirve para tal motivo. Este cumple las mismas funciones que su par de DOS, sirve para cambiar de un directorio a otro.

Tarea 1.5 Cambiemos de directorios Ejecutemos el comando:


[martin@maq martin]$ cd Desktop [martin@maq Desktop]# _

Con l ingresaremos al subdirectorio "Desktop", si es que queremos retornar al subdirectorio anterior usaremos:
[martin@maq Desktop]# cd .. [martin@maq martin]$ _

para movernos al directorio raz usaremos:


[martin@maq martin]$ cd / [martin@maq /]# _

O si queremos simplemente volver a nuestro home, tenemos que escribir:


[martin@maq /]# cd [martin@maq martin]$ _

Existe otra forma de referirnos a nuestro directorio personal cuando utilizamos el shell bash. Si hacemos:
[martin@maq /]# cd ~/ [martin@maq martin]$ _

obtenemos el mismo resultado anterior. La ventaja de esta abreviacin es que sirve con cualquier comando, por ejemplo para copiar o mover archivos como veremos ms adelante.

mkdir

Existen dos archivos en todos los directorios ellos son el punto (.) y los dos puntos (..). El primero referencia al directorio donde estamos posicionados, el segundo al directorio anterior. Ahora si lo que queremos es crear un subdirectorio usaremos el comando mkdir. Tarea 1.6 Creemos subdirectorios Ejecutemos el comando:
[martin@maq martin]$ mkdir trabajos [martin@maq martin]$ _

Con esto generamos un subdirectorio al que llamamos trabajos Que podemos utilizar para guardar los archivos que hagamos en la materia.
cp

El comando cp sirve para copiar archivos. los dos argumentos mas importantes e imprescindibles son el archivo o directorio origen y el destino. 7

Tarea 1.7 Copiemos archivos Copiemos el archivo /etc/X11/XF86Config a nuestro directorio:


[martin@maq martin]$ cp /etc/X11/XF86Config ./ [martin@maq martin]$ _

Como se puede observar siempre hay que sealar el directorio (o archivo) destino, a diferencia que en DOS.
mv

El comando mv sirve para mover o cambiar de nombre un archivo o directorio. Tarea 1.8 Renombremos archivos Cambiemos de nombre el archivo que acabamos de copiar:
[martin@maq martin]$ mv XF86Config XF86Config.mio [martin@maq martin]$ _

Si ejecutamos el comando ls ya visto, podemos ver este cambio:


[martin@maq martin]$ ls Desktop XF86Config.mio [martin@maq martin]$ _

rm

Para borrar archivos se utiliza el comando rm. Tarea 1.9 Borremos archivos Probemos borrar el archivo XF86Cong.mio:
[martin@maq martin]$ rm XF86Config.mio [martin@maq martin]$ _

Si nos ejecutamos un ls veremos que efectivamente el archivo fue borrado. Ahora probemos borrar un archivo que no este en nuestro directorio personal:
[martin@maq martin]$ rm /etc/X11/XF86Config rm: remove write-protected file /etc/X11/XF86Config? y rm: cannot unlink /etc/X11/XF86Config: Permiso denegado [martin@maq martin]$ _

Vemos que al ejecutar el comando el sistema nos pide conrmacin para borrar un archivo protegido y aunque conrmemos la operacin no se nos permite realizarla. Esto es debido a que el archivo no nos pertenece. Recordemos que Linux es un sistema multiusuario donde se protegen los recursos compartidos. Ms adelante veremos como se administran estos permisos.

exit

Si quisiramos terminar la sesin para que pueda utilizar la mquina otro usuario, utilizaremos el comando exit. Importante: Hay que acordarse siempre se salir de todas las terminales que tengamos abiertas con este comando. Si nos olvidamos de hacerlo, el sistema no tiene forma de comprobar que otra persona use nuestros recursos indiscriminadamente (ver seccin 1.2.1 (pg. 2)). Esto quiere decir que por ejemplo puede venir alguien y borrar nuestros documentos sin ningn problema.

1.3. Esquema inicial de Internet


Un esquema muy simplicado de Internet es verla como una red interconectada con forma de grafo. Los nodos de este grafo son computadoras o routers y sus aristas son los medios de conexin (cable, enlaces satelitales, bras pticas, etc.). En la gura 1.1 (pg. 9) se puede ver un dibujo de este grafo donde los routers estn representados por crculos y las computadoras con rectngulos.
Cliente de web Cliente de web Cliente de chat

Cliente de web Servidor de mail

Servidor de chat y cliente de mail

Cliente de mail

Cliente de web

Servidor de web y de mail

Figura 1.1: Red como grafo Los nodos, como ya dijimos son bsicamente 2 tipos de mquinas: computadoras y routers. Las primeras son las que ya conocemos; son mquinas de estados que son ejecutadas por software que implementan tanto programas de usuarios como los protocolos de comunicacin en red. Los routers son computadoras especializadas en la transferencia de comunicacin en red. Estas tienen solo la clase de software que implementan los protocolos de comunicacin. Esta separacin en la realidad no es tan tajante; por ejemplo las computadoras con Linux tambin pueden funcionar como routers y como computadoras comunes. El software de red de los nodos implementa el protocolo TCP/IP de comunicacin. El software del protocolo esta organizado en capas jerrquicas (ya veremos de que se trata esto). Por lo general los routers solo implementan hasta la capa IP. 9

Los nodos que son computadoras tienen software a nivel aplicacin. El software de Internet (para web, mail, etc.) est organizado en una arquitectura cliente servidor; por ejemplo en las mquinas existe tanto el software para leer los mails (clientes de mails) como los servidores de este servicio que se encargan de transportar los mails desde su origen a su destino.

1.4. Fuentes de informacin


El sistema Linux comienza su desarrollo con el nacimiento del S.O. UNIX ya que la mayora de las aplicaciones desarrolladas para este ltimo fueron portadas a Linux. Adems, por la misma esencia de Linux (sistema operativo de cdigo abierto desarrollado en forma libre) la cantidad de aplicaciones y recursos nuevos que puede brindar crece con mucha velocidad da a da. Por razones de tiempo, en este curso no se ensear el manejo y administracin de todas estas aplicaciones y recursos. En vez de ello se har hincapi en brindar el conocimiento necesario para acceder a esta informacin. Como se mencion en la subseccin 1.2.1 (pg. 4) las distribuciones Linux contienen documentacin para su uso y administracin. Adems existen fuentes de informacin en Internet que son de mucha utilidad. A continuacin enumeraremos las ms comunes.

1.4.1. Manuales de sistema (man pages)


Las distribuciones de Linux (incluso las de la mayora de los distintos Unix) proveen informacin de uso de comandos, archivos de conguracin e incluso funciones de libreras de sistema para programadores en forma de man pages. Para acceder a esta informacin se utiliza el programa man seguido con el nombre del tem a buscar. Tarea 1.10 Comando man Por ejemplo ejecutando en el shell
[martin@maq martin]$ man ls

man

Con ello se ejecuta un visor donde se pueden ver todos los parmetros posibles y su signicado para el comando en cuestin. Este visor permite avanzar o retroceder el texto con la informacin a travs de las echas del teclado. Al nal de cada man page hay una lista de comandos relacionados que es muy til cuando queremos saber como realizar cierta tarea. Una accin frecuente dentro de este visor es buscar algn texto. Para hacerlo, dentro del visor oprimimos la tecla [/] y escribimos el texto a buscar. Una vez efectuado este paso, se oprime [Enter] y el visor seala la primera ocurrencia del texto. Si despus de esto oprimimos la combinacin de teclas [/][Enter] buscar la prxima ocurrencia. Hacer: Busquemos la opcin -l y veamos que signica. Para ir al principio del documento oprimamos la tecla [g]. Para ir al nal oprimamos la tecla [G] Para terminar la ejecucin del visor se oprime la tecla [q].

10

apropos

Para buscar una man page existe el comando apropos. Cada man page tiene una descripcin de la informacin que contiene. Las palabras de estas descripciones son indexadas en bases de datos que pueden ser consultadas con este comando. Tarea 1.11 Uso del comando apropos Ejecutemos el comando apropos para buscar informacin sobre editores:
[martin@maq martin]$ apropos editor QLineEdit [qlineedit] (3qt) - One-line text editor QMultiLineEdit [qmultilineedit] (3qt) - Simple editor for inputting text ed (1) - text editor ed [red] (1) - text editor editres (1x) - a dynamic resource editor for X Toolkit applications mcedit (1) - Full featured terminal text editor for Unix-like systems pico (1) - simple text editor in the style of the Pine Composer prompter (1) - prompting editor front-end for nmh red (1) - text editor red [ed] (1) - text editor sed (1) - a Stream EDitor tksysv (8) - a runlevel service editor vim (1) - Vi IMproved, a programmers text editor vim [ex] (1) - Vi IMproved, a programmers text editor vim [rvi] (1) - Vi IMproved, a programmers text editor vim [rview] (1) - Vi IMproved, a programmers text editor vim [vi] (1) - Vi IMproved, a programmers text editor vim [view] (1) - Vi IMproved, a programmers text editor xedit (1x) - simple text editor for X [martin@maq martin]$ _

La segunda columna de la salida del comando indica la seccin a la cual pertenece la man page (ver apndice B.1 (pg. 54)).

man

Como se puede observar, el comando apropos muestra la seccin a la que pertenecen las man pages. Suele suceder que existan dos programas o funciones de libreras que existan con el mismo nombre. Por ejemplo existe el programa printf que sirve para escribir por pantalla especicando un formato, y existe una funcin con el mismo nombre en las libreras del lenguaje C. Si ejecutamos apropos printf veremos que la primera pertenece a la seccin 1, y la segunda a la 3. Para indicarle al programa man que muestre la man page de una seccin particular (ver apndice B.1 (pg. 54)), hay que anteceder al nombre de la misma el nmero de la seccin. Tarea 1.12 Elegir la man page de una seccin Veamos la man page de la funcin C printf:

11

[martin@maq martin]$ man 3 printf [martin@maq martin]$ _

Una cuestin que hay que mencionar es el carcter de la informacin que brindan las man pages. La informacin de las mismas se supone que es solo para consulta y suele ser de poca ayuda en el caso que se quiere aprender algn tpico sin ningn conocimiento previo. De todas formas, como es muy fcil de accederlas (solo hay que usar el comando man) es siempre el primer paso que se da cuando queremos resolver algn problema. Adems estn disponibles en todas las distribuciones.

1.4.2. Manuales en formato info (info pages)


Otra fuente de informacin que suele estar incluida en muchas distribuciones son la info pages. Suelen tener los mismos tem de informacin que las man pages, pero de forma ms detallada. Estn en casi todas las distribuciones. Las info pages se acceden con el comando info. Tarea 1.13 Uso de info Ejecutemos el programa info:
[martin@maq martin]$ info

info

Observemos que existe un cursor que se mueve con las echas del teclado y permite recorrer la pgina, similar a un editor de textos.

Las info pages tienen una estructura de hiper-texto. Esto quiere decir que existe una pgina principal y desde ella se puede navegar por la documentacin de programas y funciones de librera, de forma similar a la que se hace desde un navegador de Web. Es por ello que las mismas tienen una estructura de rbol, con pginas padres e hijos. La forma de manipular este entorno es por medio del teclado. Algunos comandos son: [Enter] sobre el tem: baja a la pgina hijo. [u] : (up) Va a la pgina padre. [p] : (previous) Va a la pgina hermano anterior. [n] : (next) Va a la pgina hermano siguiente. [l] : (last) Va a la pgina anterior visitado. [/] : Bsqueda. Funciona igual que las man pages. [q] : Salir. Otras fuentes de informacin alternativas y ms orientadas a la administracin de sistemas puede encontrarse en el apndice B.2 (pg. 55).

12

Captulo 2

Herramientas tiles
Este captulo se vern algunos programas para realizar las actividades ms comunes que se suelen realizar como usuario. Se mostrarn solo las opciones ms comunes de los mismos. Si se quiere profundizar sobre ellos ya se dieron las fuentes de informacin donde se puede acceder a este conocimiento (seccin 1.4 (pg. 10)).

2.1. Cambiar el password


passwd

El usuario ya est creado pero falta asignarle una clave de acceso. Para ello usaremos el comando
passwd.

Tarea 2.1 Cambiar un password En la consola de root ejecutemos el comando:


[root@maq root]# passwd Changing password for user martin. Changing password for martin (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully

Primero se nos pedir que ingresemos la contrasea vieja. Si la hemos introducido bien, se nos pedir la nueva. Luego se nos pedir que la conrmemos para lo cual tendremos que volverla a ingresar. Ver que no aparece la clave en pantalla cuando la escribimos. Recordemos que las claves en Unix tienen en cuenta minsculas y maysculas. Adems deben ser palabras que no aparezcan en el diccionario (ni en ingls). Una buena costumbre es que tengan ms de seis caracteres y que incluyan letras y nmeros.

2.2. Mail
pine

Uno de los clientes de mail ms utilizados en los ambientes Unix es el pine. Veamos como recibir mails:

13

Tarea 2.2 Leer mails recibidos Una vez ingresado al sistema con el login y la contrasea, ejecutemos el comando pine:
[martin@maq martin]$ pine

Si es la primera vez que usa pine Aparecer una pantalla una pantalla de bienvenida. Oprima la tecla [e] para continuar. Seguidamente aparecer otra pantalla:

En ella espera a que se ingrese la contrasea. Ingrese la misma que utiliz para autenticarse al sistema. A partir de aqu la pantalla mostrara un men de opciones. Este se puede navegar con las echas del teclado. Por defecto queda sealada la opcin FOLDER LIST. Si Oprimimos la tecla [Enter] mientras est sealada esta opcin aparecer la pantalla siguiente:

14

En la parte superior aparece tambin un men que se puede navegar con las echas1 . Cada una es una representa una carpeta donde se almacenan distintas clases de mails2 : INBOX representa el contenedor de los mails que me llegan. Cuando quiero ver si tengo nuevos mails tengo que revisar esta carpeta. sent-mail contiene los mails que he enviado. saved-messages contiene los mails que he guardado. Por lo general son mails que se encontraban en INBOX pero que los quiero tener separados Ahora veamos los mails que han llegado oprimiendo la tecla[Enter] sobre la opcin INBOX. Haciendo esto aparecer lo siguiente:
1 En la parte de abajo aparece una ayuda con las teclas asignadas para ejecutar distintas funciones. Esta caracterstica se mantendr en la mayor parte de las pantallas. 2 Puede haber otras carpetas dependiendo como se haya congurado el programa.

15

Aqu se muestra una lista de mails que han llegado. Los que comienzan con la una letra N son mails que todava no he ledo. Para leer alguno hay que seleccionarlo con las echas y apretar la tecla [Enter]:

Para ejecutar algunas acciones con el mail actual se utilizan las siguientes teclas: [<] [r] [d] [m] para volver a la lista de mails. para responder el mail. para borrarlo. para volver a la pantalla inicial.

16

Para componer un mail se oprime la tecla [c]. Tarea 2.3 Componer un mail Oprimamos la tecla [c], con lo que aperecer la siguiente pantalla:

En la parte superior de la pantalla aparecen una serie de campos a llenar. Los ms importantes son: To: donde se escribe la direccion de mail a la cual quiero enviar un mensaje. Subject: el ttulo del mail. Este es el encabezamiento del mismo y por lo general es lo primera que se observa cuando se recibe el mail. Ms abajo (por debajo de la linea que dice Message Text comienza el area de texto donde se escribe el mail. Estos campos y esta rea son seleccionables con las echas de teclado como ya es habitual. Si se quiere anular el mail que se esta escribiendo hay que oprimir las teclas [Control][c] (como dice en la ayuda de la parte inferior). Hacer: Ahora pregunte a algn compaero de curso (del sexo que desee) la direccin de mail que le asignaron y envele un mail con una carta de amor. Espere un rato sin desesperarse y fjese si le llego algn mail.

Si desea salir del programa oprima la tecla [q].

2.3. X
Ya hablamos del sistema X en la seccin 1.2.1 (pg. 5). El servidor X es un programa ms de nuestro entorno. 17

Tarea 2.4 Arrancar el X Para ejecutarlo escribir en la linea de comandos lo siguiente:


[martin@maq martin]$ startx

y oprimir la tecla [Enter]. A partir de aqu aparecer una pantalla grca similar a la esta:

La pantalla que acabamos de ver es distinta a las terminales virtuales que vimos en la seccin 1.2.1 (pg. 2). Tarea 2.5 Cambiar de terminal Dentro del entorno grco oprimamos las teclas [Control][Alt][F1]. Con esto aparecer la terminal modo texto donde lanzamos el X. Este programa habr escrito en la misma un montn de informacin referente al estado del hardware de video y su conguracin. Desde esta terminal, oprimiendo las teclas [Alt][F2] ( cualquiera de las vistas en la seccin 1.2.1 (pg. 2)) se podr ingresar al sistema autenticndose como usuario nuevamente. Para volver al entorno de ventanas hay que oprimir las teclas [Alt][F7]3.

En la ventana del X aparece una barra de botones en la parte inferior (se suele denominar panel). Cliqueando con el mouse sobre los diferentes conos podemos arrancar programas. Tarea 2.6 Terminal X
3 Esto puede cambiar segn la conguracin del sistema. Por lo general la tecla de funcin es la que le sigue a la ltima terminal modo texto del sistema.

18

Cliquear con el mouse el icono que tiene dibujado una pantalla de monitor. El programa que arranca haciendo esto es como una terminal de las que vimos en modo texto pero corriendo en el entorno grco. Aqu podemos arrancar cualquier programa como por ejemplo el pine. Para salir de esta terminal ejecutemos el comando exit (al igual que antes), cliqueemos sobre el botn con una x en la esquina superior derecha o oprimamos la combinacin de teclas [Alt][F4].

Para salir del X hay que cliquear sobre el botn del panel que tiene dibujado el smbolo de apagar (parecido a ).

2.4. Emacs
emacs

Una herramienta imprescindible para programar es un editor de texto plano. Estos se diferencian de los editores grcos4 que solo escriban secuencias de caracteres sin ningn formato (por ejemplo tamao de letras) ms que el salto de linea. Uno de los ms utilizados es el Emacs5 Tarea 2.7 Arrancar Emacs Una vez que hemos entrado al X oprimir el botn que tiene dibujado una cabeza de un animal con cuernos. Otra forma es entrando a una terminal (como vimos en la seccin 2.6 (pg. 19)) y ejecutando el comando emacs. Con esto aparecer una ventana como sigue:

4 Se

5 Este

los suele denominar WYSWYG: what you see what you get, en castellano lo que usted escribe es lo que usted obtiene. editor tiene muchas ms prestaciones. Por ejemplo sirve como cliente de mails. Muchas personas lo usan como shell.

19

El Emacs dentro de X6 tiene un men de opciones en la parte superior de la ventana y una seccin en la parte inferior (llamada minibuffer) donde por lo general se escriben comandos del programa y se reciben mensajes del mismo. Tarea 2.8 Mens de Emacs Cliqueemos con el mouse el men que dice Files:

Este es e men principal del Emacs. Aqu se muestran un serie de opciones que son seleccionables con el mouse. Algunas son: Open File: Para abrir archivos ya existentes o crear nuevos. Si se elije se pedir que se ingrese el nombre de un archivo en el minibuffer. Si este archivo ya existe se lo abre. Si no, se crear uno nuevo. Cada archivo abierto para editar se lo denomina un buffer. Save Buffer As: Sirve para guardar en disco lo que hemos escrito. Kill Current Buffer: Cerrar el documento que estemos editando. Make New Frame: Abrir otra ventana de Emacs para editar otros textos (o el mismo). Exit Emacs: Termina el programa. Si estamos editando varios textos al mismo tiempo en una misma ventana. se puede intercambiar entre ellos con las opciones del men Buffers. Se puede elegir una seccin de texto para cortar (borrarlo) o pegar (duplicarlo) el mismo cliqueando el comienzo del mismo manteniendo el botn izquierdo del mouse apretado y pintando la seccin del mismo que se quiera seleccionar. Una vez hecho esto se puede borrar lo elegido con la tecla [Del] o
6 Tambin

funciona en modo texto.

20

[Supr] o se puede pegar oprimiendo los dos botones del mouse de forma conjunta7 sobre el lugar donde queremos copiarlo. Las acciones de copiar, pegar y borrar se pueden seleccionar tambin desde el men Edit seleccionado Copy, Paste y Cut respectivamente. Las teclas para seleccionar, copiar y pegar que se usan habitualmente en programas DOS son [Shift][Flecha], [Control][Ins] y [Shift][Ins] respectivamente. Por defecto Emacs no tiene esta asociacin de teclas. Pero se puede congurar8 para que si la tenga. Fjese si estas teclas funcionan y si no es as pregunte a los profesores como congurarlo. Tarea 2.9 Editar texto Si recibi la carta de amor por mail (de la seccin 2.3 (pg. 17)) escriba un texto respondindola (como crea conveniente) con el Emacs en un archivo que se encuentre en el directorio trabajos que cre en la seccin 1.2.2 (pg. 7). Si lamentablemente no recibi ninguna escriba un chiste y no se haga problema. Envelo por mail (estando en el X) al compaero que le envi la carta o en su defecto a cualquier otro. Ayuda: Para mandar un mail con el pine de un texto ya escrito, lea la ayuda de la parte inferior de la pantalla del pine.

Como ya se dijo el Emacs sirve para ms cosas que slo escribir texto. Ms adelante veremos como utilizarlo para correr programas en Haskell. Por ahora veremos como utilizarlo para leer las info pages que ya vimos en la seccin 1.4.2 (pg. 12).

7 En

8 Emacs

sistemas con mouse de tres botones se puede oprimir el botn del medio para hacer esto. se congura cambiando el archivo .emacs que se encuentra el directorio home del usuario.

21

Tarea 2.10 Info pages en Emacs Seleccionemos el men Browse Manuals whith Info que se muestra en la siguiente gura:

Con esto se puede navegar por las info pages desde el Emacs.

2.5. Trabajando con disquetes


Cunado usted haga trabajos en el laboratorio quizs necesite trasladar los archivos hasta su casa. Una de las formas es utilizando disquetes. Para manipular disquetes existen varias herramientas que son copias de las que hay en el sistema operativo DOS. Los nombres son los mismos antecediendo la letra m al comando DOS. Para ver que tenemos guardado en un disquete existe el comando mdir. Para usarlo hay que ejecutar:
mdir a:

mdir

mcopy

Para copiar archivos a un disquete se usa el comando mcopy. Su sintaxis de uso es:
mcopy <nombres de archivos a copiar> a:

Si lo que queremos hacer es copiar archivos de un disquete a nuestro directorio la sintaxis es:
mcopy a:<nombres de archivos a copiar> ./ mkdosfs

Para formatear un disquete se utiliza el comando mkdosfs. Para usarlo hay que ejecutar:
/sbin/mkdosfs -cv /dev/fd0

Otros comandos para trabajar con disquetes pueden consultarse con man mtools.

22

2.6. Ms comandos
rmdir

A continuacin se vern algunos comandos tiles para ejecutar desde consola. Para borrar directorios se utiliza el comando rmdir. Tarea 2.11 Borremos el directorio Entremos al sistema y hagamos un directorio llamado dir_prueba (ver el comando mkdir seccin 1.2.2 (pg. 7)). Comprobemos que efectivamente fue creado. Probemos el comando:
[martin@maq martin]# rmdir dir_prueba [martin@maq martin]# _

less

Ya vimos el comando cat que sirve para volcar por pantalla un archivo. Pero si queremos ver un archivo que ocupe ms de una pantalla, este comando no nos sirve. Pero el comando less si permite recorrer un archivo. Tarea 2.12 less Veamos el archivo de conguracin del sistema X Windows. Para ello ejecutemos:
[martin@maq martin]# less /usr/X11/XF86Config

Este comando permite recorrer el documento de la misma forma que lo hace el comando man. Para buscar texto tambin se usa la tecla [/]. Busquemos la palabra keyboard y luego Keyboard (con mayscula).

Las bsquedas con less funcionan distinto que con man; con less si importan las maysculas y minsculas. Este comando admite argumentos que modican este comportamiento. Tarea 2.13 Opcin de less Ejecutemos ahora
[martin@maq martin]# less -i /usr/X11/XF86Config

El parmetro opcional -i permite que las bsquedas sean sin importar maysculas y minsculas. Hacer: Repitamos la bsqueda de la palabra keyboard.
more

ln

Hay sistemas que no tienen instalado el comando less. Por lo general el mismo es reemplazado por su antecesor more. El mismo es menos potente; solo permite desplazarse por el documento pgina por pgina. Para desplazarse a la pgina siguiente se usa la barra espaciadora, y para ir a la anterior se usa la tecla [b].

23

El sistema de archivos de Linux permite tener enlaces simblicos. Estos son archivos especiales que referencian a archivos o directorios ya existentes. Son similares a los accesos directos de Windows. Su sintaxis ms comn es:
ln -s <nombre de archivo ya existente> <nombre del archivo del enlace>

Tarea 2.14 Creando enlaces simblicos Ejecutar en consola el siguiente comando:


[martin@maq martin]# ln -s /etc/X11/ x11 [martin@maq martin]# _

Este comando cre un enlace en nuestro directorio personal desde el archivo ~/x11 al directorio /etc/X11. Para ver si se ha creado con xito ejecutemos el comando:
[martin@maq martin]# ls -l total 8 drwxr-xr-x 3 martin martin lrwxrwxrwx 1 martin martin [martin@maq martin]# _

4096 dic 5 21:21 Desktop 9 ene 29 19:46 x11 -> /etc/X11/

Ahora podemos acceder al enlace como si fuera el directorio al cual apunta. Hacer: Vayamos a este directorio, a travs del enlace, con el comando cd x11 y ejecutemos el comando pwd. Que pas?
grep

Otro comando de uso muy frecuente en la administracin es grep. El mismo sirve para buscar palabras (ms especcamente expresiones regulares) en archivos. Tarea 2.15 Comando grep Busquemos, otra vez, la palabra keyboard en el archivo /etc/X11/XF86Config:
[martin@maq martin]# grep keyboard /etc/X11/XF86Config # Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # To customise the XKB settings to suit your keyboard, modify the # keyboard, you will probably want to use: # If you have a US Microsoft Natural keyboard, you can use: [martin@maq martin]# _

Este comando muestra las lneas donde se encuentra esta palabra. Tambin, este comando admite muchos argumentos (ver las man pages). Por defecto, el comando tiene en cuenta maysculas y minsculas. Para revertir esta opcin se utiliza el argumento -i:
[martin@maq martin]# grep -i keyboard /etc/X11/XF86Config # Keyboard section Section "Keyboard"

24

# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # To disable the XKEYBOARD extension, uncomment XkbDisable. # To customise the XKB settings to suit your keyboard, modify the # keyboard, you will probably want to use: # If you have a US Microsoft Natural keyboard, you can use: [martin@maq martin]# _

De esta forma muestra tambin las apariciones de la palabra Keyboard (con mayscula).

quota

Generalmente en los entornos multiusuario se restringe la cantidad de espacio en disco que cada uno puede utilizar. Para ver la utilizacin de este espacio y si nos hemos excedido del asignado se utiliza el programa quota. Tarea 2.16 Viendo el espacio utilizado en disco Probar este comando y si nos hemos excedido de lo permitido borrar copiar en disquete para su traslado algunos archivos que no necesitemos.

2.7. Otros programas


Los sistemas Linux vienen con muchos programas para desarrollar diferentes tareas. Midnight Commander: Es un programa que sirve para manipular archivos (copiar, mover, borrar archivos o directorio, editar texto, etc.). Adems se pueden ejecutar comandos como si fuera un shell. Es un clon del viejo programa para DOS Norton Commander. Para usarlo hay que ejecutar en una terminal el comando mc.
gv

mc

Ghostview: Es un visor de archivos de tipo postscript. Son archivos que terminan en .ps. Muchos prcticos (y este mismo apunte) estarn disponibles en este formato. Para usarlo hay que ejecutar en una terminal grca:
gv <nombre de archivo postscript>

xdvi

Xdvi: Es un visor de archivos de tipo xdvi. Son archivos que terminan en .dvi. Tambin algunos prcticos estarn disponibles en este formato. Para usarlo hay que ejecutar en una terminal grca:
xdvi <nombre de archivo dvi>

acroread

Acrobat Reader: Es un visor de archivos de tipo pdf. Para usarlo hay que ejecutar en una terminal grca:
acroread <nombre de archivo pdf>

display

Visor de imgenes: Para poder visualizar imgenes en casi cualquier formato (jpeg, png, bmp, gif, etc.) se puede utilizar el programa display. El mismo tambin sirve para manipularlas. Para usarlo hay que ejecutar en una terminal grca: 25

display <nombre de archivo> hugs

Haskell: El intrprete Haskell instalado es el hugs. Para usarlo hay que ejecutar en cualquier terminal el comando hugs. Si abrimos un archivo de programa haskell (con extension .hs) con el emacs y tenemos instalada la conguracin para la materia podremos ejecutar el hugs desde este editor. El compilador Haskell que suele estar instalado es el ghc. El mismo nos permitir crear ejecutables de programas que hemos hecho para la materia.

ghc

gcc

Compilador C: El compilador c instalado es el gcc. Para usarlo hay que ejecutar en cualquier terminal:

gcc3

gcc <nombre de archivo .c> -o <nombre de ejecutable nal>

Tambin se encuentra una versin ms nueva del mismo bajo el nombre gcc3.
g++ java fpc fp lazarus squeak pl

Otros compiladores: Se encuentran a disposicin otros compiladores para diferentes lenguajes.


g++ es un compilador de C++. java es el compilador de lenguaje Java. fpc es un compilador de lenguaje Pascal.

Este ltimo programa tiene un entorno modo texto integrado de programacin llamado fp. Otro entorno para el mismo compilador pero en modo grco es lazarus.
squeak es un compilador de SmallTalk. pl es un compilador de Prolog.

opera

Navegador web: Para navegar en la web el las maquinas del laboratorio cuentan con el programa opera. Para utilizarlo solo hay que ejecutarlo en X desde una terminal (ver seccin 2.6 (pg. 19)). Hay que tener en cuenta que para poder usarlo se debe congurar el proxy de http. Para hacerlo hay que ir al men Edit Preferences Network Proxy severs y poner como proxy a hal.famaf.unc.edu.ar con puerto 8080.

26

Captulo 3

Comandos avanzados
A continuacin se vern otras comandos, al mismo tiempo que se profundizarn algunos conceptos necesarios para su uso.

3.1. Shells
Vimos que los usuarios interactan con el sistema a travs del shell. Los shell corren como cualquier otro proceso en el sistema. Hasta ahora utilizamos el programa bash, pero existen otros shells, por ejemplo csh (C Shell), ksh (Korn Shell), sh, tcsh, zsh. Por lo general las distribuciones proveen la mayora de los que nombramos. Tarea 3.1 Ver si tenemos instalado otro shell Para ver si tenemos instalado el shell csh usemos un nuevo comando:
[martin@maq martin]# which csh /bin/csh [martin@maq martin]# _

which

Despus de ejecutarlo se nos muestra su ubicacin en el sistema de archivos.

A continuacin veremos algunas funcionalidades del shell bash, aunque tambin son aplicables a otros.

3.1.1. Expansin de nombres


Por lo general, como argumento de comandos puede ir una serie de nombres de archivos. Una forma de sealar que archivos queremos que sean procesados es mediante expresiones regulares. Vamos a ver solo algunos ejemplos de uso de las mismas. Si queremos ver en nuestro directorio todos los archivos que comiencen con .bash ejecutemos:
[martin@maq martin]# ls .bash* .bash_history .bash_logout .bash_profile [martin@maq martin]$ _ .bashrc

27

El carcter * sirve para sealar cualquier palabra, incluso la palabra vaca. En realidad con el mismo, indicamos al shell bash que ejecute el comando. ls .bash_history .bash_logout .bash_profile .bashrc

Otro carcter especial es ?. El mismo es un carcter comodn. Por ejemplo si ejecutamos:


[martin@maq martin]# ls /etc/f?p* /etc/fdprm /etc/ftpconversions /etc/ftpaccess /etc/ftpgroups [martin@maq martin]$ _ /etc/ftphosts /etc/ftpusers

Observemos que se listan todos los archivos en el directorio que comiencen con f, que continen con cualquier letra, que sigan con una letra p y terminen con cualquier cosa. Tambin se le puede indicar al shell que muestre solo caracteres en un rango (orden ASCII). Por ejemplo, podemos solicitar al shell que muestre todos los archivos que comiencen con bash y continen con un carcter alfabtico:
[martin@maq martin]# ls .bash[a-z]* .bashrc [martin@maq martin]# _

Oro ejemplo es si queremos mostrar todos los archivos ocultos que contengan la subpalabra |sh|:
[martin@maq martin]# ls .*sh* .bash_history .bash_logout .bash_profile [martin@maq martin]# _

.bashrc

.cshrc

Estas expresiones regulares funcionan con cualquier comando. Por lo cual hay que tener cuidado de no ejecutar por ejemplo el comando rm *.

3.1.2. Redireccionando la salida


Una de las formas que tienen todos los procesos en Unix de comunicarse con el entorno es a travs de canales. Hay tres canales estndar que son salida, entrada y error. Todos los programas que hemos visto escriben su salida por los canales de salida o de error (si quiere dar un mensaje de operacin errnea) y esta va a parar a la pantalla. Lo mismo sucede con lo escrito por medio del teclado; es leda por el programa (por ejemplo el shell bash) por el canal de entrada estndar que est conectada al dispositivo teclado. El shell [martin@maq martin]$bash puede interceptar los mensajes en estos canales para redireccionarlos a otros lugares que no sean la pantalla o el teclado. Tarea 3.2 Volcado de la salida a un archivo Por ejemplo, podemos indicarle al shell con el carcter > que la salida de cierto programa se escriba en un archivo, en lugar de ser escrito en la pantalla:
[martin@maq martin]# ls /var > ~/dirvar.txt [martin@maq martin]# _

Con esto se cre un archivo nuevo dirvar.txt con el volcado a la salida estndar de comando. Si vemos el nuevo archivo encontraremos el listado del directorio /var: 28

[martin@maq martin]# less dirvar.txt

du

El comando du sirve para ver cuanto espacio ocupan los directorios, recursivamente desde los directorios que le indiquemos. Si queremos que nos muestre solo el total de los directorios indicados, tendremos que usar el modicador -s. Tarea 3.3 Comando du Ejecutemos el comando du:
[martin@maq martin]# du -s /usr/share/man/* 72 /usr/share/man/de_DE 3708 /usr/share/man/es 72 /usr/share/man/fr_FR 28 /usr/share/man/ja 32 /usr/share/man/man 6920 /usr/share/man/man1 1004 /usr/share/man/man2 11408 /usr/share/man/man3 176 /usr/share/man/man4 1000 /usr/share/man/man5 88 /usr/share/man/man6 456 /usr/share/man/man7 1588 /usr/share/man/man8 4 /usr/share/man/man9 1256 /usr/share/man/mann 16 /usr/share/man/pl 68 /usr/share/man/pt_BR 24 /usr/share/man/ru 20 /usr/share/man/sk 4 /usr/share/man/tmac.h [martin@maq martin]# _

Aqu usamos una expresin regular que hace que el shell active el comando du pasndole como parmetro todos los archivos del directorio /usr/share/man. Para cada uno de ellos el comando calcula el total del espacio utilizado sin recorrerlos recursivamente. Hacer: Guardemos esta salida del comando en un archivo llamado du_salida.

sort

Un comando que sirve para ordenar archivos de texto es el comando sort, el mismo presenta muchas opciones (ver man page). Por defecto este ordena las lneas de un archivo utilizando como clave el principio de ellas hasta los primeros caracteres en blanco. Tarea 3.4 Comando sort Ejecutemos el comando: 29

[martin@maq martin]# sort -n du_salida 4 /usr/share/man/man9 4 /usr/share/man/tmac.h 16 /usr/share/man/pl 20 /usr/share/man/sk 24 /usr/share/man/ru 28 /usr/share/man/ja 32 /usr/share/man/man 68 /usr/share/man/pt_BR 72 /usr/share/man/de_DE 72 /usr/share/man/fr_FR 88 /usr/share/man/man6 176 /usr/share/man/man4 456 /usr/share/man/man7 1000 /usr/share/man/man5 1004 /usr/share/man/man2 1256 /usr/share/man/mann 1588 /usr/share/man/man8 3708 /usr/share/man/es 6920 /usr/share/man/man1 11408 /usr/share/man/man3 [martin@maq martin]# _

El comando utiliza por defecto el orden lexicogrco (el del diccionario) sobre el primer campo de cada lnea. El argumento -n indica que utilice el orden numrico sobre estos campos, en vez del lexicogrco (el del diccionario) que es el que usa por defecto. Hacer: Ejecutar el mismo comando pero sin -n.

Como ya vimos se puede redireccionar la salida estndar a un archivo. Tambin es posible hacerlo pero a la entrada estndar de otro proceso. Esto se hace con el carcter | (se denomina pipe). Tarea 3.5 Usando pipes En el ejemplo anterior volcamos la salida estndar del comando du y la escribimos a un archivo temporal. Despus ordenamos su contenido con el comando sort. Pero se puede hacer estas dos cosas de una vez. Ejecutemos el comando:
[martin@maq martin]# du -s /usr/share/man/* | sort -n 4 /usr/share/man/man9 4 /usr/share/man/tmac.h 16 /usr/share/man/pl 20 /usr/share/man/sk 24 /usr/share/man/ru 28 /usr/share/man/ja 32 /usr/share/man/man 68 /usr/share/man/pt_BR 72 /usr/share/man/de_DE

30

72 /usr/share/man/fr_FR 88 /usr/share/man/man6 176 /usr/share/man/man4 456 /usr/share/man/man7 1000 /usr/share/man/man5 1004 /usr/share/man/man2 1256 /usr/share/man/mann 1588 /usr/share/man/man8 3708 /usr/share/man/es 6920 /usr/share/man/man1 11408 /usr/share/man/man3 [martin@maq martin]# _

Aqu, a la entrada del proceso sort se redireccion la salida del comando du y aquel volc el resultado por su salida estndar. Adems de esto se puede redireccionar esta salida al comando less:
[martin@maq martin]# du -s /usr/share/man/* | sort -n | less

Con esto logramos visualizar ms cmodamente el resultado

Para ms alternativas de redireccin que ofrece el shell bash remitirse a su man page.

3.1.3. Variables de entorno


Hay tres formas estndar de comunicarse con los procesos. La primera es por su entrada estndar (como ya hemos visto). La segunda es por medio de variables de entorno. La tercera es medio de seales. Ahora explicaremos la segunda de ellas. Las variables de entorno son variables que existen en el entorno bash que tienen valores asignados. Los procesos hijos del entorno (o sea los programas que ejecutamos) pueden leerlas y tomar distintas decisiones a partir de las mismas; por lo general sirven para congurar programas. El comando set sirve para ver las variables con sus valores. Tarea 3.6 Ver variables de entorno Ejecutemos el comando set para ver los valores de dichas variables:
[martin@maq martin]# set BASH=/bin/bash BASH_ENV=/home/damian/.bashrc BASH_VERSION=$2.05.8(1)-release COLORS=/etc/DIR_COLORS COLORTERM= COLUMNS=80 DIRSTACK=() EUID=500 GROUPS=() HISTFILE=/home/damian/.bash_history HISTFILESIZE=1000 HISTSIZE=1000

set

31

HOME=/home/damian HOSTNAME=maq2 HOSTTYPE=i386 INPUTRC=/etc/inputrc PATH=/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/damian/bin [martin@maq martin]# _

Se pueden ver los nombres de las variables (lado izquierdo del =) y su valor (lado derecho del =). Observemos que aqu hay informacin de, por ejemplo, cual es el nombre de la mquina (variable HOSTNAME) y cual es el camino de los programa que podemos ejecutar (variable PATH). En la misma no est el path ./ por lo que si queremos ejecutar algn programa que no este en el path, tendr que ser. Esto es congurado as por razones de seguridad.

export

Para crear variables de entorno nuevas o cambiar su valor se utiliza el comando export. Su sintaxis es:
export <nombre de la variable>= <valor>

Tarea 3.7 Creacin de variables de entorno Ejecutemos el comando:


[martin@maq martin]# export MIVARIABLE=hola [martin@maq martin]# _

Con esto habremos creado (o modicado si ya exista) la variable MIVARIABLE con el valor hola. Comprobar que efectivamente fue creada la variable. Ayuda: Usar tambin el comando grep.

3.1.4. Envo de seales a procesos


Una forma interactiva para comunicarse con los procesos (a deferencia de la variables de entorno) son las seales. Todos los procesos reciben estas seales por medio de interrupciones en su ejecucin. Los procesos las reciben y cambian su comportamiento. Por ejemplo a partir de seales se pueden interrumpir o suspender las ejecuciones de los procesos. Este es un mecanismo de Unix pero la forma de activarlas depende por lo general del shell que estamos usando. Para poder monitorizar los procesos abramos otra consola y ejecutemos el comando top. Tarea 3.8 Comando top Para poder ver solo los procesos que nos interesan, ejecutemos el comando el argumento -i:
[martin@maq martin]# top -i

top

Este parmetro hace que solo se muestren los procesos que consumen CPU.

32

3:29am up 1 day, 9:08, 2 users, load average: 0,02, 0,03, 0,04 55 processes: 54 sleeping, 1 running, 0 zombie, 0 stopped CPU states: 1,3% user, 1,3% system, 0,0% nice, 97,2% idle Mem: 126352K av, 98920K used, 27432K free, 0K shrd, 3552K buff Swap: 354768K av, 48084K used, 306684K free 47556K cached PID USER 12876 martin PRI 12 NI 0 SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 1040 1040 828 R 0,1 0,8 0:00 top

Aqu se puede ver que el nico proceso que est consumiendo CPU es el mismo top.

Una de las formas de enviar seales a procesos es por medio de teclas especiales. Tarea 3.9 Terminar un proceso Para terminar un proceso se le enva una seal con la combinacin de teclas [CTRL]-[c]. Ejecutemos el comando yes:
[martin@maq martin]# yes y y y y y

Lo nico que hace este comando es escribir sucesivas y por su salida estndar. Para terminar el procesos enviemos la seal oprimiendo las teclas [CTRL]-[c]. Ahora ejecutemos el comando pero redireccionando su salida al dispositivo especial /dev/null. Este dispositivo virtual funciona como un resumidero de datos; todo lo que se enva al mismo desaparece. Lo utilizaremos para no saturar la pantalla con caracteres:
[martin@maq martin]# yes > /dev/null _

Veamos en la otra consola con el comando top que efectivamente este proceso est corriendo. Ahora oprimamos [CTRL]-[c] para que se detenga.

33

Los procesos en Unix tambin pueden estar corriendo en background. Esto es, sin bloquear la consola1 , permitindonos ejecutar otros comandos. Una de las formas de hacerlo es agregando el carcter & al nal de la lnea de comando. Tarea 3.10 Ejecutando un proceso en background Corramos en background el comando anterior:
[martin@maq martin]# yes > /dev/null & [1] 13367 [martin@maq martin]# _

Observemos los dos nmeros que aparecen en pantalla despus de ejecutar la accin. El primero se llama nmero de trabajo, el segundo es el identicador de proceso (PID). Ms adelante este ltimo en ms detalle. Con esto el programa sigue corriendo. Volvamos a la consola con el proceso top para vericarlo.

fg

Para volver a este proceso (ponerlo en foreground)se usa el comando fg. Este comando toma como argumento el nmero de trabajo del proceso que pusimos en background. Tarea 3.11 Poniendo un proceso en foreground Con el proceso yes todava corriendo, ejecutemos:
[martin@maq martin]# fg 1 yes >/dev/null _

Ahora terminemos el proceso con las teclas [CTRL]-[c].

Tambin podemos indicarle a un proceso que se detenga a travs de una nueva seal. Para hacerlo hay que oprimir las teclas [CTRL]-[z]. Tarea 3.12 Deteniendo un proceso Ejecutemos otra vez el proceso yes:
[martin@maq martin]# yes > /dev/null _

Veamos en la otra consola con el proceso top si el mismo se est ejecutando. Detengamos el proceso yes con las teclas [CTRL]-[z]:
1 En

DOS se suelen llamar programas residentes o TSR.

34

[martin@maq martin]# yes > /dev/null [1]+ Stopped [martin@maq martin]# _ yes >/dev/null

El primer nmero que aparece en la consola es otra vez el nmero de trabajo. Veamos en la consola con el proceso top que yes no consume ms CPU.

bg

A un proceso detenido (como con el que acabamos de hacer) se lo puede despertar ponindolo en background. Para ello se usa el comando bg. Tambin lleva como argumento el nmero de trabajo del proceso que deseamos despertar. Tarea 3.13 Despertando un proceso Ejecutemos en la consola:
[martin@maq martin]# bg 1 [1]+ yes >/dev/null & [martin@maq martin]# _

Veamos que efectivamente el proceso est corriendo (con el proceso top de la otra consola). Si queremos ponerlo en foreground ejecutemos el comando fg con el nmero de trabajo como argumento:
[martin@maq martin]# fg 1 yes >/dev/null _

Ahora oprimamos las teclas [CTRL]-[c] para terminarlo.

kill

Otra forma de enviar seales es con el comando kill. Esto es utilizado cuando no tenemos acceso por consola para enviarle seales, por ejemplo cuando queremos detener demonios. Su sintaxis es:
kill [- <seal>] <identicador de proceso>

ps

El parmetro de seal es optativo; por defecto enva la seal para terminar la ejecucin. La lista de seales posibles se puede ver ejecutando el comando con el argumento -l nicamente (probar ejecutarlo). Tambin se pueden escribir en formato numrico (ver archivo /usr/include/asm/signal.h. Para conocer el identicador de proceso se puede utilizar el comando ps (el comando top tambin sirve). El mismo tiene muchos argumentos posibles. Para ver los identicadores de todos los procesos se utiliza el parmetro -x. Tarea 3.14 Comando kill Probemos enviar seales con el comando kill. Para ello ejecutemos otra vez el comando yes: 35

[martin@maq martin]# yes > /dev/null & [1] 13416 [martin@maq martin]# _

Probemos ver el identicador de proceso:


[martin@maq martin]# ps -x | grep yes 13416 pts/5 R 0:09 yes [martin@maq martin]# _

El primer nmero que aparece es el que estamos buscando. Ejecutemos ahora el comando kill con este nmero:
[martin@maq martin]# kill 13416 [martin@maq martin]# _

Ejecutemos otra vez el comando ps para ver si realmente naliz la tarea.

Nota Hay procesos que no atienden las seales de terminacin normales (SIGTERM). Si tratamos de terminar uno de estos procesos con el comando kill sin indicarle la seal, no los vamos a lograr. Para poder hacerlo hay que indicarle la seal -9 (SIGKILL). Nota Los procesos tienen como atributo el usuario que los lanz (ya lo veremos con profundidad). Si queremos terminar un proceso de otro usuario, no lo vamos a poder hacer. nicamente el usuario dueo del proceso (quien lo ejecut) y el root pueden concluirlos.

3.1.5. Archivo de conguracin del bash


Al comenzar un sesin con el shell este ejecuta los camandos que se encuentran en el el archivo .bashrc. En este archivo se pueden crear variables de entorno para congurar las sesiones (ver la man page del bash) o ejecutar algn comando al comenzarla. Tarea 3.15 Mostrar uso de espacio en disco Es bastante til recordar la cantidad de espacio en disco que estamos utilizando y ver si no nos hemos excedido de la quota. Hacer que al ingresar a la sesin se nos muestre este espacio (ver comando aprendido en seccin 2.6 (pg. 25)).

36

3.2. Usuarios y Grupos


Como ya mencionamos Linux es un sistema multiusuario y multitarea. Esto implica la implementacin un esquema de proteccin para que los recursos se compartan de forma armnica. El esquema de Unix es muy simple y se basa en la existencia de dos entidades: usuarios y grupos. Los usuarios son las entidades que representan los sujetos del sistema. Los mismos son los consumidores de recursos. A su vez los usuarios pueden pertenecer a diferentes grupos. Estos pueden ser pensados como conjuntos de usuarios, los cuales no son necesariamente disjuntos. En la gura 3.1 (pg. 37) se puede ver un esquema de los mismos. Una
grupo 1

usuario 1

grupo 2

grupo 3

usuario 3 usuario 2 usuario 4

Figura 3.1: Grupos y usuarios regla es que no pueden existir usuarios que no pertenezcan a ningn grupo. De esta forma todos los usuarios tienen su grupo primario. Este es un grupo distinguido para cada usuario. Los recursos tienen informacin sobre que usuarios y que grupos pueden utilizarlos y de que manera hacerlo. Por ejemplo, cada archivo y directorio del sistema de archivos, tiene un usuario y un grupo al cual pertenecen. Las personas reales que utilizan el sistema utilizan los recursos a travs de procesos que ellos ejecutan. Cada persona, cuando entra al sistema, se autentica como un usuario (a travs del password) y ejecuta programas que utilizan recursos. Es por ello que cada proceso tiene informacin del usuario que los ejecut. Adems tiene informacin del grupo primario (si no se especica otra cosa) de este usuario. De esta forma cada proceso tiene, por lo menos 3 atributos2 : Identicador de proceso (PID). Esto ya lo vimos. Identicador del usuario (UID). Identicador del grupo (GID). Todos estos atributos son nmeros. Para poder ser ledos ms fcilmente por humanos, los UIDs y GIDs tienen asociados nombres. El nombre de nuestro UID es el que usamos cuando entramos al sistema. El
2 En

realidad existen dos UIDs: el real y el efectivo. Lo mismo ocurre con el GID.

37

sistema operativo se rige por los nmeros, no por el nombre (podramos tener dos nombres de usuarios distintos asignados al mismo nmero). La denicin de estos usuarios y grupos est en archivos de texto, los archivos /etc/passwd y /etc/group. Tarea 3.16 Veamos los archivos passwd y group Hagamos en consola:
[martin@maq martin]# cat /etc/passwd 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: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/var/spool/news: uucp:x:10:14:uucp:/var/spool/uucp: operator:x:11:0:operator:/root: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:FTP User:/var/ftp: nobody:x:99:99:Nobody:/: martin:x:500:501:Usuario de prueba:/home/martin:/bin/bash [martin@maq martin]# _

Este archivo consta de de una serie de campos por lnea, separados por el carcter :. En cada lnea, el primer campo es el nombre del usuario. El segundo sera su clave encriptada si no usramos shadow password (ya veremos que es eso). El tercero es el UID. El cuarto es nmero del grupo primario del usuario. Hacer: Que son los otros campos? Ahora veamos el archivo /etc/group:
[martin@maq martin]# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: disk:x:6:root lp:x:7:daemon,lp mem:x:8: kmem:x:9: wheel:x:10:root mail:x:12:mail news:x:13:news uucp:x:14:uucp man:x:15:

38

games:x:20: gopher:x:30: dip:x:40: ftp:x:50: nobody:x:99: martin:x:501:

Este archivo tiene la misma separacin de campos que el anterior. El primero es el nombre del grupo, el tercero el nmero del grupo que tiene ese nombre, y el cuarto es la lista de usuarios que pertenecen a ese grupo. En esta lista no hace falta que gure el usuario si este es su grupo primario. En este ejemplo el usuario bin pertenece a los grupos bin, daemon y sys. La ltima lnea no se reere al usuario martin si no a un grupo que tiene el mismo nombre que el usuario. Notar que es el grupo primario del mismo. Hacer: Buscar informacin acerca del signicado del segundo campo.

Por convencin, los UIDs y GIDs menores que 500 (esto puede no ser as) no representan a usuarios reales y se suelen utilizar para congurar las polticas de seguridad de los demonios. Se suelen llamar cuentas del sistema. Puede suceder que el grupo primario de los usuarios sea el mismo para todos ellos. En algunos sistemas hay un grupo llamado users al cual pertenecen todos los usuarios comunes (mayores que 499). Red Hat y otros sistemas utilizan como poltica de creacin de usuarios que cada uno tenga un grupo primario propio, con el mismo nombre que el usuario. Este esquema se denomina User Private Groups (UPG) y tiene algunas ventajas. Tarea: Leer la seccin User Private Group del captulo 2 de Red Hat Linux Reference Guide. En distribuciones ms nuevas viene un sistema de autenticacin llamado shadow password. La principal caracterstica es que las claves de los usuarios no son guardadas en los archivos /etc/passwd y /etc/group. En vez de ello se almacenan en archivos ocultos a todos los usuarios, excepto el root, llamados /etc/shadow y /etc/gshadow. Esto tiene la ventaja que las claves no pueden ser accedidas por los usuarios comunes pero la informacin de los mismos (directorios /home por ejemplo) s lo pueden ser por aplicaciones que necesiten estos datos. Adems los nuevos archivos guardan informacin adicional. Hacer: Buscar informacin sobre la sintaxis de los archivos /etc/shadow y /etc/gshadow. Un comando que sirve para ver los grupos a los que pertenece un usuario es id. Este se ejecuta seguido del nombre del usuario del cual queremos obtener informacin.

id

3.3. Dueos y permisos de archivos


Como ya dijimos el esquema de usuarios de Unix sirve para regular el acceso a los recursos; los recursos tienen informacin sobre que usuarios y que grupos pueden utilizarlos y de que manera hacerlo. Vamos a ver como se implementa este esquema en el sistema de archivos.

3.3.1. Conceptos generales


Los archivos tienen, un usuario dueo y un grupo. El dueo y el grupo son generalmente el usuario que lo cre y el grupo primario de este usuario. 39

En cada archivo, su dueo, grupo y dems usuarios hay lo que se denominan permisos. Hay tres clases de ellos: permiso de lectura (read) signica que se puede leer el archivo. permiso de escritura (write) signica que se puede modicar o escribir el archivo. permiso de ejecucin (execute) signica que se puede correr el archivo si es un programa. Ya tenemos todos los componentes bsicos del sistema de proteccin del sistema de archivos. En la gura 3.2 (pg. 40) se muestra un programa ejecutable con permisos tpico. Esta salida fue generada con en comando ls -l.
Otros pueden leer y ejecutar El dueo puede leer, escribir y ejecutar

Grupo

rwx rx rx
Este es un archivo comn El grupo puede leer y ejecutar

2 pepe users
Dueo

12423 Nov 9

09:32 mi_ejec

Figura 3.2: Mostrando dueos y permisos

En esta gura, la serie de caracteres - rwx r-x r-x nos indica los permisos de estos archivos. El primer carcter es un guin, el cual indica que se trata de un archivo comn. Este carcter puede ser d si es un directorio, l si es un enlace simblico, c si es un dispositivo de carcter (ver subseccin B.3.4 (pg. 58) o b si es un dispositivo de bloque. Los caracteres, de aqu en adelante, se reeren a permisos y se representan internamente por bits. Los primeros tres bits (caracteres en la salida del programa ls) se aplican al dueo. Aqu el usuario martin tiene todos los permisos. Los siguientes tres bits se aplican a los miembros del grupo: ellos pueden leer el archivo y ejecutarlo, pero no pueden escribirlo ya que el carcter que contendra una w contiene un guin. Los ltimos tres bits se aplican a los dems usuarios que no son el dueo ni el grupo. Estos tienen los mismos permisos que en el caso del grupo. Existe otro grupo de 3 bits adicionales (no se muestran separados con el comando ls) que sirven para indicar caractersticas adicionales (setuid,setgid y sticky bit). Mas adelante veremos de que se trata esto. Nota Las entidades dueo, grupo y otros se las suele denominar niveles de proteccin. El signicado de los permisos cambia si el archivo es un directorio. En este caso los permisos signican: r permite que se pueda listar el contenido del directorio. w permite crear una nueva entrada en el directorio (un archivo o un subdirectorio) o borrar una existente. x permite que se pueda listar la informacin del directorio. No hay mucha diferencia con el permiso r. Se suele denominar permiso de paso ya que permite atravesar un directorio hacia sus subdirectorios. Se suele aplicar junto con el permiso r (los dos o ninguno). 40

Recordemos que el usuario root puede hacer cualquier cosa. As aunque por ejemplo puede borrar o crear archivos en los directorios personales, aunque no tenga permisos explcitamente. Cada permiso puede representarse con valores numricos: r=4 w=2 x=1 -=0 Cuando estos valores son sumados, el total puede ser usado para manipular los permisos. Por ejemplo para el archivo mi_eject de la gura anterior, tenemos los permisos en forma numrica: (rwx) | 4+2+1 (r-x) | 4+0+1 (r-x) | 4+0+1

El total para el dueo es siete, el total para el grupo es cinco y para los dems usuarios es cinco. Los permisos entonces pueden ser ledos como 755. A continuacin se muestra una lista de permisos comnmente usados: -rw------- (600) Solo el dueo y el root tienen permiso de lectura y escritura. -rw-r--r-- (644) Solo el dueo y el root tienen permiso de lectura y escritura. El grupo y otros solo puede leer. -rwx------ (700) Solo el dueo y el root pueden leer, escribir y ejecutar el archivo. -rwxr-xr-x (755) El dueo y el root pueden leer escribir y ejecutar el archivo. El grupo y los otros solo pueden leerlo y ejecutarlo. -rwx--x--x (711) El dueo y el root pueden leer escribir y ejecutar el archivo. El grupo y los otros solo pueden ejecutarlo. Esto quiere decir que por ejemplo no pueden copiarlo (con el comando cp). -rw-rw-rw- (666) Todos pueden leerlo y escribirlo (hay que tener cuidado con estos permisos. -lrwxrwxrwx (777) Todos pueden leerlo escribirlo y ejecutarlo (de nuevo, estos permisos pueden ser peligrosos). A continuacin veremos permisos comnmente usados para directorios: drwx------ (700) Solo el dueo y el root pueden listar el contenido del directorio, crear nuevos elementos o borrarlos. drwxr-xr-x (755) Cualquiera puede ver el listado de archivos de este directorio, pero solo el dueo y el root pueden crear nuevos elementos o borrarlos. Nota Cabe mencionar que en los dos ltimos ejemplos con directorios, ningn usuario distinto de root va poder borrar un archivo dentro del mismo, aunque el archivo le pertenezca. En el ltimo ejemplo, si el usuario es dueo, lo va poder modicar (pero no borrar). En el primero no porque ni va a poder entrar al directorio. Si tuviera permiso de paso si lo podra hacer.

41

3.3.2. Cambiando dueos, grupos y permisos


chown chgrp

El comando chown sirve para cambiar el dueo de un archivo y chgrp sirve para cambiar el grupo. Solo el usuario root puede ejecutar chown. La sintaxis de estos comandos es muy simple. Por ejemplo, para cambiar el dueo y el grupo a bin de un programa llamado mi_prog se utilizaran los comandos:
[root@maq root]# chown bin mi_prog [root@maq root]# chgrp bin mi_prog [root@maq root]# _

chmod

Estos comandos permiten el argumento -R para cambiar recursivamente todo un directorio. La sintaxis para cambiar permisos es ms complicada. Los permisos son usualmente llamados modos de archivo y el comando para cambiarlos es chmod. Tarea 3.17 Comando chmod

touch

Exploremos este comando. Antes, creemos un archivo llamado mi_prog con el comando touch. Este comando sirve, entre otras cosas, para crear archivos vacos. en nuestro caso lo vamos a usar para tener un archivo de prueba. Ejecutemos entonces el comando:
[martin@maq martin]# touch mi_prog [martin@maq martin]# _

Con ls veamos si fue creado y que permisos tiene.


[martin@maq martin]# ls -l mi_prog -rw-rw-r-1 martin martin [martin@maq martin]# _ 0 feb 2 22:47 mi_prog

Supongamos que este archivo es un programa (actualmente es un programa vaco) y queremos que tenga permiso de ejecucin:
[martin@maq martin]# chmod +x mi_prog [martin@maq martin]# _

El signo + signica agregar permisos, y la x indica que permiso agregar. Ejecutemos ls para ver como cambiaron los permisos. Usado de esta forma, el comando asigna permisos a todos los niveles de proteccin (dueo, grupos y otros). Si queremos sacar el permiso usemos el signo - en el lugar del +:
[martin@maq martin]# chmod -x mi_prog [martin@maq martin]# _

Supongamos que no queremos que cualquiera pueda usar nuestro programa. Podemos asignarle solo permiso de ejecucin para el dueo solamente con el comando (ejecutarlo):
[martin@maq martin]# chmod u+x mi_prog [martin@maq martin]# _

42

Veamos con ls que sucedi. Todo lo que va antes del signo + son los nivel de proteccin (dueo, grupo o otros) y lo que va despus son los tipos de permisos. Los permisos del dueo se designan se designan con u, los del grupo con g y los de los otros con o. Entonces para asignarle permisos al grupo y a nosotros mismos ejecutemos:
[martin@maq martin]# chmod gu+x mi_prog [martin@maq martin]# _

Mltiples permisos tambin pueden ser asignados:


[martin@maq martin]# chmod gu+rwx mi_prog [martin@maq martin]# _

La man page del comando es muy completa y guran otras formas abreviadas para el comando. Una opcin muy utilizada por administradores es el argumento -R. Tiene el mismo efecto que para los comandos chown y chgrp, cambiar recursivamente los permisos de todos los archivos en un directorio.

Existen otros permisos para archivos y directorios que no son muy usados pero pueden ser muy importantes en la tarea de administracin. Ellos son: setuid Este permiso se aplica a archivos ejecutables. Si un programa lo tiene activado cualquier persona que tenga permiso para hacerlo, levantar el proceso correspondiente con el UID del dueo del programa. Este tipo de permisos es muy peligroso en el caso que el dueo sea el root. La sintaxis del comando chmod para activarlo es:
chmod u+s <nombre del programa>

setgid Idntico que el anterior pero cambia el GID del proceso activado. La sintaxis del comando chmod para activarlo es:
chmod g+s <nombre del programa>

Tambin se utiliza para directorios. En este caso si un proceso se ejecuta dentro del directorio cambiar su GID al grupo del mismo. Para que esto funcione el usuario que ejecuta el proceso debe pertenecer al grupo. sticky bit Funciona solo para directorios. Este permiso hace que todos los archivos del directorio puedan ser borrados solo por el dueo, el usuario root o el dueo del directorio. Se usa generalmente en directorios utilizados por todos los usuarios como el /tmp. La sintaxis del comando chmod para activarlo es:
chmod o+t <nombre del directorio>

3.4. Instalando programas


Se podra pensar que para instalar un programa solo hay que conseguirlo y copiarlo en un directorio accesible. Esto, por lo general, no funciona por diferentes razones. Una es que usualmente los mismos vienen con archivos de conguracin que deben estar en posiciones preestablecidas dentro del le system.

43

Uno debe conocer de antemano cuales son estas ubicaciones y copiar estos archivos a las mismas. Otra razn es que los programas en Linux suelen hacer uso de libreras. Por lo tanto si queremos que el programa funcione deberemos tener instaladas las libreras que utiliza. Adems las libreras tienen diferentes versiones que deben concordar con la que el programa necesita. Existen muchas soluciones a estos problemas. La ms clsica es distribuir los programas y archivos de conguracin en archivos que guardan la informacin de su ubicacin, por lo general comprimidos. Adems suelen venir compilados de forma que el cdigo de libreras ya vienen dentro del ejecutable (son compilados de forma esttica). Esto ltimo hace que se incremente el tamao de los programas Otra posibilidad, aprovechando que el software es libre, es distribuir los archivos fuentes. Al compilarlos pueden ser congurados para que utilicen las libreras que tengamos instaladas. Otra forma es distribuir versiones ya compiladas en forma de paquetes para cada distribucin en particular. Los programas en Linux se instalan de diferente forma segn la distribucin que tengamos y las mismas ofrecen una serie de aplicaciones para instalarlos u mantenerlos.

3.4.1. Archivos TAR y GZIP


Como ya dijimos, los programas suelen distribuirse en archivos que guardan la informacin de su ubicacin. Estos se suelen denominar archivos TAR y por lo general tienen extensin .tar. Se utilizan tambin para hacer copias de resguardo (backups) del sistema. Adems guardan informacin sobre los permisos de los archivos que contienen. El comando que se utiliza para crear y extraer su informacin es tar. Este comando tiene una sintaxis bastante compleja. Vamos a ver algunas de las opciones ms comunes. Para extraer los archivos en el directorio que ejecutamos el comando, la sintaxis del mismo es:
tar cvf <nombre de archivo tar>

tar

Si queremos archivar un directorio con todo lo que el contiene, la sintaxis del comando es:
gzip tar xvf <nombre de archivo tar a crear> <directorio a archivar>

Para comprimir o descomprimir archivos se utiliza el comando gzip. Si queremos comprimir un archivo, la sintaxis del comando es:
gzip <nombre de archivo a comprimir>

Al comprimir un archivo, el comando borra el archivo original y crea uno comprimido con el mismo nombre que el anterior pero agregando la extensin .gz. Para descomprimir un archivo la sintaxis del comando es:
gzip -d <nombre de archivo comprimido>

Al descomprimir un archivo, si el mismo tiene extensin .gz, el comando borra el archivo original y crea uno descomprimido con el mismo nombre que el anterior pero borrando dicha extensin. El algoritmo de compresin de este comando permite detectar errores en los archivos comprimidos. Para hacerlo la sintaxis es:
bzip2 gzip -tv <nombre de archivo comprimido>

Otro comando que se suele utilizar para comprimir archivos es bzip2. El mismo utiliza un algoritmo de compresin mejor pero su complejidad (utilizacin de CPU) es mayor. Como ya dijimos los programas suelen distribuirse archivados con tar y comprimidos con gzip. Por lo general su extensin es .tar.gz o .tgz. Por ende para instalarlos deberemos primero descomprimirlos y despus extraer los archivos. Si el programa es binario, deberemos copiar los archivos. Por lo general dentro del archivo tar hay un archivo llamado README o INSTALL que indica como hacer esto. Si tenemos los fuentes de los programas, los archivos que nos pueden ayudar tienen por lo general el mismo nombre. 44

3.4.2. Archivos en formato RPM


En algunas distribuciones (Red Hat, Mandrake, Suse) se distribuyen los programas en formato RPM. Estos archivos tienen como prejo el nombre del programa, seguido por la versin. Los mismos pueden contener los programas ya compilados (extensin .rpm) o los fuentes (extensin .src.rpm). En este ltimo caso se archiva adems la informacin necesaria para crear el paquete ya compilado (el .rpm). Para administrar estos paquetes se utiliza el comando rpm. Si queremos instalar o reinstalar una versin ms nueva del programa la sintaxis del comando es:
rpm -Uvh <nombre de archivo RPM>

rpm

Los paquetes RPM pueden depender de otros paquetes, lo que signica que requieren que otro paquete est instalado con anterioridad para poder correr debidamente. Si tratamos de instalar un paquete cuyas dependencias no estn resueltas, el comando emitir un mensaje de error. Estas dependencias no resueltas por lo general son debidas a que faltan instalar paquetes con libreras compartidas. Si queremos desinstalar un programa la sintaxis es:
rpm -e <nombre del programa>

donde el nombre del programa es el prejo del archivo RPM que utilizamos al instalarlo. Si queremos ver una descripcin del paquete mas el listado de archivos que contiene la sintaxis del comando es:
rpm -qilp <nombre de archivo RPM>

Si queremos ejecutar la misma operacin, pero sobre un paquete ya instalado la sintaxis es:
rpm -qilp <nombre del programa>

donde el nombre del programa es el prejo del archivo RPM que utilizamos al instalarlo. El formato RPM permite detectar errores en los paquetes. Para chequear si el archivo RPM tiene errores, la sintaxis del comando es:
rpm --checksig --nopgp --nogpg <nombre de archivo RPM>

3.5. Organizacin de directorios FHS


Como hemos podido ver, algunos directorios en Linux guardan informacin especca. Existe una convencin sobre en que forma los directorios llamada FHS (Filesystem Hierarchy Standard) a la cual adhieren, ms o menos elmente, casi todas las distribuciones. Este estndar se encuentra publicado en http://www.pathname.com/fhs. El mismo puede resumirse como sigue: /dev archivos que representan los dispositivos /etc archivos de conguracin. Puede tener subdirectorios. (ej X11) que contienen a los archivos. de conguracin. referentes al X /boot esta el kernel y otros archivos para bootear. /usr/bin Contiene ejecutables para usuarios. /usr/sbin Contiene ejecutables para root. /usr/X11R6 Archivos para que se ejecute el X.

45

/usr/share Archivos que no dependen de la arquitectura. /usr/local Archivos que no se instalan como paquetes (tgz). /usr/lib Libreras. /sbin Ejecutables del root para el arranque. /lib Contiene libreras compartidas para los programas que estn en /sbin y /bin. Tiene un subdirectorio que contiene los mdulos del kernel. /var Archivos de administracin que escriben los demonios (logs, spooler de impresin, ftp en distribuciones nuevas). /var/log Archivos de logs. /proc Contiene archivos especiales que sirve de comunicacin con el kernel. /mnt donde se montan los sistemas de archivos de medios removibles.

46

Apndice A

Breve historia de la computacin


(el porque de los S.O., la administracin y el Software Libre)

A.1.

Sus inicios

La computacin nace a principios de siglo como un intento de resolver el problema fundacional de la matemtica (aunque usted no lo crea). Resumiendo bastante, en 1905 el matemtico alemn David Hilbert propone como proyecto para el progreso matemtico futuro (en esa poca hubo una crisis en esta ciencia como en muchas otras) encontrar una fundacin rme de toda la matemtica probando su consistencia; propone efectuar un cambio metodolgico tal que a partir de axiomas se pueda probar la verdad o falsedad de cualquier problema matemtico aplicando una serie nita de pasos lgicos (o sea de manera simblica). Esta pretensiosa labor permitira hipotticamente tener una mquina (computadora) que resolviera cualquier problema matemtico, en particular que pudiera demostrar cualquier teorema. En 1931 el matemtico austraco Kurt Gdel demuestra que esta tarea es imposible a partir de su teorema de incompletitud: dado cualquier conjunto de axiomas para una teora consistente que incluya la aritmtica se pueden formular proposiciones matemticas de las cuales no puede probarse su verdad o falsedad (proposiciones indecidibles). En 1936 el matemtico ingls Alan Mathison Turing, motivado por los trabajos de Gdel, trabaja en encontrar un mtodo algortmico que determine cuando una proposicin es indecidible y as poder desecharla de las matemticas. Prueba que no puede existir tal algoritmo, por lo tanto la matemtica siempre tiene estas proposiciones. Con esta prueba se derrumba totalmente el proyecto de Hilbert. Para hacer su prueba desarrolla un modelo matemtico de una computadora que ejecuta algoritmos llamado mquina de Turing. Este dispositivo imaginario posea las propiedades fundamentales de las computadoras modernas: un programa, un lugar para almacenar los datos y un modo de aplicar paso a paso operaciones matemticas. Turing sigue trabajando en el ao 1938 pero en una actividad totalmente prctica: a principios de la segunda guerra mundial se une al proyecto de descifrar cdigos de guerra alemn, generados por un dispositivo llamado Enigma. Para este proyecto se decide construir una computadora de propsito especco1 . Con el xito del proyecto se demuestra la utilidad prctica del desarrollo en computacin, ya que hasta ese momento los conocimientos de esta ciencia no eran ms que resultados matemticos sin aplicacin directa.
1 Al terminar la guerra Turing es declarado hroe nacional y comienza a trabajar en la construccin de la Automatic Computing Engine (ACE). En 1952 muere. Aparentemente comete suicidio por el tratamiento mdico que fue forzado a tomar en prisin como cura a su homosexualidad.

47

En la dcada del 40, se comienzan a construir varias computadoras con el principal n de probar distintos diseos tecnolgicos. En el ao 1942 el matemtico hngaro John von Newmann escribe un paper proponiendo un diseo de computadoras con almacenamiento binario de los programas en dispositivos de memoria y una unidad de procesamiento de operaciones aritmticas y lgicas (CPU), basado en la mquina de Turing. Este diseo es el que se emplea hasta nuestros das.

A.2.

Surge la computacin con nes comerciales

En la dcada del 50 se comienzan a construir computadoras con nes comerciales. En 1952, en base a los diseos de von Newmann, se construye la primera orientada a estos nes, la Mark I. El uso de estas mquinas era muy costoso y se cobraba por tiempo de utilizacin. Eran manejadas por un operario que reciba los programas (en tarjetas) y los introduca uno por uno. Esta persona fue el primer administrador de sistemas y haca las veces de sistema operativo; si un programa se detena (quizs por un error en el cdigo) deba apagar la computadora e introducir el prximo, con lo que se perda dinero por el desperdicio de tiempo de uso. Esto muestra la aparicin del problema de los errores en los programas (los cuales fueron llamados bugs): si bien la computacin ya haba resuelto el problema tecnolgico de construir computadoras (desarrollo tecnolgico impulsado por benecios econmicos), todava no era una disciplina lo sucientemente madura como para resolver el problema de los bugs en los programas. Cabe mencionar que en este momento los programas resolvan generalmente problemas matemticos bien denidos y de pequea escala por lo que los errores en la programacin no eran demasiados. De todas formas se comienza a vislumbrar como la computacin se transforma en una disciplina cuyo desarrollo es guiado muy fuertemente por intereses comerciales y econmicos en contraste con otras ciencias como la matemtica y la fsica. Adems del problema de los bugs, las computadoras comenzaron a alquilarse pero sin los perifricos. De esta forma quienes las rentaban deban tener perifricos compatibles. Los dos problemas fueron encarados introduciendo la idea de monitor. Este antecesor del sistema operativo era almacenado en tarjetas que se introducan previamente a los programas, las cuales contenan los drivers para los perifricos y brindaban funciones que podan ser llamadas por los programas cuando haba errores. Estas llamadas se las denominaba traps, antecesores de las systems calls.

A.3.

Multitarea y multiusuario

En la dcada del 60, los problemas que resuelven los programas cambian. Como ya se mencion, en la dcada anterior eran generalmente problemas matemticos y de pequea escala. En esta dcada aparecen con ms frecuencia problemas de ndole contable y administrativo donde se necesitaban manipular una gran masa de datos. Esto hace que los programas utilicen una mayor parte de su tiempo en operaciones de entrada-salida con el consiguiente desperdicio de tiempo de CPU (donde se realizan las operaciones aritmticas y lgicas) y de dinero. Es as que se desarrolla la idea de multitarea: se puede tener varios programas corriendo al mismo tiempo en una mquina y cuando alguno hace una operacin de entradasalida se ejecutan instrucciones de CPU de otro proceso. El concepto de multitarea gener la idea relacionada de multiusuario: aprovechando que se pueden tener varios procesos a la vez (multitarea) se podran disear computadoras con varias terminales donde cada usuario podra hacer uso de la misma. Las ideas de multitarea y multiusuario generaron nuevos problemas. Surge la necesidad de implementar sistemas con mecanismos de proteccin para que los distintos procesos de los distintos usuarios accedan de manera armnica a los recursos compartidos de la computadora (CPU, memoria y acceso a dispositivos). Con el n de resolver estos problemas se hizo necesario implementar sistemas operativos ms robustos y

48

que brindaran mtodos para poner en funcionamiento distintas polticas de administracin de los recursos2 . Surge con esto la necesidad de que un grupo de personas se encarguen de la tarea de instrumentar estos mtodos: los administradores de sistemas. Debido a su gran tamao y complejidad, los sistemas operativos presentan problemas en su implementacin generalmente en la forma de bugs. Es as que surgen, nuevamente, ideas del sector cientco para resolver dichos problemas. Uno de los primeros trabajos serios de investigacin en el rea del desarrollo de sistemas operativos fue el de Edsger Wybe Dijkstra, fsico holands considerado uno de los fundadores de la Ciencia de la Computacin. En 1968 desarrolla el sistema operativo T.H.E. el cual estaba implementado con una arquitectura en capas: el sistema operativo es una representacin del hardware real (abstraccin del hardware real) y est organizado en capas de software independientes con funcionalidades bien denidas, pretendiendo minimizar la informacin que comparten las mismas. Este esquema lgico de sistema operativo se utiliza hasta nuestros das.

A.4.

Surge Unix

En 1970, Ken Thompson, trabajaba programando simulaciones del sistema solar en una computadora con Multics. Harto del costo y de las dicultades que le provocaba trabajar con este sistema operativo decide trasladar sus programas a una computadora menos costosa. Para ella construye el sistema operativo UNIX junto con Dennis M. Ritchie y Brian W. Kernighan. Este sistema introduce como innovaciones la representacin de dispositivos con archivos (basado en las ideas de abstraccin de Dijkstra), interface con el usuario por medio de un shell y la escritura del cdigo del sistema en un lenguaje de alto nivel (lenguaje C) lo que permita poder ser portado a distintas computadoras con muy poco esfuerzo (todas estas caractersticas las posee Linux). En la dcada del 70 comienza la denominada Crisis del Software [Gib94] cuyos efectos mas catastrcos se vern ms adelante (dcada del 80 hasta nuestros das). En el ao 1976 Dijkstra publica A discipline of programming[Dij76]. Este libro ser el basamento de la mayor parte de las investigaciones futuras en programacin3. Desde los 80 en adelante la evolucin en computacin es guiada mayormente por intereses econmicos, aumentando la brecha entre los desarrollos comerciales y cientcos. Cuatro hechos marcan la historia de la computacin en esta dcada: el agravamiento de la Crisis del Software [Gib94] el surgimiento de Internet, la aparicin de las computadoras personales (PC) y el comienzo del Software Libre. El fenmeno de la Crisis del Software y el surgimiento del Software Libre estn relacionados fuertemente entre s.

A.5.

Crisis del Software

A partir de esta brecha entre sector econmico y cientco se van produciendo una serie de proyectos fallidos dentro de la industria del software [Gib94]. A continuacin enumeraremos los ms catastrcos.

Aeropuerto de Denver
A principio de los 90 se construye este aeropuerto, el cual tiene un sistema informtico de ruteo de equipaje que consta de 4000 carros teledirigidos, 21 millas de vas para estos carros y 100 computadoras conectadas a 5000 ojos electrnicos, 400 lectores de cdigos de barras.
ejemplo de estos primeros grandes sistemas operativos fue Multics. en este ao comienza mediante un golpe de estado el proceso de reorganizacin nacional lo que explica el retraso en computacin que sufre la Argentina
3 Tambin 2 Un

49

La inauguracin del aeropuerto estaba prevista para noviembre del ao 1993. La misma se pospone para diciembre porque el sistema no funcionaba. En diciembre se traslada dicha inauguracin para marzo de 1994 y de marzo para mayo del mismo ao. En junio todava no se pudo inaugurar y se declara una prdida de 1,1 milln de dolares por da desde la primera pretendida inauguracin.

Proyecto AAS
La Administracin Federal de Aviacin (FAA) de los Estados Unidos decide reemplazar su sistema de control de trco areo con uno nuevo denominado Advanced Automation System (AAS). Este sistema crtico contena un milln de lneas de programa y estaba distribuido sobre muchos nodos, en aviones y estaciones de trabajo controladoras del trco. Su implementacin recae en la empresa IBM la cual estima un costo 5 veces superior al estimado. Ms tarde la empresa decide duplicar el costo debido a que fue necesario reescribir, en promedio, todas la lneas de cdigo. Adems los test que se hicieron sobre el software demostraron una gran cantidad de errores. Finalmente la FAA decide cancelar la mitad del proyecto (por 144 millones de dolares). La otra parte del proyecto sigue hasta nuestros das con un costo de 1.400 millones de dolares y con riesgo de ser cancelado.

Taxi espacial
Esta nave posee 5 computadoras redundantes para asegurar que no haya fallas. En 1981 el primer vuelo se pospone por dos das debido a que las 5 computadoras fallaron en ponerse de acuerdo debido a un bug. En 1985 se vuelve a postergar el lanzamiento por un da. En 1992 pierde un satlite (el Intelsat 6).

Caso Intel
En los aos 80 producen en masa el coprocesador matemtico 80387 con un bug en las operaciones de punto otante. En 1994 pasa lo mismo con el procesador Pentium por lo que tuvieron que reemplazar cientos de miles de chips ya vendidos.

Caso Microsoft
Gran empresa monoplica cuyo mayor inversin en dinero no es la tecnologa si no su departamento de asuntos legales. En la dcada del 80 desarrollan DOS, sistema operativo muy primitivo el cual representa un retraso en la evolucin de los mismos ya que no es ni multitarea ni multiusuario (ni pretende serlo). Copia mal algunas ideas de Unix en que presenta un shell muy bsico como interface al usuario. Al principio de la dcada del 90 desarrollan el Windows 3. Se calcula que el mismo tena miles de bugs. Como solucin utilizan a millones de usuarios como beta testers. Estos mismos usuarios luego tuvieron que pagar por una nueva versin hecha en base a su tiempo perdido. Ms adelante desarrollan Windows 95, NT, 98, 2000, Milenium, etc. Otra vez utilizan la misma estrategia de solucin a los miles de bugs. Vale la pena mencionar que esta estrategia ya haba sido refutada en el ao 1976 por Dijkstra quien argumenta que el testing slo puede hacer evidente la presencia de errores en la programacin, no su ausencia [Dij76]. Esto quiere decir que nunca se puede tener una razonable seguridad de que todos los errores hayan sido encontrados o de que alguna de las reparaciones de errores viejos no hayan introducido otros nuevos. Este ltimo fenmeno es conocido como efecto Hydra. Algunas caractersticas de estos sistemas operativos son: Una muy mala implementacin de la multitarea desde el momento que el sistema no logra imponer medidas de seguridad para que los procesos utilicen los recursos compartidos de manera armnica.

50

Esto produce que la mquina se clave (famosa pantalla azul) cuando los procesos pisan sus zonas de memoria privada o cuando uno de ellos no quiere liberar el control de la CPU [Al00][Cos98]. Uso de un sistema de archivos que se fragmentan progresivamente con el uso. Cabe mencionar que en los 70 ya exista la tecnologa para disear estos sistemas de forma tal que la fragmentacin se mantenga acotada y el nivel de la misma disminuya con el uso. Esta tecnologa es de conocimiento pblico, como lo muestra Linux que hace uso de la misma [Cos98]. Esto hace que los windows brinden la aplicacin defrag. El uso de la misma tiene el defecto (adems de varios bugs) que mientras est corriendo no se puede usar la computadora ya que si se hace, la aplicacin no avanza en su tarea de defragmentacin. El sistema operativo es vendido sin ninguna garanta ni soporte tcnico [Al00] [Cos98] . El punto 6 del contrato de licencia Microsoft dice expresamente: 6_SOPORTE TCNICO. El soporte tcnico para el PRODUCTO SOFTWARE no es proporcionado por Microsoft Corporation o sus subsidiarias. Para obtener soporte tcnico, remtase al nmero de soporte del Fabricante de PC suministrado en la documentacin para la computadora (ordenador). Si tiene dudas con respecto a este CLUF (Contrato de Licencia para el Usuario Final), o si desea comunicarse con el Fabricante de PC por cualquier otra razn, remtase a la direccin proporcionada en la documentacin de la COMPUTADORA/ORDENADOR. Contiene las llamadas puertas traseras con la consiguiente violacin a la privacidad de la gente que lo utiliza. El cientco Andrew Fernandes, que trabaja en una empresa de seguridad canadiense llamada Cryptonym, descubri que windows posea una puerta trasera (backdoor) que nadie conoca, y que servira para que el gobierno de EE.UU., ms especcamente la agencia de seguridad nacional (NSA) pudiese entrar en millones de computadores alrededor del mundo, siendo estas de organizaciones o personas sin que estas tengan conocimiento de ello. Tratando de buscar alguna escusa Scott Culp gerente de seguridad de Windows NT, declar a Wired News que la puerta trasera es exclusiva para el uso de Microsoft, y no la compartimos ni con la NSA ni con nadie. Con esta declaracin ya se tiene la certeza de que Microsoft oculta, llamemosle, cualidades de su sistema operativo a sus consumidores y competidores para benecio propio. La NSA, rehus hacer declaraciones al respecto[Al00]. Los sistemas operativos enmarcados como Software Libre no tienen este problema ya que su cdigo es de conocimiento pblico. Ninguno de estos sistemas aportaron novedades tecnolgicas. Utilizaron ideas copiadas principalmente en el entorno de ventanas de Macintosh. Su xito en ventas se apoya en la capacidad de comercializacin de la empresa Microsoft la que pone en el mercado productos mediocres y costosos publicitados como los mejores[Cos98].

A.6.

Surgimiento del Software Libre

El surgimiento de Internet y las computadoras personales (tan accesibles que cada usuario puede tener una) produjo una explosin en el uso de tecnologas digitales haciendo que sea ms fcil copiar y modicar la informacin. Esto, sumado a los malos productos que las empresas ponan en el mercado (crisis del software en su apogeo) hizo que se generaran movimientos de cooperacin entre los usuarios de software para combatir esta situacin.

51

En 1983 surge un proyecto emprendido por la Free Software Foundation4 para desarrollar un sistema completo de software libre llamado GNU (GNU No es Unix) que sea compatible con Unix. El mismo fue concebido como una forma de devolver el espritu cooperativo que prevaleca en la comunidad computacional en das pasados; hacer la cooperacin posible al remover los obstculos impuestos por los dueos de software propietario [Stac][Stab][Staa]. Junto con ello se redacta la licencia GNU/GPL (GNU/General Public License), la cual estipula la libre distribucin, ejecucin, modicacin y estudio del software creado bajo la misma. Con dicha licencia surge la idea del software libre la cual brinda a los usuarios las siguientes libertades [Tev01]: 1. La libertad de correr el programa con cualquier propsito. 2. La libertad de estudiar como funciona el programa y adaptarlo a las necesidades de cada usuario. El acceso al cdigo fuente es una precondicin para esto. 3. La libertad de distribuir copias de manera que se puede ayudar a otros usuarios. 4. La libertad de mejorar el programa, y liberar las mejoras al pblico de tal manera que toda la comunidad se benecie. El acceso al cdigo fuente es una precondicin para esto. Para asegurar estas libertades, las personas que adapten o modiquen este software no pueden ocultar estos cambios aprovechndose del desarrollo original, si no que deben tambin hacerlos pblicos. Por ello si un programa es adquirido bajo esta licencia, cualquier modicacin del mismo tambin debe distribuirse bajo la misma. La losofa de esta licencia no es la de promover el software gratuito (el software tiene derecho de autor y se puede cobrar por l) si no la de beneciar la libre de circulacin del conocimiento. El libre acceso a este conocimiento es un derecho de todos los usuarios de programas. Un usuario debe tener la posibilidad de conocer el comportamiento de los programas que utiliza (ya se mencion la existencia de puertas traseras en Windows). El software libre brinda este derecho obligando a la total difusin del cdigo. Adems esta difusin debe hacerse de forma masiva; por ms que un usuario no sepa analizar el cdigo debe tener la conanza de que alguien pueda hacerlo por l y esto es logrado nicamente con una apertura total del cdigo de los programas.

A.7.

Linux

En 1990, Linus Torvals, un estudiante de 23 aos de la Universidad de Helsinki, en Finlandia, comenz a desarrollar como hobby un proyecto basado en el sistema operativo MINIX (desarrollado con nes acadmicos por Andrew Tenembaum). Quera llevar a cabo sobre una computadora con procesador Intel 80386 un sistema operativo tipo UNIX que ofreciese ms capacidades que el limitado MINIX, aprovechando la arquitectura de este procesador 5 . Linus Torvals empez escribiendo el ncleo del proyecto en ensamblador, y luego comenz a aadir cdigo en C, lo cual increment la velocidad de desarrollo, e hizo que empezara a tomarse en serio su idea de hacer un MINIX mejor que MINIX. La primera versin, la 0.01 no tena driver de disquete, y ni siquiera la dio a conocer. Llevaba incorporado un pequeo sistema de archivos y un driver de disco con mucho errores pero funcionaba. En octubre de 1991, anuncio la primera versin ocial de LINUX, la 0.02, que ya era capaz de ejecutar el shell bash y el compilador gcc de GNU. En comp.os.minix, un foro de discusin en Internet acerca del sistema operativo de Tenembaum, Linus Torvals escribi un llamamiento que comenzaba con una famosa frase:
4 http://www.fsf.org 5 Recordemos

que Microsoft todava ni trataba de implementar multitarea

52

Aoras los maravillosos das del MINIX-1.1, cuando los hombres eran hombres y escriban sus propios drivers? Careces de proyectos interesantes y te mueres por desaar a un sistema operativo que puedas modicar a tu antojo? Te resulta frustrante hacer que todo funcione con MINIX? Ests harto de trasnochar para poder conseguir que funcione un programa? Entonces, esta carta puede ser justamente para ti. Como coment hace un mes, estoy trabajando en una versin libre de un sistema tipo MINIX para computadoras AT-386. Finalmente ha sido mejorado el entorno, que incluso se puede utilizar, y estoy deseoso de sacar las fuentes de una distribucin ms potente. Es solo la versin 0.02... pero ha conseguido que funciones bien bash, gcc, GNU make, GNU sed, compress, etc., bajo l" A partir de ah, el sistema de Linus empez a crecer . De todas partes le llegaba correspondencia interesndose por la idea, y comenzaron a desarrollarse proyectos destinados a incrementar la potencia de la plataforma. Por qu esperar a que una empresa saque su software si lo podemos hacer entre todos? Por qu pagar por un s.o. mal hecho y lleno de errores que no podemos solucionar? Estas fueran algunas de las cuestiones que incentivaron el desarrollo de Linux por cooperacin gratuita de usuarios en el mundo. El desarrollo de Linux no se pudo haber realizado sin las aplicaciones de GNU creadas por la Free Software Fundation. Adems muchos de los componentes de Linux, como drivers, protocolos o shells salieron de otro sistema Unix de libre distribucin llamado FreeBSD, desarrollado en la Universidad de Berkeley. Pero sin duda, el factor esencial y determinante en el xito y la rpida difusin del sistema operativo ha sido la red de redes, Internet. A travs de foros de discusin y noticias, miles de personas de todo el mundo se han propuesto demostrar que, sin mediar los intereses econmicos de las empresas, se pueden conseguir productos que incluso superen en calidad a los desarrollados por los gigantes del software.

53

Apndice B

Informacin adicional
B.1. Ubicacion de las man pages
Las man pages son archivos que estn ubicados en directorios preestablecidos y agrupados en secciones segn su contenido. Tarea B.1 Ubicacin de las man pages Veamos con el comando ls donde estn estos archivos:
[martin@maq martin]$ ls /usr/share/man/ de_DE ja man2 man5 man8 pl es man man3 man6 man9 pt_BR fr_FR man1 man4 man7 mann ru [martin@maq martin]$ _ sk tmac.h

En los directorios listados que comienzan con man estn las man pages. Vemos que las man pages estn ubicadas en el directorio /usr/share/man/. En Unix tambin suelen estar en /usr/man/ Ejecutemos ahora:
[martin@maq martin]$ ls /usr/share/man/man4 console.4.gz full.4.gz isdnctrl.4.gz console_codes.4.gz hd.4.gz isdninfo.4.gz console_ioctl.4.gz ibod.cf.4.gz kmem.4.gz console_ioctls.4.gz initrd.4.gz libxml.4.gz dsp56k.4.gz intro.4.gz lp.4.gz fd.4.gz ipfw.4.gz mailcap.4.gz fifo.4.gz isdn_audio.4.gz mem.4.gz [martin@maq martin]$ _ mouse.4.gz null.4.gz port.4.gz ram.4.gz random.4.gz sd.4.gz st.4.gz tty.4.gz ttyI.4.gz ttys.4.gz vcs.4.gz vcsa.4.gz zero.4.gz

Los nombres de los archivos, sin el prejo 4.gz corresponden a las man pages de la seccin 4.

Cada seccin corresponde a una categora. Ellas son: 54

Seccin 1: Comandos del usuario. Son comandos comunes que se pueden utilizar en el shell como por ejemplo ls, mv, etc. Seccin 2: Llamadas al sistema operativo (systems calls). Seccin 3: Funciones de libreras de lenguajes de programacin. Seccin 4: Dispositivos. Aqu estn las man pages de los dispositivos sobre el sistema de archivos (ver subseccin 1.2.1 (pg. 4). Seccin 5: Gramtica de los archivos de conguracin. Seccin 6: Juegos y demos. Seccin 7: Especiales del formato de las man pages (formato troff ). Seccin 8: Comandos de administracin del sistema. Seccin 9: X Windows System.

B.2. Otras fuentes de informacin


B.2.1. HOWTO y mini HOWTO
Esta documentacin consiste en una serie de archivos en diferentes formatos comunes (texto plano, html, postscript, etc.). Su temtica es muy variada, desde explicaciones de conceptos generales de redes (Net-HOWTO) a explicaciones sobre como conectar una UPS (UPS-HOWTO). Pero por lo general son utilizados para solucionar problemas de usuarios y administradores. Hay muchos que son directamente tutorials muy tiles. Suelen estar en algunas distribuciones (las ltimas versiones de Red Hat no lo incluyen). Si estn instalados se encuentran en el directorio /usr/doc/HOWTO/ o /usr/share/HOWTO/. Pueden ser bajados por Internet en el sitio http://www.linuxdoc.org. Los mini HOWTO estn ms orientados a ser tutorials. Despus que han sido corregidos, extendidos y utilizados por mucha gente son elevados a la categora de HOWTO. Esta documentacin es mucho ms didctica que las man pages o las info pages (que son simplemente manuales de comandos) y por lo general no hace falta tener un conocimiento previo para usarlas. Un HOWTO muy recomendable para el iniciado al sistema Linux es DOS-Win-to-Linux-HOWTO. Tarea: Leer DOS-Win-to-Linux-HOWTO.

B.2.2.

SAG y NAG

Son guas completas de administracin que cubren los principales tem. SAG son las siglas de System Administrator Guide y NAG de Network Administrator Guide. A veces vienen en las distribuciones. De todas formas se las puede encontrar en Internet en http://www.linuxdoc.org. Son guas muy detalladas y no estn pensadas como tutorials. Adems son una buena fuente de informacin cuando lo que queremos hacer es aprender el funcionamiento del sistema para poder administrarlo.

B.2.3.

En Internet

Otra fuente de informacin es Internet. Recordemos que gracias a la facilidad de intercambio de informacin que hay en este medio, se hizo posible el nacimiento de Linux (seccin A.7 (pg. 52)). Algunos lugares donde podemos comenzar a buscar son:

55

http://www.linuxdoc.org Sitio que contiene casi todos los manuales (estn todos los anteriores) y links a revistas especializadas on-line (linux Gazette y Linux Focus). Este sitio publica uno de los proyectos para organizar y compilar la informacin sobre Linux, denominado Proyecto LDP (Linux Document Proyect) Grupos de usuarios Los grupos de usuarios fueron la base de la creacin de Linux. Por lo general estos grupos implementan listas de mails donde uno puede hacer preguntas. Estos grupos tienen pginas Web donde cualquiera puede asociarse a la lista o buscar en mails anteriores. Un buen ejemplo local es http://www.grulic.org.ar. Buscadores Hay mucha documentacin como por ejemplo HOWTOs y mini HOWTOs que son muy recientes y no estn publicados en http://www.linuxdoc.org. Para encontrarla existen muchos buscadores en Internet que nos pueden ayudar (google, yahoo, Altavista, etc).

B.2.4.

Documentacin de Red Hat

Otra fuente de informacin muy completa es la que ofrece la empresa Red Hat. Las mismas son especcas de esta distribucin pero pueden ser utilizadas para la administracin en general. Estn en http://www.redhat.com/docs/manuals/linux/RHL-<versin>-Manual. Algunas de ellas son: Installation Guide: Manual de Instalacin. Getting Started Guide: Manual de usuario. Customization Guide: Manual de Administracin. Reference Guide: Manual del sistema y administracin.

B.2.5.

Recomendaciones de bsqueda de informacin

Cada vez que tengamos que buscar informacin para resolver algn problema, el orden de bsqueda es, ms o menos, el que hemos seguido en esta seccin: 1. Primero busquemos en las man pages (es la forma ms directa de encontrar informacin). 2. Si no resolvimos el problema o si encontramos algo en ellas pero la informacin es insuciente busquemos en las info page. 3. Si todava no encontramos informacin, busquemos en los HOWTO. Suele suceder que, aunque no encontremos la informacin precisa que estamos buscando, haya algunos HOWTO que tratan sobre problemas similares con la cual podemos resolver nuestro problema. 4. Si todava no pudimos resolver el problema, es tiempo que revisemos la teora. Las SAGs y NAGs son una buena documentacin general donde se explica de manera general como administrar el sistema. Tambin se puede buscar en los manuales de Red Hat. 5. Si nuestro problema sigue sin resolver busquemos en Internet o hagamos la pregunta a algn grupo de usuarios. 56

Tarea B.2 Buscar bibliografa Que es el total que aparece en la primera lnea al ejecutar ls -l? Ayuda: Realizar el proceso de bsqueda recomendado

B.3. Otras caractersticas de Linux


En esta seccin se vern algunos carcteristicas de este s.o. que nos ayudarn a entenderlo un poco ms.

B.3.1.

rbol de procesos

Los procesos que estn corriendo en una mquina Linux se organizan en forma jerrquica de tipo rbol: un proceso llamado init se lanza apenas arranca la mquina, este a su vez lanza otros procesos hijos (por ejemplo los que atienden los ingresos de usuarios al sistema) que a su vez tienen la posibilidad de lanzar otros (por ejemplo el shell) y as sucesivamente. Tarea B.3 Ver rbol de procesos
pstree

Un comando que permite ver este rbol es el comando pstree. Ejecutemos el mismo en la consola escribiendo su nombre y oprimiendo la tecla [Enter]:
[martin@maq martin]$ pstree init-+-atd |-automount |-crond |-gpm |-keventd |-klogd |-login---bash---pstree |-lpd |-5*[mingetty] |-syslogd |-xfs -xinetd [martin@maq martin]$ _

Aqu podemos en la primera lnea de la salida de este comando el proceso init que es el padre de todo los dems. Tambin se muestra un hijo del anterior llamado login que a su vez tiene como hijo el shell, llamado bash. Este, tiene como hijo el proceso pstree que fue el que acabamos de activar. Otro proceso hijo de init es mingetty. Este es el que atiende los ingresos por cada una de las consolas virtuales. Ver que pstree los muestra de forma abreviada en la lnea que dice 5*mingetty; en realidad hay 5 procesos que atienden cada una de las consolas virtuales libres (recordemos que por lo general son 6 pero una esta siendo usada por nosotros). Ms adelante veremos con mas detalles como es por lo general esta jerarqua de procesos cuando arranca la mquina.

57

B.3.2.

Demonios

Al ejecutar el comando pstree se pueden ver procesos que no fueron lanzados por ningn usuario los cuales sirven para ejecutar tareas de mantenimiento del sistema de forma automtica o pueden tambin brindar servicios a usuarios locales o en red. Por ejemplo, la salida pstree muestra el proceso syslogd que es el que guarda la informacin del funcionamiento del sistema a travs del tiempo (logging). El proceso lpd hace de servidor local y remoto de impresin. Estos procesos son comnmente llamados demonios y existen en todos los sistemas Unix. Otros ejemplos de ellos son los servidores de mail o web.

B.3.3.

Congurable por archivos de texto

Todas las modicaciones del comportamiento del sistema y su administracin se hacen mediante la modicacin de archivos de texto. Con cualquier editor simple se pueden cambiar estos archivos de forma muy simple. Por supuesto, estos archivos poseen una gramtica que debe ser entendida, pero existe documentacin de sobra para poder hacerlo. Tarea B.4 Ver archivos de conguracin
cat

El comando cat vuelca por consola un archivos de texto. En la misma escribamos cat /etc/fstab y oprimamos [Enter]:
[martin@maq martin]$ cat /etc/fstab LABEL=/ / /dev/hda8 /boot /dev/fd0 /mnt/floppy none /proc none /dev/pts /dev/hda6 swap /dev/cdrom /mnt/cdrom [martin@maq martin]$ _

ext2 ext2 auto proc devpts swap iso9660

defaults 1 1 defaults 1 2 noauto,users 0 0 defaults 0 0 gid=5,mode=620 0 0 defaults 0 0 noauto,users,kudzu,ro 0 0

Este archivo sirve para congurar los puntos de acceso y otras caractersticas de los distintos dispositivos de almacenamiento.

B.3.4.

Estructura del S.O. Linux

En esta subseccin daremos un pantallazo muy por arriba de la estructura del kernel de Linux. El kernel de este sistema operativo es de tipo monoltico. Esto bsicamente quiere decir, que todos los drivers para manejar dispositivos estn en l, en contraposicin a los sistemas con microkernel, que mantienen en el mismo, slo los administradores de procesos y de memoria. Este tipo de arquitectura tiene como una de sus deciencias que los drivers estn en memoria, a pesar de no estar siendo utilizados; por ejemplo el driver controlador de la lectora de CD estara siempre en memoria aunque no tengamos ningn CD puesto en ella para leer. Esta deciencia fue solucionada en Linux haciendo uso de los mdulos: parte del cdigo del kernel est en archivos separados, los cuales son cargados

58

en memoria al momento de ser utilizados. Una vez que no se necesiten ms pueden ser descargados de la misma. Un diagrama muy bsico del kernel es el de la gura B.1 (pg. 59).
programas del usuario

libreras interfaz con las llamadas al sistema mdulos sistema de control de procesos comunicacin entre procesos

subsistema de archivos

subsistema de archivos

planificador

buffer cach

buffer cach

gestor de memoria

caracter

bloque

caracter

bloque

device drivers

device drivers

11111111111111111111111111111111 00000000000000000000000000000000 11111111111111111111111111111111 00000000000000000000000000000000 HARDWARE 11111111111111111111111111111111 00000000000000000000000000000000


Figura B.1: Diagrama de bloques del kernel Aqu se ve a grandes rasgos como el sistema operativo forma una abstraccin o representacin del hardware real conformando una capa1 entre el hardware real y los programas. En la gura se observa que los programas se comunican con el kernel por medio llamadas al sistema y no utilizan el hardware directamente. Los programas de los usuarios usan libreras compartidas dinmicamente enlazadas, esto quiere decir que los ejecutables comparten cdigo de libreras que se encuentran en disco lo cual permite que los mismos ocupen menos espacio en disco. Los drivers en el kernel se clasican en drivers para dispositivos de caracteres y de bloques. Los primeros se reeren a dispositivos que por lo general tienen un acceso secuencial a la informacin que manejan, por ejemplo puertos seriales. El acceso a la mismo es ms directo que en los segundos ya que en estos se realizan por medio de buffers que mejoran la velocidad de transferencia. Estos se usan para dispositivos
1 El

control de hardware

concepto de capa de abstraccin ser recurrente en todo el curso.

59

cuya transferencia de informacin se realiza en bloques y de forma randmica, por ejemplo discos rgidos. Se puede ver en la gura B.1 (pg. 59) que estos drivers se comunican directamente con el sistema de archivos lo cual implementa la abstraccin en el mismo de los dispositivos, como ya se mencion. Otra caracterstica es que el kernel implementa un gestor de memoria unicado para los programas como para los buffers cach de los drivers de los dispositivos.

B.3.5.

Proceso de arranque del sistema

Dadas ya vistas las caractersticas generales de Linux podemos explicar el proceso de arranque del sistema. Para hacerlo reiniciemos el sistema encendiendo la mquina, si estaba apagada, u oprimiendo la combinacin de teclas [Ctrl][Alt][Del], si ya estbamos corriendo Linux. Al realizarse este proceso se vern una serie de mensajes en la pantalla que muestran informacin sobre el mismo. Es muy til conocer como se sucede este proceso ya que de esta forma se podrn interpretar estos mensajes con ms facilidad y as poder detectar problemas en el arranque. Al arrancar la mquina el control de la misma la tiene la BIOS (Basic Input/Output System). Esta es un programa contenido en memoria no voltil que viene de fbrica en las computadoras. Despus de chequear algunos dispositivos, la BIOS ejecuta el cdigo de arranque que se encuentra en el primer sector del disco rgido llamado Master Boot Record (MBR). Este programa MBR lee el boot record de la particin activa. Normalmente esta seccin de la particin contiene instrucciones para cargar el sistema operativo. Linux permite que en una misma mquina coexistan varios sistemas (por ejemplo Window y Linux o varios Linux) pero solo uno a la vez puede tener el control de la computadora. Es por esto que las distribuciones de Linux vienen con un programa de arranque por lo general llamado lilo (o grub) el cual permite elegir, al momento de encender la mquina, el sistema operativo a utilizar. De esta forma el MBR carga el lilo, el cual muestra una pantalla grco o de texto donde el usuario puede ingresar el sistema operativo a utilizar. En el caso de pantalla en modo texto se muestra:
boot: _

Si se oprime la tecla [Tab] se vern las distintas alternativas de sistemas a correr:


boot: linux dos boot: _

Ingresando una de ellas se podr utilizar el sistema operativo deseado. Si solo oprimimos la tecla [Enter] se cargar la primera opcin, en este caso linux:
boot: linux dos boot: Loading linux....

En este momento el kernel de Linux se est cargando en memoria para ser ejecutado. Una vez que se termina de cargar el kernel comienza a identicar los dispositivos conectados. Al terminar esta operacin el kernel arranca el programa llamado init (el proceso padre del que ya habamos hablado). El mismo es el que se encarga de ejecutar los demonios. Al mismo tiempo init ejecuta los 6 procesos mingetty que esperan en cada una de las consolas virtuales a que ingrese un usuario. Como ya dijimos, para utilizar el sistema hay que ingresar el nombre de usuario (login) y el password. En este momento el proceso mingetty, que atiende el ingreso, deja su lugar al programa login el cual verica el login y el password, y si son correctos arranca el proceso shell. Todos estos procesos aparecieron cuando ejecutamos el programa pstree (pg. 57). 60

Apndice C

GNU Free Documentation License


Version 1.1, March 2000 Copyright c 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble
The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modications made by others. This License is a kind of copyleft, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

C.1.

Applicability and Denitions

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The Document, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as you. A Modied Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Documents overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example,

61

if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specication is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent le format whose markup has been designed to thwart or discourage subsequent modication by readers is not Transparent. A copy that is not Transparent is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo inA put format, LTEX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modication. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, Title Page means the text near the most prominent appearance of the works title, preceding the beginning of the body of the text.

C.2.

Verbatim Copying

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

C.3.

Copying in Quantity

If you publish printed copies of the Document numbering more than 100, and the Documents license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to t legibly, you should put the rst ones listed (as many as t reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each

62

Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

C.4.

Modications

You may copy and distribute a Modied Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modied Version under precisely this License, with the Modied Version lling the role of the Document, thus licensing distribution and modication of the Modied Version to whoever possesses a copy of it. In addition, you must do these things in the Modied Version: Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modications in the Modied Version, together with at least ve of the principal authors of the Document (all of its principal authors, if it has less than ve). State on the Title page the name of the publisher of the Modied Version, as the publisher. Preserve all the copyright notices of the Document. Add an appropriate copyright notice for your modications adjacent to the other copyright notices. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modied Version under the terms of this License, in the form shown in the Addendum below. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Documents license notice. Include an unaltered copy of this License. Preserve the section entitled History, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modied Version as given on the Title Page. If there is no section entitled History in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modied Version as stated in the previous sentence. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the History section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. In any section entitled Acknowledgements or Dedications, preserve the sections title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. 63

Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. Delete any section entitled Endorsements. Such a section may not be included in the Modied Version. Do not retitle any existing section as Endorsements or to conict in title with any Invariant Section. If the Modied Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modied Versions license notice. These titles must be distinct from any other section titles. You may add a section entitled Endorsements, provided it contains nothing but endorsements of your Modied Version by various parties for example, statements of peer review or that the text has been approved by an organization as the authoritative denition of a standard. You may add a passage of up to ve words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modied Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modied Version.

C.5.

Combining Documents

You may combine the Document with other documents released under this License, under the terms dened in section 4 above for modied versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodied, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled History in the various original documents, forming one section entitled History; likewise combine any sections entitled Acknowledgements, and any sections entitled Dedications. You must delete all sections entitled Endorsements.

C.6.

Collections of Documents

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

64

C.7.

Aggregation With Independent Works

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modied Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Documents Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

C.8.

Translation

Translation is considered a kind of modication, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

C.9.

Termination

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

C.10. Future Revisions of This License


The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document species that a particular numbered version of this License .or any later version.applies to it, you have the option of following the terms and conditions either of that specied version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents


To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

65

Copyright c YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License. If you have no Invariant Sections, write with no Invariant Sections instead of saying which ones are invariant. If you have no Front-Cover Texts, write no Front-Cover Texts instead of Front-Cover Texts being LIST; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

66

ndice alfabtico de comandos


acroread, 25 apropos, 11 bg, 35 bzip2, 44 cat, 58 cd, 6 chgrp, 42 chmod, 42 chown, 42 cp, 7 display, 25 du, 29 emacs, 19 exit, 9 export, 32 fg, 34 fp, 26 fpc, 26 g++, 26 gcc, 26 gcc3, 26 ghc, 26 grep, 24 gv, 25 gzip, 44 hugs, 26 id, 39 info, 12 java, 26 xdvi, 25 kill, 35 lazarus, 26 less, 23 ln, 23 ls, 6 man, 10, 11 mc, 25 mcopy, 22 mdir, 22 mkdir, 7 mkdosfs, 22 more, 23 mv, 8 opera, 26 passwd, 13 pine, 13 pl, 26 ps, 35 pstree, 57 pwd, 5 quota, 25 rm, 8 rmdir, 23 rpm, 45 set, 31 sort, 29 squeak, 26 tar, 44 top, 32 touch, 42 which, 27

67

ndice de tareas
1.1. Ingresar al sistema . . . . . . . . . . 1.2. Ver terminales virtuales . . . . . . . . 1.3. Ver en que directorio nos encontramos 1.4. Usemos ls . . . . . . . . . . . . . . . 1.5. Cambiemos de directorios . . . . . . 1.6. Creemos subdirectorios . . . . . . . . 1.7. Copiemos archivos . . . . . . . . . . 1.8. Renombremos archivos . . . . . . . . 1.9. Borremos archivos . . . . . . . . . . 1.10. Comando man . . . . . . . . . . . . . 1.11. Uso del comando apropos . . . . . . 1.12. Elegir la man page de una seccin . . 1.13. Uso de info . . . . . . . . . . . . . . 2.1. Cambiar un password . . . . . . . . 2.2. Leer mails recibidos . . . . . . . . . 2.3. Componer un mail . . . . . . . . . 2.4. Arrancar el X . . . . . . . . . . . . 2.5. Cambiar de terminal . . . . . . . . 2.6. Terminal X . . . . . . . . . . . . . 2.7. Arrancar Emacs . . . . . . . . . . . 2.8. Mens de Emacs . . . . . . . . . . 2.9. Editar texto . . . . . . . . . . . . . 2.10. Info pages en Emacs . . . . . . . . 2.11. Borremos el directorio . . . . . . . 2.12. less . . . . . . . . . . . . . . . . . 2.13. Opcin de less . . . . . . . . . . . 2.14. Creando enlaces simblicos . . . . . 2.15. Comando grep . . . . . . . . . . . . 2.16. Viendo el espacio utilizado en disco 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. Ver si tenemos instalado otro shell Volcado de la salida a un archivo . Comando du . . . . . . . . . . . . Comando sort . . . . . . . . . . . Usando pipes . . . . . . . . . . . Ver variables de entorno . . . . . Creacin de variables de entorno . Comando top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 6 6 7 7 8 8 8 10 11 11 12 13 14 17 18 18 18 19 20 21 22 23 23 23 24 24 25 27 28 29 29 30 31 32 32

3.9. Terminar un proceso . . . . . . . . . . 3.10. Ejecutando un proceso en background . 3.11. Poniendo un proceso en foreground . . 3.12. Deteniendo un proceso . . . . . . . . . 3.13. Despertando un proceso . . . . . . . . . 3.14. Comando kill . . . . . . . . . . . . . . 3.15. Mostrar uso de espacio en disco . . . . 3.16. Veamos los archivos passwd y group 3.17. Comando chmod . . . . . . . . . . . . B.1. B.2. B.3. B.4. Ubicacin de las man pages . . Buscar bibliografa . . . . . . Ver rbol de procesos . . . . . Ver archivos de conguracin . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

33 34 34 34 35 35 36 38 42 54 57 57 58

69

Bibliografa
[Al00] Adrian Pablo Al. La era de la estupidez. Linux Users Group Tucumn - Repblica Argentina, 2000. http://www.tucuman.linux.org.ar/textos/estu.html. [Cos98] Roberto Di Cosmo. Trampa en el http://www.dmi.ens.fr/~dicosmo/Piege/trampas. Cyberespacio, 1998.

[Dij76] Edsger W. Dijkstra. A Discipline of Programming. Prentice Hall Series in Automatic Computation. Prentice Hall, 1976. [Gib94] W. Wayt Gibbs. Softwares chronic crisis. Scientic American, page 86, September 1994. [Ray03] Eric Steven Raymond. The Art of Unix http://www.catb.org/~esr/writings/taoup/html. [Staa] [Stab] [Stac] Programming, 2003.

Richard Stallman. Por qu el Software debera ser libre. Free Software Foundation, Inc. http://www.gnu.org/philosophy/shouldbefree.es.html. Richard Stallman. Por Qu El Software No Debe Tener Propietarios. Free Software Foundation, Inc. http://www.gnu.org/philosophy/why-free.es.html. Richard Stallman. Revision del Proyecto GNU. Free Software Foundation, Inc. http://www.gnu.org/gnu/gnu-history.es.html.

[Tev01] Mario Jos Teves. Entender la losofa GNU. Linux Users Group Tucumn - Repblica Argentina, 2001. http://www.tucuman.linux.org.ar/textos/introfilosofia.html.

70

También podría gustarte