jueves, 21 de agosto de 2008

Instalación y configuración de vsftpd (Very Secure FTP Daemon)

Este artículo muestra como instalar vsftpd a partir de paquetes rpm, además de su configuración.
Procedimientos
1) Descargar el paquete RPM
Puedes bajar la última versión RPM de vsftpd de la colección rpm de Red Hat/Fedora o de rpmfind.net. Para tu comodidad, te recomiendo que lo bajes vía APT
Puedes descargar una copia usando de la siguiente manera:apt-get install vsftpdEso es todo, Vsftpd esta oficialmente instalado. Ahora hagamos que funcione.
2) Inicio y prueba en modo "standalone"vi /etc/vsftpd/vsftpd.conf
Agrega la siguiente línea, o si la línea ya existe asegurate que contenga lo siguiente:listen=YES
Salva y cierra el archivo de configuración vsftpd.conf.
Ahora iniciemos vsftpd.../usr/sbin/vsftpd
Si al intentar inciar el servicio, la pantalla te arroja el siguiente error:# /usr/sbin/vsftpd500 OOPS: vsftpd: does not run standalone, must be started from inetd

Tienes que configurar vsftpd para que corra con inetd/xinetd, si es el caso, ve directamente al paso 3)
Ahora intenta usar el servicio ftp de tu servidor. Una sesión ftp exitosa debe parecerse a ésta:# ftp localhostConnected to localhost (127.0.0.1).220 (vsFTPd 1.2.1)Name (localhost:root): alopez # (tendrás que usar un usuario de sistema para iniciar sesión)331 Please specify the password.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (127,0,0,1,47,193)150 Here comes the directory listing.drwxr-xr-x 21 501 501 4096 Feb 20 18:00 ulfix226 Directory send OK.ftp> quit221 Goodbye.

Debes obtener una respuesta similar a la de arriba. Si prefieres correr tu servidor ftp con inetd o xinetd, entonces continua con la siguiente prueba. Personalmente recomiendo correr vsftpd con inetd o xinetd.
3) Configuración para hacer operar vsftpd con inetd/xinetd:
Para configurar vsftpd para que opere con inetd o xinetd, haz lo siguiente:
Primero, vamos a editar archivo /etc/vsftpd/vsftpd.conf y establecer que vsftpd no corra en modo "standalone":vi /etc/vsftpd/vsftpd.conf
Asegurate de que la siguiente directiva exista y este establecida a "NO":listen=NO
Si estas corriendo inetd, haz lo siguiente:vi /etc/inetd.conf
Si hay algunas lineas del servico ftp activas, comentalas o borralas y agrega la siguiente línea:ftp stream tcp nowait root /usr/sbin/vsftpd vsftpd
Guarda y cierra el archivo.
Ahora reinicia inetd:/etc/rc.d/init.d/inetd restart
Si utilizas xinetd, haz lo siguiente:
Usuarios de Red Hat/Fedora:vi /etc/xinetd.d/vsftpd# default: off# description: The vsftpd FTP server serves FTP connections. It uses # normal, unencrypted usernames and passwords for authentication.service ftp{disable = nosocket_type = streamwait = nouser = rootserver = /usr/sbin/vsftpdnice = 10}
Guarda y cierra el archivo.
Ahora detén y inicia xinetd.../etc/rc.d/init.d/xinetd restart
Ahora probemos el servidor ftp con inetd/xinetd:# ftp localhostConnected to localhost (127.0.0.1).220 (vsFTPd 1.2.1)Name (localhost:root): alopez # (tendrás que usar un usuario de sistema para iniciar sesión)331 Please specify the password.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (127,0,0,1,47,193)150 Here comes the directory listing.drwxr-xr-x 21 501 501 4096 Feb 20 18:00 ulfix226 Directory send OK.ftp> quit221 Goodbye.

Si obtienes una respuesta similar a la de arriba, felicidades, tu servidor FTP esta vivo!. En los siguientes pasos cambiaremos la configuración del servidor vsftpd para tener un mejor desempeño.
4) El archivo de configuración de vsftpd
El archivo de configuración debe estar localizado en /etc/vsftpd/vsftpd.conf. Este archivo va a determinar como tu servidor FTP va a operar. Notarás que el archivo vsftpd.conf contiene muchas opciones de configuración, no voy a cubrir cada una de ellas, pero si las más importantes:anonymous_enable=NO/YES
Activa o desactiva el acceso FTP anónimo. Si no estas seguro de lo que es un servidor FTP anónimo, lo mejor es establecer esta opción a "NO".local_enable=NO/YES
Esta opción activa o desactiva la caracteristica de que los usuarios locales puedan acceder al servidor FTP, normalmente los servidores FTP tendrán esta opción establecida a "YES". Se me ocurre que puedes establecer esta opción a "NO" en el caso de que tengas un servidor FTP estrictamente anónimo donde no requieres de sesiones de usuarios del sistema.write_enable=NO/YES
Activa o desactiva la opción para escribir en el servidor FTP. En la mayoria de los casos, tendrás esta opcipon establecida a "YES".local_umask=022 # O lo como quieras establecerla
La umask por defecto es 077. Aquí puedes establecer una umask personalizada si asi lo deseas.xferlog_enable=YES
Esta opción activa el registro de los archivos se suben al servidor y las descargas realizadas.ftpd_banner=Bienvenido al servidor FTP de ulfiX
Permite establecer un mensaje de bienvenida personalizado a los usuarios cuando se conectan al servidor.chroot_list_enable=NO/YESchroot_list_file=/etc/vsftpd.chroot_list
Esta directiva habilita la función "chroot" o jaulas de vsftpd. Con "chroot_list_enable" establecida a "YES", vsftpd entonces busca un archivo "chroot_list_file", del cual su ubicación es espeficicada en la siguiente línea. Cualquier usuario que este listado en el archivo /etc/vsftpd.chroot_list es automaticamente "enjaulado" a su directorio home. Esto prohibe al usuario ir a un directorio fuera de su directorio home FTP. Esto es muy útil en entornos FTP compartidos o como una politica de privacidad y seguridad.userlist_enable=NO/YESuserlist_deny=NO/YES
La opción "userlist_enable" le indica a vsftpd si consultará o no consultará 2 archivos: vsftpd.ftpusers y vsftpd.user_list. Si está opción es establecida a "YES", los 2 archivos funcionan como una lista de usuarios que estan autorizados a conectarse al servidor FTP. Sin embargo, cuando es usada en combinación con la opción "userlist_deny=YES", los 2 archivos funcionan como una lista de usuarios que NO están autorizados a conectarse al servidor FTP. Esta opción es muy útil para negar completamente el acceso FTP a usuarios criticos del sistema como "root", "apache" o "www". Una muy buena capa de seguridad para tu servidor FTP.
5) Los archivos de configuración vsftpd.ftpusers y vsftpd.user_list
Estos dos archivos se enlazan dentro de las opciones "userlist_enable" y "userlist_deny" en el archivo de configuración /etc/vsftpd/vsftpd.conf. Cuando la opción "userlist_enable" es establecida a "YES", estos 2 archivos funcionan como una lista de usuarios que estan autorizados a conectarse al servidor FTP. Sin embargo, cuando se combina con la opción "userlist_deny=YES" estos 2 archivos funcionan como una lista de usuarios que NO están autorizados a conectarse al servidor FTP. Cuando la opción "userlist_deny" es utilizada, la naturaleza de la denegacion de servicio FTP que un usuario prohibido recibe difiere dependiendo de en cual de los 2 archivos este listado.
Si un usuario esta listado en el archivo "vsftpd.user_list" y la opción "userlist_deny" está activada, a los usuarios ni siquiera se les preguntará por una contraseña cuando intenten conectarse al servidor FTP. Son rechazados desde el principio.
Si un usuario es listado dentro de el archivo "vsftpd.ftpusers" y la opción "userlist_deny" esta activada, a los usuarios se les preguntará por una contraseña, pero nunca podrán iniciar sesión.
6) El archivo de configuración vsftpd.chroot_list
Cuando este achivo es usado con la opción "chroot_list" habilitada, establece una lista de usuarios que serán enjaulados a su directorio home. Estos usuaro no podrán cambiar de directorios fuera de su directorio home. Esta es una buena opción cuando se trabaja en un entorno FTP compartido donde se requiere de privacidad.
Cada vez que hagas cambios a los archivos de configuración, debes reiniciar vsftpd
Eso es todo. Existen muchas más opciones de configuración que puedes agregar si así lo deseas, pero hasta este punto debes tener un servidor FTP seguro y funcional.

