You are on page 1of 154

1.

Introduccin a los comandos del sistema


Existe un conjunto de comandos que todo usuario debe conocer para poder manejarse en un sistema GNU/Linux. La mayora de estos comandos estn relacionados con el manejo de archivos y directorios [1]. Estas herramientas tienen un tiempo de desarrollo y prueba mucho mayores que sus smiles en interfaz grfica, y aunque no lo parezca, una vez familiarizado con el entorno de texto, resulta ms gil y cmodo para las tareas diarias. Este grupo de comandos, llamados muchas veces Caja de herramientas UNIX, posee detrs de cada herramienta, una filosofa de desarrollo. Cada uno de los comandos, fue creado con dos ideas en mente: Debe realizar una sola funcin. Dicha funcin debe realizarse correctamente. Con estos objetivos, la simpleza de las herramientas permite que puedan combinarse para solucionar diferentes problemas que individualmente no podran. La forma de combinar estas herramientas se ve en Entrada, salida y error estndar. Es importante hacer notar, que muchas de las tareas que se pueden hacer con los comandos que se explican en esta seccin pueden realizarse con el administrador de archivos mc, un clon del Norton Commander, muy bueno por cierto, pero igualmente no se puede obtener toda la flexibilidad que se tiene con los comandos, como ya se ver ms adelante.

[1] Que en realidad son un tipo especial de archivos.

2. El comando apropos
Una herramienta til para encotrar otras herramientas es el comando apropos. El comando whatis muestra informacin en base al nombre de un comando, posee su propia base de datos que relaciona nombres con descripciones. apropos busca en esa base de datos de manera inversa, en base a una palabra, busca en las descripciones para mostrar los comandos que concuerden. Ejemplo 1. Ejemplo de uso de apropos Por ejemplo si queremos utilidades relacionadas con la palabra jpeg: $ apropos jpeg jpegtopnm (1) - convert JPEG/JFIF file to portable pixmap or graymap pcdtoppm (1) - a program converting PhotoCD images to ppm or jpeg ppmtojpeg (1) - convert portable pixmap into a JPEG/JFIF file

3. El comando cal
Este es un comando bastante til, que aunque no tenga mucha relacin con los anteriormente dados, sirve para demostrar que las herramientas basadas en texto no son intiles para tareas domsticas. cal es una herramienta que sirve para mostrar en pantalla el calendario. Su sintaxis es la siguiente: cal [-jy] [[mes] ao]]

Si cal se ejecuta sin argumentos, mostrar en pantalla el calendario del mes y ao actuales, por ejemplo: usuario@maquina:~/$ cal April 2001 S M Tu W Th F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Las opciones para este comando son: -j Muestra la fecha en formato Juliano. -y Muestra el calendario completo del ao actual.

4. El comando cat
Se utiliza para concatenar archivos y mostrarlos por la salida estndar (normalmente la pantalla). Su sintaxis es muy simple: cat [opcin] [archivo]... Donde archivo puede ser uno o ms archivos. Si no se especifica este segundo parmetro, cat tomar la entrada de la entrada estndar (normalmente el teclado). Sus opciones ms comunes son: -n Numera todas las lneas de salida. -b Numera aquellas lneas de salida que no estn en blanco.

5. El comando cd
Este comando se usa para cambiar de directorio. Generalmente cuando el usuario inicia una sesin en GNU/Linux, el directorio donde comienza es su directorio personal. Desde ah uno puede moverse a los diferentes directorios donde se tenga acceso usando este comando. Su sintaxis es la siguiente: cd directorio ste es un comando interno del intrprete (por ejemplo, bash), y no lleva opciones que sean de relevancia como para nombrarlas. Con la utilizacin del comando cd es bueno explicar conceptos como rutas relativas y rutas absolutas.

Ruta relativa Si la ruta no comienza con / entonces se considera relativa a la ruta actual. Ejemplo 2. Una ruta relativa Referirse al directorio bin/ no es lo mismo que referirse al directorio /bin/, si uno se encuentra en el directorio /usr/, la primera instancia corresponde a /usr/bin/ mientras que la segunda corresponde a /bin/. Ruta absoluta Si la ruta comienta con / entonces har referencia a una ruta en el directorio raz. Ejemplo 3. Varios casos de uso de cd Suponiendo que el directorio actual es /home/usuario: [/home/usuario]$ cd subdirectorio [/home/usuario/subdirectorio]$ cambiara a /home/usuario/subdirectorio. En cambio: [/home/usuario]$ cd /subdirectorio [/subdirectorio]$ cambiara a /subdirectorio debido a que es una ruta absoluta. En el caso que cd se ejecute sin parmetros, cambiar al directorio personal o home directory del usuario. [/usr/share/doc]$ cd [/home/usuario]$ cambiar a /home/usuario. Es equivalente a cd ~ o cd $HOME en bash. Si se quiere cambiar al directorio personal de otro usuario, se puede ejecutar: [/home/usuario]$ cd ~otro [/home/otro]$ cambiar a /home/otro. En cambio cd ~/otro cambiar a /home/usuario/otro pues ~ se reemplaza por el directorio personal del usuario. El ltimo directorio se guarda en una variable de entorno y se puede fcilmente intercambiar con el directorio actual con cd [/home/usuario]$ cd /bin [/bin]$ cd ~/prueba [/home/usuario/prueba]$ cd volver a /bin en el caso de ejecutar otra vez cd - ir a /home/usuario/prueba.

6. El comando cp
Se utiliza para copiar archivos, su sintaxis es la siguiente: cp [opciones] archivo-origen directorio-destino cp [opciones] archivos-origen... directorio-destino Entre las opciones ms relevantes, se tienen:

-f Borrar los archivos de destino ya existentes. -d Copiar los enlaces simblicos tal cual son, en lugar de copiar los archivos a los que apuntan. -p Preservar los permisos, el usuario y el grupo del archivo a copiar. -R Copiar directorios recursivamente. -a Equivalente a utilizar las opciones -dpR. -u No copia un archivo si en el destino ya existe tal archivo, y ste tiene la fecha de modificacin igual o mas reciente. -v Da informacin en pantalla sobre los archivos que se van copiando. Ejemplo 4. Usando cp para copias de respaldo. Supngase que el sistema donde el usuario juancito trabaja normalmente tiene un directorio / usr/local/respaldos, especialmente destinado para almacenar copias de respaldo de los datos de sus usuarios, y juancito necesita hacer su copia de respaldo semanal [2] , entonces el comando que ejecutar es el siguiente: $ cp -dpR /home/juancito /usr/local/respaldos Que es equivalente a ejecutar: $ cp -a /home/juancito /usr/local/respaldos Con esto, juancito copia todos sus archivos con los permisos y atributos exactamente igual a como estn en los archivos originales, y slo debe especificar su directorio personal, ya que la opcin -R se encarga de incluir todos los archivos que se encuentran dentro del mismo. Ejemplo 5. Usando cp para actualizar archivos. Pedro se encuentra trabajando en el laboratorio de informtica de su escuela donde en el servidor de archivos existe un directorio /usr/local/tp que contiene los directorios de todos los grupos de trabajo de la escuela. Pedro pertenece al grupo 15 y necesita actualizar su grupo de copias del trabajo prctico 2, entonces usar el comando cp de la siguiente manera: $ cp -uv /usr/local/tp/grupo15/tp2/* /home/pedro/TPs/2 Con la opcin -v, Pedro puede ver cuales archivos se han actualizado, y con la opcin -u slo copia aquellos archivos mas recientes que los que l ya posee.

[2] juancito es un usuario sabio que hace copias de respaldo, usted las hace?

7. El comando date
Este comando tiene dos funciones: una es la de mostrar en pantalla la fecha del sistema (en varios formatos, como veremos a continuacin), la otra es la funcin de configurar la hora del sistema, pero para que esta funcionalidad se cumpla, se debe ejecutar el comando desde una sesin de root. La sintaxis de este comando es:

date [opcin...] [+FORMAT] date [opcin] [MMDDhhmm[[CC]AA][.ss]] FORMAT controla el formato con que se mostrar la fecha, algunas de las opciones de este argumento son: %a Da de la semana abreviado. %A Da de la semana completo. %b Nombre del mes abreviado. %B Nombre del mes completo. %d Da del mes. %m Nmero de mes. %H Hora, en formato 24h. %M Minutos. %S Segundos. Existen muchsimas ms opciones de formato que alentamos al lector a verlas en la pgina de manual del comando date. Ejemplo 6. Uso de date con formato simple. usuario@maquina:~/$ date Sun Apr 8 15:09:32 ART 2001 usuario@maquina:~/$ date +"%A %d %B" Sunday 08 April

8. El comando df
Provee informacin sobre la utilizacin del espacio en disco en los diferentes sistemas de archivos montados en el sistema. Para un sistema GNU/Linux, quedarse sin espacio libre es algo bastante grave, ya que muchos demonios y programas en general utilizan el directorio / tmp para guardar informacin mientras se ejecutan. La sintaxis de df es la siguiente: df [opciones] [sistema-de-archivo...] Si no se provee del argumento sistema-de-archivo, df informar acerca de todos los sistemas de archivos montados y en funcionamiento. Las opciones de df ms relevantes son: -h Imprimir los tamaos de forma ms legible para humanos. -i Informar sobre la utilizacin de los nodos- [3] . Los nodos- son estructuras internas del sistema de archivos. Cuando ste se queda sin nodos- libres, por ms que haya espacio libre en el disco, no se podrn crear nuevos archivos hasta que se liberen nodos-, generalmente esto no

pasa a menos que se haya generado una enorme cantidad de archivos muy pequeos. -k Mostrar los tamaos en bloques de 1024 bytes. -m Mostrar los tamaos en bloques de mega-bytes. Ejemplo 7. Ejemplo de ejecucin del comando df usuario@maquina:~/$ df Filesystem 1k-blocks /dev/hda2 2949060 /dev/hda1 23302 /dev/hda4 10144728 /dev/hdb2 3678764 Used Available Use% Mount 2102856 696400 75% / 2593 19506 12% /boot 5506796 4637932 54% /home 3175268 503496 86% /u

[3] Abreviacin de nodos ndice, en ingls i-nodes

9. El comando du
Este comando informa al usuario de la cantidad de almacenamiento utilizado por los archivos especificados, posee varias opciones, su sintaxis es la siguiente: du [opciones] [archivo...] Sus opciones ms significativas son: -s Muestra nicamente los tamaos de los archivos especificados en la lnea de comandos. -h Muestra los tamaos de archivo en un formato ms legible. -c Muestra en pantalla el espacio total ocupado por los archivos especificados. -x Omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos. Ejemplo 8. Uso administrativo del comando du El administrador de un servidor necesita saber el espacio en disco ocupado por los distintos directorios del sistema, para hacer limpieza. Para esto, se tiene en cuenta que no se debern contar aquellos directorios que estn en su propio sistema de archivos, entonces se puede ejecutar de esta forma: # du -sxh /* 6.8M /bin 6.7M /boot 351k /dev 34M /etc 2.8G /home 43M /lib 3.0k /mnt 0 /proc 15M /root

7.3M 512 281k 5.3G 758M

/sbin /swap /tmp /usr /var

10. El comando echo


Este comando escribe a la salida estndar la cadena de texto que se le pasa como parmetro. Generalmente se utiliza sin opciones, es por eso que no se nombrarn en este texto. Ejemplo 9. Algunos usos del comando echo echo generalmente no se utiliza de forma solitaria, sino que en conjuncin con otros comandos. Un ejemplo puede ser su uso con el comando date: $ echo "La fecha de hoy es `date +%D`" La fecha de hoy es 03/21/02 Esto quizs no se ve ahora como algo til, pero en combinacin con otros comandos es una herramienta de gran utilidad.

11. El comando find


Se utiliza este comando para buscar archivos dentro de una jerarqua de directorios. La bsqueda, como veremos ms adelante, se puede realizar mediante varios criterios. La sintaxis de este comando es: find [ruta...] [expresin] La expresin se conforma de opciones, pruebas y acciones. En este documento no enumeraremos todas las opciones, pruebas y acciones de este comando, sino las expresiones que son ms cotidianas. Dejamos al lector que investigue todo el potencial de este comando mediante la lectura de la pgina de manual por medio de la ejecucin del siguiente comando: $ man find Algunos de los criterios de bsqueda que se pueden utilizar son: find CAMINO -name ARCHIVO find CAMINO -name ARCHIVO -perm MODO ARCHIVO corresponde al nombre entero o en parte del archivo que se est buscando, MODO son los permisos del archivo a buscar representados en octal. Cmo manejarse con permisos de usuario se puede ver en Conceptos bsicos. Ejemplo 10. Varios usos del comando find Carlos recuerda haber almacenado en su directorio personal una foto de su familia cuando estaban de vacaciones, y lo nico que recuerda es que estaba en formato PNG, para intentar localizar dicha foto, usa el comando find de la siguiente forma:

$ find /home/carlos -name "*.png" El administrador de un servidor de Internet necesita realizar una auditora de seguridad, para ello una de las pruebas que se necesita realizar es identificar aquellos archivos o directorios que poseen permisos de escritura para cualquier usuario, esto lo puede hacer como sigue: # find / -perm 777 Este comando listar tambin los enlaces simblicos, que aunque en el listado aparecen con todos los permisos activados, no significa que cualquier usuario los pueda modificar. Para evitar entonces este inconveniente, se puede ejecutar el comando de esta manera: # find / -perm 777 -follow La opcin -follow instruye a find para que en lugar de hacer la prueba con los enlaces simblicos, la haga con los archivos apuntados por estos enlaces.

12. El comando grep


Su funcionalidad es la de escribir en salida estndar aquellas lneas que concuerden con un patrn. Su sintaxis es como sigue: grep [opciones] PATRN [ARCHIVO...] grep [opciones] [-e PATRN | -f ARCHIVO] [ARCHIVO...] Este comando realiza una bsqueda en los ARCHIVOs (o en la entrada estndar, si no se especifica ninguno) para encontrar lneas que concuerden con PATRN. Por defecto grep imprime en pantalla dichas lneas. Sus opciones ms interesantes son: -c Modificar la salida normal del programa, en lugar de imprimir por salida estndar las lneas coincidentes, imprime la cantidad de lneas que coincidieron en cada archivo. -e PATRN Usar PATRN como el patrn de bsqueda, muy til para proteger aquellos patrones de bsqueda que comienzan con el signo -. -f ARCHIVO Obtenee los patrones del archivo ARCHIVO -H Imprimir el nombre del archivo con cada coincidencia. -r Buscar recursivamente dentro de todos los subdirectorios del directorio actual. El patrn de bsqueda normalmente es una palabra o una parte de una palabra. Tambin se pueden utilizar expresiones regulares, para realizar bsquedas ms flexibles. Ejemplo 11. Algunos ejemplos simples con el comando grep Si se quisiera buscar la ocurrencia de todas las palabras que comiencen con a minscula, la ejecucin del comando sera algo as: $ grep 'a*' archivo Tambin se pueden aprovechar las tuberas para realizar filtros, lo anterior es equivalente a:

$ cat archivo | grep 'a*'

13. El comando head


Escribe por salida estndar la primera parte de un archivo. Su sintaxis es como sigue: head [opcin...] [archivo...] Si no se especifica el argumento archivo, este comando tomar su entrada de la entrada estndar. La lista de opciones ms importantes sigue a continuacin: -c N Escribe los primeros N bytes. -n N Escribe las primeras N lneas en vez de las primeras 10 (que es el valor predeterminado).

14. El comando less


Este comando es de mucha utilidad; su funcin es paginar texto en pantalla. Muchas veces ocurre que cuando se ejecuta algn comando, la salida del mismo aporta demasiada informacin como para que se pueda leer en la pantalla del monitor. Entonces se puede redireccionar esta salida a less para que permita al usuario leer sin mayores problemas, pudiendo avanzar o retroceder en el texto con las flechas de cursor del teclado. Tambin se utiliza para visualizar archivos de texto almacenados en disco. La idea de less proviene de un paginador llamado more, un clsico en los UNIX. El comando more no era lo suficientemente amigable, por eso hicieron less. Su sintaxis es la siguiente: less [archivo...] El comando less es un programa interactivo, es por lo que no se hablar de argumentos sino de comandos: ESPACIO Si se oprime la barra espaciadora, less avanzar un nmero de lneas igual al nmero de lneas por pantalla que posea la terminal que se est usando. ENTER Pulsando la tecla ENTER se va avanzando de lnea en lnea. G Ir al final del texto. g Ir al inicio del texto. / Ingresar una palabra a ser buscada avanzando dentro del texto. ? Ingresar una palabra a ser buscada retrocediendo dentro del texto. n Ir a la siguiente ocurrencia de la bsqueda AvPg Avanzar una pantalla de texto. RePg

Retroceder una pantalla de texto. v Cargar el editor de texto en el lugar donde se encuentre el usuario dentro del archivo. El editor que normalmente se utiliza es el vi, el cual se explica en Introduccin al editor de textos vi q Salir del programa. R Repintar la pantalla. til cuando se est visualizando un archivo que ha sido modificado por otro programa. Ejemplo 12. Usos del comando less Para visualizar un archivo de texto llamado arch1.txt, se puede utilizar less como sigue: $ less arch1.txt Tambin se puede utilizar tuberas y cat para realizar lo mismo. $ cat arch1.txt | less

15. El comando ln
Este comando sirve para establecer enlaces entre archivos. Un enlace puede ser rgido o simblico. El primer tipo es simplemente una forma de dar otro nombre a un archivo. Por ejemplo teniendo el archivo /etc/passwd, se puede hacer un enlace y tener el nuevo nombre en /home/usuario/claves, y ambos nombres de archivos refirindose al mismo archivo. El segundo tipo es parecido al primero, pero se pueden enlazar directorios, y adems de diferentes sistemas de archivos. Este tipo de enlace es el que ms se utiliza. La sintaxis del comando ln es: ln [opciones] origen [destino] ln [opciones] origen... directorio Sus opciones ms importantes son las siguientes: -d Permite al super-usuario hacer enlaces rgidos a directorios -s Crear enlace simblico. -f Borrar los archivos de destino que ya existen. Ejemplo 13. Algunos usos del comando ln Para el caso del ejemplo anterior, se debera ejecutar: $ ln -s /etc/passwd /home/usuario/claves Cuando se ejecuta ls -l en un directorio donde hay un enlace simblico, ste se muestra de la siguiente manera: usuario@maquina:~/$ ls -l claves lrwxrwxrwx 1 usuario usuario 11 Apr 8 13:33 claves -> /etc/passwd La l al comienzo de la lnea especifica el tipo de archivo listado, en este caso, un link.

16. El comando locate


locate es un comando de bsqueda de archivos, bastante parecido al comando find. La diferencia de locate es que la bsqueda la hace en una base de datos indexada para aumentar significativamente la velocidad de respuesta. Esto quiere decir, que locate realmente no busca en el disco del sistema, sino que en un archivo con la lista de todos los archivos que existen en el GNU/Linux. Generalmente todas las distribuciones de GNU/Linux ejecutan a una hora determinada (generalmente cerca de las 4:00am, ya que tarda algn tiempo realizar esta tarea) un comando para actualizar la base de datos que utiliza locate, dicho comando se llama updatedb. Su sintaxis es: locate PATRN Donde PATRN corresponde al mismo tipo de patrn que en el comando find. Ejemplo de ejecucin: Ejemplo 14. Un ejemplo de uso del comando locate usuario@maquina:~/$ locate locate /usr/bin/locate /usr/lib/locate /usr/lib/locate/bigram /usr/lib/locate/code /usr/lib/locate/frcode /usr/share/doc/kde/HTML/en/kcontrol/kcmlocate.docbook.gz /usr/share/doc/xlibs-dev/XdbeAllocateBackBufferName.3.html /usr/share/doc/xlibs-dev/XdbeDeallocateBackBufferName.3.html /usr/share/doc/xlibs-dev/XtAllocateGC.3.html /usr/share/emacs/20.7/lisp/locate.elc /usr/share/gnome/help/gsearchtool/C/locate.png /usr/share/man/man1/locate.1.gz /usr/share/man/man5/locatedb.5.gz /usr/X11R6/man/man3/XdbeAllocateBackBufferName.3x.gz /usr/X11R6/man/man3/XdbeDeallocateBackBufferName.3x.gz /usr/X11R6/man/man3/XtAllocateGC.3x.gz /var/lib/locate /var/lib/locate/locatedb /var/lib/locate/locatedb.n

Como se puede observar, locate ha listado todos aquellos archivos que posean la palabra locate en su nombre (los directorios estn incluidos).

17. El comando ls
Quizs uno de los comandos de mayor utilizacin, sirve para listar archivos. Su sintaxis es la siguiente: ls [opciones] [archivo...]

Si se ejecuta ls sin argumentos, dar como resultado un listado de todos los archivos (incluyendo directorios) del directorio donde el usuario est posicionado. Sus opciones son: -a Lista todos los archivos, incluyendo aquellos que comienzan con un . [4] -d Lista el nombre del directorio en vez de los archivos contenidos en l. -l Lista los archivos con mucho ms detalle, especificando para cada archivo sus permisos, el nmero de enlaces rgidos, el nombre del propietario, el grupo al que pertenece, el tamao en bytes y la fecha de la ltima modificacin. -r Invierte el orden de listado de los archivos. -s Muestra el tamao de cada archivo en bloques de 1024 bytes a la izquierda del nombre. -h Muestra los tamaos de archivo en trminos de kilobytes, megabytes, etc. -t Lista los archivos ordenados por el tiempo de modificacin en vez de ordenarlos alfabticamente. -A Lista todos los archivos excepto el . y el ... -R Lista los contenidos de todos los directorios recursivamente. -S Ordena el listado por el tamao de los archivos. --color[=cundo] Especifica si emplear color para distinguir los diferentes tipos de archivos. El argumento cundo puede tener varios valores: none No usar colores. Esta opcin es la predeterminada. auto Usar colores solamente cuando la salida estndar es una terminal. always Usar siempre colores. Si ls se usa con la opcin --color sin especificar la opcin de color, el resultado es el mismo que cuando se usa --color=always. Ejemplo 15. Algunos ejemplos utilizando el comando ls Supnganse que se tiene un directorio /usr/local/papers donde se alojan los documentos de un grupo de redactores de una revista, y se quiere saber cules fueron los ltimos documentos modificados y su tamao para su inclusin en el prximo nmero. Para esto se puede ejecutar el comando ls de la siguiente forma: $ ls -lhtr /usr/local/papers Como se puede observar, se le pasan 4 opciones al comando ls, de tal manera que muestre un listado extendido, ordenado por tiempos de modificacin de forma ascendente y que adems muestre los tamaos de archivo en forma ms legible. Otra manera de ejecutar el mismo comando es la siguiente: $ ls -l -h -t -r /usr/local/papers

[4] Como convencin, los archivos cuyos nombres comienzan con un punto se les denomina ocultos.

18. El comando mail


El comando mail es una utilidad simple pero muy funcional que brinda la posibilidad de enviar mails de una manera simple. mail [nombre-destinatario] Se puede utilizar de forma interactiva, con mail usuario@email.com o bien enviar por entrada estandar el contenido del email. Ejemplo 16. Ejemplo sencillo utilizando mail De forma interactiva se finaliza el mail con una lnea que slo contenga un punto (.) $ mail destino@dominio.com.tw Subject: email desde linux! hola este es un lindo email saludos, usuario . Cc: $ En caso de querer enviar cuerpo.txt como cuerpo del mensaje: $ cat cuerpo.txt | mail destino@dominio.com.tw debera hacer el trabajo.

19. El comando man


Quizs uno de los comandos ms importantes para cualquier aprendiz (y a veces no tan aprendiz); el comando man sirve para desplegar en pantalla las pginas de manual, que proporcionan ayuda en lnea acerca de cualquier comando, funcin de programacin, archivo de configuracin, etc. Hay diferentes tipos de pginas de manual, cada tipo se diferencia por un nmero, que se detallan a continuacin: 1. Programas ejecutables y guiones [5] del intrprete de comandos. 2. Llamadas del sistema (funciones servidas por el ncleo). 3. Llamadas de la biblioteca (funciones contenidas en las bibliotecas del sistema). 4. Archivos especiales (se encuentran generalmente en /dev 5. Formato de archivos y convenios, por ejemplo /etc/passwd 6. Juegos. 7. Paquetes de macros y convenios, por ejemplo man(7), groff(7) 8. Comandos de administracin del sistema (generalmente slo son para root).

9. Rutinas del ncleo.

[5] En ingls, scripts, son programas creados en el lenguaje del intrprete de comandos

20. El comando mkdir


Este comando es bastante simple; su finalidad es la creacin de directorios, y su sintaxis es as: mkdir [opciones] directorio... Sus opciones son las que siguen: -m modo Establece los permisos de los directorios creados. -p Crea los directorios padre que falten para cada argumento directorio Ejemplo 17. Ejemplo del uso de mkdir Para crear un directorio en el directorio actual: $ mkdir directorio Tambin se pueden crear directorios en otros subdirectorios existentes: $ mkdir /dir_existente/directorio

21. El comando mv
Este comando se usa tanto para mover archivos, como para renombrarlos (que, al fin de cuentas, es una manera de mover archivos); su sintaxis es la siguiente: mv [opcin...] origen destino mv [opcin...] origen... destino Si el ltimo argumento, destino, es un directorio existente, mv mueve cada uno de los otros archivos a destino. Algunas opciones de este comando son: -f Borrar los archivos de destino existentes sin preguntar al usuario. -i Lo contrario de -f; pregunta por cada archivo a sobreescribir antes de hacerlo. -v Muestra el nombre de cada archivo a ser movido. Ejemplo 18. Ejemplo del uso de mv Si en el directorio actual existe 1 archivo llamado arch1.txt $ mv arch1.txt /usr/doc/ mover arch1.txt al directorio /usr/doc/ manteniendo el nombre de archivo. En cambio,

$ mv arch1.txt /usr/doc/archivoNuevo.txt mover arch1.txt al directorio /usr/doc/ con el nombre archivoNuevo.txt

22. El comando passwd


passwd se utiliza para cambiar la contrasea de usuario, su sintaxis es: passwd [nombre-usuario] Si se especifica nombre-usuario, se cambiar la contrasea de dicho usuario (para esto se debe ser root), sino, la del usuario que ejecuta el comando. La mecnica de cambio de contrasea tiene 3 pasos: 1. Ingresar la contrasea antigua. 2. Ingresar la contrasea nueva. 3. Repetir la contrasea nueva para confirmar.

23. El comando pwd


Este es un comando muy simple y a la vez til. Su funcin es la de imprimir en pantalla el directorio donde el usuario est trabajando. Ejemplo 19. Ejemplo de la utilizacin de pwd usuario@maquina:~ >$ pwd /home/usuario Como se puede observar en el ejemplo, el directorio actual de trabajo es /home/usuario

24. El comando rm
He aqu un comando peligroso, rm se utiliza para borrar archivos o directorios, su sintaxis es: rm [opciones] archivo... Se debe siempre pensar dos veces lo que se est haciendo antes de ejecutar este comando. Quizs esto parezca una advertencia para tontos, pero ms an cuando se est administrando un equipo que da servicios a varios usuarios, un teclazo en falso, y fcilmente se pierden datos importantes. Sus opciones ms utilizadas son: -f No imprimir mensajes de error, ni pedir al usuario una confirmacin por cada archivo que se vaya a borrar. -r Borrar los contenidos de directorios recursivamente. -v Muestra el nombre de cada archivo eliminado. El argumento archivo puede ser tanto un nombre de archivo, como una expresin regular. Ejemplo 20. Un ejemplo del uso del comando rm Para borrar un archivo en el directorio actual llamado arch1.txt

$ rm arch1.txt pedir confirmacin. Para no tener que confirmar se utiliza la opcion -f $ rm -f arch1.txt El comando rm no permite borrar directorios directamente. Pero existen opciones que pueden ayudar para eliminarlo sin confirmacin. Cuidado con el uso de estas opciones. $ rm -rf directorio Eliminar completamente el directorio sin importar su contenido.

25. El comando sort


Este comando se utiliza para ordenar lneas de texto a partir de varios criterios, su sintaxis es similar a la de todos los comandos: sort [opcin...] [archivo...] Si no se le provee al menos un argumento archivo, este comando tomar su entrada de la entrada estndar, ya veremos esto en la seccin Entrada, salida y error estndar. El criterio de orden que utiliza sort por defecto es alfabtico, esto se debe tener en cuenta siempre que se necesite ordenar listas de nmeros, si no se le especifica a sort que debe ordenar numricamente, tomar a los nmeros como una lista de caracteres y el ordenamiento no ser el esperado. A continuacin se listan las opciones ms comnmente usadas: -n Utilizar ordenamiento numrico. -r Ordenar en forma inversa. -f Tratar igualmente a las maysculas y minsculas. -d Utilizar el mtodo de ordenamiento de diccionario (slo toma en cuenta espacios en blanco y caracteres alfanumricos). Ejemplo 21. Un ejemplo del uso de sort Damin necesita limpiar su directorio personal de archivos innecesarios y para ello obtuvo una lista similar a esta: 384746 MP3 2613 Mail 82716 Internet 8534 Fotos 132 zaxxon 5921 proyectos

La cual tiene almacenada en un archivo /home/damian/lista.txt. Para poder ver fcilmente cul directorio ocupa ms espacio y as revisarlo y limpiarlo, Damin ejecutar el siguiente

comando: $ sort -nr lista.txt Obteniendo de esta manera la lista ordenada numricamente y en forma descendiente: 384746 MP3 82716 Internet 8534 Fotos 5921 proyectos 2613 Mail 132 zaxxon

Notar que si no se utiliza la opcin -n, la lista se ordenar en forma incorrecta: 8534 Fotos 82716 Internet 5921 proyectos 384746 MP3 2613 Mail 132 zaxxon

26. El comando tail


El comando tail es al head como el less es al more [6]. El comando tail escribe a la salida estndar la ltima parte de un archivo. Su sintaxis es: tail [opcin...] [archivo...] Al igual que head, si no se le proporciona un argumento archivo, este comando tomar su entrada desde la entrada estndar. Alguna de sus opciones son las siguientes: -c N Escribe los ltimos N bytes. -n N Escribe las ltimas N lneas. -f Escribir la ltima parte del archivo a medida que va creciendo. Esta opcin es muy til para monitorear archivos de registro que van creciendo con el tiempo. Ejemplo 22. Ejemplo del uso del comando tail Un uso muy comn de tail es utilizarlo para inspeccionar logs (o bitcoras) del sistema. $ tail -n 10 /var/log/messages mostrar las ultimas 10 lneas del log messages. En el caso que se quiera tener un seguimiento de un log en especial se puede utilizar la opcin -f $ tail -n 10 -f /var/log/messages

mostrar las ultimas 10 lneas del log messages. Y luego quedar a la espera de nuevas lneas por aparecer en el final del archivo.

[6] Perdonen al autor, aunque a veces es interesante mezclar conceptos matemticos con informticos, ste no es el caso.

27. El comando touch


Este comando se utiliza para cambiar la fecha de acceso y/o modificacin a un archivo. Su sintaxis es la que sigue: touch [opcin...] archivo... Si el argumento archivo corresponde al nombre de un archivo que no existe, a menos que se le diga, touch crear el archivo con dicho nombre y sin ningn contenido. Sus opciones de mayor importancia son: -a Cambia solamente el tiempo de acceso. -c No crear archivos que no existan antes. -d fecha Usar fecha en lugar de la fecha actual. El formato de fecha es el siguiente: MMDDHHMMAAAA, por ejemplo para representar el 7 de abril de 2002 a la 1:00 a.m., se escribir: 040701002002. Si el ao a usar es el ao actual, se puede obviar, entonces el ejemplo anterior quedara as: 04070100. Este comando es muy til cuando se necesita recompilar cierta parte de un programa evitando compilar todo el programa completo, slo aquellos sectores modificados [7]. Ejemplo 23. Un ejemplo de la utilizacin de touch En el caso que no exista en el directorio actual el archivo arch1.txt, $ touch arch1.txt crear un archivo llamado arch1.txt vaco (tamao 0). es de suponer que la fecha de creacin y modificacin sern el momento actual.

28. El comando wc
El nombre del comando wc proviene de word count, y como es de suponer, sirve para contar palabras. Pero no slo palabras como se ver a continuacin. Su sintaxis es como sigue: wc [opcin...] [archivo...] Si se omite el argumento archivo, wc tomar los datos (naturalmente) de la entrada estndar. La lista de opciones ms importantes es la siguiente: -c Contar bytes. -l

Contar lneas. -w Contar palabras. Ejemplo 24. Ejemplo del uso de wc Como ejemplo, se pueden contar las lneas del archivo /etc/passwd y de esta manera se sabr rpidamente cuntos usuarios tiene definidos el sistema: usuario@maquina:~/$ wc -l /etc/passwd 32 /etc/passwd Se pueden combinar varios argumentos a la vez.

29. El comando whereis


Este comando se utiliza para localizar el archivo binario, el cdigo fuente y la pgina de manual de un determinado comando. Su sintaxis es como sigue: whereis [opciones] archivo... La lista de opciones ms utilizadas es: -b Buscar solamente el archivo binario. -m Buscar solamente la pgina manual. -s Buscar solamente el cdigo fuente. Como ejemplos, se ve lo siguiente: Ejemplo 25. Ejemplo del uso de whereis usuario@maquina:~/$ whereis -m whereis whereis: /usr/share/man/man1/whereis.1.gz usuario@maquina:~/$ whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/man/passwd.5.gz En el primer case se ha pedido la pgina de manual del mismo comando whereis [8] , mientras que en el segundo se han pedido todos los archivos que tengan que ver con el comando passwd.

[8] El lector ya est advertido que al autor le gustan las recursividades, por favor perdnenlo.

30. El comando whoami


ste es otro comando muy simple como pwd. Su funcin consiste en presentar en pantalla el nombre de usuario del usuario que lo ejecuta. Ejemplo: usuario@maquina:~/$ whoami usuario

31. Agradecimientos
La realizacin de este manual habra sido mucho ms difcil sin la ayuda de los coordinadores del proyecto LuCAS[9] Ismael Olea Gonzlez, Juan Jos Amor Iglesias y Csar Ballardini. No podemos dejar de agradecer tambin a Linus Torvalds por su gran aporte al software libre, a Richard M. Stallman por preocuparse por las libertades del software y finalmente agradecemos a toda la comunidad de desarrolladores, redactores, y toda aquella gente que aporta su grano de arena en este mundo, el mundo del software libre.

[9] http://lucas.hispalinux.es

32. Agradecimientos
La realizacin de este manual habra sido mucho ms difcil sin la ayuda de los coordinadores del proyecto LuCAS[10] Ismael Olea Gonzlez, Juan Jos Amor Iglesias y Csar Ballardini. No podemos dejar de agradecer tambin a Linus Torvalds por su gran aporte al software libre, a Richard M. Stallman por preocuparse por las libertades del software y finalmente agradecemos a toda la comunidad de desarrolladores, redactores, y toda aquella gente que aporta su grano de arena en este mundo, el mundo del software libre.

[10] http://lucas.hispalinux.es

33. Agradecimientos
La realizacin de este manual habra sido mucho ms difcil sin la ayuda de los coordinadores del proyecto LuCAS[11] Ismael Olea Gonzlez, Juan Jos Amor Iglesias y Csar Ballardini. No podemos dejar de agradecer tambin a Linus Torvalds por su gran aporte al software libre, a Richard M. Stallman por preocuparse por las libertades del software y finalmente agradecemos a toda la comunidad de desarrolladores, redactores, y toda aquella gente que aporta su grano de arena en este mundo, el mundo del software libre.

[11] http://lucas.hispalinux.es

34. Introduccin a Apache


Apache es un servidor del protocolo http, comunmente llamado servidor web pues es la mayor utilidad para dicho protocolo. Cuando pensamos en un servidor web imaginamos un grupo de pginas web que determinan un sitio web. Un servidor como Apache puede alojar varios sitios, y pueden coexistir varios servidores Apache en un slo equipo. Bsicamente Apache lee un directorio con todo el contenido posible a enviar y los navegadores[12] piden las pginas (o recursos) para luego, por ejemplo, mostrarlos en pantalla. Es el funcionamiento ms bsico de un servidor, sin embargo, los servidores actuales realizan muchas tareas complejas. Un ejemplo sera modificar el recurso para personalizarlo y luego enviarlo. O ejecutar un programa y que la salida de este programa devuelva el recurso a enviar. Comunmente estos programas se llaman scripts y se tienden a escribir en lenguajes

que fueron creados para ese propsito, como lo es PHP, Python o versiones actuales de Perl. El archivo de configuracin de Apache principal puede ser /etc/httpd.conf o /etc/http.d/conf/ httpd.conf o /etc/apache/httpd.conf segn la distribucin y versin de Apache. En este archivo se determinan los directorios a utilizar, los mdulos a cargar, permisos y muchsimos detalles ms. Veremos los ms importantes.

[12] Llamados browsers en ingls

35. La directiva VirtualHost


Para atender varios dominios en un slo servidor Apache se debe usar la directiva de bloque VirtualHost. Como su nombre indica, realiza el trabajo de host virtual. Podemos configurar las opciones comunes en el bloque principal y las opciones especficas a los hosts en los bloques correspondientes. User apache Group apache <VirtualHost www.dom1.com.ar> ServerName www.dom1.com.ar ServerAdmin webmaster@un-lugar.org.ar DocumentRoot /var/www/sitio1/ </VirtualHost> <VirtualHost www.dom2.com.ar> ServerName www.dom2.com.ar ServerAdmin webmaster@un-lugar.org.ar DocumentRoot /var/www/sitio2/ </VirtualHost>

El nombre de Host es necesario para diferenciar la peticin del usuario. Tambin se puede utilizar una direccin IP si existen mltiples interfaces. Cuando se ejecute Apache, dependiendo la peticin del cliente, se utilizarn distintos Document Root [13] Pero como configuracin en comn, la ejecucin se har con el usuario apache en ambos casos. Ahora, podemos combinar la directiva de bloque <Directory> para dar opciones particulares a cada directorio de los hosts virtuales, pues sus Document Roots son distintos.

[13] se podra traducir como: Directorio Raz de Documentos.

36. El archivo httpd.conf


El archivo httpd.conf configura el servidor Apache, e incluye otros archivos de configuracin especficos y ms pequeos. El archivo esta ampliamente documentado, [14] cada directiva tiene una descripcin concreta de cmo usarlo, por lo tanto haremos una descripcin breve de las directivas ms importantes. User: Define el usuario que ejecuta al proceso apache. Group: Define el grupo que ejecuta al proceso apache.

ServerName: Nombre del servidor, si se omite, se asigna el nombre del equipo. ServerAlias: Uno o ms alias del servidor. ServerAdmin: Email del administrador para el envio de errores. DocumentRoot: Directorio donde se encuentran los documentos a enviar, debe tener permiso el User y Group mencionados anteriormente. Include: Nombre de archivo a incluir. til para dividir la configuracin en varios archivos pequeos. Otro tipo de directivas son los bloques que su formato es similar a los tags HTML/XML, comienzan con <Directiva Opcion> y finalizan con </Directiva>. Directory Opcion: nombre de directorio. Define propiedades de un directorio a utilizar en el servidor. DirectoryMatch Opcion: expresin regular. Igual que Directory, pero acepta una expresin regular para generalizar los directorios. Files Opcion: nombre de archivo. Define propiedades para un archivo determinado. FilesMatch Opcion: expresin regular. Igual que Files, pero acepta una expresin regular para generalizar los archivos. Location Opcion: URL. Especifica las propiedades de una URL del sitio. LocationMatch Opcion: expresin regular. Como es de esperar, es igual que Location pero se pueden especificar varias URL's con expresiones regulares. VirtualHost Opcion: nombre de host. Especifica propiedades de un slo dominio. Veremos en mayor detalle esta directiva. Un archivo httpd.conf simple: User apache Group apache ServerName www.dominio.org.ar ServerAdmin webmaster@dominio.org.ar DocumentRoot /var/www/ <Directory /var/www> Options Indexes </Directory> En este caso, el usuario y grupo se llaman apache, el servidor se llama www.dominio.org.ar, el email del administrador es webmaster@dominio.org.ar. El directorio donde se encontrarn los recursos es /var/www y como opcin se generan los ndices de cada pgina. A nuestro ejemplo podemos agregarle un directorio llamado images que contenga todas las imgenes del sitio pero no queremos que nadie liste el contenido de ese directorio: <Directory /var/www/images> Options -Indexes </Directory> Recordemos que se debe referenciar el path completo. El `-' sirve para deshabilitar la opcin. Por razones de seguridad, es til agrupar todos los archivos tipo CGI en un directorio nico, por ejemplo cgi-bin el cual debe tener la opcin ExecCGI. <Directory /var/www/cgi-bin> Options -Indexes ExecCGI </Directory>

Y podemos mejorar la seguridad negando la ejecucin de CGI en el resto de los directorios: <Directory /var/www> Options Indexes -ExecCGI </Directory> Queda nuestro archivo de la siguiente manera: User apache Group apache ServerName www.dominio.org.ar ServerAdmin webmaster@dominio.org.ar DocumentRoot /var/www/ <Directory /var/www> Options Indexes -ExecCGI+ </Directory> <Directory /var/www/images> Options -Indexes </Directory> <Directory /var/www/cgi-bin> Options -Indexes ExecCGI </Directory>

[14] Como muchos archivos de configuracin cualquier lnea que comience con ``\#'' se ignora por lo tanto es considerada comentario.

37. COMOs
Los COMOs [15] son documentos en forma de recetas, en los que se trata la forma de realizar tareas especficas del sistema. Estos documentos se encuentran en el directorio principal de documentacin de GNU/Linux, /usr/share/doc/, bajo el subdirectorio HOWTO [16] . Esta documentacin est disponible en texto plano y formato HTML, gracias a esto podemos emplear cualquier paginador (como por ejemplo less) o navegador web para visualizarla. Tambin puede encontrar ficheros cuyo nombre termina en .gz. Dichos ficheros han sido comprimidos con gzip para ahorrar espacio, luego debe descomprimirlos antes de leerlos. Una forma de leer los COMOs comprimidos, sin llenar su disco con versiones descomprimidas, es utilizar zless: La orden zless utiliza las mismas teclas que less, de modo que se puede mover con facilidad a travs del documento.

[15] En Ingls denominados HOWTOs

[16] Las traducciones al espaol de muchos de estos COMOs, se encuentran en el subdirectorio HOWTO/es/, en caso de estar instalados

38. Argentina
Grupos locales en Argentina GrULiC Grupo de usuarios de Linux de Crdoba (http://www.grulic.org.ar/) GULCO Grupo de Usuarios de Linux de Corrientes (http://www.gulco.linux.org.ar/) Linux Santa Fe Grupo de Usuarios de Linux en Santa Fe (http://www.linuxsantafe.com/) LugCOS GNU/Linux Users Group del Centro Oeste Santafesino (http://lugcos.org.ar) LUGAr Linux Users Group Argentina (radicado en Buenos Aires) (http://www.linux.org.ar/) LUGLi GNU/Linux Users Group del Litoral (radicado en Santa Fe) (http://www.lugli.org.ar) LUGMen Grupo de Usuarios de Linux de Mendoza (http://www.linuxmendoza.org.ar/) LUGNA GNU/Linux User Group Neuqun - Argentina (http://www.lugna.linux.org.ar/) LUGro Grupo de Usuarios de GNU/Linux de Rosario (http://www.lugro.org.ar/) LugRa GNU/Linux Users Group Rafaela (http://www.rafaela.linux.org.ar) LUG SeC Grupo de Usuarios de Linux del Sureste de Crdoba (http://www.lug.org.ar/) LUG Tucumn Linux Users Group Tucumn (http://www.tucuman.linux.org.ar/) LugUsh Linux User Group Ushuaia (http://www.lugush.org.ar/) NugLy Nuevos usuarios de GNU/Linux de Jujuy (http://www.nugly.linux.org.ar) PLUG Grupo de Usuarios de GNU/Linux de La Plata (http://www.plug.org.ar/)

39. Bolivia
Grupos locales en Bolivia LUGBOL Linux User Group Bolivia (http://www.linux.org.bo/)

40. Chile
Grupos locales en Chile Linux.CL Linux en Chile (http://www.linux.cl/)

41. Colombia
Grupos locales en Colombia GLUV Grupo Linux Universidad del Valle (http://cluv.univalle.edu.co/) LinuxCOL Grupo de Usuarios Colombianos de Linux (http://linuxcol.uniandes.edu.co/)

42. Costa Rica


Grupos locales en Costa Rica GULCR Grupo de Usuarios de Linux de Costa Rica (http://www.linux.or.cr/)

43. Cuba
Grupos locales en Cuba Linux Cuba Grupo de Usuarios de Linux en Cuba (http://www.linux.cu/)

44. Ecuador
Grupos locales en Ecuador Ecuanex Linux en Ecuador (http://linux.ecuanex.net.ec/)

45. El Salvador
Grupos locales en El Salvador SVLinux Grupo de Usuarios de Linux en El Salvador (http://www.linux.org.sv/)

46. Espaa
Grupos locales en Espaa ADALA Asociacin para el Desarrollo y Avance del software Libre en Andaluca (http://www.adala.org/) AsturLinux Asociacin de Usuarios Asturianos de LiNUX (http://www.asturlinux.org) AUGCYL Asociacin Usuarios GNU/Linux Castilla y Len (http://www.augcyl.org/) AULIR Asociacin de Usuarios de Linux de La Rioja (http://www.aulir.com/) BULMA Bisoos Usuarios de Linux de Mallorca y Alrededores (http://bulmalug.net/) CALIU CAtalan LInux Users (http://www.caliu.org/)

Cat-Linux GNU/Linux en catal! (http://www.cat-linux.com) COALA Colectivo de Apoyo a Linux de Asturias (http://www.coala.uniovi.es/) Euskal Linux Grupo de Usuarios del Pas Vasco (http://www.euskal-linux.org/) GALPON Grupo de Amigos de Linux de Pontevedra (http://galpon.com.uvigo.es) GILUG GIrona Linux Users Group (http://www.gilug.org/) GLUB Grupo de LinuxUarios de Bizkaia (http://glub.ehu.es/) GLUG Grupo de Usuarios de Linux de Galicia (http://www.glug.es/) GPUL Grupo de Programadores y Usuarios de Linux (http://www.gpul.org/) GRULIN Grupo de Usuarios Linux en Navarra (http://www.elpuntofijo.com/grulin/) GRULLA Grupo de Usuarios de Linux de La Almunia (http://grulla.hispalinux.es/) Grupos Locales en Hispalinux Pgina de grupos locales en HispaLinux (http://grupos-locales.hispalinux.es/) GUL Grupo de Usuarios de Linux de la Universidad Carlos III de Madrid (http://gul.uc3m.es/gul/) GULA-ZALE Grupo de Usuarios Linux de lava - Zaletuen Arabako Linux Elkartea (http://www.gula-zale.org/ ) GULAlcarria Grupo de Usuarios de GNU/Linux de Guadalajara y alrededores (http:// gulalcarria.sourceforge.net/) GULCA Grupo de Usuarios de Linux de Cdiz (http://www.gulca.org/) GULEF Grupo de usuarios de Linux de Eivissa i Formentera (http://www.clubibosim.org/) GULEX Grupo de Usuarios de Linux/Unix de Extremadura (http://www.gulex.org/) GULIC Grupo de Usuarios de Linux de Canarias (http://www.gulic.org/) GULMU Grupo de Usuarios de Linux de Murcia (http://gulmu.com/) GULS Grupo Usuarios de Linux de Salamanca (http://guls.sourceforge.net/) GuPLe Grupo de usuarios y programadores de Extremadura (http://www.guple.org/) HispaLinux Asociacin de Usuarios Espaoles de GNU/Linux (http://www.hispalinux.es/) IndaLinux Grupo de Usuarios de GNU-Linux de Almera (http://indalinux.hispalinux.es/) LILO LInuxeros LOcos (http://lilo.sourceforge.net/) LiMA

Asociacin de Usuarios "LiNUX Mlaga" (http://www.linux-malaga.org/) LINUCA Asociacin de Usuarios GNU/Linux en Cantabria (http://www.linuca.org) Linux-Madrid Grupo local de GNU/Linux de madrileos y otros convecinos (http://linux-madrid.hispalinux.es/) Llug Lleida Linux User Group (http://www.llug.net/) MaCHeGoX Grupo de Usuarios de Linux de Castilla-La Mancha (http://www.geocities.com/ alcazardesanjuan/) PoLinux Asociacin Usuarios de Linux de la UPV (http://www.polinux.upv.es/) SLen Asociacin de Software Libre de Len (http://www.sleon.org/) SUGUS Asociacin de GNU/Linux - Sevilla (http://sugus.eii.us.es/) USUALIZA USUArios de LInux de Zamora (http://www.linux-zamora.org) VALUX Asociacin de usuarios de LINUX de la Comunidad Valenciana (http://www.valux.org/) ZARALINUX Asociacin de Usuarios de Linux de Zaragoza (http://piramide.unizar.es/zaralinux/)

47. Guatemala
Grupos locales en Guatemala GLUG Guatemala Linux User Group (http://linux.guatemala.org/) GUUG Grupo de usuarios de Unix en Guatemala (http://www.guug.org/)

48. Introduccin
Los grupos locales son agrupaciones de personas que fsicamente se reunen y realizan actividades en una zona determinada. Estos grupos tienen unas particularidades que los diferencian de asociaciones nacionales o grupos de trabajo virtuales: necesitan un punto de reunin (un local, por ejemplo), hacen actividades a nivel de suelo destinadas a la promocin del Software Libre entre el ciudadano de la calle (conferencias, fiestas de instalacin, colaborar con colegios, centros culturales, otras asociaciones, etc.). Todo esto significa que sus cometidos son mucho ms que un mero contacto por Internet. A continuacin se presenta una lista de los grupos locales existentes en el mundo hispanohablante (si conoces alguno que no aparezca en esta lista, contacta con nosotros, por favor):

49. Mxico
Grupos locales en Mxico GLO Grupo Linux de Occidente (http://www.glo.org.mx)

GNU/Linux en Mxico Grupo de Usuarios de GNU/Linux en Mxico (http://www.linux.org.mx/) GULEV Grupo de Usuarios de GNU/Linux (http://veracruz.linux.org.mx) GULMT Grupo de Usuarios de Linux de Mxico en Toluca (http://www.internetica.net.mx/linux/) Linux CEM Grupo de Usuarios de Linux del ITESM CEM (http://linux.cem.itesm.mx/) Linux Monterrey Grupo de usuarios de GNU/Linux en Monterrey (http://www.interclan.net/rsepulveda) Linux Puebla Grupo de Usuarios de Linux en Puebla en el Estado de Veracruz (http://www.linuxpuebla.org)

50. Per
Grupos locales en Per AQPLUG Grupo de Usuarios de Linux en Arequipa (http://linux.aqp.com.pe/) PLUG Grupo de Usuarios de Linux en Per (PLUG por las siglas en Ingls - Peruvian Linux User Group) (http://www.linux.org.pe/)

51. Puerto Rico


Grupos locales en Puerto Rico LUBOR Linux Usuarios Boricua (http://www.geocities.com/Area51/Stargate/4428/linux.html)

52. Uruguay
Grupos locales en Uruguay UYLUG Grupo de Usuarios de Linux del Uruguay (http://www.linux.org.uy/)

53. Venezuela
Grupos locales en Venezuela VELUG Grupo de Usuarios de Linux de Venezuela (http://www.linux.org.ve/)

54. Introduccin
En esta seccin, se proveer al lector de una lista de recursos en Internet, desde los que puede extraer informacin de todo tipo, e incluso software para GNU/Linux.

55. Listas de correo


Las listas de correo son un recurso muy til a la hora de solucionar problemas. El hecho de que

participe mucha gente en estas listas, hace ms factible el recibir una respuesta a algn pedido o consulta que se realice. Las reglas de convivencia en dichas listas, aconsejan a los participantes ayudar cada vez que se pueda, y antes de consultar algo, leer toda la documentacin posible . De esta manera no se genera trfico innecesario en la lista. HispaLinux [17] dispone de un servicio de listas de correo para la comunidad de usuarios y desarrolladores de Software Libre. La relacin de listas de correo disponibles est alojada en https://listas.hispalinux.es/mailman/listinfo , desde donde obtendrs la informacin sobre cada lista y la forma de subscribirte. En http://calvo.teleco.ulpgc.es/mailman/listinfo/l-linux se encuentra disponible la lista de correo L-Linux. Desde la interfaz de Mailman puedes acceder al histrico de la lista, obtener informacin sobre ella y subscribirte. Normalmente los Grupos Locales disponen de listas de correo propias, si ests interesando en alguna de ellas visita sus pginas, donde obtendrs toda la informacin necesaria.

[17] Asociacin de Usuarios Espaoles de GNU/LiNUX

56. Documentacin
La siguiente lista presenta las pginas ms importantes de documentacin disponibles en Internet: Pginas con documentacin INSFLUG http://www.insflug.org/, pgina donde se coordina la traduccin oficial de documentos breves, como los COMOs y PUFs o Preguntas de Uso Frecuente [18] NuLies http://nulies.hispalinux.es/, proyecto dedicado a la traduccin al castellano de aquellas partes del ncleo Linux cuya traduccin sea til para la inmensa mayoria de hispanoparlantes PAMELi http://ditec.um.es/~piernas/manpages-es/, los esfuerzos de la traduccin al castellano de las pginas del manual se encuentran en esta localizacin Pedro Reina http://pedroreina.org, Pgina personal de Pedro Reina, profesor de Enseanza Secundaria. En esta pgina est disponible el curso de informtica realizado por Pedro, basado en herramientas de libre distribucin TLDP-ES/LuCAS http://es.tldp.org/, como se puede leer en la pgina del Proyecto, LuCAS es la mayor biblioteca en espaol dedicada a GNU/LiNUX de todo el planeta

[18] FAQs en ingls

57. Informacin
Coleccin de enlaces con informacin relativa al sistema operativo GNU/Linux: Direcciones de informacin es.comp.os.linux.* http://www.escomposlinux.org, Pgina de los grupos de noticias de Linux de la jerarqua es.comp.os.linux.*

El rincn de Linux http://www.linux-es.com/, Esta pgina es un buen punto de partida para aquellos que necesitan encontrar informacin sobre Linux, principalmente en castellano GNU No Es Unix! http://www.gnu.org/home.es.html, Proyecto donde se origin la filosofa del Software Libre. Visita obligada para quien quiera conocer que es el Software Libre La Gaceta de Linux http://www.gacetadelinux.com/, Traduccin al castellano de la conocida Gaceta inglesa Linux Gazette [19] El objetivo de esta publicacin es hacer Linux un poco ms divertido, compartir ideas y descubrimientos linux.com http://www.linux.com, Sitio dedicado a dar informacin general sobre muchos aspectos del sistema LinuxFocus http://linuxfocus.org/, Revista internacional y libre sobre linux. Est traducida a muchos idiomas, entre los que se encuentra el espaol Linux Today http://linuxtoday.com/, Pgina destinada a los profesionales interesados en mantener nivel de conocimiento alto sobre Linux y el Cdigo Abierto

[19] La versin inglesa puede encontrarse en: http://www.linuxgazette.com/

58. Noticias
A continuacin se muestran algunas pginas dedicadas a noticias sobre el Software Libre en general y GNU/Linux en particular: Pginas de noticias Barrapunto http://www.barrapunto.com, Foro de noticias relacionadas con GNU/Linux, en castellano Kernel Trafic http://kt.zork.net/kernel-traffic/, Noticias semanales sobre la actividad del ncleo Linux Kuro5hin http://www.kuro5hin.org/, Pgina dedicada a la tecnologa y a la cultura. Informacin de calidad, para gente a la que le gusta pensar linux.org http://www.linux.org, Sitio oficial de Linux, el ncleo del sistema GNU/Linux. Aqu se encuentran entre otras cosas, las ltimas versiones del ncleo a medida que se van publicando Linux Weekly News http://lwn.net/, ltimas noticias relacionadas con GNU/Linux, en ingls SlashDot http://www.slashdot.com/, Foro de noticias relacionadas con GNU/Linux, en ingls Planeta Linux http://www.planetalinux.com.ar/, La fuente Argentina de recursos Linux

59. Programas y aplicaciones


Hay multitud de programas y aplicaciones para GNU/Linux, la mejor forma de encontrarlos es visitando las siguientes pginas: Direcciones tiles

DistroWatch.com http://www.distrowatch.com/, Comparativas de las distribuciones GNU/Linux ms importantes. Un buen punto de partida para conocer las distintas distribuciones existentes Freshmeat http://freshmeat.net, Este sitio est dedicado a la recoleccin de Software Libre de todo tipo, dividido por categoras ibiblio http://metalab.unc.edu, Repositorio de software y distribuciones de GNU/Linux Kernel.org http://www.kernel.org, Sitio principal para obtener el cdigo fuente de Linux LinuxISO http://www.linuxiso.org, Pgina donde podrs encontrar las imagenes ISO de algunas distribuciones de GNU/Linux, listas para ser grabadas RmpFind http://rpmfind.net, Buscador de aplicaciones, la caracterstica de este es que todos los programas estn empaquetados en RPM SourceForge http://sourceforge.net/, Servicios gratuitos para los desarrolladores de Software Libre, en el que se podrn encontrar aplicaciones de cdigo abierto de todo tipo

60. Filosofa RTFM


La gran disponibilidad de documentacin gener una costumbre entre los usuarios de GNU/ Linux, la Filosofa RTFM: Read The Fucking Manual, que en castellano se dira Lea Los Malditos Manuales. A mucha gente le resulta molesto que los recin iniciados (y los no tan nuevos) suelan preguntar cosas triviales sin siquiera leer la documentacin que acompaa a las distribuciones. Al existir toda clase de informacin sobre el sistema, uno debe informarse lo mximo posible por su cuenta antes de pedir ayuda. Esta es una forma de cortesa ante los dems, y es la forma en que se comporta la gente de la comunidad GNU/Linux.

61. Introduccin
Una de las ms importantes caractersticas de todo sistema GNU/Linux, es la calidad y cantidad de la documentacin que se incluye: pginas del manual, COMOs, guas, libros, etc. De esta forma, el usuario tiene a su disposicin los recursos necesarios para informarse de cada detalle del sistema.

62. Linux en Santa Fe, Argentina


Aunque quizs no parezca, GNU/Linux est tomando muchos adeptos en Santa Fe. Es utilizado exitosamente en varios proveedores de Internet, as como tambin en oficinas de empresas pblicas y privadas. Actualmente existe LUGLi (GNU/Linux Users Group del Litoral), que concentra a los usuarios del Litoral argentino. Su sitio web est en http://www.lugli.org.ar , y una de sus actividades principales es la participacin en una lista de correo, donde cada uno puede consultar sobre temas variados relacionados con GNU/Linux. Para suscribirse a dicha lista, remitirse a ???.

63. Manuales

Adems de la documentacin en lnea y los COMOs, existen verdaderos manuales, que vienen includos en cada distribucin. Originalmente, estos manuales estaban escritos en ingls, pero gracias al esfuerzo del proyecto TLDP-ES/LuCAS (La mayor biblioteca en espaol dedicada a GNU/LiNUX de todo el planeta), en la actualidad existe una gran cantidad de documentacin en nuestro idioma. Las ltimas versiones de los manuales en castellano se pueden obtener del sitio web de TLDPES/LuCAS (http://es.tldp.org/) Algunos manuales disponibles en castellano LIPP Linux Instalacin y Primeros Pasos, una gua bien bsica, especial para los recin iniciados GARL Gua de Administracin de Redes en Linux [20] , una gua avanzada sobre la configuracin de los diferentes servicios de red que un servidor GNU/Linux puede proveer GLUP Gua del Usuario de Linux, especial para todos los usuarios de GNU/Linux. Abarca las tareas ms cotidianas, como por ejemplo: edicin de archivos, manejo en el shell, manejo del entorno grfico, entre otras GULP Gua Linux de Programacin, al momento de la redaccin de este curso, la GULP se halla en desarrollo, incluye diferentes aspectos de la programacin en C del sistema, desde los conceptos bsicos hasta la programacin con semforos Gua del enRootador de Linux Esta gua pretende dar respuestas muy claras a los problemas que pueden presentarse en la instalacin de GNU/Linux Gua del ncleo Un libro ideal para hackers [21] , programadores y entusiastas de lo desconocido Manual de GNU Bison Una gua muy completa sobre el generador de analizadores sintcticos compatible con YACC, Bison GURH Gua de instalacin oficial de Red Hat Linux [22] , manual que describe paso a paso la instalacin y configuracin de una distribucin Red Hat Linux Introduccin a la administracin de redes TCP/IP Manual introductorio para aquellos que pretenden administrar una red basada en los protocolos de red de Internet (TCP/IP) Manual de GNU Flex Descripcin de la herramienta para la generacin de programas que realizan concordancia de patrones en texto, Flex DNS Historia, descripcin y configuracin del servicio DNS Seguridad en Unix y Redes Pautas para conseguir un nivel de seguridad aceptable en sistemas Unix (con muchas referencias a GNU/Linux) GSAL Gua de Seguridad del Administrador de Linux, un ambicioso manual que har las delicias a todos los paranoicos de la seguridad :-) Usando Samba Traduccin del conocidsimo libro Using Samba editado por O'Reilly LDP Manifiesto Manual que detalla los objetivos y estado actual del proyecto de documentacin Linux [23] Gua de Programacin de Mdulos del Ncleo Linux

Libro destinado a programadores que conocen el lenguaje C, en el que se describe cmo programar Mdulos del Ncleo Linux Dentro del ncleo Linux 2.4 El funcionamiento interno del ncleo Linux en su versin 2.4 queda reflejado en este manual Gua de usuario de Ruby Tras la lectura de esta gua, el lector ha de ser capaz de ejecutar y utilizar el lenguaje de programacin Ruby Interconexin IrDA con Linux Cmo conectar nuestro GNU/Linux va IrDA a dispositivos IPAQ, PALM, GSM... Administracin de una red local basada en Internet Una introduccin para aquellas personas que pretendan administrar una red basada en los protocolos de red de Internet (TCP/IP) Anlisis de seguridad de la familia de protocolos TCP/IP y sus servicios asociados Introduccin al mundo de la seguridad de los sistemas de informacin, enfocado en la familia de protocolos de comunicaciones TCP/IP Todos estos manuales, y alguno ms, se pueden obtener en varios formatos del sitio TLDP-ES http://es.tldp.org/htmls/manuales.html

[20] Actualmente estn disponibles la versin 1.0 y 2.0 de este manual [21] Es conveniente aclarar que estamos hablando de hackers y no de crackers. Los crackers son aquellas personas con algn problema psicolgico que tienden a hacer dao [22] Actualmente se dispone de las versiones 5.0 y 6.0 de este manual [23] En ingls Linux Documentation Project, de ah el acrnimo LDP

64. Pginas Info


Mientras man es el formato de documentacin ms extendido, info es mucho ms potente. Proporciona enlaces de hipertexto para hacer mucho ms sencilla la lectura de documentos grandes y muchas ayudas para quien escribe la documentacin. Para leer la documentacin de info, use el programa info sin ningn argumento. Le presentar una lista de documentacin disponible. Si no puede encontrar algo, es probable que sea debido a que no tiene instalado el paquete que incluye dicha documentacin. El sistema info es un sistema basado en hipertexto. El texto que aparezca resaltado es un enlace que apunta a ms informacin. Las teclas ms importantes cuando maneja info son: Tab para mover el cursor a un enlace Intro para seguir un enlace p le devolver a la pgina previa n le enviar a la pgina siguiente u subir un nivel de la documentacin q para abandonar info La mejor manera de usar info es leer la documentacin info acerca de l. Si lee la primera pgina que info le presente, ser capaz de comenzar a usarlo.

65. Pginas del Manual


Se les llama Pginas del Manual a la documentacin en lnea del sistema. Existe una pgina del manual por casi cada comando de GNU/Linux. La forma de consultar esta documentacin (en un terminal de texto) es mediante la orden man seguida del comando sobre el cual se quiere obtener la informacin. Por ejemplo, si necesitamos ver las opciones del comando mount (para montar sistemas de archivos), se debera ejecutar man mount. La pgina del manual se muestra mediante el programa less, (el cual facilita la lectura del documento pantalla a pantalla), por lo que todas las opciones de less funcionarn cuando lea una pgina del manual. Las teclas ms importantes de less son: Teclas ms importantes de less q para salir Intro para avanzar lnea a lnea Espacio para avanzar pgina a pgina b para retroceder una pgina / seguido de un texto y de la tecla Intro para buscar dicho texto n para encontrar la siguiente coincidencia de la bsqueda actual

66. Secciones de una Pgina del Manual


Las pginas del manual proporcionan una gran cantidad de informacin en muy poco espacio, por lo pueden ser difciles de leer. Veamos brevemente las principales secciones de la mayora de las pginas del manual: Secciones Nombre el nombre del programa o programas documentados en la pgina del manual. Puede haber ms de un nombre, si los programas estn estrechamente relacionados entre s Sinopsis sintaxis de la rden, mostrando brevemente todas sus opciones y argumentos Descripcin una descripcin corta de la funcin del programa Opciones una lista de todas las opciones del programa, con una descripcin corta de cada una (a menudo combinada con la seccin anterior) Ver tambin si existe, indica los nombres de otros programas que estn relacionados de alguna manera con el actual Ficheros si existe, contiene una lista de ficheros que son usados y/o modificados por el programa History si existe, contiene hitos importantes del desarrollo del programa Autores los nombres de quienes han escrito el programa

Si es un recin llegado a GNU/Linux, no espere servirse de las pginas del manual como guas paso a paso, ya que se entienden como material conciso de referencia o consulta. Intentar aprender GNU/Linux utilizando las pginas del manual, es como pretender aprender ingls leyendo un diccionario.

67. Introduccin al editor de textos vi


El editor vi es lo que se conoce como un editor de pantalla, donde uno apenas realiza los cambios en el archivo que se est editando, los visualiza. Los sistemas basados en UNIX en general traen consigo instalados varios editores de texto, y vi es uno de los ms conocidos y accesibles, y es por eso que conocer al menos los rudimentos de este editor es muy conveniente. Quizs al usuario novato o venido de otros entornos diferentes a UNIX le parezca un tanto extrao el uso de este editor, ya que no utiliza mens desplegables, ni teclas de funcin convencionales. Sin embargo, vi es un editor de texto extremadamente potente, cuyo manejo con la prctica permite realizar tareas avanzadas de edicin muy rpidamente. Para hacer uso de este editor, slo se ejecuta pasndole como argumento el nombre del archivo a editar: $ vi <nombre_de_archivo> Bsicamente, vi posee dos modos de funcionamiento: el modo de insercin y el modo de comandos. Apenas se carga vi, el editor se encuentra en modo de comandos, es decir, que el teclado no est activado para recibir texto y agregarlo al archivo, sino que cada tecla del teclado corresponde a un comando del editor. Ms adelante se listarn los comandos ms comnmente utilizados. Ahora se vern los conceptos para utilizarlos. Para ingresar al modo de insercin, slo es necesario presionar la tecla Insert del teclado. Luego ya es posible ingresar texto normalmente, como se puede observar en la figura Figura 1. vi en modo insercin. Para volver al modo de comandos, basta con presionar la tecla Esc. Figura 1. vi en modo insercin

En modo de comandos, se debe tener en cuenta que generalmente el comando que se ejecuta se aplica a la lnea o carcter donde se encuentre el cursor. As por ejemplo, si se presiona la tecla x[24], se borra el carcter donde el cursor est posicionado. Otro ejemplo es, si se presiona 2 veces consecutivas la tecla d, se eliminar la lnea completa donde se encuentre el cursor. Adems del modo de comandos normal que posee vi, donde no es necesario presionar la tecla Enter para ejecutar comandos, existe otra manera de ejecutarlos: vi utiliza detrs de cmaras el editor de lnea ex. Muchos de los comandos que se necesitan, se ejecutan a travs de ex. Para activar el modo de comandos de este editor de lnea, se presiona la tecla : y luego se escribe el comando, seguido de Enter, como veremos ms adelante. Como ejemplo se puede dar uno muy interesante: para salir de vi sin grabar en disco se debe escribir :q! seguido de la tecla Enter. Una particularidad que posee vi es la de poder hacer repeticiones de comandos. Si se escribe un nmero (en modo de comandos, obviamente) inmediatamente seguido de un comando, este comando se ejecutar la cantidad de veces que se le haya especificado. Un ejemplo prctico de esto es que si se necesita eliminar 3 lneas de texto, con el comando 3dd se puede realizar en vez de ejecutar dd 3 veces. A continuacin se listan los comandos ms comnmente utilizados: i

Ingresar al modo insercin. r Ingresar al modo insercin (reemplazo). cw Reemplazar hasta el final de palabra. D Borrar desde el cursos hasta el final de la lnea. ZZ Salir de vi grabando los cambios. $ Ir al fin de lnea. Es equivalente a la tecla Fin. ^ Ir al comienzo de lnea. Es equivalente a la tecla Inicio. dd Cortar lnea al portapapeles (tambin se usa para borrar). Y Copiar la lnea actual al portapapeles. p Pegar el contenido del portapapeles a la derecha del cursor. P Pegar el contenido del portapapeles a la izquiera del cursor. o Comenzar la edicin abajo del cursor. O Comenzar la edicin arriba del cursor. a Comenzar la edicin a la derecha del cursor. Adems, los comandos de ex ms comnmente utilizados son: :wq Salir de vi grabando los cambios. :w Grabar los cambios sin salir. :n,m s/cadena1/cadena2/g Buscar cadena1 y reemplazarla por cadena2 desde la lnea nmero n hasta la lnea nmero m (se puede escribir $ para hacer referencia al final del archivo). :q! Salir sin grabar los cambios. Como comando adicional, es importante nombrar al comando de bsqueda. ste se ejecuta presionando la tecla / seguida de la cadena de texto a buscar, y Enter para confirmar. El cursor se posicionar en la primera ocurrencia de la cadena a buscar. Presionando n se buscar la siguiente ocurrencia de la bsqueda. Ejemplo 26. Bsqueda y reemplazo en vi Una tarea que quizs parezca complicada es la de buscar y reemplazar, por lo que se presenta un ejemplo aclaratorio. Supngase el caso de Figura 2. Comando de buscar y reemplazar en vi. Se puede observar que se quiere reemplazar desde la lnea 1 hasta el final del archivo todas las ocurrencias de vi por emacs[25]. El resultado se puede observar en Figura 3. Resultado del reemplazo en vi. Como se ve, se han reemplazado todas las ocurrencias de la cadena vi. Esto a veces no es lo correcto, como puede observarse. Figura 2. Comando de buscar y reemplazar en vi

68. Bsqueda de archivos


Es muy comn querer buscar archivos en Internet, especialmente software. La comunidad GNU/Linux se dedica a diario a mejorar y mejorar los programas y documentos. Por lo tanto, es muy comn tener una distribucin vieja pero estar al da con los programas ms usados. La extensin original en el mundo de Unix para los paquetes fue .tar.gz o .tgz que era simplemente un rbol de directorio con archivos. Hoy, gracias a varios programadores, existen paquetes que fueron pensados no slo para instalar sino para desinstalar, mantenerlos e instalarlos por partes: los llamamos RPM [26] en nuestro curso.

[26] RPM es un tipo especial de paquetes, hay varios tipos como por ejemplo DEB. Figura 3. Resultado del reemplazo en vi

Ejemplo 27. Repeticin de comandos en vi Supngase que se tiene un prrafo de 10 lneas en un texto que se debe mover a otro sitio del archivo. Una solucin no muy ptima es borrar las lneas y volver a escribirlas donde

corresponde; pero mejor an es cortar esas 10 lneas y pegarlas en el nuevo sitio. Para ello, el cursor debe estar posicionado en la primer lnea del prrafo. Luego ejecutar el comando 10dd, posicionar el cursor en el lugar donde debe ir el prrafo y ejecutar el comando p. As de fcil!

[24] Siempre tener en cuenta que las maysculas se diferencian de las minsculas. Es un error muy comn tener el Bloq Mays activado. [25] Emacs es otro editor de texto excelente, por cierto.

68. Bsqueda de archivos


Es muy comn querer buscar archivos en Internet, especialmente software. La comunidad GNU/Linux se dedica a diario a mejorar y mejorar los programas y documentos. Por lo tanto, es muy comn tener una distribucin vieja pero estar al da con los programas ms usados. La extensin original en el mundo de Unix para los paquetes fue .tar.gz o .tgz que era simplemente un rbol de directorio con archivos. Hoy, gracias a varios programadores, existen paquetes que fueron pensados no slo para instalar sino para desinstalar, mantenerlos e instalarlos por partes: los llamamos RPM [26] en nuestro curso.

[26] RPM es un tipo especial de paquetes, hay varios tipos como por ejemplo DEB.

69. Chat
Una de las actividades ms adictivas en Internet es el chat. Cada da se hace ms popular el chat a travs de programas de chat o irc [27] . Para chatear existen varios programas. En KDE el ms usado es ksirc. Se encuentra en K>Internet->Cliente de irc. Si bien existen muchos clientes ms, ste es relativamente simple como para empezar. En la pantalla principal (Figura 4. Pantalla principal de ksirc) hay un men llamado Conexiones con una entrada que dice Nuevo servidor.. Figura 4. Pantalla principal de ksirc

En la Figura 5. Conectarse a un servidor en ksirc muestra un cuadro de dilogo para completar el nombre de servidor (como por ejemplo us.undernet.org) Figura 5. Conectarse a un servidor en ksirc

Una vez conectado se puede unir a un canal escribiendo /join nombre_de_canal como por ejemplo /join #santafe. Tambin hay otros comandos: /whois nick: muestra informacin de un determinado nick /ping nick: intenta definir cunto tiempo tarda un mensaje en llegar a nick. /help: brinda ayuda de otros comandos. Figura 6. Conectado a un servidor en ksirc

[27] No es lo mismo irc que chatear a travs de web.

70. Conectarse
Lo primero que hay que hacer es configurar una cuenta de Internet. Los pasos son

relativamente simples usando el kppp. El kppp se puede ejecutar desde terminal o clickeando en K->Internet-> Conexin a Internet. Figura 7. Vista inicial del kppp

Luego hay que ir a Configuracin (Figura 8. Configuracion del kppp) para crear una conexin a Internet con un click en Nueva (Figura 9. Nueva conexin). Figura 8. Configuracion del kppp

Figura 9. Nueva conexin

Pudiendo as rellenar los datos del provedor de Internet. Los datos importantes son: el nombre y el nmero a marcar. Luego hay que ir a la lengeta Servidor Nombres y poner la direccin IP del Servidor de Nombres o Servidor DNS, que es parte de la informacin que nos brinda el proveedor de Internet. Una vez configurado ya se puede elegir como parte de las posibles configuraciones en Conectar con. Slo falta el nombre de usuario y la clave como muestra la Figura 10. Conexin a internet con todos los datos. Figura 10. Conexin a internet con todos los datos

71. Correo electrnico


El mayor trfico de Internet actual no es el producido por los programas de Web, sino por el Correo Electrnico. Para utilizar el correo electrnico hay que poseer una cuenta POP3 en algn servidor. Los datos importantes son: Cuenta Clave Servidor de POP3 Servidor de SMTP Un programa bastante bueno de correos es el kmail, que se encuentra en K->Internet->Cliente de correo. La primera vez que es usado tiene que crear un directorio dentro del HOME para guardar los correos. (Figura 12. Primera vez que se ejecuta kmail). Figura 12. Primera vez que se ejecuta kmail

Luego aparece el men de Opciones-Identidad (Figura 13. Menu Opciones-Identidad en kmail) donde hay que completar con los datos que van a aparecer en los emails a enviar. Existe una lengeta Red. All hay que poner SMTP como servidor de correo a enviar. Si bien en Linux viene un servidor de correo llamado sendmail, requiere una mayor configuracin y no est dentro de los lmites del curso bsico. Figura 13. Menu Opciones-Identidad en kmail

72. Navegacin
Una de las principales actividades en Internet es la navegacin. El programa ms usado es Netscape. Este no es software libre, por lo tanto algunas distribuciones no lo traen instalado, como por ejemplo Debian. De todas formas est disponible para bajar desde http:// www.netscape.com. En la distribucin Red Hat, en KDE la ubicacin de Netscape es K->Red Hat->Internet>Netscape Communicator. Si bien en cada distribucin cambian los mens, una forma segura de encontrarlo es escribiendo en una terminal netscape. La primera vez que se ejecuta netscape (Figura 16. Pgina de LUNIX en Netscape) aparecer una ventana con la licencia y los botones Accept y Do Not Accept. Aclaramos que no es sotfware libre, no tiene la licencia GNU que viene con la mayora del software en Linux. Figura 16. Pgina de LUNIX en Netscape

Otra aplicacin que sirve para navegar en pginas no muy complejas es el kfm, que no se lo conoce por ese nombre sino ms bien por Navegador (Figura 17. Pgina de LUNIX en kfm). Cada vez que uno navega entre las carpetas locales utiliza ese programa. Como por ejemplo cuando se clickea en la opcin de men Directorio Personal. Y aparecer una ubicacin similar a file:/home/usuario. Si se reemplaza por http:// se podr navegar por la web. Est en desarrollo y pretende llegar a reemplazar al software comercial. Figura 17. Pgina de LUNIX en kfm

Otra alternativa es la navegacin en texto. Si bien a muchos no les parecer atractiva, es una experiencia distinta. Un programa bastante elaborado es el lynx (Figura 18. Pgina de LUNIX en Lynx). Abriendo una terminal y escribiendo lynx http://www.lynx.org podremos acceder a la pgina de los creadores. Al no mostrar grficos es mucho ms rpido que otros navegadores. Y sin lugar a dudas ocupa mucho menos espacio. Figura 18. Pgina de LUNIX en Lynx

73. Problemas con el modem


Antes de empezar a ilusionarse con conectarse a Internet, hay que saber si el modem es o no un Winmodem. Esta lnea especial de modems (o no tan modems) utilizan drivers propietarios que la mayora slo funcionan en Windows. En caso de una futura compra de modem, lo primero que hay que fijarse es que no sea uno de estos. Sabiendo que no es un Winmodem el modem instalado, hay muchos problemas que pueden tener los modems. Desde los ms simples, como ser que la lnea de telfono est desconectada, hasta los ms complicados y misteriosos que cuesta bastante encontrar sus causas. En el archivo /usr/doc/HOWTO/Modem-HOWTO hay mucha referencia sobre modems y en especial un captulo dedicado a problemas (Troubleshooting). Para quienes no leen ingls, existe una traduccin de ese archivo, junto con varios HOWTOs (traducidos al castellano como COMOs), llamado Modem-COMO y puede estar en el directorio /usr/doc/HOWTO/translations/es.

74. Problemas relativos al provedor


Una vez conectado, es probable que no "funcione" Internet, o al ingresar un nombre de mquina. Ejemplo: en el navegador escribir http://www.google.com y que no se conecte a ese servidor. Esto se debe a que el Servidor de nombres o Servidor DNS no est bien configurado. Hay que revisar las configuraciones descritas anteriormente.

75. Problemas con el pppd


Despus de pulsar Conectar, el programa de Conexin a Internet, llamado kppp, transfiere los datos ingresados al pppd para que ste realice la conexin en s. El pppd es llamado tambin demonio pppd y en el caso de que no se pueda conectar, puede surgir con varios cuadros de dilogo. Uno muy comn y con poca referencia es el que dice: "El demonio pppd muri inesperadamente". Esta frase suena absurda en especial a usuarios recin iniciados en Linux. Normalmente cuando el proveedor de Internet corta la conexin sin motivo, aparece el demonio muerto. Esto puede ser por diversos motivos: El provedor da ocupado y el modem no detecta que es seal de ocupado (muchas companas tienden a poner grabaciones). Al ingresar una clave incorrecta, el provedor no da explicacin y corta la comunicacin. La cuenta puede estar siendo usada y el provedor slo permite una conexin por cuenta.

76. Utilidades varias


Es verdad que Internet comercialmente existe desde hace bastante poco, y en muchos paises lleg tarde; pero la tecnologa TCP/IP tiene varios aos. A lo largo de todos esos aos se fueron desarrollando herramientas para ayudar a mantener o diagnosticar esas redes. La intencin de este curso no es de cubrir el mantenimiento de redes TCP/IP. Tan slo mencionar qu herramientas son tiles para eventuales problemas usando Internet. Todas las herramientas que utilizamos tienen origenes en consolas. Por lo tanto se puede usar una terminal. En este curso no vamos a mostrar el uso en terminales porque puede llegar a tornarse tedioso y crtico en ciertos ejemplos. En reemplazo, vamos a utilizar una herramienta llamada knu, que es un frontend de los programas a tratar, haciendo el uso de los mismos ms amigable.

77. Ping
Cmo sabemos si una computadora est dentro de la red? Es una pregunta relativamente simple de contestar sabiendo su Direccin IP. knu se encuentra en K->Internet->Utilidades de Red. Se ingresa la direccin IP (por ejemplo 127.0.0.1 [28] ) y a continuacin !Adelante! como muestra la Figura 19. Ejemplo del uso de ping en knu. Figura 19. Ejemplo del uso de ping en knu

Dar informacin de la conexin. Normalmente en enlaces entre mquinas el dato que ms importa es time, que expresa la latencia de red. Aqu es irrelevante, puesto que es la mquina local. De no funcionar esta simple prueba, es posible que la configuracin de red no sea correcta. Tambin se pueden poner nombres de mquinas, como por ejemplo www.google.com siempre que est clickeado el rectngulo que dice Resolver el nombre.

[28] 127.0.0.1 es la mquina local.

78. Escritorios
Figura 20. Configuracin de escritorios mltiples en el Panel

La siguiente seccin, Figura 20. Configuracin de escritorios mltiples en el Panel , tiene las opciones necesarias para definir la cantidad de escritorios mltiples que se tendrn en la sesin KDE, as como tambin el ancho de los botones de escritorio que aparecen en el Panel y por ltimo, el nombre que poseern esos botones.

Tambin hay que aadir una cuenta POP yendo a Aadir.... Aqu hay que completar con datos del servidor, como muestra la Figura 14. Configurar una cuenta POP3 en kmail Figura 14. Configurar una cuenta POP3 en kmail

Con estos datos sera suficiente como para enviar correos electrnicos y poder recibir. Un ejemplo terminado esta en Figura 15. Ejemplo de kmail configurado Figura 15. Ejemplo de kmail configurado

Un tema avanzado para este curso pero interesante para conocer y tenerlo en cuenta es la lengeta PGP. PGP significa Pretty Good Privacy (privacidad bastante buena), que es el nombre de un programa de encriptacin de mensajes para comunicaciones seguras. Es necesario tener instalado el programa pgp o bien la version GNU del que se llama gpg (este ltimo lo recomendamos). Al enviar el primer email va a pedir que introduzcamos un archivo de firma. Por ahora no existe ninguno. Entonces con el editor de textos hay que escribir un simple archivo que contenga la firma. Por tradicin se elige el archivo .signature porque varios programas de correo lo utilizan. De esta forma la firma ser la misma sin importar qu cliente de correo estemos usando.

Con slo apretar Conectar se debera conectar sin problemas (Figura 11. Conectndose a Internet). Figura 11. Conectndose a Internet

De todas formas, muchas veces la realidad es muy distinta a la teora. Esta es una lista de posibles problemas: Problemas con el modem Problemas con pppd Problemas relativos al proveedor No pretende ser una lista exhaustiva, tan slo son los problemas ms comunes.

79. Opciones
Figura 21. Opciones del Panel

Aqu se podrn personalizar las diferentes opciones de comportamiento del Panel (Figura 21. Opciones del Panel). En el primer cuadro Letreros de ayuda de men se encuentra la opcin Mostrar ayudas de men que activa o desactiva el uso de unos pequeos carteles que aparecen como ayuda cuando se deja quieto el puntero del mouse sobre algn sitio del Panel (en ingls se los llama Tooltips). Por defecto esta opcin est activada, y al estarlo, se utiliza la barra de deslizamiento para configurar el tiempo de retardo que tomar en aparecer cada una de estas ayudas. En el cuadro Visuales se tienen 3 opciones a personalizar, la primera, Auto-ocultar panel hace que el Panel se esconda automticamente (si est activada), pudiendo configurar la velocidad y el retardo de esta accin. La opcin Auto-ocultar barra de tareas es lo mismo que la anterior, pero para la barra de tareas; y la opcin Animar mostrar/esconder de estar activada (por defecto lo est), muestra una animacin al esconderse el Panel o la barra de tareas. El cuadro inferior --Otros-- configura varios aspectos funcionales del botn de men K del

Panel. La primer opcin Entradas del Men Personal Primero hace que aparezcan las configuraciones personales del men antes que los menes que vienen por defecto en el sistema. La segunda opcin Carpetas de Men Primero organiza el men de tal forma que las categoras aparezcan arriba de las opciones simples. La tercer opcin Reloj muestra el tiempo en formato AM/PM sirve para cambiar el modo del reloj entre AM, PM y 24hs. Por ltimo, la cuarta opcin Reloj muestra el tiempo en latidos de Internet cambia el modo del reloj, del tradicional a un tipo de hora ``universal'' definido por la empresa SWATCH para el uso del mismo en Internet.

80. Panel
Esta seccin consta de tres cuadros, el cuadro Posicin permite seleccionar el lugar donde el Panel va a estar localizado en el escritorio, por defecto se encuentra en la parte inferior de la pantalla. El cuadro Barra de tareas sirve para configurar la posicin de la barra de tareas, una barra donde por cada aplicacin ejecutndose, aparece un botn para su rpido acceso en caso de estar en segundo plano o minimizada. Se da la posibilidad de deshabilitar la barra de tareas as como tambin cambiarla de lugar, por defecto aparece en la parte superior del escritorio. El cuadro Estilo tiene las opciones de tamao del Panel, por defecto est en Normal.

81. Introduccin
La comodidad es un factor muy importante en lo que respecta a productividad en trabajos de todo tipo, incluyendo el trabajo en un escritorio virtual como lo es un entorno grfico en una computadora. La comodidad en un entorno grfico depende de la personalizacin de colores, tipos de letras, imgen de fondo, sonidos del sistema, etc. es por ello que la configuracin del entorno se toma como una parte escencial de este curso describindose a continuacin las propiedades mas importantes del KDE que se pueden acceder a travs del Centro de control KDE.

82. Bordes
Los bordes activos se utilizan para moverse de un escritorio a otro a travs del uso del mouse. Cuando estn activados, si se lleva el puntero hacia el borde derecho de la pantalla y se lo deja un instante, el KDE activa el escritorio consecutivo. Lo mismo pasa si se lleva el mouse hasta la izquierda de la pantalla. Seleccionando la opcin Activar bordes activos como se ve en Figura 22. Configuracin de bordes, se puede establecer el tiempo de retardo que requieren los bordes activos para funcionar. Figura 22. Configuracin de bordes

Otras opciones en la seccin inferior del cuadro son los Bordes Mgicos, que se utilizan para magnetizar los bordes de las ventanas entre s.

83. Colores
Los colores de los diferentes componentes de las ventanas pueden cambiarse de forma tal de darle al escritorio la apariencia que a uno ms le agrade. Esto se puede hacer en la seccin de Colores que puede observarse en Figura 23. Configuracin de colores en KDE. Este cuadro se divide en tres partes ms una de visualizacin previa. Figura 23. Configuracin de colores en KDE

Cada configuracin de colores se puede guardar como un esquema individual, en el cuadro Esquema de colores se pueden ver varios esquemas ya definidos, simulando los colores de varios entornos. Pueden definirse nuevos esquemas presionando Aadir y definiendo un nombre para ese nuevo esquema, una vez hecho esto, en el cuadro Color del widget[29] se elige cada componente que se quiera asignar un color especfico y luego se presiona el botn de color seleccionando as el color a utilizar. En la visualizacin previa se puede ir controlando los cambios de colores a medida que se realizan. El cuadro Contraste posee una barra de nivel que establece el contraste entre los colores seleccionados.

[29] Widget se le llama a cada componente de una ventana, un botn, un recuadro, la barra de ttulo, etc.

84. Estilo
Figura 24. Estilo de widgets como Windows95

Otro aspecto en la personalizacin del escritorio, es el estilo de dibujado de los widgets. KDE permite elegir entre el estilo tpico de Windows95 y el estilo de los entornos de UNIX en general. Podemos cambiar de estilo activando o desactivando la opcin Pintar widgets en el estilo Windows 95. Se puede ver la diferencia de estilo de widgets observando Figura 24. Estilo de widgets como Windows95 y Figura 25. Estilo de widgets como Unix. La opcin que dice Barra de Men arriba de la pantalla al estilo de MacOS simulara de alguna manera el estilo de los menes como se utilizan en las computadoras Macintosh, es decir, en vez de que cada ventana tenga su propia barra de menes, existe una barra de menes general para todas las aplicaciones arriba de la pantalla, a medida que se va intercambiando de

ventana en ventana (de aplicacin en aplicacin), esta barra de menes va cambiando. Figura 25. Estilo de widgets como Unix

La tercera opcin, que dice Aplicar fuentes y colores a aplicaciones no-KDE sirve para darle a las aplicaciones que no son especficas de KDE (el Netscape por ejemplo), un ``look'' parecido a las dems aplicaciones que si lo son, asignndole el color de ventanas y botones bastante similares. Debajo de sto, hay un cuadro llamado Icon style que se utiliza para asignar el tamao de los conos de la barra de herramientas (panel) y del escritorio.

85. Fondo de pantalla


En la categora Escritorio del Centro de control KDE se tienen las diferentes opciones para configurar el aspecto y la funcionalidad del entorno, la primera opcin es Fondo, y se utiliza

para configurar el color o imgen del fondo de los escritorios. Figura 26. Configuracin del Fondo de pantalla en KDE1

Como se ve en Figura 26. Configuracin del Fondo de pantalla en KDE1, se puede configurar cada escritorio por separado, o unificar la configuracin para todos seleccionado la opcin Fondo comn. En el sector Colores se puede seleccionar un color de fondo o utilizando la opcin Dos colores, se logra un ``degrad'' entre ambos. En la seccin Tapiz se encuentra una lista de las imgenes que pueden utilizarse para el fondo. En la lista desplegable de Disposicin existen varias opciones para la forma de mostrar en pantalla dichos tapices. Para que el fondo de pantalla cambie automticamente, puede activarse activar la opcin Al azar Si se activa la opcin Fijar en el panel, en la barra de herramientas del KDE aparecer un cono especial para poder cambiar la configuracin del fondo directamente sin necesidad de entrar en el Centro de Control KDE.

86. Conceptos bsicos de LDAP


A continuacin detallaremos los conceptos y vocabulario que se debe manejar para poder entender temas mas avanzados de LDAP. Cada nodo del rbol de datos se lo denomina entrada. Cada entrada tiene una denominacin, o DN(Distinguished Name, nombre distinguido), que se forma de la concatenacin de los DNs relativos (o RDNs) de las entradas padre hasta llegar a la entrada raz del rbol, como se puede ver en Figura 27. Como se construyen los DNs de las entradas.. Figura 27. Como se construyen los DNs de las entradas.

Este mtodo permite que cada entrada posea un identificador nico, evitando la duplicacin de entradas de esta manera, tal como sucede en el servicio de nombres de dominio en Internet. Cada entrada posee atributos donde se almacenar la informacin a consultar. Cada atributo tiene un tipo de datos y acepta uno o mas valores. Adems, cada entrada posee una o mas entradas objectClass, las cuales definen los atributos que la entrada tendr disponibles, detallando cuales atributos son obligatorios y cuales son opcionales. Por ejemplo una entrada para describir una cuenta de usuario en el servidor puede derivar del objectclass posixAccount, cuyos atributos obligatorios son cn, uid, uidNumber, gidNumber y homeDirectory y sus atributos opcionales: userPassword, loginShell, gecos y description. Cada uno de estos objectClass se define en un archivo, normalmente localizado en el directorio /etc/openldap/schema (en la implementacin OpenLDAP). La clase de datos que LDAP puede almacenar se puede extender agregando nuevos esquemas en este directorio.

87. Ejemplo de configuracin de OpenLDAP


Una buena manera de explicar el funcionamiento y configuracin de un servidor LDAP es mediante un ejemplo comn de la vida real. A continuacin se explicar como migrar la base de datos de usuarios y grupos para poder realizar la autenticacin a travs del protocolo LDAP.

87.1. Configurando el back-end

Editando el archivo /etc/openldap/slapd.conf, se agrega una base de datos de la siguiente manera: database ldbm suffix "dc=ejemplo,dc=net" rootdn "cn=root,dc=ejemplo,dc=net" rootpw {MD5}kuJhGtfsDfglwjhHUTQNmd== directory /var/lib/ldap index objectClass,uid,uidNumber,gidNumber eq index cn,mail,surname,givenname eq,subinitial La primer lnea especifica el back-end de base de datos a utilizar, ldbm es la opcin mas frecuentemente utilizada. La segunda lnea declara el DN de la entrada raz del rbol LDAP. La tercer y cuarta entrada definen los datos del usuario administrador (algo as como su nombre de usuario y contrasea), ya que esta cuenta no puede estar incluida en la base de datos LDAP antes que se haya configurado. La quinta entrada sirve para definir el directorio donde se almacenarn los archivos correspondientes a esta base de datos y las ltimas dos entradas establecen los tipos de ndice que se van a utilizar en las distintas entradas, para bsquedas. La contrasea rootpw est cifrada con el algoritmo MD5, esto se puede generar con el comando slappasswd de la siguiente manera: # slappasswd -h {MD5}

87.2. Configurando las listas de control de acceso


El siguiente paso es configurar las listas de control de acceso, que definirn la clase de acceso que los distintos tipos de usuarios tendrn en el rbol LDAP. En el archivo /etc/openldap/slapd.conf o en /etc/openldap/slapd.access.conf se agrega lo siguiente: access to dn=".*,dc=ejemplo,dc=net" attr=userPassword by dn="cn=root,dc=ejemplo,dc=net" write by self write by * auth Esta primer lista de control de acceso se puede interpretar como: Para los atributos userPassword de todas las entradas bajo "dc=ejemplo,dc=net", se dar permiso de escritura al usuario administrador, al usuario propietario, y al resto se les permitir la operacin de autenticacin. Pero, dnde estn los usuarios?. El concepto de usuario tal como se lo conoce normalmente aqu no se aplica, sino que se habla de Bind DN, cada cliente LDAP debe autenticarse con el servidor enlazndose (bind) a ste en una determinada entrada de la jerarqua de la base de datos (DN), que necesariamente deber poseer un atributo userPassword. Con esta ACL lo que se hace es proteger el atributo de contrasea para que no cualquier pueda siquiera inspeccionarlo. Luego siguen otras ACLs: access to dn=".*,dc=ejemplo,dc=net" attr=mail by dn="cn=root,dc=ejemplo,dc=net" write by self write by * read

Este es un ejemplo similar al anterior, pero se permite la lectura del atributo mail (es decir, la direccin de correo electrnico) a cualquiera, mientras que se permite su modificacin a la cuenta administrativa y al dueo del atributo. Si bajo la entrada con DN ou=People,dc=ejemplo,dc=net se almacenan las cuentas de usuario del sistema, entonces deberamos permitir slo la lectura de estos datos a todo el mundo (sin permitir la modificacin de por ejemplo, el nombre de usuario, ni siquiera al propio usuario) de esta manera: access to dn=".*,ou=People,dc=ejemplo,dc=net" by * read Finalmente se agrega el ACL por defecto, que permite la lectura de todos los atributos por cualquiera, y su modificacin por el usuario dueo. Se hace esto de la siguiente forma: access to dn=".*,dc=ejemplo,dc=net" by self write by * read Cada ACL se chequear en el orden en que fueron declaradas, es por eso que la ACL que se agreg ltima, no debe declararse antes de otras, porque puede llegar a anular su funcionalidad. Un ejemplo claro es la declaracin de la penltima ACL sobre la ltima. A primera vista, podra parecer que esa penltima ACL se encuentra includa en la ltima y que por lo tanto podra ser obviada, pero observando detenidamente se puede uno dar cuenta que la penltima ACL no permite escritura a nadie, bajo la entrada ou=People,dc=ejemplo,dc=net, y que por mas que la ltima entrada si lo permita, la anterior tiene precedencia. Si estas ACLs se agregaron en su propio archivo /etc/openldap/slapd.access.conf, entonces habr que cerciorarse que se incluya este archivo en el archivo de configuracin principal /etc/ openldap/slapd.conf con la siguiente sintaxis: include /etc/openldap/slapd.access.conf Para que se tomen los cambios, recordar de reiniciar el servicio LDAP en el sistema.

87.3. Migracin del los datos al servidor LDAP


Una vez configurada la base de datos y las listas de control de acceso, se procede a la migracin de los datos preexistentes. En la distribucin Mandrake, el paquete openldapmigration instala una serie de herramientas para facilitar enormemente esta tarea. Dentro del directorio /usr/share/openldap/migration/ se deber editar el archivo migrate_common.ph cambiando las siguientes declaraciones de variable: $DEFAULT_MAIL_DOMAIN = "ejemplo.net"; $DEFAULT_BASE = "dc=ejemplo,dc=net"; $DEFAULT_MAIL_HOST = "mail.ejemplo.net"; $EXTENDED_SCHEMA = 1; Lo siguiente es editar el archivo migrate_all_online.sh y comentar aquellos servicios que no queremos migrar, como por ejemplo: #$PERL -I${INSTDIR} ${INSTDIR}migrate_protocols.pl $ETC_PROTOCOLS >> $DB

Finalmente se ejecuta dicho script ingresando los datos que va pidiendo.

87.4. Configurando el usuario proxy


La siguiente etapa, consiste en la creacin de una entrada especial en el servidor LDAP, que servir como usuario proxy. Este usuario se utilizar para leer las entradas userPassword de las otras entradas, de tal manera de proveer esa informacin a los clientes que necesiten autenticarse. Con esto, permitiremos autenticar a aquellos servicios que poseen una interfaz con el servidor LDAP, pero que mantienen su propio esquema de autenticacin y por lo tanto no usan la operacin auth provista por el servidor LDAP. El primer paso entonces es crear un archivo LDIF, por ejemplo en /tmp/proxy.ldif cuyo contenido sea el siguiente: dn: cn=proxyuser,dc=ejemplo,dc=net cn: proxyuser sn: proxyuser objectclass: top objectclass: person userPassword: {MD5}kihwqmIGdaIhnqLjashOKJ== La contrasea se debe crear con el comando slappasswd como se vi anteriormente. Una vez escrito correctamente el archivo LDIF, se lo agrega al servidor ejecutando el comando ldapadd de esta manera: # ldapadd -x -D "cn=root,dc=ejemplo,dc=net" -W -f /tmp/proxy.ldif Este comando pedir la contrasea que se estableci como rootpw en el archivo de configuracin, y si todo est correcto, agregar la entrada donde corresponde en la jerarqua de rbol del servidor LDAP. Una vez agregado el usuario proxy, habr que permitirle el acceso de lectura al atributo userPassword para que pueda ser utilizado por los mecanismos de autenticacin que a continuacin configuraremos. Para darle el permiso necesario al usuario proxy, deberemos modificar el primer ACL definido anteriormente, para que quede de esta forma: access to dn=".*,dc=ejemplo,dc=net" attr=userPassword by dn="cn=root,dc=ejemplo,dc=net" write by dn="cn=proxyuser,dc=ejemplo,dc=net" read by self write by * auth Una vez hecho este cambio, se debe reiniciar el servicio LDAP para que tome la nueva configuracin. A continuacin se puede realizar una consulta al servidor LDAP mediante el comando ldapsearch: # ldapsearch -LL -H ldap://localhost -b"dc=ejemplo,dc=net" -W -x D "cn=proxyuser,dc=ejemplo,dc=net" "(uid=pedro)" Este comando, despus de ingresar la clave correspondiente al usuario proxy, muestra en formato LDIF el resultado de la bsqueda de entradas que tengan el atributo uid con el nombre pedro, a partir de la entrada dc=ejemplo,dc=net en adelante (es decir, todo el rbol).

Si todo estuvo correctamente configurado, y existe una entrada con tal atributo, entonces se mostrarn todos sus datos, incluyendose el atributo userPassword como se muestra a continuacin: version: 1 dn: userid=pedro,ou=People,dc=ejemplo,dc=net objectClass: top objectClass: account objectClass: person objectClass: userSecurityInformation uid: pedro sn: Picapiedras cn: Pedro userPassword:: e01ENX1HcWFsOUpQQWowMHV5VkFVb1MyL3dnPT0= telephoneNumber: 431-2125

87.5. Configuracin de los clientes LDAP


Lo que queda pendiente es configurar aquellas mquinas que vayan a funcionar como clientes del servidor LDAP recin configurado. Lo primero que se debe hacer es editar el archivo /etc/openldap/ldap.conf y agregarle la siguiente informacin: host <IP_del_servidor_LDAP> base dc=ejemplo,dc=net # Esta entrada es igual al suffix rootbinddn cn=proxyuser,dc=ejemplo,dc=net scope one pam_filter objectclass=posixaccount pam_login_attribute uid pam_member_attribute gid pam_template_login_attribute uid pam_password md5 nss_base_passwd ou=People,dc=ejemplo,dc=net?one nss_base_shadow ou=People,dc=ejemplo,dc=net?one nss_base_group ou=Group,dc=ejemplo,dc=net?one nss_base_hosts ou=Hosts,dc=ejemplo,dc=net?one El campo rootbinddn especifica a qu usuario el root se va a cambiar al intentar conectarse desde la mquina cliente, y la contrasea la va a leer desde el archivo /etc/openldap/ ldap.secret, que debe tener modo 600 y contener la contrasea del proxyuser, finalizando con una lnea en blanco. Esto va a permitir que los clientes LDAP para autenticacin al querer acceder como root se cambien al usuario proxy y puedan leer los campos userPassword de cada usuario para lograr su finalidad. el inconveniente es que el comando passwd utilizado para que cada usuario se cambie su propia contrasea no funcionara porque el usuario proxy slo tiene acceso de lectura sobre ese campo, pero cada usuario podra modificar su contrasea utilizando el comando ldapmodify.

Si quisiramos hacer que el comando passwd funcione para cambiar las contraseas de usuario, deberamos cambiar el ACL del servidor para que el usuario proxy tenga acceso de escritura al campo userPassword, pero esto podra ser un problema de seguridad en aquellos casos que las mquinas cliente sean controladas por otras personas no confiables, porque el archivo /etc/openldap/ldap.secret de cada mquina cliente sera legible por el root local de cada estacin.

87.6. Configurando NSS para que use LDAP


NSS es el Name Service Switch que sirve para decirle al sistema cuales son las fuentes de datos para ciertas informaciones, el archivo de configuracin es /etc/nsswitch.conf: passwd: files ldap shadow: files ldap group: files ldap hosts: files ldap dns Esto har que los sistemas clientes consulten primero sus archivos locales, luego hagan bsquedas en LDAP y en el caso de los hosts, hagan consultas por DNS como ltimo recurso. En el /etc/hosts de los clientes slo se debera dejar con la entrada del host local, hostname y del servidor LDAP.

88. El formato LDIF


El LDAP Data Interchange Format (LDIF) es un formato que se utiliza para la importacin y exportacin de datos independientemente del servidor LDAP que se est utilizando. Cada servidor LDAP tiene una o varias maneras de almacenar fsicamente sus datos en el disco rgido, por esto que LDIF provee una manera de unificar la manera de tratar los datos y as poder migrar de un servidor a otro sin importar que clase de implementacin es. El formato LDIF es simplemente un formato de texto ASCII para entradas LDAP, que tiene la siguiente forma: dn: <nombre distinguido> <nombre_atributo>: <valor> <nombre_atributo>: <valor> <nombre_atributo>: <valor> En un archivo LDIF puede haber mas de una entrada definida, cada entrada se separa de las dems por una lnea en blanco. A su vez, cada entrada puede tener una cantidad arbitraria de pares <nombre_atributo>: <valor>. Este formato es til tanto para realizar copias de seguridad de los datos de un servidor LDAP, como para importar pequeos cambios que se necesiten realizar manualmente en los datos, siempre manteniendo la independencia de la implementacin LDAP y de la plataforma donde est instalada. A continuacin podemos observar un ejemplo de una entrada para describir una cuenta de usuario en un servidor: Ejemplo 28. Formato LDIF para cuenta de usuario. dn: uid=jperez,ou=People,dc=ejemplo,dc=com uid: jperez cn: Juan Perez

objectclass: account objectclass: posixAccount objectclass: top loginshell: /bin/bash uidnumber: 512 gidnumber: 300 homedirectory: /home/jperez gecos: Juan Perez,,,, userpassword: {crypt}LPnaOoUYN57Netaac

89. Introduccin a LDAP


LDAP significa Lightweight Directory Access Protocol (Protocolo Liviano de Acceso a Directorio), es un protocolo que provee servicios de directorio, organizando la informacin de forma muy similar a como lo hace un sistema de archivos, o el servicio de nombres de dominio (DNS) en Internet tal como podemos ver en Figura 28. Jerarquas en rbol de varios servicios. Figura 28. Jerarquas en rbol de varios servicios

LDAP funciona como una base de datos, optimizada para las operaciones de lectura y bsqueda. Por otro lado, no posee soporte para ingreso de datos por transacciones ni rollback, que se encuentran en los motores de base de datos relacionales. Normalmente en LDAP las operaciones de ingreso de datos son a todo o nada. La arquitectura cliente-servidor y estructura en forma de rbol que utiliza LDAP para almacenar

su informacin, tiene algunas ventajas muy interesantes, como ser: Evita la duplicacin de datos, la estructura de datos obliga a que no exista el mismo dato en dos lugares diferentes del esquema. Permite la distribucin de la administracin, al igual que el servicio de DNS, la responsabilidad en la administracin de los datos de un rbol se puede separar entre distintos equipos si es necesario. Acepta niveles de acceso bien detallados, pudiendo definir polticas de seguridad por cada nodo. Figura 29. Delegacin del rbol LDAP

Adems de esto, LDAP provee capacidades de rplica, de modo tal que se aumenta la confiabilidad y disponibilidad de la informacin, aumentando tambin la eficiencia del servicio ya que la carga se puede repartir entre las rplicas. Las rplicas automticamente irn sincronizndose con su servidor central cada cierto tiempo, hasta cierto punto se acepta cierta inconsistencia en las rplicas, ya que como se ha comentado al comienzo, normalmente no se realizan muchas actualizaciones a los datos. Qu clase de informacin puede contener y cual es el uso que se le puede dar? eso es a discrecin del administrador. Algunos ejemplos comunes son: Libretas de direcciones compartidas. Autenticacin de usuarios centralizada. Perfiles de usuarios centralizados, para permitir Roaming En resumen, LDAP es un servicio muy flexible que permite a un administrador centralizar variados servicios, y de esta manera facilitar la tarea de mantenimiento sin que disminuya la confiabilidad del sistema.

90. Introduccin a OpenLDAP


OpenLDAP es una implementacin libre del protocolo LDAP, disponible en la mayora de las distribuciones de GNU/Linux, su sitio web es http://www.openldap.org. OpenLDAP se compone de varias partes: slapd: El servidor LDAP.

slurpd: El servidor de replicacin. Bibliotecas de acceso al servidor LDAP. Utilidades, herramientas y ejemplos tiles. Los archivos de configuracin del OpenLDAP se encuentran en el directorio /etc/openldap/.

90.1. Caractersticas de slapd


El servidor slapd tiene una serie de funcionalidades interesantes, que se detallan a continuacin: LDAP versin 3 slapd implementa la versin 3 del Protocolo Liviano de Acceso a Directorios. slapd soporta LDAP sobre IPv4 e IPv6. Simple Authentication and Security Layer (SASL) slapd soporta servicios de autenticacin robustos mediante el uso de SASL. Transport Layer Security (TLS) slapd provee protecciones de privacidad e integridad mediante el uso de TLS (o SSL). Control por topologa slapd trabaja con TCP Wrappers para permitir la restriccin de acceso basado en la topologa de la red. Control de acceso slapd tiene un sistema de control de acceso muy flexible y poderoso, permitiendo el total control sobre la clase de acceso a la base de datos. Internacionalizacin slapd soporta Unicode. Eleccin de back-end de base de datos slapd soporta mltiples medios de almacenamiento de sus datos. Se incluye BDB, una base de datos de alta performance; LDBM, una base de datos DBM liviana; SHELL, una interfaz a scripts; PASSWD, una interfaz para el archivo /etc/passwd. Mltiples instancias de base de datos slapd puede configurarse para servir mas de una base de datos al mismo tiempo. Replicacin slapd puede configurarse para mantener rplicas de sus bases de datos, este servicio es vital para soportar grandes volmenes de consultas sin que la calidad del servicio decaiga. Para implementar esta funcionalidad, se cuenta con la ayuda de slurpd.

91. Introduccin
Este documento est protegido bajo la licencia de documentacin libre Free Documentation License del Proyecto GNU, que a continuacin se incluye. Toda persona que lo desee est autorizada a usar, copiar y modificar este documento segn los puntos establecidos en la Licencia FDL Este manual se distribuye sin garanta alguna, los autores no se hacen responsables de cualquier tipo de dao mental, emocional o de cualquier otro tipo que produzca la lectura o cualquier otro uso de este manual. salo a tu propio riesgo. El documento est disponible en Internet en http://lucas.hispalinux.es/htmls/cursos.html

92. GNU Free Documentation License


Version 1.1, March 2000

Copyright 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.

92.1. 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 modifications 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.

92.2. Applicability and Definitions


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 Modified Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications 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 Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, 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 specification 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 file format whose markup has been designed to thwart or discourage subsequent modification 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 input format, LaTeX input format, SGML or XML using a publicly available DTD,

and standard-conforming simple HTML designed for human modification. 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 work's title, preceding the beginning of the body of the text.

92.3. 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 , Copying in Quantity. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

92.4. Copying in Quantity


If you publish printed copies of the Document numbering more than 100, and the Document's 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 fit legibly, you should put the first ones listed (as many as fit 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 Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general networkusing 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.

92.5. Modifications
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this

License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified 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 modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). State on the Title page the name of the publisher of the Modified Version, as the publisher. Preserve all the copyright notices of the Document. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified 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 Document's 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 Modified 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 Modified 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 section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. 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 Modified Version. Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section. If the Modified 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 Modified Version's 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 Modified Version by various parties -- for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five 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 Modified 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 Modified Version.

92.6. Combining Documents


You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, 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.

92.7. 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.

92.8. 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 Modified 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 Document's 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.

92.9. Translation
Translation is considered a kind of modification, 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.

92.10. 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.

92.11. 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 specifies 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 specified 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.

92.12. 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: Copyright 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.

93. Iniciando una sesin


Existen diferentes mtodos para poder conectar los terminales al sistema:

En primer lugar podemos conectarnos a un GNU/Linux a travs del puerto serie (RS232), con una terminal no inteligente o bien con otro equipo y un emulador de terminales. En ambos casos existe un programa que atiende las solicitudes de conexin a travs del puerto serie. Cuando hay una solicitud de conexin, este programa la atiende solicitando al usuario que se identifique ante el sistema. Cuando termina la conexin, este programa se reactiva para seguir atendiendo nuevas solicitudes. Mediante tarjeta de red. En este caso, tenemos un programa que escucha las solicitudes de conexin a travs de la tarjeta de red. Cuando llega una solicitud, este programa se desdobla de forma que una parte atiende la conexin y otra contina atendiendo nuevas conexiones. As, podemos tener ms de una conexin a travs de la tarjeta de red. Algunos servicios que proveen esta funcionalidad son el telnet (sin encriptacin de datos) y el ssh (Secure Shell, con encriptacin de datos). La consola. Evidentemente, en un sistema GNU/Linux tambin podemos trabajar desde el teclado y monitor que estn conectados directamente al sistema. Normalmente en la mayora de las distribuciones, en la consola hay hasta 6 terminales virtuales, accediendo a cada una de ellas con Alt-F1 a Alt-F6. Una vez que se ha conseguido conectar a un sistema GNU/Linux tenemos que iniciar una sesin de trabajo. GNU/Linux es un sistema multiusuario, y esto exige que el usuario se presente al sistema y que ste lo acepte como usuario reconocido. As, cada vez que iniciamos una sesin GNU/Linux nos responde con Login: a lo que se debe responder con el nombre de usuario. Acto seguido, GNU/Linux solicita una clave para poder comprobar que el usuario es quien dice ser: Password: En este caso se teclea la clave de acceso. Por motivos de seguridad esta clave no aparecer en la pantalla. Si la pareja nombre de usuario/clave es correcta, el sistema inicia un intrprete de comandos con el que se puede trabajar. Habitualmente ser el smbolo $, aunque puede ser tambin el smbolo % (si usamos un shell C). Cuando es el administrador (root) quien est trabajando en el sistema, el indicador que aparece es #.

94. Introduccin
Los tipos de trabajos que se pueden realizar sobre un Unix cualquiera, pero particularmente sobre GNU/Linux, difieren en la forma de interactuar con el usuario y el formato de la interfaz de usuario. A simple vista, se puede decir que hay dos tipos de acceso interactivo en lo que respecta al formato de la interfaz: usando interfaz grfica o usando interfaz de texto. En este curso se le dar especial importancia a la interfaz de texto, ya que es lo ms normal que se encuentra en los equipos que funcionan como servidores, y las herramientas basadas en interfaz de texto tienen mayor tiempo de desarrollo que las otras, lo que las hace ms convenientes para la tarea de administrar un sistema GNU/Linux.

95. La base de datos de los usuarios


Se ha visto que para iniciar una sesin de trabajo en un sistema GNU/Linux se debe suministrar al sistema una pareja de nombre de usuario/clave. Estos datos se almacenan en

un archivo llamado /etc/passwd. Este archivo contiene una lnea por cada usuario del sistema. Cada lnea consta de una serie de campos separados por dos puntos (:). Estos campos son, en el orden que aparecen: 1. Nombre de usuario. Es el nombre con el que nos presentamos al sistema, con el que tenemos que responder a Login: y por el que nos identifica el sistema. 2. Clave cifrada. El siguiente campo es la clave de acceso al sistema. Esta clave no se guarda como se introduce, sino que se almacena transformada mediante el algoritmo DES. 3. UID. Identificador de usuario. Es el nmero de usuario que tiene cada cuenta abierta en el sistema. El sistema trabaja de forma interna con el UID, mientras que nosotros trabajamos con el nombre de usuario. Ambos son equivalentes. 4. GID. Identificador de grupo. Es el nmero de grupo principal al que pertenece el usuario. 5. Nombre completo de usuario. Este es un campo meramente informativo, en el que se suele poner el nombre completo del usuario. 6. Directorio personal. Este campo indica el directorio personal de un usuario, en el cual el usuario puede guardar su informacin. 7. Intrprete de comandos. El ltimo campo indica un programa que se ejecutar cuando el usuario inicie una sesin de trabajo. Normalmente este campo es un intrprete de comandos (shell en ingls) que proporciona una lnea de rdenes para que el usuario trabaje. Ejemplo: usuario:xKxd6YkHSs:505:705:Usuario:/home/usuario:/bin/bash ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | I. de comandos | | | | | directorio personal | | | | Nombre completo del usuario | | | Nmero de grupo (GID) | | Nmero de usuario (UID) | Clave cifrada Nombre de usuario

96. Conceptos de Autenticacin y Autorizacin


En un entorno multiusuario como GNU/Linux, el sistema debe saber en cada instancia quin lo est operando, de manera tal de darle (o no) los recursos que corresponde a cada usuario. Esto se divide en dos acciones que el sistema debe realizar al tratar con un usuario que intenta ingresar al sistema: primero la autenticacin y posteriormente la autorizacin. Cuando un usuario pretende ingresar al sistema de forma interactiva, es decir, obtener acceso a una terminal de textos o a un entorno grfico de ventanas, el sistema de alguna manera va a solicitar a dicho usuario su identificacin y su contrasea. La identificacin normalmente se la conoce como nombre de usuario, la cual le dice al sistema quin es el usuario. La contrasea es una palabra o conjunto de caracteres que el usuario debe tener en secreto, y sirve para probar al sistema que el usuario es quien dice ser. Esta etapa se la conoce como autenticacin No slo en accesos interactivos la autenticacin tiene lugar. En otros servicios como el correo electrnico, acceso a bases de datos, etc. se requiere de una autenticacin por obvias razones de privacidad.

Por otro lado, cuando un usuario ha probado ser quien dice ser, el sistema debe establecer las actividades que dicho usuario tiene permitido hacer en el sistema. Por ejemplo, no es lo mismo un usuario de correo electrnico que un usuario administrador del sistema. El segundo obviamente tendr ms privilegios que el primero porque sus funciones son diferentes. Entonces, cuando un usuario se autentica frente al sistema, el mismo debe establecer ciertos niveles de acceso, entre los cuales pueden ser: Uso mximo de espacio en disco. Cantidad mxima de procesos simultneos posible. Cantidad mxima de memoria ocupada por procesos en ejecucin. Lista de servicios que el sistema provee y al cual el usuario tiene acceso. Este procedimiento es lo que se denomina autorizacin. Como se puede ver, la autorizacin generalmente tiene que ver con la asignacin mxima de recursos del sistema a un usuario dado, ya que cuando un equipo es usado por muchas personas a la vez, el administrador del sistema debera tener en cuenta la capacidad del equipo y establecer las listas de acceso de tal manera que el servicio que provee dicho equipo no disminuya en eficiencia a causa de la saturacin.

97. Introduccin
GNU/Linux es un sistema operativo multiusuario y multitarea. El trmino multiusuario se refiere a que varias personas pueden trabajar simultneamente en la misma computadora y el trmino multitarea significa que GNU/Linux es capaz de ejecutar ms de una tarea de forma concurrente, es decir, comenzar a trabajar en una tarea y dedicarse a otra antes de haber finalizado la primera.

98. GNU/Linux Multiusuario


En los principios de la informtica, cuando las computadoras costaban fortunas, ocupaban habitaciones enteras y slo algunas empresas u organizaciones grandes posean estos ejemplares, la necesidad de brindar servicios a varias personas al mismo tiempo hizo que se creara un sistema que permitiera un solo equipo atender los requerimientos de varios usuarios a la vez. El hecho de que un sistema pueda proveer servicios a muchos usuarios simultneamente da por sentado que debe ser adems multitarea, ya que cada usuario al trabajar en el sistema ejecuta al menos un proceso. Esa poca de grandes mainframes [30] ve el nacimiento de los sistemas operativos UNIX, de los cuales GNU/Linux deriva. Con el pasar de los aos, el abaratamiento del hardware y el nacimiento de las computadoras personales (en la dcada de los 80), los sistemas operativos mono-usuarios se hicieron predominantes [31] . En la actualidad, la computadora ha llegado a ser un electrodomstico, y como tal su uso es familiar. Esto quiere decir que muchas personas utilizan un mismo equipo: el nombre de Computadora Personal ha dejado de tener sentido. Por esto, los sistemas operativos ms usados, entre ellos Microsoft Windows han tratado de llegar a una solucin mediante el uso de perfiles de usuario, en los cuales cada perfil tiene su propia configuracin de correo, escritorio, etc. Sin embargo, esta solucin no es la adecuada, dado que no se observa algo muy importante en la persona: la privacidad. Para asegurar la privacidad de las personas en un ambiente informtico, no slo se debe mantener una vista personalizada del ambiente de trabajo de cada usuario, sino que tambin se debe ofrecer un sistema de proteccin de los archivos y directorios personales, as como un

mecanismo equivalente para los procesos. De esta manera, cada archivo y cada proceso en el sistema tiene permisos que permiten la manipulacin de los mismos solamente a las personas autorizadas. GNU/Linux posee estas caractersticas, por lo tanto se adeca a diferentes usos, desde un servidor de Internet con muchos cientos de usuarios, hasta el uso familiar, conservando siempre la privacidad de sus usuarios.

[30] Servidores de gran capacidad. [31] Entre ellos, el famoso D.O.S.

99. Conceptos bsicos


Los permisos de un archivo cualquiera (inclusive los directorios) se agrupan en 3 grupos de 3 bits cada uno, como se muestra ms abajo: rwx rwx rwx | | | | | otros | grupo usuario Como se ha dicho, cada grupo posee 3 bits: Bit r: Lectura Bit w: Escritura Bit x: Ejecucin Con las diferentes combinaciones, se puede configurar un archivo para que pueda ser ledo y modificado por su dueo, y slo ledo por el grupo y los dems, por ejemplo el archivo /etc/ passwd: $ ls -l /etc/passwd -rw-r--r-- 1 root root 1509 Apr 4 12:44 /etc/passwd

Este archivo es del usuario root, y del grupo del mismo nombre, solamente se puede modificar (bit w de escritura) por su usuario dueo, y leer por el grupo y los dems. Los grupos son un tema ms que nada administrativo y no lo tocaremos en esta seccin. Slo hay que tener en cuenta que generalmente en un sistema GNU/Linux, un usuario cualquiera pertenece a su grupo (grupo del mismo nombre que su nombre de usuario) y al grupo users. A diferencia de sistemas operativos como DOS y Windows, el hecho de que un archivo tenga una extensin .com o .exe no significa que ser un programa ejecutable. Al necesitar restringir los derechos de ejecucin de cualquier archivo [32], la accin de ejecutar cualquier programa estar supeditada al permiso correspondiente (bit x de ejecucin). Esto es importante tenerlo en cuenta a la hora de escribir programas que sern interpretados, ya que a fin de cuentas los archivos sern de texto, y para que se ejecuten se les deber activar el permiso de ejecucin.

[32] Siempre teniendo en cuenta a los archivos ejecutables, es decir programas.

100. Un caso especial, los directorios


Quizs a ms de un lector le ha asaltado la siguiente duda: para qu servir el bit de ejecucin en los directorios?. Obviamente, los directorios no se ejecutan, y evidentemente, el bit x en los directorios existe. Como se ha aclarado anteriormente, en estos casos, dicho bit tiene un significado especial. El bit de ejecucin en los directorios permite poder ver la informacin acerca de los archivos que contienen. El bit de lectura permite listar los contenidos de un directorio. El bit de escritura permite crear y borrar archivos dentro de un directorio. Generalmente es conveniente manejar los permisos de lectura y ejecucin de los directorios en forma conjunta, para evitar confusiones.

101. Introduccin a los permisos de usuario


Para qu sirven los permisos de usuario? Bueno, es una pregunta bastante obvia teniendo en cuenta que GNU/Linux es un sistema operativo multiusuario. Cuando muchas personas utilizan un mismo equipo, debe haber un mecanismo que sirva para diferenciar los archivos de un usuario de los dems archivos. Un concepto no del todo correcto es pensar que los usuarios se utilizan exclusivamente por personas. Los procesos [33] que se ejecutan en un sistema GNU/Linux tienen tambin un usuario dueo, que coincide generalmente con el usuario que ejecut dicho programa. Adems, los demonios [34] tienen su propio usuario por cuestiones de seguridad. En esta seccin se ver el tema de los permisos de usuario desde el punto de vista de un usuario comn, y no de un administrador. Ms adelante se vern los detalles de mayor complejidad que generalmente incumben al administrador.

102. Representacin octal


Existe una manera ms gil de representar los permisos de archivo. Teniendo en cuenta que cada grupo de 3 bits es un nmero binario, la representacin en octal consiste en traducir cada grupo a un nmero octal, de tal manera que quede como resultado un nmero de 3 dgitos, cada dgito representando a un grupo de 3 bits. Mejor aclarar esto con un ejemplo: rwx rw- r-- representacin escrita 111 110 100 representacin binaria 7 6 4 representacin octal | | | | | otros | grupo usuario La tabla Traduccin de binario a octal da una gua de la traduccin de nmeros binarios a octales. Tabla 1. Traduccin de binario a octal Binario Octal

000 001 010 011 100 101 110 111

0 1 2 3 4 5 6 7

Entonces se puede concluir que los siguientes comandos son equivalentes: chmod u+rwx go-rwx nombre-de-archivo.txt chmod 700 nombre-de-archivo.txt

103. Cambio de permisos: el comando chmod


Para cambiar los permisos de los archivos se usa el comando chmod. Su sintaxis es la siguiente: chmod [-R] modo archivo... La opcin -R permite cambiar recursivamente los permisos de todos los archivos dentro de un directorio. El argumento modo est compuesto por alguna combinacin de las letras u (usuario dueo), g (grupo dueo), y o (otros), seguido de un smbolo + o - dependiendo si se quiere activar o desactivar un permiso, siguiendo por ltimo una combinacin de las letras correspondientes a los distintos permisos: r, w y x. Ejemplo 29. Veremos algunos ejemplos comunes. Si se necesita dar permisos de ejecucin al usuario y al grupo de un archivo, el comando deber ejecutarse de la siguiente manera: chmod ug+x nombre-de-archivo Recin creado un archivo puede tener permisos no deseados, por ejemplo lectura y escritura para el grupo y de lectura para el resto. Para modificar este estado se utiliza 'go-rw'. 'g' es grupo, 'o' es otros, '-' significa eliminar atriburos y 'rw' es lectura y escritura respectivamente. $ touch archivo $ ls -l archivo -rw-rw-r-- 1 usuario

usuario

0 oct 21 14:09 archivo

$ chmod go-rw archivo $ ls -l archivo

-rw-------

1 usuario

usuario

0 oct 21 14:09 archivo

O si se necesita sacar el permiso de lectura y ejecucin de todos los archivos y subdirectorios del directorio /home/usuario/prueba para el grupo y los otros, se debe ejecutar: chmod -R go-rx /home/usuario/prueba

104. Actualizacin del ncleo


Por qu la necesidad de actualizar el ncleo? La primer respuesta que quizs venga a la mente, es por la mayor cantidad de hardware soportado, y seguramente esta respuesta es vlida, pero adems debemos tener en mente, que con cada nueva versin del ncleo, se solucionan problemas y fallas que versiones anteriores posean, y muchas veces los ncleos mas avanzados funcionan mas rpido que los de las versiones anteriores. Por esto, es muy recomendable actualizar el ncleo con cada versin estable que salga disponible. Y ya que nombramos las versiones estables, es hora de explicar como se conforma el nmero de versin de un ncleo, ya que es de suma importancia a la hora de elegir el ncleo a actualizar. Cada versin del ncleo est formado por 3 nmeros, por ejemplo la ltima versin del ncleo estable hoy en da[35] es la versin 2.4.2. El primer nmero (el que se encuentra mas a la izquierda) simboliza el nmero mayor de versin, ste cambia cada varios aos, cada cambio de este nmero simboliza un cambio muy importante en la estructura interna del ncleo. El segundo nmero simboliza el tipo de ncleo: un nmero par indica una versin estable, un nmero impar una versin inestable o de desarrollo. Normalmente las distribuciones de GNU/ Linux instalan por defecto una versin estable del ncleo, y es lo recomendable para equipos que funcionarn como servidores o en cualquier ambiente de trabajo. Los ncleos de desarrollo generalmente poseen mas amplio soporte de hardware y funcionalidades nuevas, ya que en el futuro se convertirn en ncleos estables con estas nuevas caractersticas, pero la estabilidad no est garantizada en estos ncleos y no es recomendable utilizarlos en mquinas que posean datos importantes o que realicen tareas que requieran de un funcionamiento constante. Mucha gente utiliza los ncleos de desarrollo, normalmente se utilizan en alguna mquina personal, cuando se necesita soporte para un dispositivo nuevo, o cuando se est probando el ncleo para reportar cualquier tipo de error a los programadores, pero en otros casos, no es recomendable usarlos. El tercer nmero simboliza el nmero de revisin del ncleo. Cada revisin nueva sale cada pocos meses, a medida que se van corrigiendo errores y mejorando la eficiencia. La tarea de actualizacin del ncleo comprende varias etapas: 1. Conseguir la ltima versin estable del ncleo. El sitio oficial del ncleo Linux es http:/ /www.kernel.org, en este sitio se podrn conseguir tanto las versiones estables como inestables del ncleo, as como tambin una lista de sitios alternativos (servidores espejo) de donde descargar estos archivos en caso de que el sitio principal est muy cargado. El tamao aproximado del paquete del ncleo 2.4.2 es de 20 Mb. 2. Desempaquetar el ncleo. Generalmente el cdigo fuente del ncleo se debe colocar en el directorio /usr/src/linux/, pero se debe tener cuidado antes de desempaquetar el nuevo ncleo que no est el cdigo fuente de un ncleo anterior instalado por la distribucin. En caso de existir, es conveniente mover el cdigo del ncleo anterior a otro directorio antes. 3. Seleccionar las opciones del ncleo y compilarlo. Esto dependiendo de la mquina

donde se haga puede demorar un tiempo. Aunque la potencia de los equipos que hoy se consiguen es suficiente, en los das de las PC-AT 386 y 486, uno aprenda a desarrollar la paciencia, ya que una compilacin normal poda tomar entre una hora hasta das si el equipo contaba con poca memoria RAM[36].

4. Instalar el ncleo y sus mdulos. Esto implica copiar el archivo del ncleo y los mdulos a donde corresponde, y configurar el LILO, el programa que cargar el ncleo nuevo cuando se reinicie el equipo. 5. Reiniciar el equipo y probar el nuevo ncleo. Esta ltima etapa puede tambin incluir opcionalmente alguna plegaria a su santo preferido.

[35] 27 de marzo de 2001 [36] Ni hablar de cuando uno se olvidaba de incluir una opcin al ncleo y deba recompilar todo, la industria de los calmantes habr ido en alza en esa poca.

105. Compilacin del ncleo


Habiendo enumerado los pasos para la actualizacin del ncleo en el sistema, vamos a abocarnos a una de las etapas quizs mas complicadas del proceso. Un detalle muy importante a tener en cuenta a la hora de compilar un ncleo, es que se deben tener instalados en el sistema los paquetes de desarrollo. El ncleo Linux est programado en casi su totalidad en C, por lo tanto se debe tener instalados la biblioteca C de desarrollo y el compilador de dicho lenguaje. Dependiendo de la distribucin que se utiliza, el mtodo de instalacin de los paquetes difiere un poco. Dejando de lado el formato de paquetes y la distribucin, se debe revisar si los paquetes gcc y libc6-dev se encuentran instalados, estos paquetes siempre tienen un nombre similar en cualquier distribucin. Existen 3 formas de configurar las opciones y caractersticas a incluir en el ncleo, una es usando un programa de lnea de comandos, que lnea a lnea va preguntando las diferentes opciones, este mtodo era el que se utilizaba hace algunos aos, los dems mtodos son mas agradables. El segundo mtodo es mediante el uso de una interfaz de texto, pero a pantalla completa, con uso de la biblioteca ncurses, si se quiere utilizar este mtodo, se deben tener instalados en el sistema dicha biblioteca (normalmente se instala por defecto), cuyo paquete generalmente se denomina libncurses. El tercer y ltimo mtodo es mediante el uso de una interfaz grfica en las X; este mtodo utiliza las bibliotecas Tcl/Tk, que tambin normalmente se instalan por defecto en el sistema. El primer mtodo es el que se utilizaba con las primeras versiones del ncleo, como se puede observar en Figure 1, no es muy amigable pero a veces puede resultar til cuando no se tiene disponible una interfaz grfica ni las bibliotecas ncurses. Estando en el directorio del cdigo fuente del ncleo, se ejecuta el siguiente comando: root@maquina:/usr/src/linux# make config Figura 30. Configurando el ncleo con la interfaz de lnea de comandos.

Siempre hay que tener en cuenta el usuario que se est utilizando en esta tarea, si bien el compilar un ncleo no requiere de utilizar el usuario administrador, dependiendo del directorio donde est alojado el rbol de fuentes ser o no necesario usar la cuenta root. Como generalmente el directorio donde se aloja el cdigo fuente del ncleo es /usr/src/, se necesitar usar la cuenta de administrador, a menos que dicho directorio posea permisos especiales para algn otro usuario del sistema. El segundo mtodo mencionado corresponde al uso de la interfaz de texto a pantalla completa, como se ve en Figure 2. Este mtodo se usar de ahora en adelante. Esto se obtiene ejecutando el siguiente comando: root@maquina:/usr/src/linux# make menuconfig Figura 31. Interfaz de texto a pantalla completa.

El tercer mtodo utiliza una interfaz grfica en las X (Figure 3). Es el mtodo mas prctico, siempre y cuando se disponga de las X, claro est. Por esa razn hemos seleccionado el anterior mtodo para las dems figuras, aunque se debe saber que los tres mtodos poseen los mismos contenidos, solo cambia la manera de desplegar la informacin. Este tercer mtodo se obtiene ejecutando desde una terminal X lo siguiente: root@maquina:/usr/src/linux# make xconfig Figura 32. Interfaz grfica para configurar el ncleo.

Una vez presentados los mtodos de configuracin del ncleo, nos toca seleccionar las opciones y caractersticas que el nuevo ncleo incluir. Lo que siempre se recomienda al agregar opciones en el ncleo, es que aquellas opciones que tengan la posibilidad de ir como mdulos, que lo hagan. Con esto, obtendremos un ncleo mas pequeo, y los mdulos que se han compilado se irn cargando y descargando automticamente, a medida que se necesiten activar ciertas funcionalidades, y luego ya no se necesiten. Al tener menos cantidad de cdigo en memoria, no slo se produce un ahorro de RAM (que es prcticamente insignificante en estos das ahorrar unos 100k de RAM), sino que lo mas importante es el tener menos posibilidades que algo falle. El sentido comn dice que un ncleo de 400Kb en memoria mas 200Kb de mdulos no cargados tendr menos posibilidades de falla que el mismo ncleo, pero con sus 600Kb completos en memoria. Cmo saber cual funcin debera ir en mdulo y cual en el ncleo? Lo que se recomienda es tener en cuenta la necesidad del uso de cada funcionalidad del ncleo para realizar esta decisin. Por ejemplo, una mquina que posee discos rgidos IDE, los va a necesitar usar en todo el tiempo que est encendido el equipo (salvo raras ocasiones), entonces el soporte para discos IDE debera ir en el ncleo y no como un mdulo, ya que de ir como mdulo, estara siempre cargado. Un servidor de red necesitar el manejador de la tarjeta de red siempre activo, entonces conviene compilarlo en el ncleo, pero el uso del mdem de dicho equipo es muy espordico, en este caso el manejador del mdem o los puertos serie podra ir como mdulos. Tambin hay que tener en cuenta algo importante: el ncleo necesita saber como manejar un disco rgido para poder iniciar todo el sistema (si el sistema est almacenado en un disco rgido, como normalmente ocurre), si se compila el soporte de discos rgidos (cualquiera sea el tipo) como mdulo, el ncleo necesitar poder manejar el disco rgido al iniciar el equipo para poder cargar el mdulo para poder manejar el disco rgido[37], y obviamente este tipo de casos causan problemas. Resumiendo, hay dos casos en los cuales una funcionalidad del ncleo no debera ser compilada como ncleo: La funcionalidad en cuestin es esencial para el correcto arranque del sistema. Dicha funcionalidad va a utilizarse en todo momento del funcionamiento del sistema. Para los dems casos es conveniente compilar como mdulo. El sistema se encargar de cargar el mdulo cuando se necesite, y cuando ya no se use, se descargar para liberar memoria.

Cuando se ejecuta el comando make menuconfig se presenta una serie de secciones donde se agrupan las diferentes capacidades del ncleo, esta lista que sigue proporciona una breve explicacin de los contenidos de cada una de estas secciones[38]: Code maturity level options Se presenta una nica opcin, al activarla, ser posible activar aquellas funcionalidades experimentales que tenga el ncleo, generalmente esto no es recomendable cuando se est compilando un ncleo para algn servidor de produccin, a menos que se tenga la certeza de que tal o cual opcin es estable y funciona bien (o sea imprescindible). Loadable module support Las opciones que se incluyen en esta seccin tienen que ver con el manejo de los mdulos del ncleo. En algunos casos no ser necesario o no se podr tener mdulos, entonces se pueden desactivar. En este mtodo de configuracin del ncleo, aquellas opciones del mismo que sea posible compilar como mdulo tendrn la casilla de seleccin a la izquierda de esta forma: < >, cuando se llega a alguna opcin con este tipo de casilla de seleccin, oprimiendo Y se la selecciona para compilarse dentro del ncleo, si se presiona M se la seleccionar para compilarse como un mdulo. Processor type and features Dentro de esta seccin encontraremos opciones de optimizacin del ncleo para el tipo de procesador que se posea. Con cada nueva serie de procesadores, caractersticas nuevas van siendo disponibles para ciertas funciones, lo que aprovecharlas es interesante para aumentar el desempeo general del sistema. El ncleo Linux soporta tambin equipos con mas de un procesador, en caso de estar compilando el ncleo para un equipo de este tipo, en esta seccin se debe activar la opcin Symmetric multi-processing support para sacar el mximo provecho. General setup Como su nombre lo indica, esta seccin contiene opciones de configuracin general del ncleo, entre ellas se encuentran opciones especificando la marca y el modelo del chipset de la placa madre del equipo, as como tambin si el ncleo utilizar el sistema de administracin de energa que provee el BIOS, el formato en el cual el ncleo ser compilado, si se soportarn dispositivos PCMCIA, etc. Memory Technology Devices (MTD) Esta seccin en nueva de los ncleos de la serie 2.4.x, posee una opcin para dar soporte a los dispositivos de discos en memoria, para poder manejar sistemas de archivos de estado slido en dispositivos embebidos. Normalmente esta opcin no se utilizar. Parallel port support Dentro de esta seccin se encuentra la opcin que activa el soporte para el puerto paralelo. Generalmente utilizaremos el puerto paralelo si en la mquina se tendr alguna impresora de puerto paralelo instalada, alguna unidad de disco Zip, o cualquier otra unidad de disco por puerto paralelo (grabadoras de CD-R, por ejemplo) o en el caso de utilizar un cable paralelo para conectarse con otra mquina. Se debe tener en cuenta que esta opcin se refiere solamente al soporte de base para todos aquellos dispositivos que utilicen el puerto paralelo, en otras secciones se debe despus confirmar el soporte individual para aquellos dispositivos especficos. Plug and Play configuration Hace unos aos se ha impuesto como estndar una norma para perifricos de tal modo que no tengan que ser configurados sus parmetros (IRQs, direcciones de E/S, etc.) manualmente, sino que el sistema lo pueda manejar lo mas convenientemente posible, de esta forma, el sistema operativo podra lidiar con los conflictos y solucionar los problemas que puedan surgir, liberando al usuario de estas tareas que a veces suelen ser complicadas de solucionar. Este estndar se conoce como Plug&Play (o abreviado, PnP), y aunque inicialmente los dispositivos PnP no funcionaban muy bien, hoy en da es mas comn ver este tipo de perifricos que los otros. El ncleo Linux tiene soporte para estos dispositivos mediante la opcin dentro de esta

seccin. Adems, se cuenta con un paquete de software llamado isapnptools que es muy til para configurar los antiguos dispositivos PnP ISA (normalmente, los mdems). Block devices En esta seccin se presentan opciones para dar soporte a varios tipos dispositivos de bloques, incluyendo unidades de discos flexibles, discos IDE por puerto paralelo, discos en memoria RAM, y otros mas. Multi-device support (RAID and LVM) Esta seccin contiene opciones de configuracin que muchas veces se utilizan en equipos servidores. RAID es una norma que sirve para generar arreglos de mltiples discos de manera de obtener redundancia de informacin y evitar problemas de corrupcin de datos en el caso de que algn disco del arreglo tenga una falla. RAID tiene varios modos de funcionamiento, generalmente en los servidores se utilizan placas controladoras de discos RAID (soporte de hardware) que funcionan en forma transparente y el sistema operativo no se da cuenta, sin embargo el ncleo Linux da la posibilidad de poder utiliza discos comunes como discos RAID (soporte por software) teniendo de esta manera un elemento mas de seguridad a bajo costo. LVM es otro mtodo de combinacin de discos, pero para la generacin de volmenes o grupos de volmenes de lgicos, cuyo tamao puede variar en tiempo de corrida del sistema, sin tener que reiniciar ni parar servicios. LVM no se utiliza para dar redundancia de datos, sino para combinar varios discos (de distintos tipos) y utilizarlos como si fuera un gran disco grande. Networking options En esta seccin se encuentran las opciones de soporte base de redes. Se podrn activar los soportes de varios protocolos, con sus opciones especficas, el mas comn en estos das es el protocolo TCP/IP, uno de los protocolos que se utiliza en Internet. Otra opcin bastante novedosa en los ncleos, es la opcin QoS (Quality of Service) la cual se utiliza para definir los algoritmos de planificacin de paquetes de red, pudiendo partir un enlace en varios sub-canales por decirlo de alguna manera, y de esta forma poder asignar cierto ancho de banda a diferentes clientes. Tener en cuenta que esta seccin no se trata acerca de soporte a perifricos de red, sino a protocolos, para tener soporte de una placa de red en especial, se debe activar en otra seccin. Telephony Support En esta seccin se da soporte a los dispositivos VoIP (Voice over IP), que se utilizan para hablar por telfono a travs de redes de datos, en vez de redes de telefona. Estos dispositivos cada vez se estn viendo con mas frecuencia, quien sabe, en unos aos quizs podremos hablar al otro lado del mundo sin tener que pagar altsimos costos. ATA/IDE/MFM/RLL support Aqu se da soporte a los discos IDE, sean discos rgidos, flexibles, CD-ROMs, etc. Tambin hay varias opciones para especificar la marca de controladora de disco que se posee, y otros detalles para mejorar la performance. El ncleo Linux puede manejar sin problemas los nuevos discos con UDMA. SCSI support Tambin existe soporte para los dispositivos SCSI, en esta seccin estn las opciones para definir los tipos de dispositivos SCSI que se dar soporte, mas otras opciones de control. Un ejemplo comn para esta seccin es el soporte para las unidades de discos Zip por puerto paralelo, En realidad estas unidades trabajan con la norma SCSI, y es por eso que parte de las opciones que se necesitan para poder hacer funcionar estos perifricos, se encuentran en esta seccin. IEEE 1394 (FireWire) support FireWire es una nueva clase de bus de datos, de alta velocidad que normalmente se utiliza para transmitir vdeo. Originariamente en las Macintosh, esta clase de conexiones se las utiliza para conectar una cmara de vdeo al equipo y capturar vdeo sin problemas de lentitud. Actualmente existen placas con puertos FireWire para PCs compatibles con IBM.

I2O device support La arquitectura I2O se ha pensado para dividir los manejadores de dispositivos I2O en dos partes: una dependiente del sistema operativo y otra no, de manera de que el fabricante del dispositivo en cuestin solamente deba hacer un solo manejador (la parte no dependiente del sistema operativo) y de esta forma poder utilizarlo en cualquier sistema operativo compatible con I2O. El autor[39] no conoce actualmente ningn dispositivo de esta clase, seguramente con el tiempo irn siendo mas comunes. Network device support Esta seccin engloba a todas las opciones de soporte de interfaces de red, desde ethernet de 10, 100 y 1000 Mbps, pasando por SLIP, PPP, PLIP, hasta interfaces WAN, Token Ring y otras. Normalmente se debern activar las opciones de soporte para placas ethernet e interfaces PPP (si es que se utilizar mdem). Amateur Radio support Los aficionados a las comunicaciones radiales no quedan de lado en lo que respecta a soporte en el ncleo. Linux tiene soporte para varios TNCs, o para simular un TNC usando una placa de sonido, de tal forma de poder conectarse con otros equipos mediante el protocolo AX.25. IrDA (infrared) support Esta seccin generalmente es para las notebooks, que poseen un puerto infrarrojo. IrDA es un protocolo de transferencia de datos va infrarrojo que se encuentra normalmente en PDAs (como las Palm) permitiendo as sincronizar los datos de la PDA en una notebook sin necesidad de conectarla con un cable serie o USB. ISDN subsystem ISDN (o RDSI, como se lo llama en Espaa) es un tipo especial de servicios digitales de telefona. Normalmente se lo utiliza para conectarse a Internet, teniendo una velocidad mucho mayor que conectando se con mdem. Actualmente se est dejando de lado ISDN en favor de ADSL, en Argentina por ejemplo, ISDN no se ha visto, por su alto costo. Old CD-ROM drivers (not SCSI, not IDE) En esta seccin se da soporte a aquellas unidades de CD-ROMs antiguas que no eran compatibles con las normas IDE ni SCSI. Generalmente eran unidades que haba que conectar a placas de sonido, actualmente no se ven esta clase de unidades de CD-ROM. Input core support Las opciones que esta seccin provee, permiten la configuracin de dispositivos de entrada del tipo USB, tales como teclados, mouses, etc. Multimedia devices Esta seccin contiene las opciones necesarias para dar soporte a dispositivos de captura de vdeo y tarjetas de radio. File systems Los sistemas de archivos son los formatos que se le dan a las particiones para poder almacenar archivos, administrar los atributos de cada archivo, etc. Esta seccin posee las opciones de soporte de sistemas de archivos tanto nativos de GNU/Linux como de otros sistemas operativos, como por ejemplo FAT32. Es importante tener en cuenta que el soporte para el sistema de archivo que se est utilizando en el sistema debe estar compilado dentro del ncleo y no como mdulo, normalmente este sistema es el Second extended filesystem (e2fs). En los ltimos ncleos se puede configurar el soporte para un nuevo sistema de archivos nativo de GNU/Linux: el Reiser filesystem (reiserfs), el cual es un sistema de archivos jornalizado, que provee ciertas caractersticas que lo hacen mas seguro que el e2fs. Adems se provee opciones para dar soporte a varios sistemas de archivos de red, que permiten utilizar discos remotos como si fueran locales al equipo, como por ejemplo NFS (generalmente se utiliza en los UN*X), SMB (plataformas Windows) y NCP (volmenes NetWare). Console drivers Aqu se encuentran las opciones para configurar el tipo de consola que se usar en el sistema.

Dependiendo de la tarjeta de vdeo que se posea, se puede configurar para que la consola tenga el tpico formato de 80x25 caracteres, o mas resolucin. Tambin se puede configurar el ncleo para soportar mas de una placa de vdeo, pudiendo tener dos monitores, uno como consola de texto y otro como consola grfica. Sound Esta seccin contiene las opciones de sonido, pudiendo configurar una gama de tarjetas de sonido bastante amplia. USB support Esta seccin provee soporte para distintos dispositivos USB, desde escneres, dispositivos de almacenamiento de datos, reproductores de MP3, mdems, impresoras hasta adaptadores de red. Kernel hacking Esta seccin contiene una opcin que se utiliza cuando se prueban ncleos en desarrollo, generalmente no se necesitar (ni tampoco ser muy seguro) activar esta opcin, a menos que se est colaborando con el desarrollo del ncleo. Una vez seleccionadas todas las opciones, se debe salir del sistema de configuracin del ncleo y salvar los cambios. Las opciones seleccionadas del ncleo se guardarn en el un archivo llamado .config dentro del rbol de fuentes del ncleo. Esto es interesante saberlo para poder copiarlo en algn sitio como respaldo y no perder las configuraciones del ncleo si necesitamos alguna vez borrar todos los archivos (por cuestin de espacio, por ejemplo). Una vez que se ha salido del sistema de configuracin del ncleo, antes de compilar se deben generar las dependencias con el siguiente comando: root@maquina:/usr/src/linux# make dep Luego se compila el ncleo: root@maquina:/usr/src/linux# make bzImage Esto puede tardar algunos minutos, dependiendo de la potencia del procesador y la cantidad de memoria RAM del equipo. La opcin bzImage (tener en cuenta las maysculas) le dice al compilador que genere el archivo del ncleo y lo comprima con bzip2. Antes se utilizaba la opcin zImage que generaba un ncleo comprimido con gzip, pero tena un lmite de tamao que actualmente se ha sobrepasado por la cantidad de opciones que posee el ncleo. bzip2 comprime mejor que gzip. Luego de generar el ncleo, se deben generar los mdulos, con el comando: root@maquina:/usr/src/linux# make modules Esta etapa quizs tome mas tiempo que la anterior, dependiendo de la cantidad de opciones que se hayan elegido como mdulos. Una vez finalizado, se deben instalar los mdulos de la siguiente manera: root@maquina:/usr/src/linux# make modules_install Y por ltimo, se debe copiar el archivo del ncleo a algn sitio donde estn alojados normalmente los ncleos, como por ejemplo el directorio /boot/. El archivo del ncleo, suponiendo que el conjunto de archivos fuente del ncleo se haya almacenado en el directorio / usr/src/linux/, se encuentra en /usr/src/linux/arch/i386/boot/bzImage. Como ltimo paso, se debe configurar el LILO para poder probar el nuevo ncleo, pero esto se

ve en Section , LILO. A modo de informacin, es conveniente comentar el uso de una utilidad bastante prctica. El comando dmesg imprime en pantalla los diferentes mensajes de inicio que el ncleo muestra cuando se arranca el sistema. Esto puede ser muy til cuando se necesita chequear mensajes de error que no se han podido leer bien en el arranque.

[37] La recursin es algo muy interesante, pero en estos casos no aporta nada til. [38] Se toma la versin 2.4.2 del ncleo para las explicaciones, pero se supone que durante toda la serie 2.4.x estas secciones y sus contenidos no cambiarn demasiado [39] En realidad, uno de los autores (Lucas Di Pentima)

106. Configurando LILO


Toda la configuracin de LILO se encuentra en /etc/lilo.conf el contenido es similar a algo as: boot=/dev/hda install=/boot/boot.b default=linux prompt timeout=5 message=/boot/message image=/boot/vmlinuz label=linux root=/dev/hda6 append=" hdc=ide-scsi ide1=autotune ide0=autotune" other=/dev/hda2 label=windows table=/dev/hda Por ahora esto puede parecer inentendible pero vamos a analizar lnea a lnea: boot=/dev/hda Significa que el dispositivo de arranque es /dev/hda[40]. El sector de arranque o boot sector de ese dispositivo contendr a LILO cuando inicie el equipo. install=/boot/boot.b /boot/boot.b es un archivo usado como nuevo sector de arranque. default=linux prompt timeout=5 Con estas tres opciones se especifica que: prompt Pregunte que ncleo hay que utilizar (el caso contrario puede ser que haya slo uno y no se quiera elegir). default En caso de no poner nada, se elija linux

timeout Tiempo en dcimas de segundos a esperar, si no se elije ninguna de las opciones. message=/boot/message Se muestra un mensaje que es el archivo /boot/message que puede contener algo como: Bienvenido a LILO, el selector de SO de arranque! Elija un sistema operativo de la lista. O espere 5 segundos para que arranque el sistema predeterminado. Luego vienen las configuraciones de los ncleos en si. En el ejemplo existen 2 ncleos, uno de linux y el otro es un Windows. Las dos configuraciones son distintas pero tienen una linea en comn. Esta es label. label es el identificador de ncleo para LILO, es de suponer que tiene que ser nico. Puedo tener varios ncleos de linux pero no con label=linux en mas de uno de ellos. Simplemente habr que asignarlos de distinta manera como por ejemplo label=linux-2.2.19 y label=linux-2.4.3. Si por un momento repasamos este concepto, nos vamos a dar cuenta que default=linux hace referencia al ncleo que posee label=linux. Cuando cambiemos de configuracin a label=linuxnuevo recordemos cambiar default tambin. Para correr un sistema no slo necesitamos el ncleo, sino tambin archivos, que componen el rbol de directorios que surge de la raz o root. Por eso, root=/dev/hda6 especifica que se va a usar la sexta particin del disco como directorio raz o simplemente raz, es decir que, todo lo que est en esa particin va a pasar a ser el directorio / donde estarn / bin/, /etc/, /home/, /usr/, /lib/, etc. En este concepto independizamos el ncleo de los archivos que maneja. Una vez que est el ncleo corriendo, los archivos se pueden obtener de diferentes lugares. Por ejemplo particiones, otros discos, discos flexibles, hasta un dispositivo que se encuentra a travs de una red[41]. Casi cualquier archivo/dispositivo puede ser root siempre que este formateado correctamente. Por ultimo la linea: append=" hdc=ide-scsi ide1=autotune ide0=autotune" pasa parmetros al ncleo para ajustar configuraciones, las cuales dependern de cada sistema.

[40] /dev/hda el disco maestro de la controladora IDE primaria [41] Un hipottico /dev/red o comnmente denominado /dev/nfsroot

107. Instalando LILO


Una vez que est correctamente configurado (mediante el archivo /etc/lilo.conf), es necesario escribir el sector de arranque del dispositivo[42]. Un error comn es pensar que slo editando el archivo se guarda la configuracin, hay que

recordar que es un archivo ms, incluso se puede utilizar otro archivo. Para grabar hay que ejecutar: root@maquina:/root# lilo Adding linux * Adding windows root@maquina:/root# Y listo. Si es que no surgi ningn problema. El asterisco (*) indica que ncleo se cargar por defecto (default). En nuestro caso es la entrada que contiene label=linux. La tecla TAB muestra todas las posibilidades de nucleos a cargar. Obviamente muestra el contenido de label.

[42] Utilizamos la palabra \emph{dispositivo} en vez de \emph{disco} porque puede ser que estemos configurando otra alternativa de arranque.

108. Introduccin a la compilacin del ncleo


Que es el ncleo[43]?, que es lo que hace realmente? El ncleo es el corazn del sistema operativo, todo sistema operativo tiene un ncleo, los hay de varias formas: monolticos, modulares, de tiempo real, microkernel, etc. Nuestro Linux (as se llama el ncleo, por eso al sistema completo lo llamamos GNU/Linux) puede hallarse de dos formas, modular o monoltico, pero por ahora no hay que preocuparse por esto ya que lo veremos mas adelante. Un ncleo (cualquiera) administra los recursos de hardware del equipo, algunos lo hacen de una manera chapucera y desordenada, de modo tal que se producen los famosos colgazos y pantallas azules de la muerte, otros (como Linux) lo hacen de manera ordenada, y muy eficiente. Un ncleo se encarga de manejar la memoria, los discos, el vdeo, el mdem, y dems dispositivos fsicos, y da acceso al usuario para que disponga de estos dispositivos de forma controlada. La administracin de la memoria y el procesador que realiza el ncleo Linux permite la ejecucin de programas en pseudo-paralelismo. No es paralelismo puro a menos que el equipo posea varios procesadores y cada uno est ejecutando un programa a la vez. El pseudoparalelismo consiste en dar a cada programa en ejecucin[44] una porcin de tiempo definida en el procesador, que normalmente son unos pocos milisegundos, cuando se acaba el tiempo asignado de procesador[45], el ncleo pausa el proceso para darle prioridad a otro que est esperando su turno. Este intercambio de procesos se hace tan rpidamente que no lo notamos, y es por eso que parece que el equipo ejecuta muchos procesos a la vez. Como la mayora de los sistemas operativos tipo UN*X, Linux es un ncleo monoltico[46], esto significa que todos los manejadores de dispositivos deben estar incluidos dentro del cdigo del ncleo al momento de encender el equipo. Esto es a veces poco prctico en el sentido de que al necesitar soporte para algn dispositivo nuevo, se debe recompilar el ncleo agregando el nuevo manejador, proceso que toma cierto tiempo y requiere reiniciar el equipo. Como se dijo anteriormente, el ncleo Linux puede tambin ser modular, esto significa que muchos manejadores pueden estar en archivos separados del archivo principal del ncleo, y por lo tanto, pueden ser cargados y descargados de memoria dinmicamente, evitando as la necesidad de reiniciar el equipo. Esta es la manera preferible de compilar los ncleos, pero hay ciertas ocasiones cuando se debe si o si compilarlo en forma monoltica.

En esta seccin veremos cmo dar soporte a nuevos dispositivos, cmo y donde buscar las actualizaciones de los ncleos nuevos, el manejo de los mdulos del ncleo y la configuracin del arrancador LILO.

[43] En ingls se lo llama kernel [44] A los programas en ejecucin se los llama procesos, y as es como los llamaremos de aqu en adelante [45] En la jerga de los sistemas operativos esto se llama timeslice. [46] No es totalmente cierto, como veremos mas adelante

109. LILO
Al hablar del ncleo es inevitable hablar del cargador de Linux o bien conocido como LILO[47] que es el encargado de cargar en memoria el ncleo y largarlo a correr. El ncleo es un archivo mas. Normalmente se encuentra en el disco rgido[48]. Similar a un archivo ejecutable, algn proceso debe ser el encargado de cargarlo y luego ejecutarlo. Como todava no se encuentra nada en memoria, la BIOS ejecuta cdigo de un lugar especial en el disco, llamado boot sector, que contendr a LILO. Una de las grandes funciones de LILO es la seleccin de ncleo a usar. Normalmente al compilar diferentes ncleos hay que elegir, por ejemplo, entre alguno que tenga soporte para clusters[49] o para emular SCSI con un dispositivo IDE[50]. Tambin se pueden tener ncleos de otros sistemas operativos (en el caso de algn problema serio neurolgico) como OS/2, toda la gama de Windows, otros UNIX, etc. El ncleo de Linux acepta parmetros para personalizarlo o en el caso de que no pueda auto detectar ciertos dispositivos o recursos. Estos parmetros deben darse antes de que se cargue el ncleo en si. Un ejemplo sera: LILO: linux mem=256M En este caso se saltea la auto deteccin de cantidad de memoria realizada por Linux y se presume que existen 256 MB de memoria. Una lista ms detallada de estos parmetros se encuentra en /usr/src/linux/Documentation/. En este directorio est toda la documentacin de los desarrolladores de ncleo, separada por mdulo.

[47] LInux LOader: Cargador de Linux [48] Es probable que en otros cursos veamos como arrancar una mquina sin disco rgido a travs de la red [49] Cluster es una forma de utilizar varias computadoras para que todas calculen al mismo tiempo como si fuera una sola [50] Es muy comn cuando se desea utilizar una grabadora de CD-R

110. Agregando mdulos de Linux


La forma de agregar un mdulo es relativamente simple. El comando es insmod y su sintaxis es: insmod mdulo [parametros]

Siendo mdulo el nombre del mdulo y parametros los parmetros de ese mdulo, que configuran al dispositivo que controla. La documentacin de los parmetros se encuentran en / usr/src/linux/Documentation/. El gran inconveniente de insmod es que no controla las dependencias necesarias, slo intenta cargar el mdulo, si la operacin no tiene xito, finaliza su ejecucin. Debido a que es casi imposible tener en mente todo el rbol de dependencias, existe una utilidad que realiza comprobaciones. Esta utilidad es modprobe. modprobe utiliza insmod en el orden correcto y su sintaxis es: modprobe modulo [parametros]

111. Automatizando un poco mas los mdulos del ncleo


Como estamos operando una mquina trataremos de automatizar lo ms posible las tareas rutinarias. Se supone que los cambios de configuracin en el hardware se hacen infrecuentemente. Entonces los parmetros en la carga de mdulos es siempre la misma. La gran mayora de los mdulos auto detectan su configuracin, pero en ciertas ocasiones hay que parametrizarla. Una alternativa poco elegante sera crear un script que cargue al mdulo con los parmetros correspondientes. Pero se vuelve engorroso tener un script por mdulo. En reemplazo a eso, los comandos insmod y rmmod utilizan un archivo de configuracin: /etc/ modules.conf. Este archivo puede contener una lnea del estilo: option nombre-modulo opt-1 [opt-2 .. opt-n] Donde opt-1, opt-2, etc. son las opciones o parmetros del mdulo. Una configuracin interesante es la creacin de sobrenombre o alias a los mdulos. Sirve para no tener que recordar nombres como via82cxxx_audio y en reemplazo usar placa_sonido por ejemplo. Su sintaxis es: alias sobre-nombre nombre-modulo Algunos scripts de configuracin del sistema tienen palabras definidas para cargar los mdulos correspondientes y que el usuario edite /etc/modules.conf y asigne el mdulo. Un ejemplo clsico sera: alias sound sb alias eth0 ne2k-pci Que asigna el seudnimo sound a un mdulo de Sound Blaster y eth0[51] al mdulo ne2k-pci para la placa de red. A medida que se utilizaban los mdulos, era conveniente tener una utilidad que cargue el o los mdulos necesarios para hacer una tarea. Esta utilidad est contenida en el ncleo, se llama {\tt kmod} y se configura en la seccin Loadable Module Support, subseccin Enable Loadable Module Support, opcin Kernel Module Loader Con slo incluir eso, prcticamente no hay que cargar a mano ni ningn mdulo.

[51] Corresponde a la primera placa de red Ethernet

112. Cmo generar un mdulo de Linux


Cuando compilamos el ncleo debemos especificar cuales controladores se compilaran como mdulos. Esto es muy sencillo, slo hay que poner la letra M en el men. Figura 33. Seleccionando opciones como mdulos

Siempre que terminamos de configurar la opciones del ncleo hay que ejecutar make dep. Ejecutando make modules se compilarn todos los mdulos que sean necesarios. Esto puede tardar desde unos pocos segundos hasta una hora, dependiendo del hardware, la configuracin (cuantos mdulos se eligieron) y la versin del ncleo. Lo nico que falta es copiar los mdulos recin compilados al lugar indicado (el directorio / lib/modules/(versin del Ncleo)/). Esto se puede hacer manualmente con cp o tipear make modules\_install.

113. Introduccin a los mdulos del ncleo Linux


Una mejora extraordinaria al ncleo fue la modularizacin del mismo. En un principio el ncleo era monoltico, es decir, un gran archivo que contena todos los controladores para los

dispositivos. Un ncleo monoltico es ms eficiente que uno modularizado, en parte porque toda referencia se conoce en tiempo de compilacin y por otro lado el sistema entero est en memoria siempre. Como desventaja tiene su gran tamao, poca flexibilidad de incorporar nuevos controladores y no acepta cambios en el cdigo existente. Los mdulos como contrapartida, se pueden cargar y descargar de memoria en cualquier momento. Dando la libertad de poder utilizar slo lo necesario. Y si estamos programando un controlador para cualquier perifrico, compilamos el controlador, lo cargamos a memoria, lo probamos y luego se puede sacar de memoria, recompilar y seguir probando. Todo esto sin rearrancar el sistema, ni cerrar los programas que estamos usando.

114. Mostrando los mdulos cargados de Linux


Una vez que tenemos varios mdulos en el directorio /lib/modules/(versin del Ncleo)/[52] podemos listar aquellos que estn siendo usados. El comando lsmod muestra los mdulos usados. Una salida podra ser: root@maquina:/root# lsmod Module Size Used by loop 9600 2 (autoclean) lockd 32208 1 (autoclean) sunrpc 54640 1 (autoclean) [lockd] autofs 9456 2 (autoclean) 8139too 12064 1 (autoclean) via82cxxx_audio 9024 0 soundcore 2800 2 [via82cxxx_audio] ac97_codec 7088 0 [via82cxxx_audio] ip_masq_vdolive 1440 0 (unused) ip_masq_cuseeme 1184 0 (unused) ip_masq_quake 1456 0 (unused) ip_masq_irc 1664 0 (unused) ip_masq_raudio 3072 0 (unused) ip_masq_ftp 4032 0 (unused) nls_cp437 3952 5 (autoclean) vfat 9408 2 (autoclean) fat 30432 2 (autoclean) [vfat] supermount 14224 3 (autoclean) ide-scsi 7664 0 reiserfs 128592 2 Como tambin podra estar vaca. Si es que ningn mdulo se carg o si el ncleo es monoltico. Tomemos el caso del mdulo soundcore: soundcore 2800 2 [via82cxxx_audio]

El tamao en memoria del mdulo es de 2800 bytes. Y el mdulo via82cxxx_audio lo est usando. Esto quiere decir que para sacar de memoria a soundcore primero hay que sacar a via82cxxx_audio. Y viceversa, si necesitamos agregar via82cxxx_audio primero tendremos que agregar soundcore. Podemos darnos cuenta de que existe un rbol de dependencias entre mdulos. Y en algn

lugar debe estar. Bueno as es, es el archivo /lib/modules/(versin de ncleo)/modules.dep y es generado en la compilacin.

[52] Aqu se muestra como generarlos, pero, la mayora de las distribuciones ya vienen casi todos los mdulos compilados

115. Retirando los mdulos de la memoria


Tambin se pueden retirar mdulos de memoria. El comando es rmmod y es similar al insmod en lo que respecta a comprobaciones en el rbol de dependencias. Un mdulo puede estar siendo utilizado por otro mdulo, pero tambin puede estar siendo utilizado por un programa de usuario. En este caso el usuario va a tener que liberar el dispositivo/recurso antes de poder retirar el mdulo de memoria.

116. Soporte de hardware


En un principio, el hardware que el ncleo Linux soportaba se deba exclusivamente al arduo trabajo de unos cuantos hackers del ncleo, que pasaban incontables horas de trabajo intentando descubrir como una pieza de hardware funcionaba (realizando lo que se llama ingeniera inversa), para luego escribir un manejador para que Linux pudiera utilizar ese dispositivo. La mayora de las empresas fabricantes de dispositivos no entregaba la informacin necesaria a los programadores del ncleo, y el soporte para los nuevos dispositivos muchas veces se tardaba un tiempo. Hoy en da, con el aumento de colaboradores en el desarrollo del ncleo, y con la creciente cantidad de empresas que se han dado cuenta que GNU/Linux vale la pena, el soporte para nuevos dispositivos no se hace esperar demasiado, y es por eso que el ncleo Linux soporta: Tarjetas de vdeo VGA, SVGA, Monocromo, etc. Controladores de discos IDE, EIDE, MFM, RLL, RAID, SCSI. Controladores de puertos seriales. Tarjetas multipuerto. Adaptadores de red Ethernet, ISDN, Frame Relay, Inalmbricas, X25, SLIP, PPP, ARCnet, TokenRing, FDDI, AX.25, ATM. Tarjetas de sonido. Unidades de cinta. Unidades de CD-ROM. Unidades de grabadoras de CD-R. Unidades removibles, como por ejemplo Zip, Jaz, Bernoulli y tantas otras. Mouse serie, PS/2 y otros. Mdems normales, y tambin algunos winmodems Impresoras matriciales, de inyeccin de tinta, y lser. Plotters. Cmaras digitales. Capturadoras de vdeo. Unidades de DVD-ROM. Puertos y dispositivos USB. La lista es demasiado grande como para detallarla en este curso, pero para tener una idea mucho mas detallada, basta con leer el Hardware-HOWTO, normalmente localizado en /usr/ doc/HOWTO/. Tambin debemos tener en cuenta que no todo el soporte del hardware listado es trabajo

exclusivo del ncleo Linux. Como ejemplo tenemos el caso de las impresoras, en el ncleo no se necesita definir explcitamente que clase de impresora se tiene conectada al equipo, solamente se necesita activar el soporte para el puerto paralelo (siempre y cuando se utilice una impresora de puerto paralelo obviamente), y el resto del trabajo lo har un programa a travs del ncleo; en el caso del ejemplo, el programa que se encarga de enviar datos a la impresora se llama lpr.

117. Consiguiendo paquetes nuevos


Es muy probable que los programas especializados no se encuentren en el CD-ROM de GNU/ Linux, al igual que las versiones actualizadas que se debern copiar de otros lugares. Un buen lugar es Internet puesto que normalmente las ltimas versiones aparecen all. Los paquetes deben ser elaborados a partir de una cantidad de archivos a instalar junto con datos de configuracin. Muchos programadores no fabrican su Software en paquetes RPM. Por lo tanto tiene que haber alguna persona dedicada a "empaquetar" esos archivos. Esto quiere decir que, si bien existen versiones nuevas de algunos programas, no necesariamente estn en paquetes RPM.

118. Buscando paquetes


Se pueden buscar en un buscador comn. Como puede ser http://www.google.com o http:// www.altavista.com. Si bien no es la forma ms ptima, muchas veces es un buen comienzo. Otra alternativa es ir a sitios especializados en el tema. Existen varios rpmfinders[53] para buscar infinidad de paquetes. Al principio suele desconcertar la cantidad que existen. No slo para computadoras tipo PC sino para diferentes arquitecturas.[54] Un ejemplo de rpmfinder es http://www.rpmfind.net/linux/RPM Siempre nos debemos asegurar de encontrar los paquetes que digan i386 para 386, 486 y Pentium I, i586 para Pentium MMX y K6 II/III o i686 para Pentium II/III y similares. Para bajar el paquete que hayamos seleccionado bastar con presionar el enlace correspondiente y se nos mostrar el dilogo Guardar Como de nuestro navegador. A la hora de elegir la ruta dnde almacenar nuestro paquete hemos de tener cuidado de no cambiar el nombre del paquete puesto que, como hemos visto, este nos da informacin, sobre versiones y tipos de arquitecturas.

[53] Buscadores de paquetes RPM. [54] Recordemos que Linux es un sistema operativo multiplataforma.

119. Eliminacin
Muchas veces los discos rgidos no son suficientes para cubrir todas las necesidades. A falta de espacio en disco, se debe eliminar los paquetes menos usados o los ms grandes. La eliminacin es tan fcil como la Instalacin. Instalamos el paquete "xmms", ahora vamos a proceder a eliminarlo. Esta vez no hace falta poner el CD-ROM de GNU/Linux. 1. Se carga el "kpackage" mediante una terminal o consola escribiendo kpackage (siendo root) o yendo al men K->Utilidades->kpackage. (fig. Figure 1) 2. Seleccionar el paquete a desinstalar, como por ejemplo RPM-Application-Multimediaxmms. (fig. Figura 34. Seleccin del paquete a eliminar) 3. Figura 34. Seleccin del paquete a eliminar

4.

5. Hay que presionar Desinstalar en la pantalla principal. Saldr un cuadro de dilogo similar al de la figura Figura 35. Desinstalar un paquete 6. Figura 35. Desinstalar un paquete

7.

8. luego Desinstalar. Es un procedimiento muy muy simple... hay que tener cuidado con varios paquetes: RPM-Applications-kpackage RPM-System Environment-Base-rpm Son los programas usados para instalar/desinstalar programas. No hay problemas en desinstalar ninguno de ellos pero al querer volverlos a instalar... no existe el instalador de paquetes. (Jurara que estaba ah hace segundos) Una categora muy peligrosa es RPM-System Environment y todas sus ramas. A pesar de que estamos trabajando en memoria, si se corta la energa luego de eliminar esos paquetes,

es muy probable que no se pueda arrancar ms el sistema. Y existen muchas cosas mas entretenidas para hacer con GNU/Linux que reinstalar todo de cero.

120. Instalacin
Uno de los propsitos que tiene el sistema de paquetes RPM es la instalacin de paquetes nuevos. Se puede encontrar todo el conjunto de paquetes a instalar en el CD-ROM de GNU/ Linux. Tambin se consiguen infinidad de paquetes en Internet listos para bajar. Existen utilidades y sitios dedicados a encontrar paquetes de un determinado tipo. Por ejemplo si queremos utilizar el reproductor de mp3 llamado "xmms" y no se encuentra instalado: 1. Insertamos el CD-ROM de GNU/Linux 2. Si no se monta automticamente, debemos ir a una terminal y montarlo escribiendo mount /mnt/cdrom 3. Ejecutamos el comando kpackage, desde una Terminal o accediendo a travs de K>Utilidades->kpackage 4. Va a preguntar la clave del root, debido a que los paquetes se hacen disponibles a todos los usuario no tan slo a uno. 5. Una vez en el programa kpackage debemos ver una pantalla similar a la figura Figura 36. Pantalla inicial del kpackage 6. Figura 36. Pantalla inicial del kpackage

7.

8. Buscamos el paquete "xmms", para eso vamos a Archivo->Buscar Paquete . (fig. Figura 37. Funcin de bsqueda de paquetes). 9. Figura 37. Funcin de bsqueda de paquetes

10.

11. Si est instalado va a aparecer con un icono de paquete que tiene una "R" (de RPM). En este caso, elija otro paquete que no est intalado en la categora NEW. 12. En cambio si no est instalado, el icono es una "N" (de Nuevo) y se puede ver informacin sobre el paquete. (fig. Figura 38. Vista de paquetes no instalados). 13. Figura 38. Vista de paquetes no instalados

14.

15. El botn Examinar contiene detalles acerca de la instalacin. (fig. Figura 39. Detalles sobre la instalacin de paquetes). 16. Figura 39. Detalles sobre la instalacin de paquetes

17.

18. Para instalar el paquete slo hay que presionar el botn Instalar. En el caso de que no haya problemas ya se podra ejecutar el comando xmms desde una terminal o consola como muestra la figura Figura 40. Carga del xmms desde una consola. Figura 40. Carga del xmms desde una consola

Para aquellos usuarios de la KDE 2.0 el proceso de instalacin es casi igual pero existen

algunos matices que se deben tener en cuenta. Para ejecutar kpackage podemos ejecutar kpackage desde un terminal en el que previamente hayamos ejecutado su porque de otra manera nos dejar ver los paquetes instalados pero no permitir la instalacin de nuevos paquetes. El entorno que nos presenta kpackage en la versin de KDE 2.0 es parecido al de la KDE 1.1.x con lo que se puede aplicar todo lo visto hasta ahora sin ninguna complicacin.

121. Saber sobre nombres de paquetes


Para copiar paquetes primero hay que saber qu es lo que estamos copiando. Un nombre tpico de paquete sera: xmms-0.9.5-1.i386.rpm donde: xmms es el nombre del paquete 0.9.5 es la versin, cuanto mayor, ms nuevo es el paquete. 1 es la revisin. Sera la versin del empaquetado, no del programa. i386 es la arquitectura, o sea el tipo de mquina donde va a ejecutarse. rpm es la extensin. Ya veremos en detalle que hay que tener en cuenta al copiar.

122. Verificacin
Muchas veces el uso incorrecto del sistema borra o modifica archivos que pertenecen a paquetes y que son necesarios para su funcionamiento. Pasado un tiempo, al intentar ejecutar programas, stos no funcionan correctamente. Una alternativa antes de instalar de nuevo el paquete defectuoso es la verificacin del mismo para que no se reinstale equivocadamente. Cmo verificar un paquete: Seleccionamos el paquete (ej. RPM-Applicaciones-Multimedia-xmms) Ir a la lengeta Lista de Archivos (fig. Figura 41. Listado de archivos correspondientes a un paquete) Figura 41. Listado de archivos correspondientes a un paquete

Se indicar con una cruz roja cualquier archivo que no se encuentre, en cambio, se marcarn los archivos existentes con un tilde verde.

123. Bibliotecas grficas en X


Para dibujar en pantalla cualquier cosa, el servidor X provee a los programadores de la biblioteca grfica Xlib. Esta biblioteca provee de funciones de dibujo demasiado primitivas, y el realizar un entorno de ventanas con estas funciones se hace demasiado complicado, es por sto que se han desarrollado distintas bibliotecas grficas basadas en Xlib, pero que proveen un conjunto mas rico y complejo de funciones que facilitan la tarea al programador y mejoran la esttica de los programas grficos. Como primeros ejemplos se tuvo a la biblioteca Motif, que se utilizaba mucho en programas comerciales en los distintos UNIX. Motif visualmente es muy simple y a la vez no requiere de muchos recursos del equipo para funcionar con buena velocidad. Con el tiempo comenzaron a aparecer proyectos alternativos, primero fue la versin libre de Motif llamada Lesstif, luego bibliotecas mas pulidas como XForms y finalmente Qt y GTK+. En las figuras \ref{fig:BibliotecaQt} y \ref{fig:BibliotecaGTK} se pueden apreciar las diferencias visuales de Qt y GTK+ respectivamente. Figura 42. Entorno grfico basado en Qt

Figura 43. Entorno grfico basado en GTK+

Adems de la diferencia visual de las bibliotecas grficas, estas tambin difieren en lo que respecta a los lenguajes de programacin soportados. Tomando como ejemplo las dos bibliotecas grficas mas populares en estos das, Qt (y las kde-libs) principalmente usan C++ para el desarrollo de aplicaciones, en cambio las bibliotecas grficas del proyecto GNOME (GDK y GTK+) tiene como lenguaje de programacin principal el C. Sin embargo, esto no es una limitacin hoy en da, ya que estas bibliotecas tambin soportan lenguajes alternativos como el Perl, Python, Tcl/Tk, etc. de tal manera de poder dar cabida a ms programadores para cada entorno grfico.

124. Porcin: Modelo de capas del protocolo X11


El hecho de que el servidor X haya sido diseado para ser portable a diferentes arquitecturas hizo que el funcionamiento de ste con las aplicaciones grficas funcionen en modo de capas. La divisin de areas en distintas capas es algo que se ve en muchos aspectos del funcionamiento de GNU/Linux dada la facilidad de mantenimiento de los programas que se logra. Figura 44. Modelo de capas con el entorno KDE

En la figura Figura 44. Modelo de capas con el entorno KDE vemos que como capa inferior, se tiene al hardware, el cual interacta con su capa inmediata superior, que en este caso es el servidor X, es decir que X se encarga de lidiar con las particularidades de cada tarjeta de vdeo, manejar las funciones de red, y el dibujado bsico en pantalla [55] Estas funciones de dibujado, X se las provee a su capa superior la cual depender del entorno grfico que se est manejando. En el caso de KDE por ejemplo, la capa superior a X es la biblioteca llamada Qt, sta provee las funciones de armado de ventanas, movimiento de las mismas, y dibujado de botones, flechas, punteros, etc. las cuales son aprovechadas por la capa correspondiente a las kde-libs es decir, a las bibliotecas de KDE dedicadas a dar una coleccin de funciones de construccin de cajas de dilogos estndar, menes, etc. a las aplicaciones KDE y al entorno KDE propiamente dicho. En el caso del entorno grfico GNOME [56] el esquema de capas es muy similar al anterior, como se ve en la figura Figura 45. Modelo de capas con el entorno GNOME Figura 45. Modelo de capas con el entorno GNOME

Lo nico que cambia son las capas por encima del servidor X, y es por eso que es posible tener en un mismo equipo varios entornos grficos y usar el que mas se ajuste a las necesidades del usuario, a diferencia de otros sistemas operativos que slo poseen una opcin. Lo interesante del modelo de capas, es que stas son intercambiables: si por ejemplo se cambia la tarjeta de vdeo (la capa mas inferior), no es necesario tener que cambiar el resto del conjunto de programas, slo basta con que la capa superior (el servidor X en este caso)

pueda comunicarse con la nueva capa de hardware para que todo funcione correctamente. Otra ventaja es que si el desarrollo de las diferentes capas se realiza por diferentes grupos de personas, cuando se actualiza una de las capas el conjunto en su totalidad se actualiza automticamente, si por ejemplo el equipo GNOME lanza su nueva versin de la biblioteca GTK+, solamente har falta instalar esta nueva versin y el resto de los programas que conforman las otras capas no deberan tocarse, quedando todo funcionando correctamente [57]

[55] Cuando se habla de dibujado bsico, se est hablando de pintado de puntos en pantalla. [56] Se dan estos dos ejemplos ya que son los entornos grficos mas populares en estos das. [57] Esto es lo que normalmente ocurre, pero a veces puede tomar un poco ms de trabajo dependiendo del nivel de actualizacin.

125. Configuracin y utilizacin de Leafnode


La configuracin de Leafnode es relativamente sencilla, se concentra en un slo archivo. Para RedHat lo encontraremos en /etc/leafnode/config, que es donde se instala por defecto. Para Debian en /etc/news/leafnode/config. Este archivo tiene varias opciones que vamos a explicar a continuacin: server el servidor al que se conectar Leafnode. supplement un servidor de apoyo para bajar aquellas noticias que no encontremos en el principal o cuando ste no est disponible. expire el tiempo mximo que permanecern las noticias en el servidor Leafnode. username nombre de usuario para acceder al servidor. password la clave para permitir el acceso. port puerto al que se conectar Leafnode para bajar las noticias si es diferente del 119. timeout mximo tiempo de espera si no se conecta. nodesc aqu decidimos si queremos bajar los grupos con descripciones, valor 1, o sin descripciones, por defecto, valor 0. filterfile fichero en el que se encuentran los filtros. groupexpire tiempo de caducidad de las noticias dentro de un grupo determinado. maxfetch nmero mximo de noticias que se bajarn desde el servidor en una sesin. initialfetch el nmero de noticias que se obtienen la primera vez que Leafnode baja un grupo de noticias. til cuando se trata de grupos que tengan mucho trfico, de esta manera se bajarn los ms actuales. delayboy para bajar slo los encabezados en un primer momento y, posteriormente, los cuerpos de aquellas noticias que hayamos seleccionado con el lector de noticias. Hay que tener cuidado

porque da problemas con el lector de noticias del Netscape. maxcrosspost nmero mximo al que se ha enviado una noticia, si excede el nmero, la noticia no ser almacenada. maxage con esta opcin indicamos la antigedad mximo de las noticias a bajar. maxlines nmero mximo de lneas que puede contener la noticia. maxbytes tamao mximo de las noticias, para evitar la descarga de binarios. timeout_short indica el nmero de das que Leafnode mantendr un grupo de noticias antes de darlo de baja cuando no tiene a nadie suscrito al mismo. timeout_long es el nmero de das que Leafnode seguir bajando noticias a un grupo que nadie est leyendo, luego lo dar de baja. timeout_active con esta opcin indicamos a Leafnode un intervalo en das para que actualize la lista de grupos desde los servidores. create_all_links para aquellos que usen lectores de noticias que permitan puntuar/matar, valor 1 para activar, 0 para desactivar. hostname nombre del servidor de noticias que saldr en la noticia en el caso de que Leafnode no lo resuelva de forma satisfactoria. Este es el fichero de configuracin que viene con Leafnode, he optado por dejar los comentarios en ingls y poner, opcionalmente, algunos comentarios en espaol al final de cada seccin. ## This is the NNTP server leafnode fetches its news from. ## You need read and post access to it. Mandatory. server = news.servidor_principal.com #Puede que necesite poner usuario y clave para lo que usaremos: #username = usuario #password = clave #****************************************************************** ## Unread discussion threads will be deleted after this many days if ## you don't define special expire times. Mandatory. expire = 5 #Este es el tiempo de caducidad por defecto de todos los grupos. #****************************************************************** # Todo lo que viene despus son parmetros opcionales. ## ## All the following parameters are optional ##

## I have free access to my news server. If you don't have, comment out ## the following two lines and change them accordingly. ## username = name ## password = pass ## Standard news servers run on port 119. If your newsserver doesn't, comment ## out the following line and change it accordingly. # port = 8000 #El puerto en el que escucha leafnode es el 119, con port se puede cambiar. #*************************************************************************** ## This is another news server which stores some groups that are not ## available on the first one. You can define username, password and port ## for each server separately. server = news.un_servidor.com username = usuario password = clave server = news.otro_servidor.com.es username = usuario password = clave #Esta parte es si se necesita tener servidores adicionales por si el principal #falla o para complementar las noticias. #***************************************************************************** ## This is a news server which does not understand the ## "LIST NEWSGROUP news.group" command. For this reason, we don't try to ## download newsgroups descriptions when getting new newsgroups. This is ## achieved by putting "nodesc = 1" somewhere behind the server ## line. # server = broken.upstream.server # nodesc = 1 ## Here we have another news server which has a very slow connection. For ## that reason, we wait a full minute before we give up trying to connect. ## The default is 10 seconds. # server = really.slow.snail # timeout = 60 ## Non-standard expire times (glob(7) wildcard constructs possible) # groupexpire comp.os.linux.* = 5 # groups too big to hold articles 20 days # groupexpire any.local.newsgroup = 100 # very interesting, hold articles longer #groupexpire es.comp.os.linux.* = 20 ## Never fetch more than this many articles from one group in one run. ## Be careful with this; setting it much below 1000 is probably a bad ## idea. maxfetch = 100

## Fetch only a few articles when we subscribe a new newsgroup. The ## default is to fetch all articles. initialfetch = 30 ## If you want to use leafnode like an offline newsreader (e.g. Forte ## Agent) you can download headers and bodies separately if you set ## delaybody to 1. In this case, fetch will only download the headers ## and only when you select an article, it will download the body. ## This can save a huge amount of bandwith if only few articles are really ## read from groups with lots of postings. ## This feature works not very well with Netscape, though (which is not ## a fault of Leafnode). delaybody = 0 ## To avoid spam, you can select the maximum number of crosspostings ## that are allowed in incoming postings. Setting this below 5 is ## probably a bad idea. The default is unlimited crossposting. maxcrosspost = 2 ## If you suffer from repeatedly receiving old postings (this happens ## sometimes when an upstream server goes into hiccup mode) you can ## refuse to receive them with the parameter "maxage" which tells the ## maximum allowed age of an article in days. The default maxage is 10 ## days. maxage = 10 ## maxlines will make fetch reject postings that are longer than a certain ## amount of lines. # maxlines = 100 ## minlines will make fetch reject postings that are shorter than a certain ## amount of lines. # minlines = 2 ## maxbytes will make fetch reject postings that are larger maxbytes = 1048576 #maxbytes = 5120 ## timeout_short determines how many days fetch gets a newsgroup which ## has been accidentally opened. The default is two days. # timeout_short = 1 ## timeout_long determines how many days fetch will wait before not getting ## an unread newsgroup any more. The default is seven days. # timeout_long = 6 ## timeout_active determines how many days fetch will wait before re-reading ## the whole active file. The default is 90 days. # timeout_active = 365

## If you want to have your newsreader score/kill on Xref: lines, you might ## want to uncomment this. # create_all_links = 1 ## If you want to filter out certain regular expressions in the header, ## create a "filterfile" (how this is done is explained in the README) ## and set filterfile = /etc/leafnode/filters ## If your newsreader does not supply a Message-ID for your postings ## Leafnode will supply one, using the hostname of the machine it is ## running on. If this hostname is not suitable, this parameter can be ## used to override it. Do not use a fantasy name, it may interfere with ## the propagation of your messages. Most modern newsreaders do provide ## a Message-ID. # hostname = host.domain.country Leafnode consta de una serie de programas que tienen como objetivo el control del servidor: fetchnews con este comando se prepara a Leafnode para albergar los grupos de noticias y para bajar las noticias cada vez que queramos. Presenta una serie de modificadores que nos ayudan a controlar su funcionamiento. Los modificadores ms destacados son v, f, x, l, n y P. Con el modificador v hacemos que pase a modo de depuracin, de esta manera ir mostrando en pantalla los mensajes que va generando, con lo que podemos ver el estado actual o los mensajes de error si los hubiera. La profundidad de depuracin viene marcada por la cantidad de v que se pongan. El modificador f se utiliza para volver a leer las listas de grupos desde los servidores, puede tardar tiempo y se utiliza cuando Leanode comienza a dar problemas al servir las noticias. El modificador x # nos permite bajar # noticias extras desde el exterior. El modificador l se usa para que Leafnode no utilice los servidores suplementarios. Con el modificador n se puede comunicar a Leafnode que no elimine los grupos que no se leen, esto es, cuando nos inscribimos en un grupo que nos interesa pero que no leemos desde hace tiempo. El modificador P se utiliza para mandar las noticias que hayamos recibido localmente a los servidores externos pero no bajar ninguna noticia nueva. texpire este es el programa que retira del servidor todas aquellas noticias que superen el tiempo dado en la directiva expire o groupexpire. Sus modificadores son dos, v y f. El modificador v es el mismo que en el comando anterior. El modificador f se utiliza para forzar la caducidad de las noticias independientemente del tiempo de acceso. applyfilter con este programa se busca dentro de las noticias almacenadas en el directorio news todas aquellas que coincidan con los patrones dados dentro del fichero filters para ser retiradas. Su sintaxis es applyfilter grupo de noticias, ha de notarse que se debe dar el nombre completo del grupo, por ejemplo, para el grupo misc de la jerarqua ecol ha de ponerse applyfilter es.comp.os.linux.misc. checkgroups se utiliza para actualizar las descripciones de los grupos. newsq con este vemos las noticias que hay en la cola listas para ser enviadas al servidor en la prxima conexin.

Figura 46. Viendo las noticias en knode

126. Introduccin a Leafnode


El servidor Leafnode se utiliza para redes pequeas que necesiten un servidor de noticias offline, esto es, leer las noticias desconectados de la red, o cuando se tiene una conexin lenta. Leafnode se utiliza para replicar grupos de noticias que obtiene desde otro servidor ya que, por el momento, no es capaz de generar grupos locales, aunque parece que en el futuro soportar esta caracterstica. Su mayor ventaja est en su pequeo tamao y su fcil instalacin. Por contra, slo se puede utilizar para pocos usuarios puesto que no es escalable. Si se necesita dar servicio de noticias a una gran cantidad de usuarios hay mejores alternativas, como INN.

127. Los filtros en Leafnode

Aqu es dnde apunta la directiva filterfile del archivo de configuracin. En este archivo se colocan todas aquellas reglas destinadas al filtrado de mensajes que no queramos recibir. Dentro de Usenet hay una prctica que se va extendiendo y que es perjudicial, el denominado Spam, con el filtrado de las direcciones desde las que se remiten los mensajes no solicitados se consigue que los mensajes que leamos se ajusten a la materia del grupo de noticias al que estemos apuntados. Otra manera de controlar estos mensajes es con la directiva maxcrosspost del archivo de configuracin que evita leer mensajes que vayan a ms de una determinada cantidad de grupos a la vez, el denominado crossposting, y que es muy utilizado por los spammers. Las expresiones para el fichero de filtros siguen la misma estructura que las expresiones regulares de Perl. Con la siguiente lnea filtramos cualquier noticia que tenga como remitente de correo \comando{todosexo@sex.com}: ^(i?:from):.*[< ]todosexo@sexo.com(>|$| ) Ejemplo de filtro para el apartado Asunto (Subject en ingls): ^Subject.*\[Cursos-linux\]*. Con esta regla filtramos todas las noticias que tengan en el asunto [Cursos-linux]. De esta forma podremos evitar bajar noticias que contengan unas determinadas palabras o unos remitentes molestos. En http://www.escomposlinux.org/spam/ se pueden encontrar consejos para filtrar el spam y filtros constantemente actualizados que filtran los spammers dentro de la jerarqua es.comp.os.linux.*.

128. Obtencin e instalacin de Leafnode


Se puede obtener Leafnode desde la pgina oficial del programa http://www.leafnode.org. Si se quieren bajar paquetes en formato rpm se puede acudir a http://rpmfind.net para el formato Debian se deber acudir a http://www.debian.org. Aunque normalmente el paquete de Leafnode viene con la mayora de las distribuciones. Figura 47. Pgina de Leafnode

Su instalacin es sencilla: Paquetes RPM desde la lnea de comandos ejecutaremos la orden rpm -i leafnode-1.9.17-1.rpm, teniendo en cuenta que la versin puede ser distinta, en este caso, 1.9.17-1. Paquetes Deb desde la lnea de comandos ejecutamos apt-get install leafnode y con esto nos aseguramos que se instalan todas las dependencias necesarias. Cdigo fuente procederemos a desempaquetar el archivo con las fuentes con la orden tar xvzf archivo y buscaremos el fichero README para ver la informacin de compilacin. Una vez realizada la instalacin, habr que verificar la existencia del usuario news. Dentro del fichero /etc/inetd.conf debe existir: nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode

Estas comprobaciones no son necesarias porque el sistema de instalacin las trae automatizadas, pero servirn para descartar problemas si el servicio no funciona correctamente. Si estamos utilizando xinet en lugar de inet, deberemos crear un fichero llamado leafnode dentro del directorio /etc/xinetd.d/, con el siguiente contenido: service nntp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/leafnode log_on_success += USERID log_on_failure += USERID } El siguiente paso lgico es editar el fichero de configuracin con el objeto de adpatar el servicio a nustras necesidades e indicarle a Leafnode una informacin vital para su correcto funcionamiento. El ltimo paso sera automatizar los comandos para bajar los grupos y las noticias. Para esto se puede poner el fetchnews dentro del script ip-up para bajarlos cuando hagamos la conexin a Internet o bien aadiendo una lnea dentro del cron. Aunque siempre nos queda el mtodo manual, esto es, ejecutarlo desde la lnea de comandos. Reiniciamos el demonio inetd o xinetd: kill -HUP `cat /var/run/inetd.pid` kill -HUP `cat /var/run/xinetd.pid` o bien: /etc/init.d/xinetd reload En el fichero /etc/hosts.deny pondremos: leafnode: ALL EXCEPT LOCAL Ejecutamos fetchnews despus de haber hecho los cambios en el fichero de configuracin, con lo que se bajarn la lista de grupos disponibles. Luego nos conectaremos desde nuestro cliente favorito, teniendo en cuenta que el servidor ser local y no se necesitar usuario ni contrasea. Ejecutamos fetchnews por segunda vez y comenzarn a bajar las noticias de los grupos suscritos hasta un mximo que ha sido definido en el fichero de configuracin.

129. Cdigos de salida

Una vez que termina cada programa, puede brindar al entorno un Cdigo de salida para que otros programas o el intrprete sepan como concluy la aplicacin. Tomemos un ejemplo de la vida de un administrador. Es comn que la administracin sea remota, por lo que vamos a considerar que en nuestra tarea no tenemos conocimiento de lo que est pasando en una mquina alejada en la que se est ejecutando arreglar-base-dedatos. El script arreglar-base-de-datos es un script que corrige posibles errores en una hipottica gran base de datos. Y el resultado de esa correccin interesa, especialmente, si no se pudo arreglar. Vamos a suponer que hay 2 posibles alternativas: Salida exitosa La base de datos no tuvo ningn error. En este caso slo hay que agregar al archivo /var/log/ BD.registro una lnea con la fecha de comprobacin y el responsable en ese momento. Se detectaron errores pero no se repararon Esta situacin es peor. Hay que escribir informacin detallada en /var/log/BD.registro y adems enviar correo-e [58] a una lista de encargados y directivos de la empresa. Para diferenciar cada caso se asigna un cdigo de salida a cada uno. Luego de ejecutar arreglar-base-de-datos se verifica en base al cdigo, los comandos a ejecutar. El algoritmo sera algo similar a: if arreglar-base-de-datos then date >> /var/log/BD.registro echo $RESPONSABLE_BD >> /var/log/BD.registro else informar-errores.sh >> /var/log/BD.registro enviar-mail "Errores en BD" lista-encargados lista-directivos fi Y dnde estn los cdigos de salida? Bueno, el comando interno [59] if analiza el cdigo de salida, y si es 0 (cero) ejecuta la lista de comandos despus del then, en caso contrario (y si existe) la lista de comandos despus del else hasta encontrar un fi. Por lo tanto el script arreglar-base-de-datos tiene que devolver 0 en caso de xito. ste es el comportamiento normal de la mayora de los comandos en Linux y otros Unix, y un valor para varios errores. Las pginas man suelen tener una seccin llamada Exit Status que contiene los cdigos que devuelve el programa.

[58] Por ridculo que parezca es la forma correcta de mencionar a los emails [59] Built-in command en ingls.

130. Archivos de configuracin del intrprete de

comandos bash
La configuracin de un intrprete de comandos consiste mayormente en establecer las variables de entorno, los aliases de comandos y el formato del prompt que se necesiten. Dependiendo del tipo de uso que se le dar al intrprete de comandos, habr diferentes necesidades de configuracin de estos valores. Existen dos modalidades de uso del intrprete de comandos bash: interactiva es la comn no interactiva es propicia para scripts Por esto, el intrprete de comandos tiene unos cuantos archivos que se ejecutan al inicio. Los archivos pueden categorizarse en: no-login cada vez que se ejecuta el bash (incluso desde el interprete de comandos), se leen estos archivos. Es el caso ms comn, cada vez que se abre una konsole, xterm, gnome-terminal o equivalente, se ejecutan. login slo cuando el usuario comienza la sesin se ejecuta. En tiempos de terminales y consolas era fcil identificar cuando el usuario se logueaba. Hoy en da es muy popular el login grfico, el cual no carga inmediatamente un bash como antes.

131. Entrada, salida y error estndar


Haremos una breve introduccin a los conceptos que definen los componentes de un programa en lnea de comandos. Tal vez muchos piensen que se necesitan herramientas de funciones complejas para administrar un sistema GNU/Linux. Como contracara nos encontramos con 20 o ms comandos de funciones bsicas y relativamente simples. Vamos a detallar un ejemplo para ver cual a proximacin es ms til. Un ejemplo de la vida cotidiana para entender la filosofa de las herramientas en lnea de comandos se puede encontrar en las paginas info de "Text utilities" - "Opening the software toolbox" - "Toolbox introduction". Una traduccin no oficial sera algo como: Mucha gente lleva una navaja de la Armada Suiza en los bolsillos de sus pantalones (o cartera). Una navaja de la Armada Suiza es una herramienta til de tener: tiene varias hojas de cuchillo, un destornillador, pinzas, palillo para dientes, sacacorchos y probablemente unas cuantas cosas ms. Para trabajos pequeos miscelneos de todos los das donde se necesita una herramienta de propsito general, es la herramienta indicada. Por otro lado, un carpintero experimentado no construye una casa utilizando una navaja de la Armada Suiza. En cambio, posee una caja de herramientas llena de herramientas especializadas -una sierra, un martillo, un destornillador, etc. Y conoce exactamente dnde y cuando utilizar cada herramienta; no va a martillar clavos con el mango del destornillador. La filosofa de Unix (en lnea de comandos) cree que un nico programa especializado para hacer todas las tareas no es bueno, al menos no para usuarios avanzados o administradores. Los usuarios finales sin conocimientos en reas informticas pueden preferir tener un slo

programa para todo, pero este nico programa tiene dificultades para el mantenimiento y modificacin. Se vuelve monstruoso y complicado. En reemplazo se prefiere la navaja de la Armada Suiza para tareas cotidianas, o sea, un conjunto de programas pequeos de gran simplicidad que en conjunto se potencian. Para que los programas trabajen en conjunto se utiliza el concepto de flujo como una corriente de bytes. Al igual que con las tuberas reales (digamos caos, los grifos o canillas, duchas, etc.) de una casa, se conectan unos a otros donde cada uno tiene una entrada, una funcin y una salida. El concepto de tuberas lo veremos en la seccin Tuberas (pipes) por ahora vamos a distinguir los otros tres aspectos con un ejemplo. El comando sort puede ordenar por orden alfabtico. sta sera la funcin del programa. Pero qu ordena? bueno aqu es donde interviene la entrada. Que sin utilizar la magia de las tuberas, ser el teclado la entrada. Haremos una prueba: $ sort El comando sort puede ordenar por orden alfabtico

... luego presionamos Ctrl-D que significa "fin de archivo" en la mayora de los casos, apareciendo en pantalla: alfabtico comando El orden ordenar por puede sort Con este ejemplo nos damos cuenta que la salida es la pantalla. A estas alturas uno podra preguntarse "Pero no es la nica entrada que posee mi programa"; es verdad que un programa puede tener muchas entradas y muchas salidas. Por ejemplo cuando lee un archivo, ste es una entrada ms. Pero los conceptos que venimos estudiando son entradas y salidas especiales, llamadas entrada estndar y salida estndar. Tambin existe un tipo de salida adicional que es el error estndar. Por este flujo se canalizan

todos los mensajes de error o avisos del programa. Facilitando varias tareas. Una muy comn es reunir todos los errores en un archivo separado en caso de problemas, para su posterior anlisis. En nuestro ejemplo si sort intentaba abrir un archivo y no exista, es preferible que escriba: Fichero o directorio no existe Antes de que lo canalice como salida estndar y diga directorio existe Fichero no o Teniendo claro los conceptos vamos a ver cmo utilizamos las tuberas para unir los programas entre s.

132. Programacin en shell


Una de las grandes ventajas que ofrece un intrprete de comandos es la programacin en un lenguaje rstico pero poderoso para automatizar infinidad de tareas. Como todo lenguaje, posee reglas sintcticas que establecen la forma de escribir las sentencias a ejecutar. Para quienes poseen conocimiento de otros lenguajes de programacin, el signo punto y coma (;) es utilizado frecuentemente como separador o terminador de sentencias. En bash no es necesario y puede ser reemplazado por Enter. Es comn encontrar una lnea de este tipo: # comando1 ; comando2 (ejecucin de comando1 seguido de comando2) es equivalente a: # comando1 (ejecucin de comando1) # comando2 (ejecucin de comando2) En el primer ejemplo con una sola lnea se ejecutan ambos comandos. Es muy buen ejemplo cuando se quiere encadenar tareas que consumen mucho tiempo y tienen que ser seguidas. Hay que tener presente que no se ejecutan en paralelo. Cuando termina de ejecutarse comando1 empieza a ejecutarse comando2.

133. Prctica

1. Hacer un script que compile un programa [60] y SLO en el caso de que la compilacin sea exitosa, realice el enlazado (o linkado) del mismo [61] . 2. Suponiendo que el comando cant-mb-libres retorna la cantidad de MB libres en el disco, hacer un script que compruebe la capacidad disponible, y si es mayor a 640MB, copia el directorio /usr/local al directorio /backup. En caso contrario mandar un correo a <administrador@lejos.ch>, tambin utilizando un hipottico comando: enviar-mail. 3. En base al listado del directorio /backup, enviar a la impresora (o agregar al archivo / dev/lp0 que es equivalente) los primeros 30 elementos. Si exista mayor cantidad de archivos escribir una lnea final que diga "y ms...". Este ejercicio realizarlo con while o for en lugar de tuberas.

[60] Se puede realizar con gcc -c main.c [61] Aqu podemos realizar gcc main.o -o main

134. Redireccin
Si bien nuestro ejemplo es ilustrativo, es bueno ver los resultados en pantalla. En repetidas ocasiones en la vida de un sistema es mejor tener todo en archivos, ya sea para guardar algn historial o para automatizar ciertas funciones dentro de scripts. Para almacenar o sacar informacin de archivos y vincularlas con entradas o salidas estndares se utilizan Redirecciones. La redireccin se expresa con los smbolos Mayor (>) y Menor (<). Se pueden utilizar en forma simple o doble. Ejemplo 30. Uso de la redireccin Utilizando el comando cat se puede hacer una copia de arch1.txt a arch2.txt utilizando redireccin. $ cat arch1.txt > arch2.txt Se puede redireccionar una archivo para visualizarlo con less $ less < arch1.txt

135. Escritura
Para escribir un archivo se utiliza (>). Hay que tener mucho cuidado de no borrar un archivo sobreescribindolo. Cuando se utilizan redirecciones, debido a su utilidad en los scripts, no se realizan confirmaciones. Si el archivo a escribir existe y posee informacin valiosa, aplicar >archivo-importante lo sobreescribe con el contenido del flujo. En cambio el operador (>>) realiza un agregado [62] de los datos en el flujo. No hay nada mejor que un ejemplo clarificador: $ escribe-en-salida-estandar > archivo.txt El (falso) comando escribe-en-salida-estndar justamente hace eso, escribe unas cuantas

cosas en salida estndar. Puede ser un ls, un cal o cualquier comando antes visto, as como tambin una combinacin de comandos por tuberas. En este punto, el contenido de archivo.txt es lo mismo que saldra en pantalla. Si ejecutamos otro comando redireccionado a archivo.txt, ste pierde su contenido y el resultado de la operacin pasa a estar en el archivo. Cuando se necesita tener una lista de acontecimientos, no se quiere que un acontecimiento nuevo borre a todos los anteriores. Para lograr esto agregamos en vez de sobreescribir. $ echo Este es el acontecimiento Nro. 1 > bitacora.log $ echo Este es el segundo acontecimiento >> bitacora.log Va a escribir dos lneas en el archivo bitacora.log sin eliminar nada. Ejemplo Si queremos combinar el ejemplo de las tuberas en la seccin Tuberas (pipes) con lo aprendido recientemente podramos escribir: $ cat archivo.txt | sort | sacar-repetidas | diccionario >> glosario.txt

136. Lectura
Para la lectura es el smbolo menor (<) y se utiliza de la siguiente manera: $ comando-que-acepta-stdin < archivo-de-entrada.txt Preferimos emplear el comando cat para estas operaciones, pues brinda una mayor legibilidad.

137. Prctica
1. Con los comandos aprendidos, mostrar de un directorio de varios archivos los primeros 10. 2. Modificar el ejercicio anterior para mostrar los 10 archivos de mayor tamao, ordenados alfabticamente. 3. En un directorio con varios archivos, mostrar slo los que tienen una determinada terminacin como por ejemplo .txt utilizando grep y find. 4. Utilizando find o una composicin de varios comandos por tuberas, mostrar slo los enlaces simblicos existentes, en caso de no poseer, crear varios en varios subdirectorios con el comando ln.

138. Tuberas (pipes)


Podramos representar cada programa como una caja negra que tiene una entrada y una salida que se pueden unir entre ellos. El ejemplo que utilizamos se encuentra esquematizado en la figura Figura 48. Esquema de entrada y salida estndar del ejemplo siendo la entrada estndar el teclado y la salida estndar el terminal o por simplicidad la pantalla. Figura 48. Esquema de entrada y salida estndar del ejemplo

Vamos a suponer un caso ficticio donde necesitamos todas las definiciones de cada palabra en un texto. Primero las ordenamos alfabticamente, luego utilizamos un comando ficticio llamado diccionario que toma palabras de la entrada estndar y las reescribe junto a su significado en la salida estndar. Su esquema se ve en la figura Figura 49. Esquema de entrada y salida estndar del ejemplo 2. En este caso nombramos por separado las entradas y salidas estndares de los dos programas, pero la unin entre ambos programas se puede considerar como un slo tubo. Figura 49. Esquema de entrada y salida estndar del ejemplo 2

En ese tubo, el flujo est en un estado intermedio, donde est ordenado, pero no tiene las definiciones de diccionario. En la lnea de comandos esto se escribe de la siguiente manera: $ sort | dicccionario Donde el caracter | representa la conexin entre la salida estndar de un programa y la entrada estndar de otro. Con este fuerte y simple concepto se pueden concatenar gran cantidad de programas como si fuera una lnea de produccin en serie para generar resultados complejos. Para mejorar nuestro ejemplo sacaremos las palabras repetidas, antes de mostrarlas con definiciones. Suponiendo que exista un programa llamado sacar-repetidas, la lnea de comando sera: $ sort | sacar-repetidas | diccionario Simple, utilizando herramientas sencillas logramos algo un poco ms complicado. El inconveniente que tenemos en este ejemplo es que hay que escribir aquello a procesar. Normalmente queremos utilizar archivos como entrada de nuestros datos. Es necesario un comando que enve a salida estndar un archivo, as se procesa como la entrada estndar del sort y contina el proceso normalmente. Este comando es cat. La sintaxis es simple cat nombre-de-archivo. Quedando nuestro ejemplo: $ cat archivo.txt | sort | sacar-repetidas | diccionario

... crea un glosario de las palabras que se encuentren en archivo.txt La combinacin de comandos es incalculable y brinda posibilidades enormes. Veamos algunos ejemplos. Ejemplo 31. Uso de Tuberas En el caso que se quieran buscar procesos con el string http: $ ps ax | grep http 3343 ? S 0:00 httpd -DPERLPROXIED -DHAV 3344 ? S 0:00 httpd -DPERLPROXIED -DHAV 3975 ? S 0:00 httpd -DPERLPROXIED -DHAV 12342 pts/6 S 0:00 grep http

Si queremos eliminar la ultima linea podemos volver a usar grep con la opcion -v $ ps ax | grep http | grep -v grep 3343 ? S 0:00 httpd -DPERLPROXIED -DHAV 3344 ? S 0:00 httpd -DPERLPROXIED -DHAV 3975 ? S 0:00 httpd -DPERLPROXIED -DHAV Se pueden filtrar las lneas que contengan la palabra linux del archivo arch1.txt y luego mostrarlas en un paginador como less $ cat arch1.txt | grep linux | less Podemos enviar los resultados por correo a un amigo, $ cat arch1.txt | grep linux | mail amigo@email.com

139. Variables de entorno


Las variables de entorno tienen la funcionalidad de configurar ciertos aspectos del entorno del intrprete de comandos y otros programas, que pueden cambiar con el tiempo. Estas variables se establecen cuando se abre una sesin, y la mayora son configuradas por los scripts de inicio del intrprete de comandos [63] . Aunque se pueden establecer nombres de variables con minsculas, por costumbre se utilizan nombres en maysculas, el comando para establecer las variables de entorno se llama export[64], y se utiliza de la siguiente forma: export VARIABLE=valor Para ver el contenido de una variable, se puede usar el comando echo de la siguiente manera: echo $VARIABLE

Para eliminar una variable, se utiliza el comando interno del intrprete bash, llamado unset pasndole como parmetro el nombre de la variable. Es importante notar que una vez que se sale de una sesin, las variables establecidas se pierden. Es por eso que si se necesita disponer de variables especficas cada vez que se abra una sesin en GNU/Linux, es imprescindible agregar dichas configuraciones a los archivos de inicio del intrprete de comandos. Otro uso comn de estas variables es en los scripts, programas hechos en el lenguaje del intrprete; las variables de entorno son de gran ayuda para establecer configuraciones fcilmente cambiables en dichos programas.

[63] En el caso del intrprete bash, estos scripts incluyen el .bashrc, .bash_profile, y otros. [64] En bash.

139. Variables de entorno


Las variables de entorno tienen la funcionalidad de configurar ciertos aspectos del entorno del intrprete de comandos y otros programas, que pueden cambiar con el tiempo. Estas variables se establecen cuando se abre una sesin, y la mayora son configuradas por los scripts de inicio del intrprete de comandos [63] . Aunque se pueden establecer nombres de variables con minsculas, por costumbre se utilizan nombres en maysculas, el comando para establecer las variables de entorno se llama export[64], y se utiliza de la siguiente forma: export VARIABLE=valor Para ver el contenido de una variable, se puede usar el comando echo de la siguiente manera: echo $VARIABLE Para eliminar una variable, se utiliza el comando interno del intrprete bash, llamado unset pasndole como parmetro el nombre de la variable. Es importante notar que una vez que se sale de una sesin, las variables establecidas se pierden. Es por eso que si se necesita disponer de variables especficas cada vez que se abra una sesin en GNU/Linux, es imprescindible agregar dichas configuraciones a los archivos de inicio del intrprete de comandos. Otro uso comn de estas variables es en los scripts, programas hechos en el lenguaje del intrprete; las variables de entorno son de gran ayuda para establecer configuraciones fcilmente cambiables en dichos programas.

[63] En el caso del intrprete bash, estos scripts incluyen el .bashrc, .bash_profile, y otros. [64] En bash.

140. .bash_profile
Este archivo es del tipo login, por lo que se ejecuta una sola vez en una sesin. Todos los archivos son scripts por lo que en la seccin Programacin en shell se ven ejemplos de programacin en bash. Permiten personalizar el bash enormemente u obligando a los usuario a ejecutar ciertas tareas administrativas en cuanto ingresan al sistema o bien ejecutan el interprete de comandos.

141. .bashrc
Este archivo es del tipo no-login. Primero se carga el archivo global al sistema /etc/bashrc y luego se pasa al archivo .bashrc en el directorio personal del usuario. Es un archivo que probablemente llame a otros como por ejemplo .profile y establezca las variable se entorno.

142. El comando for


Para quienes programan en otros lenguajes el comando for se comporta distinto a la clsica sentencia for. Este comando asigna de una lista de elementos, el valor a una variable y repite una lista de comandos con esa variable. Si bien la explicacin puede ser un poco confusa, el concepto es bastante fcil de entender al ver un ejemplo. for cantidad in dos tres cuatro cinco seis siete do echo ${cantidad} elefantes se balancaban sobre la tela de una araa echo como veian que resista fueron a llamar a otro elefante... done dos (...) siete son los elementos. cantidad es la variable que iteracin a iteracin va tomando los valores de la lista de elementos do; echo (...);done es el bloque de comandos a iterar. Esta es la forma ms simple de utilizar el comando for, pero con pocas variaciones se puede realizar cosas muy tiles, por ejemplo: for archivo in `ls` do touch ${archivo} done

La lista de elementos se obtiene del resultado del comando ls. Es decir, primero se ejecuta ls, el cual dar el listado de todos los archivos de un directorio, y a todos esos archivos se les aplica un touch [65].

[65] El comando touch cambia la fecha de modificacin de un archivo a la fecha actual

143. El comando if
Ya vimos un ejemplo sencillo utilizando if, que a su vez puede ser de gran utilidad. Ya hablamos de la equivalencia entre el ; y el Enter pero hay veces que pasa desapercibido el detalle de que if y then deben estar en diferentes lneas por lo que: # if COMANDO then COMANDO fi Este ltimo ejemplo va a dar error de sintaxis. La forma correcta de expresar es: # if COMANDO; then COMANDO ; fi o bien: # if COMANDO > then COMANDO > fi No hace falta crear un archivo que contenga las instrucciones, en cambio, esta programacin se puede ir realizando en lnea. Es decir, introducirla por lnea de comandos en una terminal. Muchas veces es necesario hacer comparaciones o comprobaciones para tomar decisiones. Por ejemplo "Si el usuario no posee el archivo ~/.configuracion con la configuracin por defecto" o bien "Si el nmero de archivos es mayor a 20 escribir no se puede transferir". Existe el comando test para hacer estas evaluaciones y en base al resultado, cdigo de error de test ser 0 u otro nmero. Por ejemplo, para saber si un archivo .configuracion existe en el home del usuario el comando puede ser: # test -e $HOME/.configuracion para facilitar la notacin dentro del comando if se hace un enlace simblico [66] a un comando llamado [. Parece extrao llamar a un comando con un corchete abierto pero veamos un ejemplo: if test -e $HOME/.configuracion Puede traducirse a: if [ -e $HOME/.configuracion ]

donde el ] (corchete cerrado) final no tiene importancia y la programacin queda menos engorrosa. Podramos utilizar lo aprendido para crear un script que "Si el usuario no posee el archivo / HOME/.configuracion con la configuracion por defecto entonces crearlo." en unas pocas lneas: if [ -e $HOME/.configuracion ] then crear-configuracion >> $HOME/.configuracion fi El comando test permite la composicin de condiciones con AND y OR lgicos con los modificadores -a y -o respectivamente y el modificador NOT con !. Se podra agregar a la linea del if anterior la condicin "y adems no posee el archivo SinConfiguracion" de la siguiente forma: if [ -e $HOME/.configuracion -a ! -e SinConfiguracion] Ejemplos mucho ms interesantes de analizar se pueden encontrar en el directorio /etc/rc.d/ init.d [67] .

[66] symbolic link en ingls, utilizando el comando ln -s [67] Este directorio puede variar segn las distribuciones, tambin puede ser /etc/init.d

144. El comando while


El comando test se utiliza cuando se itera con el comando while. En este comando es muy til la comparacin de valores. test puede comparar nmeros al igual que cadenas de caracteres. while [ ${CANT_USUARIOS} -le 1 ] do echo Todavia no hay suficientes jugadores sleep 1 done echo Ahora hay ms de 1 usuario Este ejemplo comprueba si la variable CANT_USUARIOS es menor o igual (-le significa less or equal en ingls) a uno; de ser as, repite cada 1 segundo, Todava no hay suficientes jugadores. En cuanto la cantidad de usuarios sea mayor a 1 sale del ciclo. Tambin es posible hacer un ciclo infinito utilizando test (o bien llamado [) para que devuelva siempre verdadero (con [ 1 ]). Se recomienda usar el comando true que devuelve un cdigo de salida exitoso (cero) y el while no termina a menos que se le enve una seal con Ctrl-C. while true

do clear mailq sleep 2 done Este simple algoritmo muestra el contenido de la bandeja de salida de sendmail cada 2 segundos. Vemos que con pocos conocimientos en bash se pueden lograr infinidad de cosas.

354. Arranque
En Windows el programa StarOffice se arranca desde el men Inicio, carpeta Programas, carpeta StarOffice 5.2, opcin StarOffice 5.2. En Windows y en GNU/Linux se pueden aadir accesos directos en el escritorio o en otros puntos del men Inicio, el men GNOME o el men del gestor de ventanas que se est utilizando.

355. Las barras de smbolos


Consisten en una serie de botones que activan funciones del programa. Normalmente son funciones que ya estn disponibles en alguno de los mens. Resultan muy cmodos para tener a mano aquello que hace falta a menudo. No es necesario recordar exactamente el cometido de cada botn, ya que al pasar el ratn sobre cada uno, aparece un pequeo rectngulo amarillo (llamado "globo") con el nombre de la funcin asociada.

356. Barras ms usuales


Hay varias barras disponibles, pero las ms usuales son: Barra de funciones. Permite acceder a cualquier carpeta, archivo o direccin de Internet simplemente escribiendo su nombre, as como avanzar y retroceder entre los elementos ya vistos. Tambin incorpora las funciones generales ms habituales. Barra de objetos. Segn el tipo de documento, esta barra ir cambiando. Barra de herramientas. Aparece en vertical en las ventanas de documento.

357. Configuracin
Las barras de smbolos se hacen aparecer o no eligindolas en el men Ver, submen Barra de Smbolos. Se puede cambiar su altura arrastrando el borde inferior. Tienen un men de contexto desde el que se pueden personalizar fcilmente, aadiendo o quitando botones. Cuando no caben en la pantalla todos los botones de la barra, aparecen en el extremo derecho dos flechitas que permiten ir viendo todos los botones. Pueden estar fijas en un extremo de la ventana o bien flotantes en su propia ventana (que se podr cambiar de forma y posicin); se pasa de un modo a otro haciendo una doble pulsacin sobre ellas, en algn punto libre, mientras se pulsa la tecla Ctrl.

358. Las ventanas

Cuando por fin arranca StarOffice, ocupa su propia ventana, que es una ventana de aplicacin. Dentro de esta ventana se situarn las ventanas de documento, una para cada documento que se desee visualizar, adems de una ventana para el escritorio propio de StarOffice (en ingles, desktop). La imagen Figura 50. Desktop de StarOffice muestra una pantalla tpica en la que, adems de la ventana principal, se ve el desktop. Figura 50. Desktop de StarOffice

359. La ventana del desktop


Segn cmo se haya instalado StarOffice, en el desktop aparecern slo los iconos del programa, como en la ilustracin, o bien aparecern todos los iconos del escritorio de MS Windows.

360. La ventana principal


Recorriendo desde arriba hacia abajo la ventana principal, vemos: La barra de ttulo. El men principal. Dos barras de smbolos. La zona de trabajo, ocupada completamente por el desktop, pero en la que ms adelante irn apareciendo las ventanas de los documentos. La barra de tareas propia de StarOffice, con su botn Inicio a la izquierda y reloj a la derecha. Esta barra de tareas repite la funcionalidad de la de MS Windows, pero hay que recordar que en otros sistemas operativos no existe, de ah que StarOffice incorpore la suya propia.

361. Modos de Visualizacin


StarOffice puede aparecer en pantalla de varios modos distintos: Si en el men Ver se marca la opcin Escritorio Integrado, el programa ocupar toda la pantalla y desaparecern el marco de su ventana, la barra de ttulo, as como la barra de tareas de Windows. Si en el men Ver se marca la opcin Pantalla Completa, desaparecern casi todos los

elementos de la ventana principal, y slo se ver la ventana del documento. Quedarn la barra de tareas de StarOffice y un icono Figura 51. Pantalla Completa que permite volver al modo anterior. En esta situacin no se puede acceder al men principal con el ratn, pero s se pueden usar los atajos de teclado y el men de contexto.

Figura 51. Pantalla Completa

362. El Beamer
Es un visor de archivos. Cuando en el explorador se seala una carpeta, en el Beamer se ve la relacin de sus archivos; cuando en el Explorador se seala un archivo de la Galera, en el Beamer se ve su aspecto.

364. Otros Elementos


Adems de los elementos ya vistos y las ventanas de los documentos, en StarOffice pueden estar visibles otros dos elementos, el Explorador y el Beamer. Ambos se activan y desactivan desde el men Ver. En la Figura 52. Otros elementos de StarOffice se observa un aspecto de StarOffice con el Explorador a la izquierda, el Beamer a la derecha arriba y el desktop a la derecha abajo. Figura 52. Otros elementos de StarOffice

365. Aviso a la salida


Si se sale de StarOffice sin guardar los cambios en algn documento, aparece un cuadro de dilogo como el de la Figura 53. Aviso al salir, advirtiendo del hecho. Si se elige Guardar, se guardan los cambios y luego se sale. Si se pulsa Rechazar, no se guardan pero s se sale; y si se pulsa Cancelar, ni se guardan ni se sale. Figura 53. Aviso al salir

366. Salida de StarOffice


Para concluir la ejecucin de este programa basta elegir en el men Archivo la opcin Terminar.

367. Instalacin
Para poder utilizar el programa es necesario instalarlo en el disco duro. El proceso de instalacin consiste en la creacin de un nuevo directorio, la grabacin de todos los ficheros necesarios y el ajuste de ciertos datos internos. De todo ello se encarga el programa de instalacin, de modo que el usuario apenas tiene que responder unas preguntas. Existen varios modos de instalar StarOffice en GNU/Linux. Aqu se va a explicar la que parece ms razonable para la mayora de las situaciones: El usuario root realiza la instalacin bsica general de los archivos del programa. Cada usuario que desee utilizar el programa hace una mnima instalacin en la que copia unos pocos archivos a su directorio home.

368. Instalacin de root


La instalacin se debe comenzar desde un terminal de X-Window, aunque pronto cambia a modo grfico. En la Figura 54. Terminal de X-Window se muestra un ejemplo de cmo dar las rdenes. Figura 54. Terminal de X-Window

1. Se monta la unidad de CD-ROM con permiso de ejecucin.

2. Se ejecuta desde el CD-ROM el programa de instalacin (el del CD oficial es setup, el de otras versiones puede cambiar) con la opcin -n. 3. El programa de instalacin da unos mensajes y en unos momentos pasa a modo grfico. 4. Despus de algunas preguntas, pide el nombre del directorio en el que instalar el programa. Recomendamos /opt/staroffice. 5. Ms adelante Figura 55. Mtodo de Instalacin presenta un cuadro de dilogo en el que hay que especificar genricamente cmo se desea hacer la instalacin (se ve abajo a la izquierda). Si se elige la instalacin personalizada, aparecer el cuadro que se ve abajo a la derecha; en l se puede especificar qu mdulos hay que instalar. 6. Figura 55. Mtodo de Instalacin

7.

8. Cuando est todo definido, se pulsa el botn Siguiente y el programa se encarga de todo.

369. Instalacin de Usuario


El programa arranca ejecutando /opt/staroffice/program/soffice; ya que no se realiza automticamente, es conveniente que el usuario cree una entrada en el men GNOME para este programa, tal como se explic en la hoja Personalizacin de GNOME, de la parte GNU/ Linux. La primera vez que cada usuario ejecuta el programa, ste detecta que an no ha sido instalado por ese usuario y realmente se arranca el programa de instalacin. Se le piden algunos datos bsicos y dos respuestas importantes: 1. El tipo de instalacin que quiere realizar, con las dos posibilidades que se ven en la Figura 56. Instalacin como Usuario. Hay que elegir la opcin Instalacin estndar de estacin de trabajo. 2. Figura 56. Instalacin como Usuario

3.

4. El directorio en el que instalar los archivos personales de usuario. Recomendamos staroffice, dentro del directorio home del usuario.

370. Instrucciones detalladas


En la distribucin de StarOffice se encuentra un documento de ms de setenta pginas llamado "Manual de instalacin", en formato PDF, con toda la informacin necesaria para instalar el programa, en cualquiera de las tres plataformas admitidas.

371. Primeros Arranques


Las dos primeras veces que se arranca StarOffice, se siguen haciendo preguntas relativas al proceso de instalacin. La primera vez aparece el cuadro de dilogo Figura 57. Autopiloto Configuracin Internet, y la segunda vez aparecen el aviso para usar StarOffice como navegador de Internet y la peticin de registro, que es opcional, pero se recomienda seguir. Para registrarse es necesario disponer de conexin a Internet. Figura 57. Autopiloto Configuracin Internet

372. Aviso a la salida


Si se sale de StarOffice sin guardar los cambios en algn documento, aparece un cuadro de dilogo como el de la Figura 53. Aviso al salir, advirtiendo del hecho. Si se elige Guardar, se guardan los cambios y luego se sale. Si se pulsa Rechazar, no se guardan pero s se sale; y si se pulsa Cancelar, ni se guardan ni se sale.

Figura 58. Aviso a la salida

373. Creacin de un documento


Partiendo de un documento en blanco, se siguen estos pasos: 1. Se escribe el comienzo del texto, se ponen los datos iniciales y rpidamente se almacena y se le pone un nombre. En el men Archivo se elige la opcin Guardar Como y se abre el cuadro de dilogo Guardar Como, que se estudia ms adelante. 2. Segn se va trabajando, de vez en cuando, se guardan los cambios que se van haciendo. En el men Archivo se elige la opcin Guardar; el programa almacena la versin actualizada y en seguida devuelve el control para seguir trabajando. 3. Cuando se ha terminado de confeccionar el documento y ya se ha guardado por ltima vez, se cierra. En el men Archivo se elige la opcin Cerrar.

374. El cuadro de dilogo "Abrir"


Se examina ahora con ms detalle este importante cuadro de dilogo, que puede presentar el aspecto que se ve en la Figura 59. Cuadro de Dilogo Abrir. Figura 59. Cuadro de Dilogo Abrir

El cuadro se abre en el mismo directorio en que se trabaj la ltima vez. En la zona grande de trabajo aparecen los directorios de ese directorio y los documentos encontrados. Haciendo doble pulsacin sobre un directorio, se pasa a examinar su contenido. El cuarto botn de la

barra de herramientas permite volver al directorio padre del que se est viendo. El segundo y tercer botn sirven para elegir el modo de presentar la lista de documentos encontrados. Se recomienda el modo Detalles, ya que as se puede navegar ms fcilmente por el rbol de directorios, pulsando en los + y -. El cuadro de texto Nombre del archivo puede usarse para escribir directamente el nombre (o el nombre completo) del documento que se desea abrir. Tambin se puede escribir un nombre usando caracteres comodn; al pulsar el botn Abrir, aparecern aquellos nombres de documento que encajen con el patrn dado en los comodines. La lista desplegable Tipo de Archivo tiene exactamente esta utilidad, pero con una serie de nombres de fichero ya preestablecida. Por fin, cuando se decida el documento que hay que abrir, se pulsa sobre l y luego sobre el botn Abrir.

376. Guardar con contrasea


Una buena medida para progeter datos secretos es guardar archivos protegidos con contrasea. En el cuadro de dilogo Guardar como se marca la casilla Guardar con contrasea; as, el programa pide una contrasea (ilustracin de la derecha en la Figura 61. Guardar con contrasea). Figura 61. Guardar con contrasea

377. Manejo de archivo


Desde los dos cuadros de dilogo es posible acceder a una serie de funciones sencillas para crear directorios, copiar y borrar archivos, etc. Aunque esto es mucho ms cmodo de realizar desde los gestores de archivos, algunas veces es til disponer de estas opciones directamente desde StarOffice. Si se pulsa sobre el nombre de un documento con el botn derecho del ratn, aparece un men de contexto que permite algunas manipulaciones; como muestra la Figura 62. Men para la Gestin de Archivos. Figura 62. Men para la Gestin de Archivos

378. Modificacin de un documento


Si ya se ha creado un documento, se encuentra almacenado en el disco duro o en un disquete y se desea realizar algn cambio, se siguen estos pasos: 1. Se abre el documento, es decir, se lee desde el disco duro o disquete y se coloca en la memoria RAM, con lo que se ve en la pantalla de StarOffice. Para hacerlo, en el men Archivo se elige la opcin Abrir y se abre el cuadro de dilogo Abrir, que se estudia ms adelante. 2. Segn se va trabajando, de vez en cuando, se guardan los cambios que se van haciendo. En el men Archivo se elige la opcin Guardar; el programa almacena la versin actualizada y en seguida devuelve el control para seguir trabajando. 3. Cuando se ha terminado de modificar el documento y ya se ha guardado por ltima vez, se cierra. En el men Archivo se elige la opcin Cerrar.

605. Introduccin
GNU/Linux no necesita un entorno de ventanas para funcionar. Ciertamente, cuando comenz no exista dicho entorno. La pantalla era un intrprete de comandos de aspecto similar a los Unix o una ventana de MS-DOS. Las aplicaciones que funcionan bajo terminales o consolas las llamaremos aplicaciones de texto. Tiempo despus se port un sistema de ventanas llamado X/Window, muy popular en el mundo Unix. Es un sistema de control de mouse y pantalla, pero no maneja las ventanas y operaciones con ventanas (como mover, minimizar, cerrar, etc.). Por lo tanto hay que utilizar algn programa administrador de ventanas. Se eligi para el curso es el KDE. Existen muchos otros entre los cuales est el GNOME, CDE, WindowMaker y AfterStep. Las aplicaciones que funcionan bajo X/Window las llamaremos aplicaciones grficas. Necesitan X/Window para funcionar pero no necesitan un administrador de ventanas. Sin embargo el administrador de ventanas facilita el uso de los programas.

606. Requerimientos
Como es de esperarse las consolas y terminales son mucho ms antiguas que las pantallas

con entornos grficos, por lo tanto los requerimientos son menores. Los requerimientos mnimos para usar GNU/Linux son, tan solo, una 386 con 4 MB de RAM. Esto no quiere decir que va a funcionar rpido, pero va a funcionar. En algunos trabajos no es necesario un equipo ms potente. Es comn pensar que si no se tiene la ltima mquina que est en el mercado junto los ltimos perifricos no se puede usar nada. Este es un concepto errneo. Tener en cuenta el uso que se dar a la computadora. Por ejemplo para compartir Internet entre varios amigos o dentro de una pequea empresa, una 386 con 4 MB de Ram sera suficiente. En cambio para la creacin de planos en un sistema CAD esto no sera un equipo ptimo. Si bien la computadora funciona con esa configuracin, el aspecto es similar al de terminales hace varios aos atrs. Para usuarios recin iniciados y poco familiarizados con terminales, suele parecer un entorno poco amigable. Pero si se necesita rapidez con poco hardware no queda otra opcin. Normalmente para usar una terminal grfica [68], con KDE se requiere aproximadamente un Pentium (166MHz o 200MHz) con 32MB de RAM para trabajar. Y para trabajar cmodamente con StarOffice es necesario 64MB de RAM. Para mayor detalle sobre terminales grficas ejecutar man X que detalla como funciona el servidor que atiende a KDE, llamado X/Window (es sin `s' final) Para mayor detalle sobre KDE ir a K-Ayuda KDE

607. Texto en entornos grficos


Hasta ahora hemos presentado a ambos tipos de aplicaciones como opuestas y sin conexin entre ellas. Pero en la vida real no es as, es muy comn usar aplicaciones de texto en entornos grficos Se utiliza un programa grfico que emula (o simula como gusten) a una terminal de texto. Sobre esa terminal emulada se ejecutan las aplicaciones de texto como puede ser bash, un intrprete de comandos. El bash a su vez puede ejecutar otra aplicacin de texto. Este es el funcionamiento normal. Cuando utilizamos el programa grfico konsole este emula una terminal ejecutando bash. Y a partir del bash tipeamos el nombre de otro programa (por ejemplo mc) para que se ejecute en esa terminal. Para salir del mc hay que presionar F10. Pero no slo se ejecutan aplicaciones de texto. Tambin se pueden ejecutar aplicaciones grficas que salgan en pantalla. Tranquilamente estando en konsole se puede tipear kedit y saldr una ventana con el editor de texto de KDE. Figura 74. ejecucin del kedit en konsole

Al probar esto ltimo podemos observar que en konsole no aparece el prompt [69] . Existen dos alternativas: cerrar el editor de texto o apretar Ctrl-C para que konsole mate al editor.

[69] el prompt suele ser el smbolo $. ms alguna informacin del tipo [usuario@maquina directorio]

608. Ventajas y desventajas


Las aplicaciones de texto, tienen la ventaja de ocupar poco espacio, ser rpidas y la mayora tiene mucho desarrollo. Hay que pensar que las terminales existen hace mucho tiempo. Como desventajas se puede decir que los programas de texto son poco amigables y tienen una interfaz restringida. Son ideales para tareas administrativas de la computadora, terminales con enlaces lentos, y software en general para computadoras de poca capacidad. Como contrapartida existen las aplicaciones grficas, con una interfaz mejorada pero con mayor lentitud en mostrar informacin. Son ideales para tareas de usuarios finales, personas con poca prctica en computacin, etc. Las tareas administrativas ms importantes (aadir/eliminar usuarios, configurar hardware, dar permisos, etc.) se pueden hacer en ambas interfaces, tanto en la de texto como en la grfica.

609. Ejemplo prctico: configuracin inicial de la red


Para poder realizar un ejemplo con VPN conviene armar un esquema de red que simule un par

de redes locales conectadas entre s a travs de una red pblica (simulando Internet). En Figura 75. Configuracin del esquema de red se presenta una manera de simular el caso anteriormente mencionado. Para sto se necesitan 5 PCs: Mquina A Estacin de trabajo de la red izquierda. Esta mquina representa a cualquier mquina en la red local, por lo que no debe llevar ninguna configuracin especfica de la tecnologa VPN que se est utilizando. Mquina B Esta mquina debe funcionar como pasarela de red, dando conectividad a la red local (192.168.1.0/24) contra la red pblica. Adems, debe hacer de pasarela de seguridad teniendo el software de VPN correspondiente instalado y configurado. Mquina C Para simular a una red pblica como Internet se utiliza una mquina con dos interfaces de red. sta mquina debe proveer servicios de ruteo entre ambas redes pblicas que conoce (10.1.1.0/24 y 10.1.2.0/24) pero para que la simulacin sea correcta, no debe conocer las redes locales ni cmo llegar a ellas. Mquina D Este equipo cumple las mismas funciones que la mquina B, pero en la red derecha. Mquina E La mquina E representa a cualquier estacin de trabajo en la red derecha, deber tener configurada la ruta por defecto a la mquina D y nada ms. Figura 75. Configuracin del esquema de red

A nivel de red, estamos suponiendo que las mquinas B y D son pasarelas a Internet de cada red local, esto quiere decir que ambas mquinas poseen dos interfaces de red, una que corresponde a la red local y otra que corresponde a una red con el proveedor de conexin, la cual tiene una direccin IP ruteable, mientras que las direcciones IP de las redes locales no lo son. Para lograr este escenario simulado de la vida real, se necesitan entonces ciertas configuraciones en cada mquina, las mismas se detallan a continuacin. Mquina A Necesita la configuracin de red local y nada ms.

# ifconfig eth0 192.168.1.25 netmask 255.255.255.0 # route add default gw 192.168.1.1 Mquina E Necesita una configuracin similar a la mquina A, respetando los valores de su propia red local. # ifconfig eth0 192.168.2.43 netmask 255.255.255.0 # route add default gw 192.168.2.1 Mquina B Tiene que funcionar como pasarela, es por eso que no se debe olvidar activar la capacidad de IP forwarding para el traspaso de paquetes IP de una red a la otra. # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 # ifconfig eth1 10.1.1.22 netmask 255.255.255.0 # echo 1 > /proc/sys/net/ipv4/ip_forward # route add default gw 10.1.1.100 La ruta por defecto que se establece en la pasarela B es para simular la ruta por defecto que toda mquina conectada a Internet debe tener configurada con su proveedor de conexin. Mquina D Este equipo tiene la misma funcionalidad que la mquina B, por lo que sus configuraciones son muy similares. # ifconfig eth0 192.168.2.1 netmask 255.255.255.0 # ifconfig eth1 10.1.2.33 netmask 255.255.255.0 # echo 1 > /proc/sys/net/ipv4/ip_forward # route add default gw 10.1.2.100 Mquina C Esta mquina simula ser el punto de acceso a la red pblica que ofrecen los proveedores de conexin. Este equipo slo tiene conocimiento sobre las redes pblicas 10.1.1.0/24 y 10.1.2.0/24, nada sabe sobre las redes locales de ambos extremos, por lo que no puede rutear paquetes a esas redes. # ifconfig eth0 10.1.1.100 netmask 255.255.255.0 # ifconfig eth0 10.1.2.100 netmask 255.255.255.0 # echo 1 > /proc/sys/net/ipv4/ip_forward Como este equipo necesita realizar retransmisin de paquetes IP entre ambas redes, necesita el IP Forwarding activado. Lo que queda es configurar las mquinas B y D para que trabajen como pasarelas seguras y generen el tnel VPN necesario para comunicar ambas redes locales.

610. Configuracin de IPSec para el ejemplo


Para este ejemplo se da por hecho que el ncleo del sistema operativo tiene ya includo el soporte para FreeS/WAN, que la clave RSA se ha generado y que todos los paquetes necesarios se han instalado. Adems, se supondr que el esquema de red explicado en Ejempo prctico: configuracin inicial de la red fue entendido y armado correctamente. De acuerdo con lo explicado en Configuracin de FreeS/WAN, se debe crear el archivo /etc/ ipsec.conf con el siguiente contenido: config setup interfaces="ipsec0=eth1" klipsdebug=none plutodebug=none plutoload=%search plutostart=%search conn %default keyingtries=0 conn sitio1-sitio2 left=10.1.1.22 leftsubnet=192.168.1.0/24 leftnexthop=%defaultroute right=10.1.2.33 rightsubnet=192.168.2.0/24 rightnexthop=%defaultroute auto=start authby=rsasig leftid=@sg1.curso.com rightid=@sg2.curso.com leftrsasigkey= rightrsasigkey= Luego, se deben ingresar las claves pblicas de cada pasarela de seguridad. En la mquina B se ejecuta el comando ipsec showhostkey --left y la salida se la aade como valor de leftrsasigkey. Lo mismo se debe hacer con la mquina D, slo que se ejecuta el comando ipsec showhostkey --right y su salida se agrega a la opcin rightrsasigkey. Una vez finalizada la creacin del archivo, se debe tener cuidado de que sea el mismo para ambas mquinas B y D. Luego se reinicia el servicio de IPSec, y se prueba la conectividad desde la mquina A hacia la mquina E con un ping: # ping 192.168.2.43 El tnel establecido permitir la conexin de tipo red-a-red, es decir que slo las estaciones de

trabajo de una red local podrn comunicarse con las de la red opuesta. Si se quiere comunicar cada pasarela de seguridad con la red local opuesta, habr que generar tneles especficos para esta tarea.

611. Configuracin de FreeS/WAN


La implementacin que se utiliza en GNU/Linux se denomina FreeS/WAN, es un proyecto de software libre que tiene su pgina del proyecto en http://www.freeswan.org. FreeS/WAN es un proyecto que no admite colaboradores de los EEUU, para evitar el posible problema que tienen los ciudadados de ese pas con respecto a la exportacin de software de cifrado fuerte. Para generar una clave RSA de 1024 bits (lo mnimo recomendable) se debe ejecutar lo siguiente: # ipsec rsasigkey 1024 >> mykey y luego se debe copiar la clave privada en el archivo /etc/ipsec.secrets. Figura 76. Esquema de ejemplo para la configuracin del FreeS/WAN

Siguiendo el esquema de Figura 76. Esquema de ejemplo para la configuracin del FreeS/ WAN, la configuracin bsica para un tnel red-a-red se realiza editando el archivo /etc/ ipsec.conf config setup interfaces="ipsec0=eth0" klipsdebug=none

plutodebug=none plutoload=%search plutostart=%search conn %default keyingtries=0 conn sitio1-sitio2 left=10.1.1.2 leftsubnet=192.168.1.0/24 leftnexthop=%defaultroute right=10.1.2.2 rightsubnet=192.168.0.0/24 rightnexthop=%defaultroute auto=start authby=rsasig leftid=@sg1.curso.com rightid=@sg2.curso.com leftrsasigkey=0x--left-public-key rightrsasigkey=0x--right-public-key En los valores de leftrsasigkey y rightresasigkey debern ir las claves pblicas de las pasarelas de seguridad, se debern extraer de ambos equipos, con el siguiente comando: # ipsec showhostkey --right # ipsec showhostkey --left Segn corresponda, se le pasar la opcin --left o --right, y esa salida, agregarla al /etc/ ipsec.conf. El archivo resultante deber ir en ambas pasarelas de seguridad. Una vez reiniciado el servicio de ipsec, para conocer el estado del tnel, se puede utilizar el comando: # ipsec auto --status 000 interface ipsec0/eth0 10.1.1.2 000 000 algorithm ESP encrypt: id=3, name=ESP_3DES 000 algorithm ESP auth attr: id=1, name=AUTH_ALGORITHM_HMAC_MD5 000 algorithm ESP auth attr: id=2, name=AUTH_ALGORITHM_HMAC_SHA1 000 000 "sitio1-sitio2": 192.168.1.0/24===10.1.1.2[@sg1.curso.com]---10.1.1.1...10.1.2.1--10.1.2.2[@sg2.curso.com]===192.168.0.0/24 000 "sitio1-sitio2": ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0 000 "sitio1-sitio2": policy: RSASIG+ENCRYPT+TUNNEL+PFS; interface: eth0; trap erouted 000 "sitio1-sitio2": newest ISAKMP SA: #0; newest IPsec SA: #0; eroute owner:

#0000 "sitio1-sitio2": ESP algorithms wanted: 3/000-1/000, 3/000-2/000, 000 "sitio1-sitio2": ESP algorithms loaded: 3/168-1/128, 3/168-2/160, 000 000 #74: "sitio1-sitio2" STATE_MAIN_I1 (sent MI1, expecting MR1); EVENT_RETRANSMIT in 4s

Esto que se muestra, indica que el tnel est establecido utilizando 3DES como algoritmo de cifrado, MD5 y SHA1 como algoritmos de cifrado para autenticacin, y otros datos interesantes.

612. Introduccin a IPSec


IPSec (IP Security) es un protocolo que provee seguridad punto a punto en IPv4 e IPv6 (en IPv6 el soporte IPSec viene implementado por defecto). IPSec es un estndar que poco a poco se est aceptando en las distintas plataformas, en GNU/Linux tenemos al proyecto FreeS/WAN (http://www.freeswan.org). Este protocolo implementa cifrado a nivel del protocolo IP, por lo que todos los protocolos por encima de IP se pueden utilizar con IPSec de forma transparente. Los servicios que provee este protocolo son mltiples, que en conjunto establecen el esquema de seguridad de IPSec. Servicios de seguridad de IPSec Control de Acceso Se establecen politicas de establecimiento de conexiones IPSec. Autenticacin del originario de los datos El que recibe un paquete est seguro que proviene del host supuesto. Integridad de mensaje Un atacante no puede modificar un paquete y ste ser aceptado. Proteccin contra reenvos Un atacante no puede reenviar paquetes previamente enviados, y ste ser aceptado. Confidencialidad Un atacante no puede leer datos interceptados. Como se dijo anteriormente, IPSec es una grupo de protocolos, entre ellos se encuentran: Authentication Header(AH) Provee integridad de mensaje y autenticacin del originario del mensaje. La proteccin que AH provee incluye a la informacin de encabezado de los paquetes, como ser las direcciones en origen y destino. Encapsulating Security Payload (ESP) Provee cifrado y proteccin limitada contra anlisis de flujo de datos. Internet Security Association Key Management Protocol (ISAKMP) Es utilizado por AH y ESP para la administracin de claves. ISAKMP no define por si mismo los algoritmos de generacin de claves, sino que permite el uso de distintos tipos de algoritmos, aunque el estndar pide un set mnimo en las implementaciones. Para el intercambio de claves, se utiliza el protocolo IKE (Internet Key Exchange), esto se hace por separado para independizar el mtodo de intercambio de claves del protocolo IPSec. La estandarizacin de IKE permite la interoperabilidad entre distintos sistemas, la implementacin de IKE de FreeS/

WAN se llama Pluto. El establecimiento del tnel IPSec se hace bsicamente en dos fases: 1. IKE - Fase 1: los gateways negocian un canal bidireccional (SA) que se utilizar para crear los canales de la siguiente fase. Se presentan los algoritmos de cifrado probables, y las claves de autenticacin para armar los tneles IPSec. 2. IKE - Fase 2: usando el canal generado en la fase uno, se establece un par de SAs (unidireccionales, uno para cada sentido) con los parmetros de refresco de claves, mtodo de cifrado, y el protocolo a usar: AH o ESP.

612.1. Filtrado de paquetes IPSec


Los protocolos AH y ESP estn implementados sobre la capa IP, AH es el protocolo IP 51 y ESP es el protocolo IP 50. El protocolo ISAKMP usa el puerto UDP 500 para envo y recepcin. En el caso en que se tenga un firewall delante del gateway de seguridad, habr que tener en cuenta estos protocolos para su filtrado.

612.2. Desventaja y limitaciones de IPSec


La nica desventaja que se le ve a IPSec por el momento, es la dificultad de configuracin con sistemas Windows. El Windows 2000 y Windows XP proveen herramientas para configurar tneles con IPSec, pero su configuracin es bastante difcil (Microsoft nombra a todas las cosas en forma diferente de lo estndar), y adems posee algunas limitaciones (como ser: necesita si o si IP estticos). Limitaciones de IPSec IPSec no es seguro si el sistema no lo es: Los gateways de seguridad deben estar en perfectas condiciones para poder confiar en el buen funcionamiento de IPSec. IPSec no provee seguridad de usuario a usuario: IPSec no provee la misma clase de seguridad que otros sistemas de niveles superiores. Por ejemplo, el GPG que se utiliza para cifrar mensajes de correo electrnico, si lo que se necesita es que los datos de un usuario los pueda leer otro usuario, IPSec no asegura esto y se tendr que utilizar otro mtodo. IPSec autentica mquinas, no usuarios: el concepto de identificacin y contrasea de usuarios no es entendido por IPSec, si lo que se necesita es limitar el acceso a recursos dependiendo del usuario que quiere ingresar, entonces habr que utilizar otros mecanismos de autenticacin en combinacin con IPSec. IPSec no evita los ataques DoS[70] : estos ataques se basan en sobrecargar la mquina atacada de tal modo de que sus usuarios no puedan utilizar los servicios que dicha mquina les provee.

[70] Denial of Service Attacks, ataques de denegacin de servicio

613. Configuracin de Road Warriors


Road Warriors se los denomina a aquellos extremos de un tnel que no poseen una direccin IP fija. Este es el caso de alguna persona que viaja constantemente pero necesita con su notebook conectarse de manera segura a la red interna de su organizacin para hacer alguna transferencia de informacin. El caso mas comn es establecer un tnel entre dos equipos conectados a Internet con una direccin IP fija, entonces en el archivo de configuracin /etc/ipsec.conf debern ir esos datos,

pero cuando un extremo no lleva direccin fija, entonces se deben hacer algunos retoques para que funcione. Supongase un caso como el que se muestra en Figura 77. Ejemplo de Road Warrior: Figura 77. Ejemplo de Road Warrior

En este caso, el Road Warrior se est conectando desde cualquier tipo de conexin con IP dinmico, como ser un mdem, ADSL, o cualquier servicio similar que provea IP pblica pero no fija. En este caso, el archivo de configuracin variar un poco para el Road Warrior con respecto al de la pasarela de seguridad, a continuacin se muestran ambos casos.

613.1. Archivo /etc/ipsec.conf del SG2


config setup interfaces="ipsec0=eth0" klipsdebug=none plutodebug=none plutoload=%search plutostart=%search conn %default keyingtries=1 conn rw1-sg2 left=0.0.0.0 leftsubnet= leftnexthop= right=10.1.2.2 rightsubnet=192.168.0.0/24

rightnexthop=%defaultroute auto=add authby=rsasig leftid=@rw1.curso.com rightid=@sg2.curso.com leftrsasigkey=0x--left-public-key rightrsasigkey=0x--right-public-key La opcin auto=add en este caso, no fuerza al tnel a iniciarse, sino que se activa pero queda a la espera de conexin, la cual va a iniciar el Road Warrior cuando se conecte a Internet. Ntese que los datos correspondientes al Road Warrior no se agregan, ya que sus detalles de conexin no se conocen en forma previa.

613.2. Archivo /etc/ipsec.conf del RW1


config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search conn %default keyingtries=1 conn rw1-sg2 left=%defaultroute leftsubnet= leftnexthop= right=10.1.2.2 rightsubnet=192.168.0.0/24 rightnexthop=%defaultroute auto=start authby=rsasig leftid=@rw1.curso.com rightid=@sg2.curso.com leftrsasigkey=0x--left-public-key rightrsasigkey=0x--right-public-key En este caso, las claves pblicas se debern agregar de la misma manera como se explica en Configuracin de FreeS/WAN.

614. Introduccin a las VPNs


La masificacin de la gran red de redes, Internet, produjo un acercamiento de los individuos y organizaciones, en lo que a comunicaciones respecta. De repente, enviar una carta o un FAX a otro lugar se torn mas lento y mas caro que enviar un mensaje de correo electrnico, el tener una conferencia telefnica se convirti en una actividad obsoleta a la par de una video

conferencia o una simple charla por IRC o cualquier otro servicio de chat. Todo esto a travs de Internet. A medida que Internet se populariz, las empresas comenzaron a ver este medio como algo que les permita enviar y recibir informacin de todo tipo de manera rpida y econmica. Pero cuando uno habla de informacin, normalmente no clasifica esa informacin, y as como Internet es masiva, es tambin insegura en lo que respecta a privacidad durante el trnsito de la informacin. En el caso de los correos electrnicos, la solucin es muy fcil: utilizar una herramienta como GnuPG, que realice cifrado de los mensajes para que nadie que pueda interceptar los correos entre el remitente y el destinatario, pueda leer sus contenidos, pero que se puede hacer con otro servicios, como por ejemplo conexin a base de datos, a servidores web internos, o cualquier otro servicio que exista o est por existir? La solucin a esta problemtica requiere de un medio de transferencia seguro, que se establezca sobre el medio inseguro pero extremadamente barato y disponible como es Internet. Este medio proveera lo necesario para que las conexiones se realicen de forma transparente y segura. A este medio se lo denomina VPN, o Red Privada Virtual. Una red privada y virtual tiene, como su nombre lo indica, dos componentes: Virtual Es virtual porque la conexin que se establece no es una conexin de red fsica como se acostumbra a configurar, sino que se crean interfaces de red virtuales de tal manera de engaar a las aplicaciones que se posee una red adicional, y de esta manera poder utilizarlas sin ningn requerimiento extra sobre estos tipos de conexiones. Privada De nada sirve simular una conexin de red solamente, en lo que respecta a privacidad, es necesario adems agregar un componente de cifrado de algn tipo, que se realice al nivel de la capa de red, en la capa inmediata superior a la interfaz virtual, de modo tal que slo pueda ser descifrada la informacin al otro lado de la conexin, y por lo tanto, mantener la privacidad de los datos enviados y recibidos. Figura 78. Concepto de una red privada virtual

En Figura 78. Concepto de una red privada virtual se puede ver a modo conceptual como funciona una red privada virtual. Se forma un tnel, y entre los extremos de dicho tnel, la informacin se transmite de forma cifrada, pero esto es transparente a las mquinas que se encuentran detrs de esos extremos. En apariencia, ambas redes locales estarn interconectadas directamente por un enlace fsico, pero ese enlace estar provisto por el tnel VPN que se establece entre las mquinas que se encuentran en ambos extremos del mismo. Estas mquinas normalmente se las denomina Security Gateways (pasarelas de seguridad), y son las que se encargan de establecer y mantener la conexin VPN. Las dems mquinas de cada red local, debern configurarse para que el trfico a la otra red local lo enven a travs de su pasarela de seguridad, y eso es todo lo necesario para que el resto de los servicios comience a funcionar a travs de la VPN.

615. PPTP (Point-to-Point Tunneling Protocol)


PPTP es un protocolo basado en PPP y GRE (Generic Routing Encapulation) que se usa para establecer tneles a nivel IP, permitiendo armar redes privadas virtuales (VPNs). La ventaja del protocolo PPTP es que es ampliamente soportado por plataformas Windows, pudiendo un Linux trabajar como servidor PPTP y Windows (95 en adelante) conectarse como clientes, o en el caso de Windows NT, 2000 y XP se dara el caso inverso.

La gran desventaja de este protocolo reside en su diseo, que no es del todo seguro: antes que el tnel GRE se establezca, parte del inicio de sesin, autenticacin y dems se hace por protocolo TCP en forma de texto claro, parte de la informacin que pasa de este modo es el IP del cliente y el servidor, el nombre de usuario, la contrasea cifrada, etc...datos que cualquiera que est en el medio puede llegar a usar para intentar entrar. Adems, la implementacin de Microsoft agrega un poco mas de fallas a su implementacin del protocolo, usando un sistema de clave simtrico para la autenticacin: RC4 de 40 y 128 bits. La versin de 40 bits es demasiado dbil para poder ser considerada segura, pero adems de todo, la clave la basa en la contrasea del usuario (de esta manera el usuario puede tener mltiples sesiones con su propia clave). El problema de esto es que la clave debera cambiarse cada tanto (mas an cuando las sesiones PPTP son prolongadas) y esto realmente no sucede casi nunca.

616. Configuraciones de un cliente PPTP


El cliente que se usa en GNU/Linux para el protocolo PPTP se llama PPTPClient y la pgina del proyecto es http://pptpclient.sf.net Los requerimientos para usar el protocolo son: Soporte MPPE en el kernel el MPPE (Microsoft Point-to-Point Encryption) se mete en el kernel por medio de un parche que se puede conseguir en http://pptpclient.sf.net/ (en el mismo paquete que el pptpclient) Soporte MPPE en el pppd a partir de la versin 2.4.2 del pppd el soporte de MPPE est incluido, si no se tiene esa versin, se puede bajar un pppd con soporte desde http://public.planetmirror.com/pub/mppe/ Instalacin y configuracin La configuracin se realiza con el comando pptp-command en las distribuciones derivadas de RedHat.

617. Servidor PPTP detrs de un firewall


Si se tiene la oportunidad, es conveniente situar el servidor PPTP detrs de un firewall, evitando tenerlo expuesto a Internet, por las razones de seguridad que nombramos al comienzo, para esto se deber utilizar un redirector de puertos: TCP 1723 IP 47 La entrada al firewall, y la salida se deber adecuar el ncleo del firewall para el enmascaramiento del trfico PPTP. Esto se hace agregando unos parches al ncleo tal como se describe en: http://bmrc.berkeley.edu/people/chaffee/linux_pptp.html http://www.impsec.org/linux/masquerade/ip_masq_vpn.html

618. Parches extras al PPTP

Para soportar estos protocolos utilizados por las implementaciones de Microsoft, se deben aplicar algunos parches al ncleo del sistema operativo (y recompilarlo, por supuesto) y al pppd. No es el objetivo de esta clase detallar este proceso, pero de todas formas listamos algunas direcciones en Internet para el alumno interesado en profundizar en estos temas: http://lab.digitol.net/poptop-linux-howto.html http://www.taniz.org/pptp-mini-howto.pdf

619. Configuraciones de un servidor PPTP


El software de servidor PPTP de GNU/Linux se llama PopTop y su sitio web se encuentra en http://www.poptop.org. Actualmente (28/4/2003) la versin estable es la 1.0.1.

619.1. Configuracin
El archivo /etc/ppp/options.pptpd debug name servername auth require-chap proxyarp +chap +chapms +chapms-v2 mppe-40 mppe-128 mppe-stateless ms-dns 192.168.1.200 ms-wins 192.168.1.200 /etc/pptpd.conf: speed 115200 option /etc/ppp/options.pptpd localip 192.168.0.234-238 remoteip 192.168.1.234-238 /etc/ppp/chap-secrets: # Secrets for authentication using CHAP # client server secret IP addresses username * password *

Caractersticas soportadas: Compatible con clientes Windows 2000. Compatible con los esquemas de encriptacin MPPE de Microsoft, mediante un parche al pppd. (RC4 a 40 bits y 128 bits). Compatible con clientes PPTP Windows 95/98/NT. Compatible con clientes PPTP Linux.

You might also like