Manejo Básico de la SHELL


Manejo Básico de la SHELL


--------------------------------------------------------------------------------

Tabla de contenidos

1. Introducción

1.1. Linux como sistema operativo multiusuario y multitarea

2. Login

3. Arbol de directorios en Linux

3.1. Ubicación de los distintos archivos en un sistema Unix/Linux

3.2. Descripción

4. Variables de entorno y ficheros relevantes

4.1. ¿Cómo definir variables de entorno?

4.2. Ficheros .bashrc, .bash_profile y .bash_logout

4.3. Uso del comando "alias"

4.4. Concepto de variable PATH

5. Comandos básicos

5.1. El comando "mount" y "umount"

5.2. El comando "ls"

5.3. El comando "pwd"

5.4. El comando "cd"

5.5. El comando "cp"

5.6. El comando "mv"

5.7. El comando "mkdir"

5.8. El comando "rmdir"

5.9. El comando "rm"

5.10. El comando "whoami"

5.11. El comando "who"

5.12. El comando "finger"

5.13. El comando "df"

5.14. El comando "du"

5.15. El comando "cat"

5.16. El comando "echo"

5.17. El comando "date"

5.18. El comando gzip

5.19. El comando gunzip

5.20. El comando bzip2

5.21. El comando tar

5.22. El comando unzip

6. Comandos básicos de administración

6.1. El fichero /etc/fstab y su importancia a la hora de montar sistemas de archivos

6.2. Añadiendo usuario en el sistema: el comando "adduser"

6.3. El comando "userdel"

6.4. Los comandos "addgroup" y "delgroup"

6.5. Otros comandos similares

6.6. Un tema muy importante: los permisos de ficheros

6.6.1. El comando "chmod"

6.6.2. El comando "chown"

6.7. Control muy básico de procesos

6.7.1. ¿Qué es exactamente un proceso?

6.7.2. El comando "ps"

6.7.3. El comando "top"

6.7.4. Como matar procesos. El comando "kill"

6.8. Compilando un paquete fuente.

6.9. Gestores de paquetes: DPKG y RPM

6.9.1. Instalando binarios.

6.9.2. Eliminado binarios.

6.9.3. Listando paquetes instalados

7. Filtrando y redireccionando comandos

7.1. Redirección entrada-salida

7.2. Tuberias o pipes

7.3. Algunos comandos para filtrar información.

7.3.1. El comando "grep"

7.3.2. El comando "wc"

8. Uso muy básico del editor vi

8.1. Modos de vi

8.2. Algunos comandos de vi

9. Man

10. Referencia de programas Shell

10.1. BitchX

10.2. irssi

10.3. Lynx

10.4. Links

10.5. wget

10.6. ftp

10.7. telnet

10.8. ssh

10.9. pine

10.10. ari-yahoo

10.11. zgv

10.12. mplayer

10.13. mpg321

10.14. mp3blaster

10.15. cdplay

10.16. aumix

10.17. cdrecord

10.18. cdparanoia

10.19. lame

10.20. gpm

10.21. Herramientas de desarrollo

11. Otras fuentes: bibliografía

1. Introducción

1.1. Linux como sistema operativo multiusuario y multitarea

En nuestra opinión estas son dos de las características que hacen fuerte a linux:

Linux es Multitarea: La multitarea no consiste en hacer que el procesador realice más de un trabajo al mismo tiempo (un solo procesador no tiene esa capacidad), lo único que realiza es presentar las tareas de forma intercalada para que se ejecuten varias simultáneamente. Por lo tanto en Linux es posible ejecutar varios programas a la vez sin necesidad de tener que parar la ejecución de cada aplicación.

Linux es Multiusuario: Para que pueda desarrollar esta labor (de compartir los recursos de un ordenador) es necesario un sistema operativo que permita a varios usuarios acceder al mismo tiempo a través de terminales, y que distribuya los recursos disponibles entre todos. Así mismo, el sistema debería proporcionar la posibilidad de que más de un usuario pudiera trabajar con la misma versión de un mismo programa al mismo tiempo, y actualizar inmediatamente cualquier cambio que se produjese en la base de datos, quedando reflejado para todos. En conclusión, en el sistema multiusuario, varios usuarios pueden acceder a las aplicaciones y recursos del sistema Linux al mismo tiempo. Y, por supuesto, cada uno de ellos puede ejecutar varios programas a la vez (multitarea).

--------------------------------------------------------------------------------

2. Login

Para entrar a un sistema Unix/Linux hay que disponer de una cuenta (ser reconocido en el sistema). A la espera de la entrada de un usuario al sistema se le llama login. El ordenador muestra :

Debian GNU/Linux testing/unstable par tty3

par login:

--------------------------------------------------------------------------------

3. Arbol de directorios en Linux

En linux no existen unidades como en windows. En este sistema todo son ficheros de diferentes tipos y cada uno tiene una "labor específica".

--------------------------------------------------------------------------------

3.1. Ubicación de los distintos archivos en un sistema Unix/Linux

Tendremos la siguiente clasificación:

/ (Directorio Raiz)

_____________________________________________________________________________

/ / / / / / / \ \ \ \ \ \ \ \

bin boot home dev etc lib usr mnt root sbin var tmp cdrom floppy proc

/ | \ / | \

kaipy par astable bin src share

--------------------------------------------------------------------------------

3.2. Descripción

/bin Comandos básicos disponibles en el arranque y funcionamiento del sistema (ls, pwd, mount, umount,...)

/boot Ficheros estáticos para el arranque del sistema

/home Directorios de todos los usuarios

/dev Ficheros de interface de dispositivos

/etc Ficheros de configuración y arranque del sistema (init.d, passwd, skel, /etc/hosts, /etc/X11,..)

/lib Librerias compartidas esenciales. Módulos del núcleo

/usr Datos, programas y librerias accesibles por el usuario

/usr/bin -- Herramientas de uso general (editores, correo, compiladores..)

/usr/sbin -- Utilizado para herramientas de administración que no sean esenciales (cron, lpd...)

/usr/local -- Contiene la mayor parte de elementos de software que se añade de forma no estándar (bin, lib, etc, man..)

/usr/share/man y /usr/share/doc -- Páginas man y documentos variados sobre el software instalado.

/mnt Punto de montaje temporal de dispositivos

/root Directorio de la cuenta de root

/sbin Comandos básicos para la administración del sistema (adduser, shutdown, init,...) Accesible únicamente para root

/var Datos volátiles y directorios de spooling

/tmp Directorio temporal

/cdrom Punto de montaje del CDROM

/floppy Punto de montaje de disquete

/proc Información asociada con el núcleo que se está ejecutando, para obtener información de recursos utilizados en el sistema (CPU, memoria, swap, dispositivos..)

--------------------------------------------------------------------------------

4. Variables de entorno y ficheros relevantes

4.1. ¿Cómo definir variables de entorno?

Dentro de nuestro sistema hay infinidad de estas variables cuya finalidad es configurar de alguna manera el entorno de nuestra shell, como pueden ser marcar rutas de acceso para algunos programas. Podemos asignarles valores de la siguiente forma:

kaipy@kaipy:~$ export IRCNICK=Kaipy2

Al referirse al contenido de una variable en Unix es necesario anteponer el símbolo $ al nombre de la variable. Para conocer el contenido de una variable en concreto se usará el comando 'echo':

kaipy@kaipy:~$ echo $IRCNICK

Kaipy2

kaipy@kaipy:~$

Para ver el contenido de las variables de entorno de nuestro sistema Linux en un momento determinado podremos usar el comando set. Obtendremos un listado de todas las variables y sus valores. Cuidado porque la lista es larga y fácilmente ocupará más de una pantalla asi que os recomendamos usar: set | more para controlar el flujo de datos.

--------------------------------------------------------------------------------

4.2. Ficheros .bashrc, .bash_profile y .bash_logout

Estos ficheros nos los encontramos en cada cuenta o directorio de usuario de cualquier sistema Linux. Son los ficheros que nos permiten personalizar nuestra sesión en el sistema. El fichero .bash_profile se ejecuta al inicio de cada sesión y el fichero .bash_logout se ejecuta al final de la misma. Por tanto, podemos editarlo a nuestro gusto según queramos que se realicen unas tareas al iniciar o al finalizar nuestra sesión. El fichero .bashrc es el fichero que nuestra shell usará cuando iniciemos en sesión y donde podemos crear nuestros alias o exportar nuestras variables de entorno, entre otras cosas.Asi pues, su finalidad es parecida a la del .bash_profile.

Como ejemplo, el contenido de este fichero en esta máquina como usuario kaipy es:

.....

eval `dircolors`

alias ls='ls --color=auto '

alias l='ls -la'

alias cp='cp -i'

alias rm='rm -i'

alias mv='mv -i'

alias startx='startx 2>/dev/null &'

#Variables del BitchX

export IRCNAME=Rubia

export IRCSERVER=carme.irc-hispano.org

export IRCNICK=Kaipy

export IRCUSER=Kaipy

alias validarSGML='nsgmls -s'

......

Algo común es llamar al fichero .bashrc desde el .bash_profile de la siguiente forma

if [ -f ~/.bashrc ]; then

source ~/.bashrc

fi

Además, en este fichero tambien se declaran variables propias del usuario, como las vistas en el apartado anterior referentes al BitchX o cualquier otro programa.

--------------------------------------------------------------------------------

4.3. Uso del comando "alias"

Usar el comando "alias" es una forma de definir sinónimos a los comandos del sistema o incluso redefinir los existentes con alguna forma más complicada.

Si queremos definir un nuevo comando que borre archivos, lo podemos hacer de la siguiente forma:

kaipy@kaipy:~$ alias borrar='rm'

Donde rm es el comando de Unix para borrar archivos.

Para eliminar alguna definición de alias, se deberá de utilizar el comando "unalias", especificando el alias que deseamos eliminar:

kaipy@kaipy:~$ unalias borrar

--------------------------------------------------------------------------------

4.4. Concepto de variable PATH

La variable PATH guarda las direcciones o rutas de directorios donde buscar un programa ejecutable.

Por ello, no es necesario situarse en una determinada ruta donde se encuentra el comando de dicho programa, sino que dentro de todo nuestro sistema podremos ejecutarlo sin ningún tipo de confusión. El fichero en donde el sistema guarda todos los valores asignados a la variable PATH es /etc/profile.

Recordar que los archivos binarios que son compilados e instalados se asignarán directamente al PATH cuando se instalen, pero por el contrario, hay programas que no aparecen en el PATH, su ejecución debera realizarse de la siguiente forma:

kaipy@kaipy:~$ ./nombre_programa

--------------------------------------------------------------------------------

5. Comandos básicos

Veremos a continuación una lista de comandos básicos para defenderse cómodamente en la shell de cualquier sistema Unix/linux:

--------------------------------------------------------------------------------

5.1. El comando "mount" y "umount"

Para acceder a dispositivos como el disco duro, cdrom, floppy y otros debemos montar la unidad. Para ello usamos el comando mount. Su sintaxis es la siguiente:

mount -t tipo dispositivo directorio de montaje

"tipo" será el sistema de archivos que usa, es decir, fat32(vfat),iso9660(cdrom)...

"dispositivo" será el dispositivo en cuestion. Estará en el /dev.

"directorio de montaje".Necesitamos de un directorio con el que accederemos a todo lo que haya en el dispositivo montado.

Por ejemplo para montar una partición de windows que se encuentra en el ide primario hariamos:

mount -t vfat /dev/hda2 /w98

Para desmontar los dispositivos usaremos el comando umount.

--------------------------------------------------------------------------------

5.2. El comando "ls"

Éste puede que sea uno de los comandos más utilizados. Se usa para listar archivos. Su sintaxis es:

ls [opciones] [archivo]

Si ejecutamos "ls" sin argumentos obtendremos un listado de todos los archivos incluidos directorios del directorio en que el usuario está posicionado. Sus opciones más usadas son:

-a : Mostrará también los archivos ocultos (los que empiezan por .)

-l : Hará un listado mas detallado, especificando para cada archivo sus permisos, el número de enlaces rígidos,el nombre del propietario, el nombre del grupo al que pertenece, el tamaño en bytes y la fecha de modificación.

Por ejemplo haciendo un ls -la tendremos algo similar a lo siguiente:

sergio@par:~/Seminario$ ls -la

total 56

drwxr-sr-x 3 sergio sergio 4096 may 4 16:33 .

drwxr-s--- 94 sergio sergio 8192 may 4 16:31 ..

drwxr-sr-x 2 sergio sergio 4096 may 4 16:32 Shell

-rw-r--r-- 1 sergio sergio 5888 may 4 16:31 Shell.sgml

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.3. El comando "pwd"

Es un comando muy útil pese a su simplicidad. Su función es la de imprimir en pantalla el directorio donde esta trabajando el usuario. Por ejemplo:

sergio@par:~/Seminario$ pwd

/home/sergio/Seminario

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.4. El comando "cd"

Este comando lo usamos para cambiar de directorio.

sergio@par:~/Seminario$ cd Shell

sergio@par:~/Seminario/Shell$ pwd

/home/sergio/Seminario/Shell

sergio@par:~/Seminario/Shell$

--------------------------------------------------------------------------------

5.5. El comando "cp"

Este comando sirve para copiar archivos. Su sintaxis es la siguiente:

cp [opciones] archivo_origen camino_destino

Las opciones mas comunes son:

-f: Borrar los archivos de destino ya existentes.

-p: preservar permisos usuario y grupo de archivo a copiar.

-R: copiar recursivamente.

-v: da información en pantalla sobre archivos que se van copiando.

sergio@par:~$ cd CVS/Seminario/

sergio@par:~/CVS/Seminario$ ls

CVS shell.sgml

sergio@par:~/CVS/Seminario$ cp shell.sgml co.sgml

sergio@par:~/CVS/Seminario$ ls

co.sgml CVS shell.sgml

sergio@par:~/CVS/Seminario$

--------------------------------------------------------------------------------

5.6. El comando "mv"

Este comando tiene dos funciones: mover archivos y renombrarlos. Su sintaxis es la siguiente:

mv [opciones] archivo_origen archivo_destino

Sus opciones principales son:

-f: Borra losa rchivos de destino existentes sin preguntar al usuario.

-i: Lo contrario que -f. Pregunta al usuario.

sergio@par:~/Seminario$ ls

ejemplo1 Shell Shell.sgml

sergio@par:~/Seminario$ mv ejemplo1 prueba_el_mv

sergio@par:~/Seminario$ ls

prueba_el_mv Shell Shell.sgml

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.7. El comando "mkdir"

Su finalidad es la creación de directorios. Se usaría así:

sergio@par:~/Seminario$ mkdir ejemplo

sergio@par:~/Seminario$ ls

ejemplo Shell Shell.sgml

sergio@par:~/Seminario$ cd ejemplo/

sergio@par:~/Seminario/ejemplo$ pwd

/home/sergio/Seminario/ejemplo

sergio@par:~/Seminario/ejemplo$

--------------------------------------------------------------------------------

5.8. El comando "rmdir"

Se usa para borrar directorios vacíos. Esto sería:

sergio@par:~/Seminario/ejemplo$ cd ..

sergio@par:~/Seminario$ rmdir ejemplo/

sergio@par:~/Seminario$ ls

Shell Shell.sgml

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.9. El comando "rm"

Hay que tener cuidado con este comando. Se usa para borrar archivos o directorios. Su sintaxis es la siguiente:

rm [opciones] archivo

Las opciones mas comunes son:

-f: No imprimirá mensajes de error, ni preguntará al usuario confirmación de cada archivo borrado.

-r: Borra los contenidos de directorios recursivamente.

Ejemplo de utilizacion sería:

sergio@par:~/Seminario$ rm -rf prueba/

sergio@par:~/Seminario$ ls

Shell Shell.sgml

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.10. El comando "whoami"

Este comando representa en pantalla el nombre de usuario que lo ejecuta. Parecerá una tontería pero cuando estas en varias máquinas diferentes y con distintos usuarios...

sergio@par:~/Seminario$ whoami

sergio

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.11. El comando "who"

Representa quien esta "logueado" en el sistema. Su uso es muy sencillo:

sergio@par:~/Seminario$ who

sergio tty1 May 4 14:43

sergio tty2 May 4 15:50

sergio :0 May 4 14:43

sergio pts/0 May 4 14:53 (:0)

sergio pts/1 May 4 14:55 (:0)

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.12. El comando "finger"

Este comando nos proporciona información sobre los usuarios del sistema.Algunas de sus opciones son:

-s: Proporciona informacion sobre el login, nombre real, nombre de la terminal en la que se encuentra y estado en el que se encuentra.

-l: Proporciona en forma de lista información de ultimos logins, si tiene correo y otros temas interesantes.

sergio@par:~$ finger -s

Login Name Tty Idle Login Time Office Office Phone

sergio el par *tty1 1:01 May 13 19:17

sergio el par *:0 May 13 19:09

sergio@par:~$

--------------------------------------------------------------------------------

5.13. El comando "df"

Provee información sobre la utilización 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 información mientras se ejecutan. La sintaxis de df es la siguiente:

df [opciones] [sistema de archivos]

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 mas relevantes son:

-h: Imprime la información de modo bastante más claro.

-i: Informar sobre la utilización de los nodos-i. Los nodos-i son estructuras internas del sistema de archivos, cuando éste se queda sin nodos-i libres, por mas que haya espacio libre en disco, no se podrán crear nuevos archivos hasta que se liberen nodos-i, generalmente esto no pasa a menos que se generen una enorme cantidad de archivos muy pequeños.

-k: Mostrar los tamaños en bloques de 1024 bytes.

-m: Mostrará los tamaños en bloques de mega bytes.

Un ejemplo de salida de este comando sería:

sergio@par:~/Seminario$ df -h

S.ficheros Tamaño Usado Disp Uso% Montado en

/dev/hda6 5.5G 2.2G 3.0G 42% /

/dev/hda1 15M 14M 792k 95% /boot

/dev/hda5 1.8G 1015M 766M 57% /home

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.14. El comando "du"

du informa de la cantidad de espacio de disco usada por los ficheros especificados, y por cada directorio en las jerarquías cuyas raíces estén en los ficheros especificados. Su sintaxis es la siguiente:

du [opciones] archivo_o_ruta

Sus opciones más comunes son:

-a: Muestra números para todos los ficheros, no sólo directorios.

-b: muestra los tamaños en bytes.

-k: muestra los tamañs en kilobytes.

-h: un poco más amigable. Añade letra del tamaño.

sergio@par:~$ du -h /home/sergio/CVS/Seminario/

16k /home/sergio/CVS/Seminario/CVS

116k /home/sergio/CVS/Seminario

sergio@par:~$

--------------------------------------------------------------------------------

5.15. El comando "cat"

Muestra el contenido de un fichero. Veremos su gran utilidad en el tema de redirecciones.

sergio@par:~/Seminario$ cat ../firma.txt

Sergio Paracuellos

smpara@telefonica.net

sergio.paracuellos@hispalinux.es

GRupo de Usuarios Linux de La Almunia

http://grulla.hispalinux.es

OpenRabbit License Power!

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.16. El comando "echo"

Su finalidad es mostrar mensajes, es decir, presenta un eco de sus argumentos en pantalla. Es muy util para mostrar valores de variables. Por ejemplo:

sergio@par:~/Seminario$ echo $DISPLAY

:0

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.17. El comando "date"

Mostrará la hora y fecha del sistema. Su sintaxis es la siguiente:

date [opcion] [+FORMAT]

FORMAT controla el formato con que se mostrará la fecha, alguna de las opciones de este argumento son:

%a: Día de la semana abreviado.

%A: Día de la semana completo.

%b: Nombre del mes abreviado.

%B: Nombre del mes completo.

%d: Día del mes.

%m: Número del mes.

%H: Hora en formato 24 horas.

%M: Minutos

%S: Segundos

Un ejemplo práctico sería:

sergio@par:~/Seminario$ date +"%A %d %B"

sábado 04 mayo

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

5.18. El comando gzip

Utilidad de compresión de ficheros. El archivo comprimido tendrá la extensión .gz. A diferencia de lo que estamos acostumbrados a ver en windows con este comando sólo no podemos realizar la compresión de varios ficheros en un solo, para eso necesitaremos la ayuda de un segundo comando de concatenación de ficheros que un poco más adelante trataremos.

astable@astable:~/seminario$ gzip ultimo.sgml

Si por el contrario queremos descomprimir un fichero comprimido anteriormente con este comando lo haremos de la siguiente manera:

astable@astable:~/seminario$ gzip -d ultimo.sgml.gz

--------------------------------------------------------------------------------

5.19. El comando gunzip

Utilidad para descompresión de ficheros. Realiza la acción contraria que gzip. Descomprime archivos .gz devolviendolos a su tamaño original. Equivale a ejecutar gzip -d 'fichero'.

astable@astable:~/seminario$ gunzip ultimo.sgml.gz

astable@astable:~/seminario$ gzip -d ultimo.sgml.gz

--------------------------------------------------------------------------------

5.20. El comando bzip2

Utilidad de compresión de archivos más potente que gzip. El modo de funcionamiento es el mismo. bzip2 'fichero' para comprimir y bzip2 -d 'fichero' para descomprimir. Los ficheros comprimidos con este comando tendrán la extensión .bz2.

astable@astable:~/seminario$ bzip2 ultimo.sgml

astable@astable:~/seminario$ bzip2 -d ultimo.sgml.bz2

--------------------------------------------------------------------------------

5.21. El comando tar

Comando para concatenar archivos en uno solo. Con este comando podemos crear un fichero que contenga una lista de ficheros concatenados, sin realizar ningún tipo de compresión. Pero podemos pasarle una serie de parámetros para que realice una compresión tanto de tipo gzip como bzip2.

tar -cf files.tar 'file1' 'file2' : Crea el archivo files.tar concatenando los archivos 'file1', 'file2', .. que le hemos pasado.

tar -xvf files.tar : Extrae los archivos que se encontraban concatenados dentro de files.tar.

tar -czf files.tar.gz 'file1' 'file2' : Crear el archivo files.tar concatenando los archivos 'file1', 'file2', .. que le hemos pasado y aplica una compresión de tipo gzip creando asi un fichero de salida files.tar.gz.

tar -cjf files.tar.bz2 'file1' 'file2' : Crear el archivo files.tar concatenando los archivos 'file1', 'file2', .. que le hemos pasado y aplica una compresión de tipo bzip2 creando asi un fichero de salida files.tar.bz2.

tar -xvzf files.tar.gz : Realiza una descompresión de tipo gunzip para después extraer los archivos que se encontraban concatenados dentro de files.tar.

tar -xvjf files.tar.bz2 : Realiza una descompresión de tipo bz2 para después extraer los archivos que se encontraban concatenados dentro de files.tar.

--------------------------------------------------------------------------------

5.22. El comando unzip

Otro comando de descompresión que resulta muy útil es unzip ya que nos permite descomprimir todos aquellos .zip que los amigos de windows nos envían a través de su winzip.

astable@astable:~/seminario$ unzip pantallazul.zip

Existe un comando de compresión zip, pero no resulta útil ya que con los formatos de compresión .gz y .bz2 nos basta incluso si queremos mandárselo a algún amigo de windows ya que se podrán abrir sin problemas con cualquier tipo de utilidad de compresión como puede ser el winzip o winrar.

--------------------------------------------------------------------------------

6. Comandos básicos de administración

A parte de todos los comandos vistos en la sección anterior, existen otros comandos que se usan ,mas a nivel de administración del sistema, ya sea para añadir eliminar usuarios y operaciones similares. Así pues veremos lo principal:

--------------------------------------------------------------------------------

6.1. El fichero /etc/fstab y su importancia a la hora de montar sistemas de archivos

En la sección anterior hemos visto como montar sistemas de archivos. El fichero fstab contiene información que describe los diversos sistemas de ficheros. Los programas sólo pueden leer fstab; el administrador del sistema es responsable de la creación y mantenimiento de este fichero. Cada línea describe un sistema de ficheros; los campos en cada línea están separados por tabs o espacios.

/etc/fstab: static file system information.

file system mount point type options dump pass

/dev/hda6 / ext2 defaults,errors=remount-ro 0 1

/dev/hda8 none swap sw 0 0

proc /proc proc defaults 0 0

/dev/fd0 /floppy auto defaults,user,noauto 0 0

/dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0

/dev/hda1 /boot ext2 rw 0 2

/dev/hda5 /home ext2 rw 0 2

/dev/scd0 /grab iso9660 defaults,ro,user,noauto 0 0

La primera columna describe el dispositivo especial de bloque o sistema de ficheros remoto a ser montado.

La segunda columna describe el punto de montaje para el sistema de ficheros. Para particiones de intercambio (swap), este campo debe decir ``none''.

La tercera columna describe el tipo del sistema de ficheros. Actualmente, el sistema soporta nueve tipos de sistemas diferentes (minix,ext,ext2,iso9660,vfat,nfs...)

La cuarta columna describe las opciones de montaje asociadas con el sistema de ficheros.

La quinta columna lo utiliza el comando dump para determinar que sistemas de ficheros necesitan ser volcados (dumped). Si el quinto campo está vacío, dump asume que el sistema de ficheros no necesita ser volcado.

La sexta columna lo usa el programa fsck para determinar el orden en elm cual se van a chequear los sistemas de ficheros cuando el sistema arranca.

Así pues y con este fichero correctamente configurado por el administrador un usuario solo tendrá que hacer un mount /cdrom para acceder al mismo.

--------------------------------------------------------------------------------

6.2. Añadiendo usuario en el sistema: el comando "adduser"

Este comando se usa para añadir usuarios que puedan acceder al sistema. Podemos ver que esto es bastante sencillo:

par:/home/sergio/Seminario# adduser ejemplo

Adding user ejemplo...

Adding new group ejemplo (1002).

Adding new user ejemplo (1002) with group ejemplo.

Creating home directory /home/ejemplo.

Copying files from /etc/skel

Enter new UNIX password:

Ahora deberemos meter una contraseña para el usuario y luego repetirla apra su confirmación. Nos pedirá informacion afcerca del usuario pero es opcional.

Un usuario puede cambiar su contraseña en cualquier momento. sto lo haría con el comando "passwd". Este comando pedirá la contraseña actual, la nueva y que sea confirmada.

--------------------------------------------------------------------------------

6.3. El comando "userdel"

Este comando, como se puede apreciar, borra un usuario existente en el sistema. Podemos hacerlo así:

par:/home/sergio/Seminario# userdel -r ejemplo

par:/home/sergio/Seminario#

Con la opción -r le estamos diciendo que borre tanto el directorio home de este usuario como su directorio de mail.

--------------------------------------------------------------------------------

6.4. Los comandos "addgroup" y "delgroup"

De manera análoga a los usuarios operariamos con los grupos. El control de grupos en un sistema Linux está en el /etc/group.

--------------------------------------------------------------------------------

6.5. Otros comandos similares

Otros comandos de los que recomiendo se mire el manual y que no vamos a tratar son:

usermod: modifica una cuenta de usuario.

groupmod: modifica un grupo.

--------------------------------------------------------------------------------

6.6. Un tema muy importante: los permisos de ficheros

Al ser Linux un sistema multiusuario aparece el problema de la privacidad de información. Así cada fichero posee un codigo de 9 bits para regular su acceso. El esquema empleado consiste en dividir el universo de usuarios que ve cada fichero en tres clases:

La clase u (user), formada sólo por el dueño del fichero.

La clase g (group), formada por todos los usuarios que pertenecen al mismo grupo del dueño.

La clase o (others), formada por el resto del universo.

Existen tres formas de acceder a un fichero: lectura, escritura y ejecución. Así los 9 bits de protección de acceso de cada fichero se encuentran divididos en 3 grupos de 3 bits. Cada grupo de 3 bits indica acceso a u,g,o, respectivamente y cada bit de cada grupo indica:

bit 1 (r), permiso de lectura.

bit 2 (w), permiso de escritura.

bit 3 (x), permiso de ejecución.

Si hacemos un ls -l en algún directorio, podremos ver que permisos tienen los ficheros contenidos en dicho directorio. Así, si vemos:

sergio@par:~/Seminario$ ls -l

total 20

-rw-r--r-- 1 sergio sergio 18074 may 4 19:15 Shell.sgml

sergio@par:~/Seminario$

Entonces el fichero Shell.sgml puede ser leido y escrito por el usuario sergio, pero simplemente leido por su grupo y resto de usuarios.

--------------------------------------------------------------------------------

6.6.1. El comando "chmod"

Podemos establecer permisos a cualquier fichero o directorio nuestros mediante este comando. Esto lo haremos poniendo el bit de quien queremos que puede hacer algo nuevo (o deje de hacerlo) en el fichero(r,w,x) mediante los signos + y -. Esto es:

sergio@par:~/Seminario$ chmod go+w Shell.sgml

sergio@par:~/Seminario$ ls -l

total 20

-rw-rw-rw- 1 sergio sergio 18074 may 4 19:15 Shell.sgml

sergio@par:~/Seminario$

Si queremos hacerlo de todos (u,g,o) usaremos "a".

Otra forma de hacer esto mismo es mediante numeros, pero no la voy a tratar, pues con esto considero que sobra.

--------------------------------------------------------------------------------

6.6.2. El comando "chown"

Para establecer quién es el propietario y a que grupo pertenece un determinado fichero. Esto lo haremos de la siguiente forma:

chown [-R] usuario:grupo fichero

Ejemplo de esto sería:

par:/home/sergio/Seminario# chown root:root Shell.sgml

par:/home/sergio/Seminario# ls -l

total 20

-rw-rw-rw- 1 root root 18074 may 4 19:15 Shell.sgml

par:/home/sergio/Seminario#

Ahora el root es el dueño del fichero. También pertenece al grupo root.

--------------------------------------------------------------------------------

6.7. Control muy básico de procesos

En esta sección veremos que es un proceso asi como ver como controlarlos a pequeña escala.

--------------------------------------------------------------------------------

6.7.1. ¿Qué es exactamente un proceso?

Un proceso es una instancia de un programa en ejecución y también la unidad básica de planificación en linux.Lo consideraremos como un programa en ejecución.

--------------------------------------------------------------------------------

6.7.2. El comando "ps"

Es un comando para visializar el estado de un proceso. Sin argumentos muestra el identificador de proceso (PID) de la bash sobre la que se esta ejecutando así como el propio PID del comando ps lanzado:

sergio@par:~$ ps

PID TTY TIME CMD

591 pts/1 00:00:00 bash

594 pts/1 00:00:00 ps

sergio@par:~$

Tiene multiples opciones, las mas usadas son:

-A: Mostrará todos los procesos en ejecución.

-a: bash en las que se ejecutan incluidos otros usuarios.

Veremos que tambien podemos fitrar los procesos.

--------------------------------------------------------------------------------

6.7.3. El comando "top"

Este comando nos permite una vision en tiempo real de lon que esta ocurriendo con los procesos que hay en ejecución, diciendono la cpu que usan asi como la memoria y otros datos muy interesantes.

10:25:45 up 44 min, 5 users, load average: 0.06, 0.01, 0.02

91 processes: 90 sleeping, 1 running, 0 zombie, 0 stopped

CPU states: 1.8% user, 2.8% system, 0.0% nice, 95.5% idle

Mem: 255816K total, 248560K used, 7256K free, 6872K buffers

Swap: 96352K total, 0K used, 96352K free, 164400K cached

...

--------------------------------------------------------------------------------

6.7.4. Como matar procesos. El comando "kill"

A este comando se le pasa una señal. Si no se hace la señal por defecto es "TERM".Para ver las señales de las que disponemos lo haremos cpn el flag -l:

sergio@par:~$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE

9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2

...

62) SIGRTMAX-1 63) SIGRTMAX

sergio@par:~$

Para terminar completamente con la ejecucion de un proceso lo haremos con kill -9 PID.

--------------------------------------------------------------------------------

6.8. Compilando un paquete fuente.

En linux podemos obtener paquetes de software de dos formas diferentes: o bien con el código fuente sin compilar, o bien paquetes precompilados a los que llamamos binarios. En este tema nos ocupa como compilar un paquete fuente. Pues bien para ellos una vez que tenemos el paquete fuente bajado lo descomprimimos como hemos aprendido anteriormente. Un vez hecho esto debemos leernos siempre el README o el INSTALL que vienen habitualmente con los fuentes. Allí viene claramente explicado cómo se compila. En general esta compilación la hacemos en 3 fases:

./Configure: Chequea en busca de librerias y cosas necesarias para construir el Makefile que nos permitirá compilar el paquete. Con --prefix=/directorio le diremos donde queremos que deje el resultado de la operación.

make: Compilación en si del paquete en nuestra máquina. Utiliza el Makefile creado.

make install: Esto se debe hacer como root, ya que es la instalación del paquete en nuestra máquina.

--------------------------------------------------------------------------------

6.9. Gestores de paquetes: DPKG y RPM

Si en vez de paquetes fuentes lo que tenemos en mano es un paquete precompilado o binario utilizaremos los gestores de paquetes. Existen principalmente dos claramente diferenciados: El DPKG (Debian Package) que es el gestor de paquetes de debian, y el RMP (RedHat Packet Manager) que han adoptado muchas distribuciones y está muy extendido.

--------------------------------------------------------------------------------

6.9.1. Instalando binarios.

Tanto en debian como en red hat y sus derivadas esto lo haremos con el flag -i:

dpkg -i paquete.deb

rpm -i paquete.rpm

--------------------------------------------------------------------------------

6.9.2. Eliminado binarios.

También en este caso lo hacemos del mismo modo en ambas: con el flag -r

dpkg -r paquete.deb

rpm -r paquete.rpm

--------------------------------------------------------------------------------

6.9.3. Listando paquetes instalados

En debian lo haríamos con el flag -l mientras que en red hat lo hacemos con el flag -qa (que recuerde).

dpkg -l

rpm -qa

--------------------------------------------------------------------------------

7. Filtrando y redireccionando comandos

7.1. Redirección entrada-salida

En linux la forma de realizar redirecciones es fuertemente dependiente de la shell utilizada; pero, para se pueden destacar las características comunes a todas ella que son, ala vez, las más utilizadas. En principio, cada proceso tiene asociadas 3 vias de entrada/salida estándares:

Una salida estándar (STDOUT) que se encuentra por defecto conectada al terminal (pantalla) asociado al proceso

Una entrada estándar (STDIN), que por defecto se encuentra asociada al mismo terminal (teclado).

Una salida de error (STDERR), que por defecto se encuentra conectada con la STDOUT.

Es posible modificar el comportamiento de las entradas y salidas estándares. Por ejmplo podemos hacer que el resultado de un ls no se muestre por pantalla sino que se guarde en un archivo, que examinaremos mñás tarde. Esto se consigue mediante la redirección de entrada-salida. Para ello disponemos de los siguientes operadores: > y <

sergio@par:~/Seminario$ ls > fich

sergio@par:~/Seminario$ ls

fich Shell shell.html Shell.sgml

sergio@par:~/Seminario$ cat fich

fich

Shell

shell.html

Shell.sgml

sergio@par:~/Seminario$

El comando "cat" puede ser muy útil para estas cosas.

A la hora de redirigir la salida de un comando a un fichero puede ser de gran utilidad no sobreescribir dicho fichero, sino concatenar el resultado del comando a continuación del contenido del fichero. Para ello tenemos el operador >>.

--------------------------------------------------------------------------------

7.2. Tuberias o pipes

Una vez conocemos el concepto de entrada-salida, inmediatamente se nos vienen a la cabeza cómo enlazar comandos uno tras otro. Por ejemplo, si queremos ver cuantos archivos hay en nuestra cuenta, con lo explicado hasta ahora tendríamos que hacer lo siguiente:

sergio@par:~/Seminario$ ls -la > fich

sergio@par:~/Seminario$ wc -l <>

8

sergio@par:~/Seminario$

Esto mismo se puede conseguir sin mas que redirigir la salida del primer comando a la entrada del segundo, ahorrandonos la creación del fichero fich. Para ello usamos el operador | :

sergio@par:~/Seminario$ ls -la | wc -l

8

sergio@par:~/Seminario$

Esto, como se puede apreciar es una forma muy potente de comunicación entre procesos y se le conoce con el nombre de pipe. La forma de ejecución de ambos procesos será concurrente (en paralelo).

--------------------------------------------------------------------------------

7.3. Algunos comandos para filtrar información.

Vamos a ver a que clase de comandos nos referimos

--------------------------------------------------------------------------------

7.3.1. El comando "grep"

Escribe en la salida estándar aquellas líneas que concuerden con un patrón. Es muy utilizado para filtrar el resultado de comandos mediante una pipe.

Algunos de los parámetros mas utilizados son:

-c: numero de lineas capturadas.

-l: visualizar solo nombres de ficheros solo con lineas capturadas.

-v: extraer todas las lineas menos las que corresponden con el patrón.

-w: búsqueda de expresiones como una palabra.

Por ejemplo si queremos ver cuantas veces esta logueado sergio en nuestra máquina haremos:

sergio@par:~/Seminario$ who | grep sergio | wc -l

6

sergio@par:~/Seminario$

--------------------------------------------------------------------------------

7.3.2. El comando "wc"

Este comando sirve para contar. Lo añado porque he hecho uso de él en otras secciones.

--------------------------------------------------------------------------------

8. Uso muy básico del editor vi

El uso de vi es más tema del seminario de scripting pero como tenemos que editar algun que otro fichero es bueno conocer un poco como funciona.

--------------------------------------------------------------------------------

8.1. Modos de vi

En vi podemos distinguir dos modos: el modo comando, donde vi atiende a toda clase de comandos conocidos por el; y el modo edición que sería el propio modo de escribir.

Abrimos vi y se abre en modo comando. Introducimos la letra i (INSERT) y podremos empezar a escribir. Para volver al modo comando pulsaremos la tecla "Esc".

--------------------------------------------------------------------------------

8.2. Algunos comandos de vi

Cabe destacar:

i: Empezar a insertar en esa posición.

a: Empezar a insertar una posición mas adelante.

x: Borrar una letra.

dd: Borrar una linea.

dw: Borrar una palabra.

Y: copiar una linea.

p: pegar lo copiado.

:q!: Salir sin guardar los cambios.

:x ó :wq ó ZZ: Salir guardando los cambios.

Con esto sobra para empezar.

--------------------------------------------------------------------------------

9. Man

En cualquier distribución de Linux nos encontraremos con las páginas man. En estas páginas se encuentra la ayuda on-line en forma de manual para todos los comandos de Linux que tengamos disponibles desde nuestra máquina y son accesibles a través del comando man. Es una ayuda muy completa donde se nos explica que hace el comando, sus diferentes parámetros a la hora de ejecutarlo, algunos ejemplos y comandos y archivos relacionados. Para acceder a la página de ayuda del comando que queramos, por ejemplo del comando ls, no tendremos mas que ejecutar el ejemplo de abajo desde la shell en cualquier instante y desde donde estemos. El siguiente ejemplo nos muestra la página man del comando ls:

astable@astable:~$ man ls

Alguna vez nos puede pasar que queremos buscar algo que no es exactamente un comando pero tiene que ver con algún otro comando o fichero de configuración relevante en nuestro sistema. Podremos realizar una búsqueda algo más detallada a lo largo de todas las páginas man.

man -k 'cadena' : Nos dará una lista de las páginas man que contienen la cadena especificada.

astable@astable:~$ man -k printf

--------------------------------------------------------------------------------

10. Referencia de programas Shell

10.1. BitchX

El mejor cliente de IRC en modo texto para Linux. Tiene soporte para múltiples ventanas de entre las cuales puedes cambiar lo que te permite estar conectado en varios canales a la vez e incluso en más de un servidor diferente simultáneamente, además es infinitamente configurable. Se pueden definir libremente una serie de variables de entorno para fijar algunos parámetros por defecto como son tu nick, el servidor a conectar y algun otro dato más asociado a ti.

IRCNICK : El nick que usarás mientras estés conectado.

IRCSERVER : El servidor al que conectará al ejecutarlo.

IRCUSER y IRCNAME : Datos asociados a tu nick.

--------------------------------------------------------------------------------

10.2. irssi

Cliente de IRC en modo texto muy parecido al BitchX.

--------------------------------------------------------------------------------

10.3. Lynx

Navegador de internet en modo texto. Más rápido que cualquier navegador gráfico con el incoveniente de que no se cargan las imágenes mientras visitas la página.

--------------------------------------------------------------------------------

10.4. Links

Navegador de internet en modo texto parecido al lynx. Soporta tablas, frames y descarga de ficheros en segundo plano.

--------------------------------------------------------------------------------

10.5. wget

Gestor de descargas en modo texto. Soporta resume y listas de ficheros a descargar además de muchas más cosas.

--------------------------------------------------------------------------------

10.6. ftp

Cliente ftp en modo texto. Su uso es el de cualquier cliente ftp.

--------------------------------------------------------------------------------

10.7. telnet

Programa para conexiones remotas a máquinas que tengan funcionando un servidor telnet.

--------------------------------------------------------------------------------

10.8. ssh

Programa para conexiones remotas a otros hosts que tengan funcionando un servidor ssh. Como el telnet pero con envío cifrado de datos para proporcionar una mayor seguridad.

--------------------------------------------------------------------------------

10.9. pine

Programa de correo basado en las librerias ncurses. Con bandeja de entrada y de mensajes enviados entre otros.

--------------------------------------------------------------------------------

10.10. ari-yahoo

Yahoo! messenger para Linux en modo texto. Necesitas tener una cuenta Yahoo! para poder empezar a usarlo.

--------------------------------------------------------------------------------

10.11. zgv

Visor de imágenes para la shell. Te permite navegar entre tus directorios y poder visualizar perfectamente cualquier imagen.

--------------------------------------------------------------------------------

10.12. mplayer

Te permite ver tus películas divx desde la línea de comandos perfectamente a la vez que realizas cualquier otra tarea. Es necesaria una configuración previa a nivel de kernel además de su correcta instalación poder empezar a visualizar las películas. Si quieres saber como poder ver divx con mplayer visita la sección de documentación de GrULLA donde puedes encontrar un artículo de uno de los autores de este seminario.

--------------------------------------------------------------------------------

10.13. mpg321

Reproductor libre de mp3 para la línea de comandos. Se trata de un clon libre del mpg123, que es otro reproductor también disponible para Linux.

Estas son algunas de las opciones más usadas:

-@ 'lista' : Reproduce una lista de canciones. 'lista' es el listado de los ficheros de las canciones.

-Z : Reproducción aleatoria para la lista o secuencia de ficheros a reproducir.

--------------------------------------------------------------------------------

10.14. mp3blaster

Reproductor de mp3 con un interface en modo texto muy completo al estilo de cualquier reproductor gráfico que exista pudiendo manejar listas de canciones, crear nuevas listas, botones de play, stop, next,... y muchas opciones para controlar la música.

No incluimos ningún parámetro de ejecución ya que el programa dispone de menú propio desde donde se pueden realizar todo tipo de acciones.

--------------------------------------------------------------------------------

10.15. cdplay

Con cdplay puedes escuchar tus cd's de música desde la línea de comandos. Este comando pertenece al paquete cdtools el cual incluye además de este comando, otros tantos para manejo de cd's de música como pueden ser cdstop, cdeject, cdinfo y alguno más.

Para su ejecución deberemos indicar el dispositivo de cdrom donde se encuentra el cd que queremos escuchar. Para que su uso no sea pesado, es común crearse el siguiente alias para que su ejecución sea más sencilla:

astable@astable:~$ alias cdplay='cdplay -d /dev/cdrom'

Siendo /dev/cdrom el dispositivo de cdrom que usaremos para escuchar los cd's.

--------------------------------------------------------------------------------

10.16. aumix

Con este comando podrás ajustar los valores para tu dispositivo de audio desde la línea de comandos. Volumen general, volumen de grabación, volumen de micrófono, balance, etc... Lo puedes manejar tanto con el teclado como con el ratón si tienes funcionando gpm.

--------------------------------------------------------------------------------

10.17. cdrecord

La mejor utilidad para grabar cd's que he visto hasta ahora. Te permite crear cd's de datos y de música a partir de los .wav. En GrULLA puedes encontrar un artículo muy bueno donde se explica con detalle como configurar tu Linux y como manejar cdrecord para copiar tus cd's.

--------------------------------------------------------------------------------

10.18. cdparanoia

Utilidad de extracción de canciones de los cd's de música. Con esta utilidad podrás extraer cada una de las canciones de un cd de música para pasarlas a tu disco duro en formato .wav.

Estas son las opciones más comunes para un uso básico de cdparanoia

-vsQ : Realiza un escaneo de tus unidades y te muestra un listado de las canciones encontradas.

-vsBZ 'n-m' : Extrae todas las canciones una a una (B) sin realizar ningún chequeo (Z) para mayor velocidad. Donde n y m son el número de las canciones entre las que queremos extraer, incluidas éstas.

Por ejemplo, si queremos extraer todas las canciones de un cd que contiene 17 canciones y queremos guardarlas cada una en un .wav diferente, haremos:

astable@astable:~/disco1$ cdparanoia -vsBZ 1-17

--------------------------------------------------------------------------------

10.19. lame

Utilidad para pasar tus .wav a mp3 o viceversa, desde la línea de comandos.

Estas son las opciones más comunes para un uso básico de lame:

-h input.wav : Convertirá el fichero .wav a otro fichero .mp3.

-h --decode input.mp3 : Pasará el fichero de entrada .mp3 a otro fichero de salida .wav.

Supongamos que queremos pasar a mp3 un fichero .wav extraído de nuestro cd con el cdparanoia:

astable@astable:~/disco1$ lame -h track01.wav

Ahora lo que queremos es pasar un .mp3 a .wav para luego pasarlo a cd con el cdrecord:

astable@astable:~/disco1$ lame -h --decode herewego.mp3

--------------------------------------------------------------------------------

10.20. gpm

Pequeño programa que te permite el uso de ratón en la consola de tu sistema Linux. Te proporciona un cursor con el que podrás copiar y pegar cualquier texto que tu enmarques a tu consola e incluso a otras consolas que tengas activas. Antes de comenzar a usarlo se te pedirá la configuración por lo que tendrás que saberte bastante bien la configuración para tu ratón. También deberías saber que en algunos casos te puede causar problemas con el ratón funcionando en tus X y debe ser desactivado.

El comando para la configuración una vez instalado es: gpmconfig. Te puede ser útil si alguna vez decides cambiarla.

--------------------------------------------------------------------------------

10.21. Herramientas de desarrollo

Además de todos los programas que hemos citado en esta sección, podemos encontrar todo tipo de herramientas de desarrollo. Podemos encontrar compiladores de los lenguajes más extendidos: java, C, C++, Pascal, ensamblador, ...

javac : Compilador de java.

gcc : Compilador de C.

g++ : Compilador de C++.

--------------------------------------------------------------------------------

11. Otras fuentes: bibliografía

http://lucas.hispalinux.es/Cursos/distro/intermedio/html/node1.html