Vous êtes sur la page 1sur 346

Índice

0. Prólogo ...................................................................................................................................... 11
0.1. Introducción a Linux ................................................................................................. 11
0.1.1. El proyecto GNU ......................................................................................... 12
0.2. Libre como en libertad .............................................................................................. 12
0.2.1. Administradores de ventanas .................................................................... 13
0.2.2. Multimedia ................................................................................................... 14
0.2.3. Edición ........................................................................................................... 14
0.2.4. Servidores ..................................................................................................... 15
0.2.5. Seguridad ...................................................................................................... 15
0.2.6. Sistemas de gestión de bases de datos (SGBD) ....................................... 16
0.2.7. Herramientas administrativas ................................................................... 16
0.2.8. Desarrollo ...................................................................................................... 16

1. Introdución ............................................................................................................................... 19
1.1. Requisitos del sistema ............................................................................................... 19
1.2. Requisitos de placa base y CPU .............................................................................. 19
1.2.1. Requisitos de memoria ............................................................................... 20
1.2.2. Requisitos de la controladora de disco duro ........................................... 20
1.2.3. Requisitos de espacio en disco .................................................................. 20
1.2.4. Requisitos de monitor y adaptador de video .......................................... 21
1.2.5. Hardware diverso ........................................................................................ 21
1.2.5.1. Ratones y otros dispositivos apuntadores ............................... 21
1.2.5.2. Unidades de cinta ........................................................................ 21
1.2.5.3. Impresoras .................................................................................... 21
1.2.5.4. Modems ......................................................................................... 22
1.2.5.5. Tarjetas Ethernet .......................................................................... 22
1.2.6. Documentación on-line ............................................................................... 22
1.2.7. Cómo obtener ayuda ................................................................................... 23
1.3. Información sobre Linux ........................................................................................... 22
1.4. Anecdotario ................................................................................................................ 23
2. Instalación ................................................................................................................................ 25
2.1. Antes de instalar ........................................................................................................ 25

Esware Linux 3
2.2. Conceptos sobre particiones ..................................................................................... 25
2.2.1. Necesidades de reparticionado en Linux ................................................ 26
2.3. Dispositivos y particiones en Linux ........................................................................ 27
2.4. Creación de las particiones en Linux ...................................................................... 28
2.5. Creación del espacio de intercambio (swap) .......................................................... 32
2.6. Creación de los sistemas de archivos ...................................................................... 33
2.7. Repartición no destructiva. Uso de fips ................................................................. 34
2.8. Instalación del sistema operativo ............................................................................ 35
2.8.1. Instalación en modo gráfico ....................................................................... 35
2.8.2. Novedades de la instalación gráfica ......................................................... 35
2.9. Proceso de instalación detallado ............................................................................. 35
2.9.1. Consolas virtuales de texto y consola gráfica de instalación ................ 35
2.9.2. Selección de teclado .................................................................................... 37
2.9.3. Selección del ratón ....................................................................................... 38
2.9.4. Tipo de instalación ...................................................................................... 39
2.9.5. Particionado automático ............................................................................. 41
2.9.6. Particionado del sistema ............................................................................. 41
2.9.7. Formateado de los discos ........................................................................... 42
2.9.8. Instalación de LILO ..................................................................................... 43
2.9.9. Configuración de la red .............................................................................. 44
2.9.10. Configuración de la zona horaria ............................................................. 45
2.9.11. Contraseña de root y configuración de cuentas de usuario ................. 46
2.9.12. Configuración de autentificación .............................................................. 47
2.9.13. Selección de los grupos de paquetes ........................................................ 48
2.9.14. Selección de paquetes individuales .......................................................... 50
2.9.15. Dependencias sin resolver .......................................................................... 50
2.9.16. Configuración personalizada del sistema X Window ............................ 51
2.9.17. Creación del disco de arranque ................................................................. 52
2.9.18. Instalación terminada ................................................................................. 52

3. El sistema operativo ............................................................................................................... 53


3.1. Conceptos básicos de Linux ..................................................................................... 53
3.2. Creación de una cuenta ............................................................................................. 54
3.3. Presentación en el sistema (loggin in) ...................................................................... 54
3.4. Consolas virtuales ...................................................................................................... 55
3.5. Intérpretes de comandos y comandos .................................................................... 55
3.6. Sintaxis de una orden ................................................................................................ 56
3.7. ¿Qué ocurre cuando tecleamos una orden? ........................................................... 56
3.8. Salida del sistema ....................................................................................................... 57
3.9. Cómo cambiar la contraseña .................................................................................... 57
3.10. Ficheros y directorios ................................................................................................ 58
3.11. El árbol de directorios ............................................................................................... 59
3.12. Explorando el sistema de ficheros ........................................................................... 60

4 Índice
3.12.1. /bin ................................................................................................................ 60
3.12.2. /dev ............................................................................................................... 60
3.12.3. /etc ................................................................................................................. 61
3.12.4. /sbin .............................................................................................................. 61
3.12.5. /home ............................................................................................................ 61
3.12.6. /lib ................................................................................................................. 61
3.12.7. /proc .............................................................................................................. 62
3.12.8. /tmp .............................................................................................................. 62
3.12.9. /usr ................................................................................................................ 62
3.12.10./usr/X11R6 .................................................................................................. 62
3.12.11./usr/bin ........................................................................................................ 62
3.12.12./usr/etc ......................................................................................................... 63
3.12.13./usr/include ................................................................................................ 63
3.12.14./usr/g++-include ........................................................................................ 63
3.12.15./usr/lib ......................................................................................................... 63
3.12.16./usr/local ..................................................................................................... 63
3.12.17./usr/man ...................................................................................................... 64
3.12.18./usr/src ......................................................................................................... 64
3.12.19./var ................................................................................................................ 64
3.12.19.1. /var/adm ................................................................................. 64
3.12.19.2. /var/spool ................................................................................ 64
3.13. Directorio de trabajo actual ...................................................................................... 64
3.14. Refiriéndose al directorio home ............................................................................... 65
3.15. Cosas que podemos hacer... (comandos básicos) .................................................. 66
3.15.1. Moverse por el entorno .............................................................................. 66
3.15.2. Consultar el contenido de los directorios ................................................ 67
3.15.3. Crear directorios nuevos ............................................................................ 69
3.15.4. Copiar ficheros ............................................................................................. 69
3.15.5. Mover ficheros ............................................................................................. 69
3.15.6. Borrar ficheros y directorios ...................................................................... 70
3.15.7. Mirar el contenido de los ficheros ............................................................. 70
3.15.8. ¡Ayuda! .......................................................................................................... 71
3.15.9. Sumario de órdenes básicas ....................................................................... 71

4. Conceptos Avanzados ............................................................................................................ 75


4.1. Más sobre el intérprete de comandos ..................................................................... 75
4.1.1. Funciones avanzadas del intérprete de comandos ................................. 76
4.1.2. Metacaracteres .............................................................................................. 76
4.1.3. Agrupamiento de órdenes ......................................................................... 80
4.1.4. Funciones «and» y «or» .............................................................................. 81
4.1.5. Función «and» .............................................................................................. 81
4.1.6. Función «or» ................................................................................................. 81
4.1.7. Eliminación de significados especiales .................................................... 82

Esware Linux 5
4.2. Entrada y salida estándard ....................................................................................... 82
4.2.1. Redireccionando la entrada y salida ......................................................... 83
4.2.2. Redirección no destructiva ......................................................................... 85
4.2.3. Uso de tuberías (pipes) ............................................................................... 85
4.3. Control de tareas ........................................................................................................ 87
4.3.1. Tareas y procesos ......................................................................................... 87
4.3.2. Primer plano y segundo plano .................................................................. 88
4.3.3. Envío a segundo plano y eleminación de procesos ............................... 88
4.3.4. Parada y relanzamiento de tareas ............................................................. 90
4.4. Variables ...................................................................................................................... 92
4.4.1. Definir variables .......................................................................................... 93
4.4.2. Exportar al entorno ..................................................................................... 94

5. Conceptos sobre ficheros .......................................................................................... 95


5.1. Permisos de ficheros .................................................................................................. 95
5.1.1. Conceptos de permisos sobre ficheros ..................................................... 95
5.1.2. Interpretando los permisos sobre ficheros ............................................... 96
5.1.3. Dependencias ............................................................................................... 97
5.1.4. Cambiando permisos .................................................................................. 98
5.2. Enlaces de ficheros ..................................................................................................... 99
5.2.1. Enlaces duros (hard links) .......................................................................... 99
5.2.2. Enlaces simbólicos ....................................................................................... 100

6. Scripts de shell ......................................................................................................................... 103


6.1. Introducción al editor vi ........................................................................................... 103
6.1.1. Los conocimientos mínimos de vi ............................................................. 103
6.1.2. Cómo cambiar entre modos de funcionamiento .................................... 105
6.1.3. Como salir sin guardar los cambios ......................................................... 106
6.1.4. Órdenes de movimiento ............................................................................. 106
6.1.5. Modificación del texto ................................................................................ 107
6.1.6. Copiar, cortar y pegar bloques de texto ................................................... 109
6.1.7. Búsqueda y cambio de texto ...................................................................... 110
6.2. Creación de un script ................................................................................................ 111
6.2.1. Sentencias de repetición ............................................................................. 112
6.2.2. La orden test ................................................................................................. 113
6.2.3. Comparación de cadenas ........................................................................... 113
6.2.3.1. Comparación de Operadores Lógicos ...................................... 113
6.2.3.2. Comparación de archivos ........................................................... 114
6.2.3.3. Comparación numérica .............................................................. 114
6.2.4. La orden expr ............................................................................................... 114
6.2.5. La orden read ............................................................................................... 115
6.2.6. La sentencia for ............................................................................................ 115
6.2.7. La sentencia while ....................................................................................... 116

6 Índice
6.2.8. La sentencia until ......................................................................................... 117
6.2.9. Sentencias condicionales ............................................................................ 118
6.2.9.1. La sentencia if ............................................................................... 118
6.2.9.2. La sentencia case .......................................................................... 119
6.2.10. Otras sentencias ........................................................................................... 119
6.2.10.1. Sentencia break ............................................................................ 120
6.2.10.2. Sentencia exit ................................................................................ 120
6.2.11. Funciones ..................................................................................................... 120

7. Administración del Sistema .................................................................................................. 123


7.1. La cuenta root ........................................................................................................... 123
7.2. Programación de tareas ............................................................................................. 124
7.2.1. at ...................................................................................................................... 125
7.2.2. batch ............................................................................................................... 126
7.2.3. nice ................................................................................................................. 127
7.2.4. nohup ............................................................................................................ 127
7.2.5. cron y crontab ............................................................................................... 127
7.2.6. X-facilidades para crontab .......................................................................... 129
7.3. Administración de usuarios ..................................................................................... 130
7.3.1. Usuarios ........................................................................................................ 131
7.3.2. Grupos ........................................................................................................... 133
7.3.3. Alta y baja de usuarios ............................................................................... 134
7.4. Ficheros de personalización ..................................................................................... 141
7.5. Fichero .bash_profile ................................................................................................. 141
7.6. Fichero .bashrc ........................................................................................................... 142
7.7. Otros «dot files» ......................................................................................................... 143

8. Gestión del sistema de archivos ........................................................................................... 145


8.1. Sistemas de archivos .................................................................................................. 145
8.2. Una nota sobre dispositivos ..................................................................................... 145
8.3. ¡Organización! ........................................................................................................... 145
8.4. El comando mount .................................................................................................... 146
8.5. Montaje automático de sistemas de archivos ........................................................ 148
8.6. /etc/fstab .................................................................................................................... 148
8.7. Comprobar sistemas de archivos ............................................................................ 151

9. Gestión de software ................................................................................................................ 153


9.1. El empaquetador universal: tar ............................................................................... 153
9.2. Comprimiendo: gzip ................................................................................................. 155
9.3. tar, gzip y unos disquetes ......................................................................................... 157
9.4. rpm ............................................................................................................................... 157
9.4.1. Trabajar con rpm .......................................................................................... 158
9.4.2. Instalación ..................................................................................................... 158

Esware Linux 7
9.4.3. Desinstalación .............................................................................................. 159
9.4.4. Actualizando ................................................................................................ 160
9.4.5. Consulta ........................................................................................................ 160
9.4.6. Verificación ................................................................................................... 163
9.4.7. Para finalizar con rpm ................................................................................ 164

10. Arranque del sistema ............................................................................................................. 167


10.1. El proceso init ............................................................................................................. 167
10.2. Fichero /etc/inittab ................................................................................................... 170
10.3. Directorios directamente implicados ...................................................................... 170
10.4. El comando init .......................................................................................................... 172
10.5. Formas de arrancar .................................................................................................... 172
10.6. Encendiendo el ordenador ....................................................................................... 173
10.7. Linux Loader: LILO ................................................................................................... 173
10.6.1. Configuración de LILO ............................................................................... 174
10.6.2. Fichero de configuración de lilo, /etc/lilo. conf .................................... 174
10.6.2.1. Opciones de lilo.conf .................................................................... 175

11. Compilar el kernel .................................................................................................................. 179


11.1. Las versiones .............................................................................................................. 179
11.2. El código fuente ......................................................................................................... 180
11.3. Preparándose para compilar .................................................................................... 180
11.3.1. Primer paso: configurar el núcleo ............................................................. 181
11.3.1.1. Recorrer los menús .................................................................... 182
11.3.1.2. Algo de orientación ................................................................... 184
11.3.2. Órdenes de compilación ............................................................................. 194
11.3.3. Compilar los módulos ................................................................................ 196

12. Linux en red ............................................................................................................................. 199


12.1. Introducción a TCP/IP .............................................................................................. 199
12.1.1. Nivel de aplicación ...................................................................................... 200
12.1.2. Nivel de transporte ..................................................................................... 201
12.1.3. Nivel Internet ............................................................................................... 201
12.1.4. Nivel físico .................................................................................................... 202
12.2. Arquitectura cliente-servidor ................................................................................... 202
12.2.1. Direcciones IP ............................................................................................... 202
12.2.2. Clases de direcciones IP .............................................................................. 203
12.2.3. Direcciones reservadas ................................................................................ 203
12.2.4. Subredes ........................................................................................................ 204
12.3. Configuración del hardware de red ........................................................................ 205
12.3.1. Herraminetas de configuración ................................................................. 206
12.3.2. Primero: ifconfig .......................................................................................... 206
12.3.3. Segundo: route ............................................................................................. 209

8 Índice
12.3.4. Tercero: netstat ............................................................................................. 211
12.4. Herramientas gráficas de configuración ................................................................ 216
12.4.1. netcfg ............................................................................................................. 217
12.4.1.1. Añadir un dispositivo ............................................................... 219
12.4.1.2. Modificar un dispositivo ya existente .................................... 221
12.4.1.3. Configuración de rutas ............................................................. 222
12.4.2. netconf ........................................................................................................... 223
12.4.2.1. Configuración de rutas ............................................................. 224
12.4.2.2. Alias para dispositivos ............................................................. 226
12.4.2.3. Salir de netconf .......................................................................... 227
12.5. Ficheros de configuración ......................................................................................... 228
12.5.1. /etc/hosts ..................................................................................................... 228
12.5.2. /etc/sysconfig/network ............................................................................ 229
12.5.3. /etc/services ................................................................................................ 229
12.5.4. /etc/protocols .............................................................................................. 231
12.5.5. /etc/host.conf .............................................................................................. 233
12.6. Comportamiento de los servicios de red ............................................................... 234

13. Compartir recursos en red: Samba ....................................................................................... 237


13.1. Instalación de Samba ................................................................................................. 237
13.2. Componentes de Samba ........................................................................................... 238
13.3. Configuración de Samba ........................................................................................... 239
13.3.1. Secciones de smb.conf ................................................................................. 239
13.3.1.1. La sección [global] ..................................................................... 239
13.3.1.2. La sección [homes] .................................................................... 241
13.4. Compartir una unidad Linux con máquinas Windows ....................................... 242
13.5. Compartiendo una unidad Windows con máquinas Linux ............................... 243
13.6. Compartiendo una impresora Linux con máquiinas Windows ......................... 245
13.7. Compartiendo una impresora Windows con mquinas Linux ............................ 246
13.8. Configurar Samba con Swat ..................................................................................... 248
13.8.1. Global ............................................................................................................ 249
13.8.2. Shares ............................................................................................................. 250
13.8.3. Printers .......................................................................................................... 251
13.8.4. Status ............................................................................................................. 252
13.8.5. View ............................................................................................................... 254
13.8.6. Password ....................................................................................................... 255

14. Webmin. El configurador web del sistema ......................................................................... 257


14.1. Instalación de Webmin .............................................................................................. 259
14.2. Acceso al Webmin ...................................................................................................... 260
14.3. Configuración general de Webmin. Carpeta Webmin ......................................... 261
14.3.1. Ayuda de Webmin ....................................................................................... 262
14.3.2. Configuración de Webmin ......................................................................... 263

Esware Linux 9
14.3.3. Usuarios de Webmin ................................................................................... 265
14.4. Configuración básica del sistema Linux ................................................................ 266
14.4.1. Arranque y parada de procesos ................................................................ 267
14.4.2. Configuración de servicios de arranque .................................................. 268
14.4.3. Exportación NFS .......................................................................................... 269
14.4.4. Historiales o ficheros de LOG del sistema .............................................. 269
14.4.5. Instalación de aplicaciones en formato RPM .......................................... 270
14.4.6. Procesos en curso ......................................................................................... 271
14.4.7. Páginas de manual ...................................................................................... 272
14.4.8. Sistemas de archivos de disco y red ......................................................... 273
14.4.9. Programación de tareas mediante Cron ................................................... 274
14.4.10. Usuarios y grupos ....................................................................................... 276
14.5. Configuración de servidores .................................................................................... 279
14.5.1. Samba ........................................................................................................... 280
14.5.2. Sendmail ....................................................................................................... 281
14.5.3. FTP anónimo y autentificado ..................................................................... 293
14.5.4. Servidor Web Apache .................................................................................. 302
14.5.5. Servidor de bases de datos MySQL .......................................................... 308
14.6. Configuración de hardware ..................................................................................... 313
14.6.1. Configuración de impresoras .................................................................... 314
14.6.2. Configuración de red .................................................................................. 316
14.6.3. Configuración del cargador de arranque (LILO) ................................... 321
14.6.4. Fecha y hora del sistema ............................................................................ 323
14.6.5. Particiones de disco locales ........................................................................ 324
14.7. Otras utilidades .......................................................................................................... 325

15. Introducción a KDE ................................................................................................................ 329


15.1. Un vistazo a KDE ....................................................................................................... 329
15.1.1. Introducción ................................................................................................. 329
15.1.2. Descripción general del entorno ............................................................... 330
15.2. Comenzando a trabajar ............................................................................................. 332
15.2.1. Cómo sacar más provecho a kfm .............................................................. 334
15.2.2. ¿Qué habéis hecho con mi línea de comandos? ...................................... 335
15.3. Escritorios virtuales ................................................................................................... 336
15.4. Cómo lanzar otras aplicaciones ............................................................................... 337
15.5. Configuración de su escritorio ................................................................................. 338
15.5.1. Temas de escritorio ...................................................................................... 339
15.6. Acceso a las unidades de disquete y CD-ROM ..................................................... 339
15.7. Cómo imprimir desde KDE ..................................................................................... 340
15.8. Adición de tipos MIME: cómo asociar tipos de fichero a aplicaciones ............. 341
15.9. Configuración del acceso a Internet mediante módem ....................................... 342
15.10. Cómo terminar una sesión con KDE ...................................................................... 344
15.11. Otros consejos generales de utilización de KDE ................................................... 344

10 Índice
Prólogo

¿Qué es eso de Linux? ¡Quiero probar Linux, pero el auténtico! Éstas y otras parecidas son
las cuestiones que cualquier usuario se plantea cuando se acerca por primera vez a este sis-
tema operativo.
Linux en sí es únicamente el kernel, el núcleo del sistema. Esware Linux es una dis-
tribución de Linux, lo que significa que usted tendrá un kernel (ajustado por Esware) y
una colección de software que le permite tanto configurar un servidor web como un
equipo doméstico, pasando por variantes de productividad en diferentes campos de la
informática.

Introducción a Linux

El sistema operativo Linux se inició como el proyecto universitario de un individuo, Linus


Torvalds (http://www.cs.Helsinki.FI/linux/). Pero actualmente es el fruto del trabajo de
miles de voluntarios de todo el mundo, que han contribuido a mejorar y añadir nuevas
características al sistema. Paralelamente a este proyecto se originó un movimiento enfoca-
do a crear un sistema operativo «libre» (sin restricciones de uso y licencias), es el proyecto
GNU (http://www.gnu.org), bajo el cual se desarrollan miles de aplicaciones y utilidades.
El sistema Linux fue incluido en dicho proyecto y, por tanto, actualmente se habla del sis-
tema «GNU/Linux» al referirnos al sistema completo (sistema y aplicaciones que lo
acompañan).

Esware Linux 11
El Proyecto GNU

por Richard Stallman


(extracto, recogido del sitio web del proyecto GNU, http://www.gnu.org/gnu/thegnuproject.es.html)
publicado originalmente en el libro Open Sources.

Libre como en libertad

El término «free software» [N. del T.: en inglés free = libre o gratis] se malinterpreta a
veces; no tiene nada que ver con el precio. El tema es la libertad. Aquí, por tanto, está la
definición de software libre: un programa es software libre, para usted, un usuario en par-
ticular, si:

• Tiene libertad para ejecutar el programa, con cualquier propósito.


• Tiene la libertad para modificar el programa para adaptarlo a sus necesidades. (Para
que esta libertad sea efectiva en la práctica, debe tener acceso al código fuente, por-
que modificar un programa sin disponer del código fuente es extraordinariamente
dificultoso.)
• Tiene la libertad para redistribuir copias, tanto gratis como por un cánon.
• Tiene la libertad para distribuir versiones modificadas del programa, de tal manera
que la comunidad pueda beneficiarse con sus mejoras.

Como free (libre) se refiere a libertad y no a precio, no existe contradicción entre la venta
de copias y el software libre. De hecho, la libertad para vender copias es crucial: las colec-
ciones de software libre que se venden en CD-ROM son importantes para la comunidad,
y la venta de las mismas es una manera importante de obtener fondos para el desarrollo
de software libre. Por tanto, si la gente no puede incluir un programa en dichas coleccio-
nes, dicho programa no es software libre.

12 Prólogo
Linux es un sistema operativo muy poderoso. Es rápido y aprovecha las ventajas de las
capacidades multitarea y multiusuario de las máquinas actuales. Es frecuente denominarlo
«clon» del sistema UNIX, pues la base de su código fue este sistema; se puede considerar
entonces como un dialecto no comercial del robusto sistema operativo UNIX. Linux aporta al,
posiblemente complejo sistema tipo UNIX, la comodidad de usar escritorios gráficos de alta
productividad y vistosidad. Es posible elegir entre una gran variedad de ellos. Actualmente,
los entornos KDE (http://www.kde.org) y GNOME (http://www.gnome.org) son los más
avanzados en su campo.
No es necesario comprar software comercial para hacer trabajo productivo; existen
miles de aplicaciones bajo el proyecto GNU que satisfacen plenamente las necesidades de
todo usuario. Todas ellas disponibles en Internet o publicaciones del sector. No obstante,
grandes empresas desarrolladoras de software están migrando sus aplicaciones al mundo
Linux, pero con las restricciones impuestas por sus particulares licencias.
Actualmente, Linux es usado tanto en sistemas servidores de gama alta como en los PC
de escritorio de cualquier tipo de usuario. Es un sistema operativo fuertemente orientado
a redes y funciona perfectamente en entornos ofimáticos (con excelentes aplicaciones).
Puesto que es un sistema relativamente joven, existen sectores de interés todavía no
cubiertos, como la gestión comercial y contabilidad, pero gracias a la rápida evolución de
este sistema no se tardará en encontrar buenas aplicaciones próximamente (existen grupos
bien coordinados en nuestro país trabajando en ello).
Esware Linux consigue con un sencillo y vistoso proceso de instalación, junto con una
cuidada selección de software satisfacer desde el usuario neófito al usuario más exigente
ávido de herramientas productivas. Esware Linux es, por tanto, un producto genérico
desde el punto del vista del usuario final, pues se integra perfectamente en ambientes ofi-
máticos con aplicaciones de edición de texto, hojas de cálculo, presentaciones, manipula-
ción de imágenes, etc, o toma el control como servidor en la red corporativa más exigente,
realizando tareas de servidor de impresión, servidor de ficheros, web, ftp, correo, funcio-
nes de router, etc.
Las aplicaciones del CD del sistema vienen «empaquetadas» en ficheros especiales
(denominados ficheros RPM). Cada uno de estos ficheros puede contener una o varias uti-
lidades. Concretamente desde este primer CD (en el proceso de instalación) podremos ins-
talar unas 720 aplicaciones, la mayoría de ellas necesarias para la estructura del sistema y
herramientas que podremos encontrar en todo sistema tipo UNIX de importancia. Entre
las aplicaciones de mayor vistosidad y producitividad destacamos las siguientes:

Administradores de ventanas

• AfterStep.
• AnotherLevel.
• WindowMaker.

Esware Linux 13
• Enlightenment.
• Fvwm2.
• GNOME.
• KDE.
• KDE2.
• Sawmill.

Multimedia

• ImageMagic. Editor de imágenes, genera GIF animados, etc.


• Aumix. Aplicación para controlar el mezclador de la tarjeta de sonido.
• Awesfx. Aplicación para utilizar la tarjeta de sonido AWE32.
• Cdda2wav. Captura pistas de audio de un CD y las guarda en disco en formato .wav
o.sun.
• Cdp. Reproductor de CD en modo texto.
• Cdparanoia. Herramienta de extracción de audio de CD. Soporta los formatos WAV,
AIFC y RAW.
• Extrace. Reproductor de audio con representación gráfica.
• GifTrans. Conversor de GIF.
• GIMP. Retoque fotográfico de alto nivel, similar a Photoshop.
• Mikmod. Reproductor de ficheros MOD.
• Mpg123. Reproductor de ficheros MP3.
• Playmidi. Reproductor de ficheros MIDI.
• Xfig. Generador de gráficos vectoriales.
• Xmms. Reproductor MP3 similar a Winamp.
• Xpaint. Editor de imágenes.

Edición

• Emacs. Potente editor de texto orientado a la programación.


• Gedit. Editor integrado en el entorno GNOME. Permite la edición de mútiples
documentos.
• Gnotepad. Editor de texto ligero.
• Jed. Editor para modo texto orientado a programación.
• Joe. Popular y sencillo editor de texto de consola.
• Vim. Implementación del editor vi, estándar de edición del mundo Unix.

14 Prólogo
Servidores

Una característica importante a destacar es la separación en distintos paquetes de los pro-


gramas servidores y sus clientes, de manera que es posible instalar sólo el servidor o sólo
los clientes en las máquinas que dispongamos.

• Anonftp. Servidor FTP anónimo ligero, de sólo lectura.


• Apache. Servidor HTTP de alto rendimiento.
• Apmd. Demonio controlador de Administración Avanzada de Energía.
• Bind. Implementación de alto rendimiento del servicio DNS.
• Bootparam. Servidor encargado de proporcionar información necesaria para iniciali-
zar clientes de red sin disco.
• CleanFeed. Filtro anti-SPAM para servidores de noticias y routers.
• Dhcp. Servidor DHCP.
• Finger. Servidor de información finger.
• Imap. Servidor de correo entrante IMAP y POP.
• Inn. Servidor de noticias (news).
• Mars-nwe. Servidor de ficheros e impresoras para clientes Novell Netware.
• Mcserv. Servidor para clientes MC (Midnight Commander). Permite usar dicho
cliente para acceder a máquinas remotas.
• NFS-utils. Servidor NFS y utilidades relacionadas.
• OpenLDAP. Servidor y utilidades del protocolo LDAP.
• Intimed. Servidor de tiempo que mantiene sincronizados los relojes de la red.
• Samba. Servidor SMB que permite la interconexión de servicios entre máquinas
Linux y Windows.
• Sendmail. Servidor de correo ampliamente usado.
• Squid. Servidor proxy de alta disponibilidad.
• TFTP. Servidor del protocolo ligero Trivial FTP.
• UCD-snmp. Conjunto de herramientas para explotar el protocolo SNMP de admi-
nistración.
• Ypserv. Servidor del protocolo NIS.
• Piranha. Herramienta para administrar y configurar Linux Virtual Server, sistema de
balanceo de carga de servidores web y ftp, mediante la característica de ruteo del kernel.
• PVM. Librería y demonio que permite el procesamiento en entornos distribuidos
compuestos por máquinas heterogéneas y de distintas arquitecturas.

Seguridad

• Apache-SSL. Extensión del servidor Apache para soporte SSL.


• Kerberos. Servidor de seguridad Kerberos 5.

Esware Linux 15
• Portmap. Demonio que proporciona seguridad en conexiones RPC como NFS o
NIS+.
• RSH-server. Conjunto de programas que permite a los usuarios la ejecución de
comandos en máquinas remotas de manera segura.
• TCP-wrappers. Programa para monitorización y filtro de peticiones entrantes para
distintos servicios.
• Cracklib. Programa para la detección de claves de usuario débiles.
• Gpgp. Frontal para GNOME del programa de privacidad GNU Privacy Guard.
• Nmap. Escaneador de redes.
• PAM. Herramienta para proporcionar servicios de autentificación para las aplicaciones.
• Saint. Herramienta para realizar auditorías de seguridad en nuestra red.
• Utempter. Utilidad que permite dar privilegios de root a programas sin comprome-
ter la seguridad.

Sistemas de gestión de bases de datos (SGBD)

• PostgreSQL.
• MySQL.
• Interbase.

Herramientas administrativas

• Webmin. Potente herramienta administrativa de red en formato HTML.


• Ipvsadm. Herramienta de administración de servidores virtuales.
• Quota. Controla el espacio de disco por usuarios y grupos.
• SetupTool. Frntal en modo texto que centraliza diversas herramientas de configura-
ción del sistema.
• Lothar. Herramienta de configuración de dispositivos que aprovecha las caracterís-
ticas P&P de los nuevos kernel.
• Linuxconf. Herramienta de centralización de diversas configuraciones del sistema,
usuarios, red, etc.

Desarrollo

• Mesa. Conjunto de herramientas y librerías para realizar gráficos 3D de alto rendi-


miento (según estándar OpenGL).
• Dev86. Ensamblador de instrucciones x86 en modo real.
• Egcs. Colección de compiladores y enlazadores de C.
• Egcs-c++. Compilador de C++.

16 Prólogo
• Egcs-g77. Compilador de FORTRAN 77.
• Egcs-objc. Compilador de Objective C.
• Gdb. Depurador de código C/C++ y FORTRAN.
• Glade. Interfaz gráfica de programación en GTK y aplicaciones para GNOME.
• Kdevelop. Interfaz integrada de programación en C/C++ especialmente orientada al
desarrollo de aplicaciones para KDE.
• Perl, Python,Tcl/tk. Los tres lenguajes de scripting más ampliamente usados.

El contenido del CD de fuentes está indicado para aquellos aventureros que quieran
indagar en el código fuente de los programas disponibles en el CD del sistema. El código
fuente de los programas viene empaquetado en ficheros con formato RPM, para facilitar
la instalación de los mismos.
Encontraremos en el CD de aplicaciones programas adicionales junto con abundante
documentación. En él podemos encontrar la popular y potente suite de ofimática
StarOffice y el avanzado editor de texto Corel WordPerfect, ambos en perfecto castellano.
El apartado de documentación está compuesto por los manuales y preguntas de uso
frecuente en castellano del proyecto LUCAS y el Manual de instalación y manejo de
Esware Linux en distintos formatos listos para imprimir.
Disponemos también de un apartado denominado RemozaTools que contiene una
variada selección de software en formato RPM organizado en las siguientes secciones:

• CPAN.
• Internet.
• Kernel.
• Seguridad.
• Utilidades X.
• Xfree 4.0.
• Bases de datos.
• Desarrollo.
• Editores.
• Gráficos.
• Ingeniería.
• Juegos.
• Librerías.
• Multimedia.
• Productividad.
• Redes y comunicaciones.
• Sistema.
• Utilidades para archivos.
• Backup.
• Accesibilidad.

Esware Linux 17
Capítulo 1. Introducción

Requisitos del sistema

Antes de instalar Esware Linux, tiene que conocer los requisitos y limitaciones de hard-
ware que existen.
Un inconveniente en el soporte de hardware bajo Linux es que algunas compañías
mantienen las especificaciones de su hardware como propietario. Por tanto, no se puede
desarrollar controladores para estos dispositivos.
Exceptuando estos casos, según va apareciendo, va siendo soportado la mayor parte
del hardware y los periféricos populares.
Las empresas desarrolladoras de hardware suministran controladores para sistemas
operativos como MS-DOS y Microsoft Windows por razones comerciales, pero no para
una filosofía de código abierto como es Linux. Es probable que un dispositivo muy nove-
doso no esté (de momento) en la lista de controladores de Linux, pero probablemente en
poco tiempo aparezca en Internet el controlador adecuado, que rápidamente será incor-
porado a todas las distribuciones.
Por suerte esto está cambiando y cada vez más fabricantes ven el potencial de Linux y
abren el código de sus productos facilitando así el desarrollo de los controladores.

Requisitos de placa base y de CPU

Actualmente, Linux soporta sistemas con una CPU Intel 80386, 80486, o Pentium. Los «cló-
nicos» no Intel, como AMD y Cyrix, también funcionan con Linux. Si tiene la suerte de
tener una placa para doble microprocesador, Linux la detectará y hará funcionar los dos
«micros» sin ningún problema
Si conserva un antiguo 386 ó 486, puede que lo quiera aprovechar con Linux. No va a
alcanzar velocidades de vértigo, pero tendrá una pequeña estación de trabajo conectada en
red junto a su flamante Pentium III, incluso ejecutar aplicaciones en el «pequeñín» usando
los recursos del PIII. El coprocesador matemático puede ser emulado por el kernel si la
máquina no cuenta con uno.

ESware Linux 19
Los buses de la placa base soportados son: PCI, ISA o EISA, VESA Local Bus, AGP y
USB desde los últimos núcleos.

Requisitos de memoria

Linux utilizará toda la memoria RAM de forma automática, y se apañará sin problemas
con tan sólo 4 megabytes de RAM, incluyendo un entorno de ventanas sencillo. Sin
embargo, dadas las configuraciones actuales es fácil contar con 16 ó 32 Megas, con lo que
tendríamos suficiente para un uso personal; para servidores dependerá de la carga que
esperemos. Disponer de más memoria es tan importante como tener un procesador más
rápido.
ESware Linux reserva una parte del disco duro para espacio de intercambio (swap) que
se usa como RAM virtual, incluso si dispone de bastante memoria RAM física en su
maquina. El área de swap no puede compararse en términos de velocidad a una memoria
RAM, pero permite a su sistema ejecutar aplicaciones más grandes guardando en disco
duro partes de código que están inactivas.
La cantidad de espacio de intercambio a reservar depende de diversos factores; se
puede hacer un cálculo en función de la RAM física, pero depende del sistema.
Normalmente 16 Mb de swap deberían ser suficientes y 64 Mb estarán francamente bien.
¡Lo que no le aconsejamos que haga nunca es dejar al sistema sin espacio de intercambio!

Requisitos de la controladora de disco duro

El núcleo soporta controladoras XTestándar, las controladoras MFM, RLL, IDE, EIDE y
SCSI. La regla general para controladoras que no sean SCSI, es que si puede acceder a las
unidades (disco y/o disquete) desde MS-DOS u otro sistema operativo, debería poder
hacerlo desde Linux.

Requisitos de espacio en disco

Para instalar Linux, necesitará preparar algo de espacio en su disco duro. También puede
disponer de espacio para Linux en múltiples unidades.
La cantidad de espacio depende en gran medida de sus necesidades y de la cantidad
de software que quiera instalar. Las distribuciones Linux incluyen gran cantidad de soft-
ware que quizá no necesite utilizar.
Un sistema básico funcionará con menos de 100 Megabytes. Si quiere disponer de
espacio para expansiones, y para paquetes mas grandes como X Window, necesitará más
espacio. Si además planea permitir a múltiples usuarios utilizar la maquina, tendrá que
dejar espacio para sus ficheros. Una instalación media, con X y un número de aplicacio-
nes respetable, van bien con 500 Megas; una distribución completa ocupa alrededor de 1,2

20 Capítulo 1. Introducción
Gigas. Con el tamaño actual de discos, estas cantidades no deberían suponer gran pro-
blema.

Requisitos de monitor y adaptador de vídeo

Para trabajar en modo texto, Linux soporta todas las tarjetas de vídeo estándar Hercules,
CGA, EGA, VGA, IBM monocromo y Super VGA.
Los entornos gráficos como el Sistema X Window tienen requisitos propios de hard-
ware para la tarjeta de vídeo. Se soportan prácticamente todas la tarjetas actuales, varias
aceleradoras 3D (las más populares, Wodoo, etc…) y tarjetas AGP.

Hardware diverso

Es posible que tenga cierto número de dispositivos «opcionales», como almacenamiento


en cintas y CD-ROM, tarjetas de sonido y demás, y quieras hacerlos funcionar bajo Linux.
He aquí algunos:

Ratones y otros dispositivos apuntadores

Normalmente sólo usará un ratón bajo un entorno gráfico como el Sistema X Window. Sin
embargo, algunas aplicaciones Linux no asociadas con un entorno gráfico, hacen uso del ratón.
Linux soporta todos los ratones serie estándar, incluyendo Logitech, MM series,
Mouseman, Microsoft (2 botones) y Mouse Systems (3 botones).
Linux también soporta los ratones de bus Microsoft, Logitech y ATIXL. La interfaz de
ratón de PS/2 también es soportada.
Todos los demás dispositivos apuntadores, como los «trackball» que emulen a los dis-
positivos anteriormente citados, también deberían funcionar.

Unidades de cinta

Hay varios tipos de unidades de cinta disponibles en el mercado. La mayoría usan la inter-
faz SCSI, por lo que estarían soportadas por Linux. Otras unidades QIC-02 también están
soportadas.

Impresoras

Linux soporta prácticamente todas las impresoras paralelo. El software de impresión de


Linux se basa en el estándar de UNIX lp y lpr. Este software también le permite imprimir
remotamente a través de la red, si es que tiene una disponible.

ESware Linux 21
Modems

Linux soporta toda la gama de modems serie externos. Ojo con los actuales modems inter-
nos PCI. Si son Win-modem (y prácticamente todos lo son) ¡no funcionarán bajo Linux!.
Estos dispositivos, de bajo precio, requieren que se emulen por software ciertos compo-
nentes de hardware, que por sí no incorporan. Esto fuerza a la CPU a dedicarle tanto tiem-
po durante su uso, que prácticamente inhibe la multitarea, lo que va en contra de uno de
los principales pilares del entorno Linux.

Tarjetas Ethernet

Linux soporta un buen número de tarjetas Ethernet y adaptadores para LAN. La lista es
demasiado larga para esta introducción. Se verá con más detalle más adelante, cuando se
configure la parte de red.

Información sobre Linux

Hay muchas fuentes de información sobre Linux, principalmente de forma electrónica.


Esto es, con un acceso a Internet, podrá pasear por infinidad de páginas de documenta-
ción. Si no tiene acceso a la Red, puede encontrar copias para imprimir en los CD-ROM de
Esware Linux.

Documentación On-Line

La pagina inicial de la Documentación de Linux en la Web se encuentra en la dirección

http://www.linuxdoc.org

Desde esta página puede acceder a las secciones «Cómo…» (HOWTO) y otros docu-
mentos en formato HTML. También encontrará enlaces a otros servidores de interés.
El sitio web de Esware Linux le proporciona también enlaces a documentación en cas-
tellano:

http://www.esware.com

22 Capítulo 1. Introducción
Como obtener ayuda

Existen fórmulas para obtener ayuda sobre problemas concretos. La forma más inmediata
es mediante las listas de correo y grupos de noticias que se mantienen en Internet.
Prácticamente todo el software incluye documentación sobre su manejo; entonces lo
primero que debemos hacer cuando algo no funciona, es localizar esta documentación y
leerla. Incluso nos atreveríamos a sugerir que estaría bien leer la documentación antes
incluso de instalar o ejecutar el software. Frecuentemente, y por extraño que parezca, se
encuentran respuestas a muchos problemas.
Si a pesar de esto necesita preguntar en un grupo de noticias sobre ese problema, pro-
cure leer antes las noticias ya publicadas. Los problemas se repiten y es posible que la solu-
ción ya esté disponible. De esta manera evita que la gente que lea su mensaje, general-
mente dispuesta a ayudarle, se harte de ver la misma pregunta una y otra vez.
En la mayoría de los casos se recomienda investigar por cuenta propia antes de pedir
ayuda al exterior. Y si escribe su pregunta en las noticias, haga que merezca la pena. La
Red no es un servicio postventa. Así pues, hay que redactar el artículo de la forma mas
completa posible, incluyendo toda la información acerca de su sistema y el problema que
crea relevante; suele ser interesante añadir información mas general, como qué versión del
sistema utiliza (del núcleo y de la distribución), así como un pequeño resumen de su
hardware. La idea es hacer todo lo que pueda por sí mismo y sólo entonces pedir ayuda si
finalmente la necesita.

Anecdotario

El día 5 de octubre de 1991, Linus Torvalds anuncia la primera versión de Linux, llamada
0.02. Ejecutaba bash (el shell de GNU) y gcc (el compilador de C de GNU), y no mucho más.
Linus publicó lo siguiente en comp.os.minix:
«¿Suspiráis al recordar aquellos días de Minix-1.1, cuando los hombres eran hombres y
escribían sus propios controladores?
«¿Os sentís sin ningún proyecto interesante y os gustaría tener un verdadero S.O. que
pudiérais modificar a placer?
«¿Os resulta frustrante el tener sólo a Minix? Entonces, este artículo es para vosotros.
«Como dije hace un mes, estoy trabajando en una versión gratuita de algo parecido a
Minix para ordenadores AT-386. He alcanzado la etapa en la que puede ser utilizable y voy
a poner los códigos fuente para su distribución.
Es sólo la versión 0.02… pero he conseguido ejecutar en el bash, gcc, gnu-make, gnu-
sed, compress, etc.»
El desarrollo se aceleró por la colaboración espontánea de gente a través de Internet.
En diciembre de 1993, el núcleo estaba en la revisión 0.99.pl14, aproximándose al número

ESware Linux 23
de versión 1.0. Generalmente se reserva el número 1.0 para indicar la primera versión teó-
ricamente completa y sin errores.
En el momento de escribir estas líneas, la versión más reciente es la 2.4.test4.

24 Capítulo 1. Introducción
Capítulo 2 Instalación

Antes de Instalar

En realidad, la instalación de ESware Linux no es un proceso complicado, y con la nueva


instalación en modo gráfico, completar con éxito el proceso es relativamente fácil, incluso
con pocos conocimientos del sistema. En este capítulo veremos un par de puntos impor-
tantes sobre las necesidades de particionamiento de Linux, el potente gestor de particio-
nes fdisk y el posterior uso de las particiones.

Conceptos sobre particiones

En general, los discos duros se encuentran divididos en particiones, donde cada parti-
ción corresponde a un sistema operativo. Por ejemplo, en un disco duro se pueden
tener varias particiones; una dedicada a, digamos, MS-Windows, otra a OS/2 y otra a
Linux.
Si usted tiene ya otro software instalado en su equipo, puede necesitar cambiar el tama-
ño de sus particiones con el fin de reservar espacio para Linux. En el espacio reservado se
crearán una o más particiones para almacenar el software de Linux y el espacio de inter-
cambio. A este proceso lo llamamos reparticionar.
La mayoría de los equipos con Windows instalado utilizan una única partición que
ocupa todo el disco. Para Windows, esta partición es conocida como C:.
Si tiene mas de una partición, Windows las llamara D:, E:, y así sucesivamente, de
modo que cada partición actúa como si fuera un disco duro independiente.
La información sobre las particiones del disco duro se guarda en el primer sector del
disco, conocido como registro de arranque maestro (a partir de ahora mbr) junto a la tabla
de particiones. El registro de arranque (como su nombre indica) se usa para arrancar el sis-
tema. La tabla de particiones contiene información acerca del lugar, el tamaño y los atri-
butos de cada partición.
Hay tres clases de particiones: primarias, extendidas y lógicas. De éstas, las más usadas
son las primarias. Una partición primaria es aquélla en la que el primer sector es el sector

ESware Linux 25
de arranque (boot sector), lo que quiere decir que esta partición podrá tener información
para lanzar un sitema operativo. Debido al límite de espacio en la tabla de particiones, sólo
pueden definirse cuatro particiones primarias en un disco.
La forma de superar este límite de cuatro particiones es usar particiones lógicas
dentro de particiones extendidas. Una partición extendida no tiene datos ella misma;
en su lugar, actúa como «soporte» de particiones lógicas (es como un contenedor de
particiones). Por lo tanto, se puede crear una partición extendida, y dentro crear cual-
quier número de particiones lógicas. Sólo se puede definir una partición extendida por
disco.

Necesidades de reparticionado en Linux

En Linux, los ficheros se almacenan en un sistema de archivos, que es esencialmente una


zona del disco duro (u otro dispositivo, como un CD-ROM o un diskette) formateado para
almacenar ficheros.
Cada sistema de archivos se encuentra asociado con una parte específica del árbol de
directorios, (veremos el árbol de directorios más adelante).
El sistema de archivos raíz corresponde al directorio / (esto en muy importante).
Bajo Linux, cada sistema de archivos ocupa una partición del disco duro. Por ejemplo,
si tenemos un sistema de archivos para / y otro para /usr, necesitaremos dos particiones
para almacenar ambos sistemas. (Encontrarás más información en el Capítulo Gestión del
Sistema de Archivos).
Antes de instalar Linux, necesitará preparar sistemas de archivos para almacenar el
software de Linux. Por lo menos tiene que tener un sistema de archivos (el sistema de
archivos raíz), es decir, una partición reservada a Linux. Para un uso doméstico se puede
optar por almacenar todos los ficheros en el sistema de ficheros raíz, pues es mas fácil de
gestionar que tener diferentes sistemas de archivos y particiones.
Sin embargo, para servidores es más recomendable crear varios sistemas de archivos;
por ejemplo, puede que quiera usar sistemas separados para /usr y /home. Aquellos
lectores con experiencia en administración de sistemas UNIX sabrán cómo usar diferen-
tes sistemas de archivos adecuadamente. Tomen nota de esto, pues se verá también más
adelante.
¿Por qué usar más de un sistema de archivos? Lo más habitual es por seguridad; si, por
alguna razón, uno de sus sistemas de archivos resulta dañado, los otros normalmente no
resultaran afectados. Por otro lado, si almacena todos sus ficheros en el sistema de archi-
vos raíz, y por alguna razón resulta dañado, puede perder todos los ficheros de una vez.
Sin embargo, esto no es lo habitual; si se hacen copias de seguridad regularmente, no hay
de qué preocuparse. ¡Esto no es broma. Haga copias de seguridad! (backups).
Otra razón para utilizar varios sistemas de archivos es repartir el almacenamiento entre
varios discos duros.

26 Capítulo 2. Instalación
En resumen, Linux requiere por lo menos una partición, para el sistema de archivos
raíz. Si desea crear varios sistemas de archivos, necesitará una partición por cada sistema
de archivos.
La otra cuestión a considerar es el espacio de intercambio (swap). Se debe crear una
partición de intercambio, una partición reservada exclusivamente como espacio de inter-
cambio.
Por lo general, se crearán, al menos, dos particiones para Linux:
una para ser usada como sistema de archivos raíz, y la otra como espacio de intercam-
bio. Por supuesto, hay otras opciones, pero ésta es la opción mínima.
También necesita conocer el espacio requerido para cada partición. El tamaño de los sis-
temas de arachivos de su sistema Linux depende en gran parte de qué software quiera ins-
talar en él.
El tamaño de sus particiones de intercambio (debe elegir una para esto) depende de la
RAM virtual que necesite.

Nota importante. Debido a las limitaciones de la BIOS, habitualmente no es posible


arrancar desde particiones que empiecen más allá del cilindro 1024. (Esto ha cambiado
con las últimas versiones de LILO, el gestor de arranque de Linux.) Aún así, procure no
usar una partición que sobrepase ese cilindro para el sistema de archivos raíz. Linux
puede usar perfectamente particiones con cilindros más allá del 1024, pero mejor no
usar dichas particiones para arrancar. Decir esto aquí puede parecer prematuro, pero es
importante a la hora de planificar el uso del disco en Linux.

Si usa una partición para el sistema de archivos raíz mas allá del cilindro 1024, siempre
podrá arrancar Linux con un disco boot. Esto no es un inconveniente; sólo tarda un poco
más que si se arrancara desde el disco duro.

Dispositivos y particiones en Linux

Muchas distribuciones necesitan que se creen a mano las particiones de Linux utilizando
el programa fdisk. Otras pueden crearlas durante el mismo proceso de instalación. En cual-
quier caso, debemos conocer lo siguiente acerca de los nombres para los dispositivos y las
particiones en Linux.
Bajo Linux, los dispositivos y las particiones tienen nombres muy distintos a los utili-
zados en otros sistemas operativos. En MS-DOS / Windows, las disqueteras se identifican
como A: y B:, mientras que las particiones del disco duro se identifican como C:, D:, etc.
Con Linux, la denominación es algo diferente (véase tabla 2.1).

ESware Linux 27
Tabla 2.1. Lista de los nombres de diversos dispositivos

Dispositivo en Linux

Primera disquetera (A:) /dev/fd0


Segunda disquetera (B:) /dev/fd1
Primer disco duro (todo el disco) /dev/hda
Primer disco duro, partición primaria 1 /dev/hda1
Primer disco duro, partición primaria 2 /dev/hda2
Primer disco duro, partición primaria 3 /dev/hda3
Primer disco duro, partición primaria 4 /dev/hda4
Primer disco duro, partición lógica 1 /dev/hda5
Primer disco duro, partición lógica 2 /dev/hda6

Segundo disco duro (todo el disco) /dev/hdb


Segundo disco duro, partición primaria 1 /dev/hdb1

Primer disco duro SCSI (todo el disco) /dev/sda


Primer disco duro SCSI, partición primaria 1 /dev/sda1

Segundo disco duro SCSI (todo el disco) /dev/sdb


Segundo disco duro SCSI, partición primaria 1 /dev/sdb1

Algunas notas acerca de esta tabla. Observe que /dev/fd0 corresponde a la primera
disquetera (A: bajo Windows) y que /dev/fd1 corresponde a la segunda (B:).
Además, los discos duros SCSI se nombran de manera diferente a otros discos. Los IDE,
EIDE y CD-ROM (que no sean SCSI) se acceden a través de los dispositivos /dev/hda,
/dev/hdb, etc. Las particiones de /dev/hda son /dev/hda1, /dev/hda2, etc. Sin embar-
go, los dispositivos SCSI se nombran con /dev/sda, /dev/sdb, etc., y las particiones con
/dev/sda1, /dev/sda2, etc.
Las particiones lógicas se nombran de forma consecutiva partiendo de /dev/hda5.

Creación de las particiones en Linux

Ahora ya está preparado para crear las particiones de Linux con el comando fdisk. Como
se explicó anteriormente, va a tener que crear, en general, una partición para el software
de Linux propiamente dicho y otra para el área de intercambio. Recuerde que puede hacer
este proceso durante la instalación.

28 Capítulo 2. Instalación
La sintaxis del comando fdisk es la siguiente:

fdisk <unidad>

donde <unidad> es el nombre de dispositivo con el que Linux identifica el disco duro
donde quiere realizar las particiones. Por ejemplo, si desea ejecutar fdisk sobre el pri-
mer disco SCSI de su sistema, utilice el comando:

fdisk /dev/sda

Por defecto, fdisk actúa sobre /dev/hda (el primer disco IDE).

Para crear particiones de Linux en más de un disco, ejecute fdisk una vez por disco.
fdisk tiene su propia línea de comandos con sus propias órdenes para la gestión de par-
ticiones. Veamos cómo funciona:

# fdisk /dev/hda
Command (m for help):

En este punto, fdisk esta esperando un comando; puede teclear m para


obtener una lista de opciones.

Command (m for help): m


Command action
a toggle a bootable flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):

El comando n se usa para crear una partición nueva. Casi todas las demás opciones no
nos van a preocupar ahora mismo.

ESware Linux 29
Nota importante.
Para salir de fdisk sin guardar los cambios, utilice el comando q.
Para salir guardando los cambios en la tabla de particiones, utilice el comando w.

Lo primero que debe hacer es mostrar su tabla de particiones actual y anotar sus datos,
para referencias posteriores. Use el comando p para esto.

Command (m for help): p


Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M

Command (m for help):

En este ejemplo, tenemos una partición única en /dev/hda1, con 61693 bloques (unos
60 MB). Esta partición comienza en el cilindro 1 y finaliza en el 203. En total el disco tiene
683 cilindros, de los cuales 480 están libres para crear particiones de Linux.
Para crear una partición nueva, utilice el comando n. En este ejemplo crearemos dos
particiones primarias (/dev/hda2 y /dev/hda3) para Linux.

Command (m for help): n


Command action
e extended
p primary partition (1-4)
p

Aquí, fdisk pide el tipo de partición a crear: extendida o primaria. En nuestro ejemplo
elegimos p pues sólo vamos a crear particiones primarias.

Partition number (1-4):

fdisk preguntará entonces por el número de la partición a crear; puesto que la 1 está en
uso, nuestra primera partición para Linux debe ser la 2.

Partition number (1-4): 2


First cylinder (204-683):

Ahora debe introducir el cilindro de comienzo de la partición. Dado que actualmente


no están en uso los cilindros 204 a 683, escogeremos el primero disponible (204), ya que no
hay razón para dejar huecos entre particiones.

30 Capítulo 2. Instalación
First cylinder (204-683): 204
Last cylinder or +size or +sizeM or +sizeK (204-683):

Ahora fdisk nos está preguntando acerca del tamaño de la partición a crear. Podemos
hacerlo especificando el cilindro de terminación de la partición o indicando directamente
el tamaño requerido, en bytes, kilobytes, o megabytes. Como queremos que la partición
ocupe 80 megabytes, especificaremos +80M. Cuando se indica el tamaño de esta forma,
fdisk lo redondea a un número de cilindros.

Last cylinder or +size or +sizeM or +sizeK (204-683): +80M

Ahora podemos pasar a crear la segunda partición. Como ejemplo, vamos a crearla de
10 megabytes.

Command (m for help): n


Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (474-683): 474
Last cylinder or +size or +sizeM or +sizeK (474-683): +10M

Finalmente, vamos a ver la tabla de particiones. Una vez más, anote la información que
se le presente sobre todos los tamaños en bloques de las nuevas particiones. Necesitará
conocerlos cuando tenga que crear, más tarde, los sistemas de archivos. Además, debe
verificar que las particiones no se solapen.

Command (m for help): p


Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
/dev/hda2 204 204 473 82080 81 Linux native
/dev/hda3 474 474 507 10336 81 Linux native

Como puede ver, ahora en /dev/hda2 tenemos una partición de 82080 bloques
(aproximadamente 80 megabytes) y en /dev/hda3 tenemos 10336 bloques (unos 10
megabytes).
Para establecer una partición de un tipo de archivos distinto a Linux native (ext2fs), uti-
lice la opción t en fdisk para cambiar el tipo de la partición elegida para el intercambio a

ESware Linux 31
Linux swap. Se puede usar la opción L para ver una lista de tipos de particiones conoci-
das, y luego t para establecer el tipo de la partición de intercambio a Linux swap.
De esta forma, el software de instalación podrá encontrar automáticamente sus parti-
ciones de intercambio en función del tipo. Si el software de instalación no pudiera recono-
cer su partición de intercambio, deberá repetir la ejecución de fdisk y utilizar el comando
t sobre la partición en cuestión.
En el ejemplo anterior, los cilindros sobrantes (508 a 683) se quedan sin usar. Puede que
se desee hacerlo así, para más adelante crear más particiones.
Finalmente, utilizaremos el comando w para escribir los cambios en el disco y salir.

Command (m for help): w

Recuerde que ningún cambio hecho durante la ejecución de fdisk tendrá efecto hasta
que se teclee el comando w, por lo que se puede jugar con diferentes configuraciones y
guardarlas sólo cuando esté seguro de que los cambios son correctos.
Además, puede usar el comando q para abandonar fdisk sin hacer ningún cambio.
Recuerde también que las particiones de otros sistemas operativos no deben tocarse desde
el programa fdisk de Linux.
Asimismo, recuerde que no debe arrancar Linux desde una partición que comience mas
allá del cilindro 1023. Por tanto, puede crear la partición raíz en el rango inferior a este
cilindro o, si esto es imposible, arrancar siempre desde un disquete.
En algunas ocasiones es necesario reiniciar el sistema tras ejecutar fdisk. Esto permite
que los cambios en la tabla de particiones tengan efecto. Las nuevas versiones de fdisk
cambian de forma automática esta información en el núcleo, con lo que no es necesario
reiniciar.
Aunque la forma más segura de que se vuelva a leer el mbr es volver a arrancar tras
crear las particiones.

Creación del espacio de intercambio (swap)

La información que viene a continuación no es necesaria durante el proceso de instalación, ya


que se hace todo automáticamente. Si después de tener instalado el sistema queremos (o nece-
sitamos) cambiar la partición de intercambio, aquí tenemos los pasos que debemos dar.
El comando utilizado para preparar una partición de intercambio es mkswap, cuya sin-
taxis es:

mkswap -c <partición> <tamaño>

32 Capítulo 2. Instalación
donde <partición> es el nombre de la partición de intercambio y <tamaño> es el tamaño
de la partición, en bloques. Si el tamaño se omite, mkswap lo asigna automáticamente; es
decir, que si al hacer la partición ya definimos el tamaño correctamente, será más cómodo
omitir el tamaño. Por ejemplo, si su partición de intercambio es la /dev/hda3 y tiene 10336
bloques, teclee el comando:

# mkswap -c /dev/hda3 10336

o la versión más sencilla:

# mkswap -c /dev/hda3

La opción -c indica a mkswap que compruebe si hay bloques erróneos en la partición


mientras la crea.
Si se usan varias particiones de intercambio, se necesitará ejecutar el comando mkswap
apropiado para cada partición.
Después de preparar el área de intercambio, hay que decirle al sistema que la use.
Normalmente, el sistema comienza a usarla automáticamente durante el arranque.
El comando para hacerlo es swapon, y tiene el siguiente formato:

swapon <partition>

En el ejemplo anterior, para activar el espacio de intercambio en /dev/hda3, usaremos


el comando:

# swapon /dev/hda3

Creación de los sistemas de archivos

Antes de que se puedan usar las particiones de Linux para almacenar ficheros, hay que
crear los sistemas de archivos en ellas. La creación de un sistema de archivos es análoga a
formatear una partición en Windows u otros sistemas operativos.
Hay varios tipos de sistemas de archivos disponibles en Linux. Cada tipo de sistema de
archivos tiene su propio formato y características (como longitud del nombre de los fiche-
ros, tamaño máximo, etc). Además, Linux soporta sistemas de archivos «de terceros»,
como el de Windows.
El tipo de sistema de archivos más usado es el Sistema de Ficheros Extendido 2, o
ext2fs. El ext2fs es uno de los sistemas más eficientes y flexibles; permite hasta 256 carac-
teres en los nombres de los ficheros y tamaños de estos de hasta 4 Terabytes.

ESware Linux 33
El propio proceso de instalación crea los sistemas de archivos de forma automática. Si
desea crear sus propios sistemas a mano, siga el método que a continuación describimos.
Para crear un sistema de tipo ext2fs utilice el comando:

mke2fs -c <particion> <tamaño>

donde <particion> es el nombre de la partición, y <tamaño> es el tamaño de la partición


en bloques. Aquí, la opción <tamaño> actúa igual que con mkswap;, si se omite el tama-
ño, se obtiene automáticamente. Por ejemplo, para crear un sistema de 82080 bloques en
/dev/hda2, use el comando:

# mke2fs -c /dev/hda2 82080

o la versión más sencilla:

# mke2fs -c /dev/hda2

Si quiere usar varios sistemas de archivos en Linux, necesitará repetir el comando


mke2fs por cada sistema de archivos. Esto funciona exactamente igual para los disquetes
y nuevos discos duros que se añadan posteriormente al sistema.

Repartición no destructiva. Uso de fips

Bien, hasta aquí hemos utilizado con éxito nuestra herramienta de particionado fdisk.
La pega es que borrar particiones implica la pérdida de los datos que anteriormente exis-
tieran en dichas particiones. El caso más común es que tengamos algún sistema previa-
mente instalado y una única partición. Y hasta es probable que queramos mantener los
datos que tenemos. Cuando nos enfrentemos a esta situación, debemos usar un software
que sea capaz de redimensionar la partición existente sin destrucción de datos y programas.
Las distribuciones Linux aportan una que funciona bastante bien para realizar esta tarea.
Se llama fips y normalmente se encuentra en un directorio llamado /dosutils. Este pro-
grama es capaz de reducir el tamaño de una partición primaria (no trabaja con particiones
lógicas) y tampoco sirve para ampliar el tamaño de una partición existente.
Otro requisito es que los datos no estén fragmentados. Es decir, probablemente habrá
que defragmentar.
Es necesario ejecutarlo desde una sesión de MS-DOS «pura»; no funciona desde una
ventana de Windows.
Lo primero que hace es comprobar la tabla de particiones y realiza algunos chequeos
del sector de arranque; cuando comprueba que todo está bien, da la posibilidad de hacer
una copia de seguridad del mbr por si algo sale mal. (Recomendable hacerlo.)

34 Capítulo 2. Instalación
El resto del proceso es fácil; nos presenta el tamaño de la nueva partición junto al tama-
ño que tendrá la partición antigua. Con las flechas del cursor se pueden modificar hasta el
resultado que deseemos. Se finaliza pulsando Intro.
Fips nos muestra la nueva tabla de particiones y pide confirmación o reedición. Al con-
firmarlo con la tecla c, tendremos dos particiones en nuestro disco duro. En realidad ten-
dremos la partición primaria que ya existía (reducida de tamaño) y un nuevo espacio dis-
ponible para crear las particiones que necesitemos para Linux. (Consulte el uso de fdisk
anteriormente en este capítulo.) Lo siguiente es instalar el sistema operativo.

Instalación del sistema operativo


Instalación en modo gráfico

ESware Linux presenta un sencillo proceso de instalación en modo gráfico. Con la simple
ayuda del ratón lograremos instalar completamente nuestro sistema Linux de una mane-
ra fácil y rápida.

Novedades de la instalación gráfica

El proceso de arranque de ESware Linux comienza con la detección del ratón y del sistema de
vídeo de nuestra computadora. Si nuestra tarjeta gráfica es detectada y el sistema puede mos-
trar una pantalla de al menos 256 colores, entraremos en una interfaz gráfica de fácil uso.
Como ventaja de este nuevo modo gráfico respecto al modo tradicional tenemos un
completo sistema de pantallas de ayuda más cuidado y de fácil acceso. Cada sección de la
instalación contiene una página de ayuda de cómoda lectura que nos guía en los pasos a
dar, además de aconsejarnos con sugerencias.
En todo momento veremos en qué parte de la instalación nos encontramos y qué partes
quedan por completar, mediante una columna de pasos de instalación en la parte izquierda
de la pantalla. De esta manera tendremos una visión global de toda la instalación.
Para los usuarios más avanzados, está presente en todo el proceso de instalación un ter-
minal gráfico que lanzará un pequeño shell, dando la oportunidad de observar los proce-
sos y determinados aspectos del estado del sistema (memoria, disco, particiones,…).

Proceso de instalación detallado


Consolas virtuales de texto y consola gráfica de instalación

Una vez iniciado el modo gráfico, dispondremos de siete consolas virtuales entre las que
podremos alternar; cada una de ellas muestra información del proceso de instalación. En

ESware Linux 35
la Tabla 2.2 mostramos las cinco consolas de texto (F1 a F5) y la consola gráfica (F7) con el
proceso de instalación.

Tabla 2.2. Consolas disponibles durante el proceso de instalación.

Teclas Contenido
Ctrl+Alt+F1 Mensajes del programa de instalación.
Ctrl+Alt+F2 Shell bash reducido.
Ctrl+Alt+F3 Log del programa de instalación.
Ctrl+Alt+F4 Mensajes internos del kernel y módulos.
Ctrl+Alt+F5 Salida de algunos programas.
Crtl+Alt+F7 Entorno gráfico con la GUI de instalación.

36 Capítulo 2. Instalación
Selección de teclado
En esta pantalla puede seleccionar el tipo de teclado que usará habitualmente en su siste-
ma (véase la Figura 2.1). Por defecto se selecciona el más extendido en nuestro país.

Figura 2-1. Configuración del teclado

ESware Linux 37
Selección del ratón

El ratón es detectado en el inicio de la instalación; por tanto, la selección predeterminada


será la más adecuada a su sistema. No obstante, dispone de una amplia lista de ratones
entre los que podrá elegir si la detección no fue correcta (véase la Figura 2.2.).

Figura 2-2. Configuración del ratón

38 Capítulo 2. Instalación
Tipo de instalación

En este punto puede elegir entre la actualización de un sistema ESware, ya sea una versión
anterior o una reparación de la versión actual, o instalar un sistema nuevo.
La actualización realizará una comprobación de los paquetes instalados y los sustitui-
rá con nuevas versiones; esto incluye todo el sistema X Window, kernel y demás partes base
del sistema. Los archivos de configuración serán salvaguardados en la medida de lo posi-
ble, creando copias de seguridad de los mismos con extensión .rpm.
Tenemos cuatro alternativas en la instalación de un nuevo sistema (véase la Figura 2.3):
una instalación personalizada, que nos da el máximo control (recomendada), y tres insta-
laciones más automatizadas (estación de trabajo, servidor y portátiles).

• Instalación personalizada: configuraremos las particiones manualmente y decidire-


mos qué paquetes serán instalados y cuáles no.

Figura 2-3. Tipo de instalación

ESware Linux 39
• Instalación para estación de trabajo: este tipo de instalación está indicado en sistemas
con particiones Linux ya creadas (de un sistema anterior). Aprovechará las particio-
nes ya creadas para instalar un nuevo sistema, con la consecuente pérdida de datos
de las mismas. Una selección concreta de paquetes será instalada automáticamente,
ocupando un espacio aproximado de 500 MB.
• Instalación para servidor: es la instalación más automatizada. Borrará toda la infor-
mación de nuestro disco (o discos) y realizará un particionado del mismo a su con-
veniencia, realizando una instalación de paquetes, también automatizada, con herra-
mientas habituales en todo servidor de red.
• Instalación para portátiles: es similar a la instalación para una estación de trabajo,
cambiando la selección de paquetes, en favor de un sistema portátil.

40 Capítulo 2. Instalación
Particionado automático

El particionado automático ocasionará la pérdida de los datos existentes en el disco duro;


una pantalla de aviso nos indicará de esta circunstancia. No obstante, las instalaciones para
estación de trabajo, servidor y portátil también permiten la configuración manual del disco.

Particionado del sistema

La elección de las particiones de nuestro sistema es un paso importante en el proceso de


instalación. El número mínimo de particiones a realizar es dos (véase la Figura 2.4): una
partición para el sistema Linux (partición Linux Native) y una partición de intercambio
(Linux Swap). Es necesario indicar en qué partición se instalará el sistema estableciendo el
punto de montaje como /. Para el resto de las particiones (salvo la swap) indicaremos los
puntos de montaje que deseemos. Por ejemplo, si tenemos una partición msdos y quere-
mos acceder a ella desde ESware Linux; la podemos montar en /dos.

Figura 2-4. Diskdruid

ESware Linux 41
Formateado de los discos

El formateo de particiones implica la pérdida de los datos de las mismas (véase la Figura
2.5). Esto es necesario en el caso de particiones recién creadas y puede ser interesante para
instalaciones nuevas.

Figura 2-5. Dando formato a las particiones

42 Capítulo 2. Instalación
Instalación de LILO

Lilo (Linux Loader) es un excelente gestor de arranque que nos permite seleccionar el siste-
ma operativo con el que iniciar cada vez la máquina (véase la Figura 2.6). El lugar habitual
para instalarlo es el MBR (Master Boot Record); si utiliza otro gestor, lo puede instalar en el
primer sector de la partición de arranque. Debe indicar los sistemas que desea incluir en
el arranque poniendo las correspondientes etiquetas a cada uno de ellos.

Figura 2-6. Instalación de Lilo

ESware Linux 43
Configuración de la red

Si tiene una red de área local, debe configurar los parámetros IP de su puesto (véase la
Figura 2.7). El rango de direcciones reservadas para LAN es de 192.168.0.0 a
192.168.255.255, usar una dirección de este rango le garantiza que no tendrá conflictos si
se conecta a Internet desde esta red. Si no conoce las direcciones que se usan en su red
deberá ponerse en contacto con el administrador del sistema.
Para poder usar DHCP (asignación dinámica de direcciones IP) necesita una máquina
en su red que esté configurada como servidor DHCP.

Figura 2-7. Configuración de red

44 Capítulo 2. Instalación
Configuración de la zona horaria

Por defecto, la configuración horaria está preparada para Europa/Madrid (véase la Figu-
ra 2.8).
Si coincide con su zona, puede pasar a la pantalla siguiente. O entretenerse un rato
pasando el ratón por el mapa mirando las flechitas…

Figura 2-8. Configuración de la zona horaria

ESware Linux 45
Contraseña de root y configuración de cuentas de usuario

La contraseña de root es la más importante del sistema (véase la Figura 2.9). Es obligado
introducir más de seis caracteres y procure no usar palabras que estén en diccionarios para
dificultar cualquier posible ataque. Desde esta pantalla puede, además, agregar cuentas de
otros usuarios.

Figura 2-9. Estableciendo la contraseña del usuario root (administrador del sistema)

Nota importante. Recuerde que no debe usar la cuenta de root habitualmente. Añada
una cuenta de usuario y sólo entre como root cuando realice tareas administrativas.

46 Capítulo 2. Instalación
Configuración de autentificación

El sistema MD5 emplea una encriptación más fuerte para almacenar las contraseñas (reco-
mendado). Si decide utilizar Shadow password (también recomendado) tendrá una medi-
da de seguridad añadida en su sistema (véase la figura 2.10).
Únicamente deberá activar NIS (Network Infomation Service) si está trabajando en una
red en la que los puestos de trabajo se autentifican ante un servidor NIS.

Figura 2-10. Tipos de autentificación

ESware Linux 47
Selección de los grupos de paquetes

Tiene opción de seleccionar los paquetes que se van a instalar (véase la Figura 2.11). Las
novedades más destacables son:

* KDE 2 en su versión de desarrollo. Se puede instalar junto a KDE


1.1.2 sin que interfieran entre sí. Se instala en /opt/kde2.
* Paquete extra de seguridad.
* Herramienta de configuración PnP Lothar. Permite configurar sus dispositivos Plug
and Play con un simple clic de ratón.
* Herramientas especiales para portátiles.
* ¡Servidor WWW seguro! Apache SSL.
* Servidores de bases de datos: PostGres, InterBase y MySQL.

Figura 2-11. Selección de paquetes

48 Capítulo 2. Instalación
* Administrador de servidores Webmin. (Vía páginas web).
* Herramientas para alta disponibilidad (Clustering).
* Edición avanzada para Latex.

ESware Linux 49
Selección de paquetes individuales

Una vez seleccionados los paquetes, podrá decidir qué software específico se instalará
(véase la Figura 2.12). (Sólo si se activó la opción Selecciona paquetes individualmente.)

Dependencias sin resolver

Se presentará una pantalla de dependencias no resueltas si ha seleccionado algún paque-


te que requiere tener otro instalado para su correcto funcionamiento. Confíe en su consejo
y pulse Aceptar.

Figura 2-12. Selección individual de paquetes

50 Capítulo 2. Instalación
Configuración personalizada del sistema X Window

Aquí puede probar la configuración del servidor de ventanas y decidir si quiere entrar al
sistema en modo gráfico directamente (véase la Figura 2.13). Si la configuración automáti-
ca no es de su agrado, puede retocarla hasta dejarla a su gusto. Lea la parte del manual
dedicada a la configuración de X Window si no tiene mucha experiencia.

Figura 2-13. Pantalla de configuración de X

ESware Linux 51
Creación del disco de arranque

¡Altamente recomendable ! Quizá no llege a usarlo, pero si llegase a tener algún problema
en su sistema, es posible que le permita recuperarlo (véase la Figura 2.14).

Figura 2-14. Creación de un disquette de arranque

Instalación terminada

Puede reiniciar el sistema y empezar a trabajar/disfrutar de su nuevo y flamente ESware


Linux.

52 Capítulo 2. Instalación
Capítulo 3. El sistema operativo

Los nuevos usuarios de Linux pueden estar un poco perdidos ante la aparente compleji-
dad del sistema que tienen ante sí. Este capítulo está dedicado a ellos. Veremos comandos
para empezar a hacer cosas sencillas (y algunas no tan sencillas), conoceremos íntima-
mente al intérprete de comandos, el sistema de archivos dejará de ser un «arcano» ; en defi-
nitiva, lo necesario para dejar de ser «nuevo usuario». Aunque este capítulo seguirá sien-
do un buen sitio donde volver a consultar cualquier duda. Adelante.

Conceptos básicos de Linux

Linux es un sistema operativo multitarea y multiusuario. Esto significa que puede haber
má de una persona usando un ordenador a la vez, cada uno de ellos ejecutando a su vez
diferentes aplicaciones. Para que los usuarios puedan identificarse en el sistema, deben
presentarse (login), proceso que consta de dos pasos: introducir el nombre de usuario
(login) (el nombre con que será identificado por el sistema), y una contraseña (password), la
cual es su llave personal secreta para entrar en la cuenta. Como sólo usted conoce su con-
traseña, nadie más podrá presentarse en el sistema con su nombre de usuario.
En Linux, el administrador del sistema asignara el nombre de usuario y una contrase-
ña inicial en el momento de crear la cuenta de usuario. Como usted es el administrador del
sistema, debe configurar su propia cuenta antes de poder presentarse. Para el resto de las
discusiones, usaremos el nombre de usuario «Crispin».
Además, cada sistema Linux tiene un nombre del sistema (hostname) asignado.
Este hostname le da nombre a la máquina, además de ser una forma de «personalizar-
la». El nombre del sistema es usado para identificar máquinas en una red, pero incluso
aunque la máquina no esté en red, debería tener su nombre.
En nuestros ejemplos, el nombre del sistema será «Globus».
Después de acceder al sistema con nuestra cuenta, lo que vemos es el prompt o induc-
tor de órdenes. En ESware Linux, el prompt está formado por: «nombre del usuario @ el
nombre de la maquina + el directorio actual +símbolo $» (# para el superusuario). Su apa-
riencia es similar a:

ESware Linux 53
[Crispin@Globus /Crispin]$ (para el usuario Crispin)

o bien

[root@Globus /root]# (para el root)

El prompt indica la disposición para recibir instrucciones. Mientras no esté presente en


pantalla no se pueden introducir nuevas órdenes.

Creación de una cuenta

Antes de poder usar el sistema, debe configurar una cuenta de usuario.


Esto es necesario, porque no es buena idea usar la cuenta de root para los usos norma-
les. La cuenta de root debería reservarse para el uso de comandos privilegiados y para el
mantenimiento del sistema.
Para crear su propia cuenta, necesita entrar en la cuenta de root y usar las ódenes use-
radd o adduser.

Presentación en el sistema (loggin in)

En el momento de presentarse en el sistema, verá la siguiente líea de comandos en la pan-


talla:

Globus login:

Ahora, introduzca su nombre de usuario y pulse Introstro amigo Crispin, teclearía lo


siguiente:

Globus login: Crispin

Password:

Ahora introduzca la contraseña. Ésta no será mostrada en la pantalla conforme se va


tecleando, por lo que debe teclear cuidadosamente.
Si introduce una contraseña incorrecta, se mostrará el siguiente mensaje:

Login incorrect

y deberá intentarlo de nuevo.

54 Capítulo 1. Introducción
Una vez que ha introducido correctamente el nombre de usuario y la contraseña, está
oficialmente «presentado» en el sistema y libre para comenzar a trabajar.

Consolas virtuales

La consola del sistema es el monitor y teclado conectado directamente al sistema. (Como


Linux es un sistema operativo multiusuario, puede tener otros terminales conectados a
puertos serie del sistema, pero éstos no serán la consola.) Linux proporciona acceso a con-
solas virtuales (o VC), las cuales le permitirán tener más de una sesión de trabajo activa
desde la consola a la vez.
Para demostrar esto, entre en su sistema (como hemos visto antes).
Ahora pulse Alt+F2. Debería ver login: de nuevo. Está viendo la segunda consola vir-
tual; ha entrado en el sistema por la primera. Para volver a la primera VC, pulse Alt+F1
¡Voila! ha vuelto a la primera sesión.
Un sistema ESware Linux recién instalado le permite acceder a las primeras seis VC,
usando Alt+F1 a Alt+F6. A partir de la número 7 se reservan para el entorno gráfico.
Como puede ver, el uso de VC es muy potente ya que puede estar trabajando en dife-
rentes VC a la vez.
Aunque el uso de VC es algo limitado (después de todo, sólo puede mirar una VC cada
vez), esto debería darle una idea de las capacidades multiusuario del sistema. Mientras está
trabajando en la VC1, puede conmutar a la VC2 y comenzar a trabajar en otra cosa.

Intérpretes de comandos y comandos

En la mayoría de las exploraciones en el mundo de Linux, estará hablando con el sistema


a través del uso de un intérprete de comandos. Un intérprete de comandos es simplemen-
te un programa que lee las entradas del usuario (por ejemplo las órdenes que teclea) y las
traduce a instrucciones que el sistema es capaz de entender y utilizar. El intérprete de
comandos es sólo una de las interfaces con Linux. Hay muchas interfaces posibles, como
el sistema X Windows, el cual le permite ejecutar comandos usando el ratón y el teclado.
Tan pronto como entra en el sistema, éste arranca un interprete de comandos, momen-
to a partir del cual ya puede teclear órdenes al sistema. Veamos un ejemplo rápido. Aquí,
Crispin entra en el sistema y es situado en el intérprete de comandos

Globus login: Crispin


Password: contraseña_de_Crispin
Welcome to Globus!
[Crispin@Globus /Crispin]$

ESware Linux 55
[Crispin@Globus /Crispin]$ es el prompt del intérprete de comandos, indicando que
está listo para recibir órdenes.

Sintaxis de una orden

orden -opciones argumentos

La orden va en minúsculas, las opciones suelen ir precedidas por un guión (-) y pue-
den ser más de una; los argumentos pueden ser varios separados por espacios. Algunas
órdenes no admiten opciones, otras precisan dos tipos de argumentos (origen y destino),
otras no admiten ni opciones ni argumentos. También nos referiremos a las órdenes a
menudo como comandos. Por ejemplo:

[Crispin@Globus /Crispin]$ ls -nl datos facturas

muestra información en formato largo de los archivos de datos, usando el número de


usuario-propietario (esto se explicará más adelante).
La orden es ls, las opciones son n y l, y los argumentos son datos y facturas.
Otro ejemplo es el siguiente:

[Crispin@Globus /Crispin]$ cp datos facturas

Crea una copia del archivo datos con el nombre facturas.


la orden es cp, no tiene opciones, y los argumentos son datos (origen) y facturas (des-
tino).
Otro ejemplo más:

[Crispin@Globus /Crispin]$ clear

la orden es clear, no tiene opciones y tampoco argumentos.

¿Qué ocurre cuando tecleamos una orden?

Cuando teclea una orden, el intérprete de comandos hace varias cosas.


Primero de todo, busca el nombre de la orden y comprueba si es una orden interna. (Es
decir, una órden que el propio intérprete de comandos sabe ejecutar por sí mismo. Hay
bastantes órdenes de este tipo que veremos mas adelante.) El intérprete de comandos tam-
bién comprueba si la orden es un «alias» o nombre sustituto de otra orden. Si no se cum-

56 Capítulo 3. El sistema operativo


ple ninguno de estos casos, el intérprete de comandos busca el programa en el PATH y lo
ejecuta pasándole los argumentos especificados en la línea de comandos.
¿Qué ocurre si tecleamos una orden y el intérprete de comandos no puede encontrar el
programa de ese nombre? Bien, probémoslo:

[Crispin@Globus /Crispin]$ saluda Crispin


saluda: command not found
[Crispin@Globus /Crispin]$

Bastante simple; si no se puede encontrar el programa con el nombre dado en la orden


(aquí saluda), se muestra un mensaje de error que debería de ser autoexplicativo. A menu-
do verá este mensaje de error si se equivoca al teclear una orden o si el directorio donde
está el programa a ejecutar no está declarado en el PATH.
Esto nos lleva a otra pregunta: ¿PATH? Es una variable del sistema.
En el PATH se indican las rutas, es decir, los directorios donde el interprete de coman-
dos debe buscar las órdenes del sistema. En otro momento del curso se verá más sobre las
variables del sistema.

Salida del sistema

Antes de profundizar más, deberíamos ver cómo salir del sistema. Desde la línea de órde-
nes usaremos la orden exit para salir. Hay otras formas, pero ésta es la más fácil.

[Crispin@Globus /Crispin]$ exit

Con exit se sale del sistema, o lo que es lo mismo, se cierra la sesión abierta por esa
cuenta. Habrá observado que estamos de nuevo ante el login. Los comandos más habitua-
les para apagar el sistema son halt y shutdown. Sólo los puede ejecutar el administrador
(root).

Cómo cambiar la contraseña

También debe asegurarse de la forma de cambiar su contraseña. La orden passwd le pedi-


rá su contraseña vieja y la nueva. Volverá a pedir una segunda vez la nueva para validar-
la. Tenga cuidado de no olvidar su contraseña (si eso ocurre, sólo podrá cambiarla el admi-
nistrador del sistema, es decir accediendo con la cuenta root).

ESware Linux 57
Ficheros y directorios

Bajo la mayoría de los sistemas operativos (Linux incluido), existe el concepto de fichero,
el cual es un conjunto de información al que se le ha asignado un nombre (llamado nom-
bre del fichero).
Ejemplos de fichero son un mensaje de correo, o un programa que puede ser ejecutado.
Esencialmente, cualquier cosa salvada en el disco es guardada como un fichero individual.
Los ficheros son identificados por sus nombres. Por ejemplo, el fichero que contiene su
historial podría ser salvado con el nombre historia-imprimir.
Estos nombres usualmente identifican el fichero y su contenido de alguna forma signi-
ficativa para usted.
No hay un formato estándar para los nombres de los ficheros como lo hay en MS-DOS
y en otros sistemas operativos; en general, estos nombres pueden contener cualquier carác-
ter (excepto /), y están limitados a 256 caracteres de longitud.
Con el concepto de fichero aparece el concepto de directorio. Un directorio es simple-
mente una colección de ficheros. Puede ser considerado como una «carpeta» que contiene
muchos ficheros diferentes.
Los directorios también tienen nombre con el que los podemos identificar. Además, los
directorios mantienen una estructura de árbol; es decir, los directorios pueden contener
otros directorios.
Un fichero puede ser referenciado por su nombre y una ruta de acceso, conjunto cons-
tituido por su nombre, antecedido por el nombre del directorio que lo contiene. Por ejem-
plo, supongamos que Crispin tiene un directorio de nombre para_imprimir que contiene
tres ficheros: historia-final, capítulo-1 y tesis. (Cada uno de los tres ficheros contiene infor-
mación sobre tres de los proyectos en los que Crispin esta trabajando). Para referirse al
fichero capítulo-1, Crispin puede especificar su ruta de acceso:

para_imprimir/capítulo-1

Como puede ver, el directorio y el nombre del fichero van separados por un carácter /.
Por esta razón, los nombres de fichero no pueden contener este carácter.
Como hemos mencionado, los directorios pueden anidarse uno dentro de otro. Por
ejemplo, supongamos que Crispin tiene otro directorio dentro de para_imprimir llamado
borradores. La ruta de acceso de este fichero sería:

para_imprimir/notas/borradores

Por tanto, la ruta de acceso realmente es el camino que se debe tomar para localizar a
un fichero. El directorio sobre un subdirectorio dado es conocido como el directorio padre.
Aquí, el directorio para_imprimir es el padre del directorio notas.

58 Capítulo 3. El sistema operativo


El árbol de directorios

Los sistemas Linux tienen una distribución de ficheros estándar, de forma que recursos y
ficheros puedan ser fácilmente localizados. Esta distribución forma el árbol de directorios
(véase la Figura 3.1), el cual comienza en el directorio /, también conocido como directo-
rio raíz. Directamente por debajo de / hay algunos subdirectorios importantes: /bin, /etc,
/dev y /usr, entre otros. Éstos a su vez contienen otros directorios con ficheros de confi-
guración del sistema, programas, etc.
En particular, cada usuario tiene un directorio home. Éste es el directorio en el que el usua-
rio guardará sus ficheros. En los ejemplos anteriores, todos los ficheros de Crispin (como
capítulo-1 e historia-final) estaban contenidos en el directorio home de Crispin. Usualmente,
los directorios home de los usuarios cuelgan de /home y son nombrados con el nombre del
usuario al que pertenecen. Por tanto, el directorio home de Crispin es /home/Crispin.

Figura 3-1. Árbol de directorios

ESware Linux 59
En la figura se muestra un árbol de directorios de ejemplo. Éste debería darle una idea
de cómo está organizado en su sistema el árbol de directorios.

Explorando el sistema de ficheros

El sistema de ficheros es la colección de ficheros y la jerarquía de directorios de su sistema.


Echemos un vistazo a cada uno de estos directorios.

/bin

/bin es la abreviación de binaries, o ejecutables. Es donde residen la mayoría de los pro-


gramas esenciales del sistema. Use la orden ls -F /bin para listar los ficheros.
Podrá ver algunas órdenes que reconocerá, como cp, ls y mv. Éstos son los programas
para estas órdenes. Cuando usa la orden cp esta ejecutando el programa /bin/cp.
Usando ls -F verá que la mayoría (si no todos) los ficheros de /bin tienen un asterisco
(*) añadido al final de sus nombres. Esto indica que son ficheros ejecutables.

/dev

El siguiente es /dev. Echémosle un vistazo de nuevo con ls -F.


Los ficheros en /dev son conocidos como controladores de dispositivo (device drivers) y
se utilizan para acceder a los dispositivos del sistema y recursos, como discos duros,
modems, memoria, etc. Por ejemplo, de la misma forma que puede leer datos de un fiche-
ro, puede leerlos desde la entrada del ratón leyendo /dev/mouse.
Los ficheros que comienzan su nombre con fd son controladores de disqueteras.
fd0 es la primera disquetera, fd1 la segunda. Ahora, alguien astuto se dará cuenta de
que hay más controladores de dispositivo para disqueteras de los que hemos mencionado.
Éstos representan tipos específicos de discos. Por ejemplo, fd1H1440 accederá a discos de
3.5» de alta densidad en la disquetera 1.
Aquí tenemos una lista de algunos de los controladores de dispositivo más usados.
Nótese que incluso aunque puede que no tenga alguno de los dispositivos listados, tendrá
entradas en dev de cualquier forma.
/dev/console hace referencia a la consola del sistema, es decir, al monitor conectado
directamente a su sistema.
Los dispositivos /dev/ttyS y /dev/cua son usados para acceder a los puertos serie.
Por ejemplo, /dev/ttyS0 hace referencia a COM1 bajo MS-DOS. Los dispositivos
/dev/cua son callout, los cuales son usados en conjunción con un modem.

60 Capítulo 3. El sistema operativo


Los nombres de dispositivo que comienzan por hd acceden a discos duros.
/dev/hda hace referencia a la totalidad del primer disco duro, mientras que
/dev/hda1 hace referencia a la primera partición en /dev/hda.
Los nombres de dispositivo que comienzan con sd son dispositivos SCSI. Si tiene un
disco duro SCSI, en lugar de acceder a él mediante /dev/hda, deberá acceder a /dev/sda.
Las cintas SCSI son accedidas vía dispositivos st y los CD-ROM SCSI vía sr.
Los nombres que comienzan por lp acceden a los puertos paralelo. /dev/lp0 hace refe-
rencia a LPT1 en el mundo MS-DOS.
/dev/null es usado como «agujero negro». Cualquier dato enviado a este dispositivo
desaparece. ¿Para qué puede ser útil esto? Bien, si desea suprimir la salida por pantalla de
una orden, podría enviar la salida a /dev/null. Veremos ejemplos sobre esto después.
Los nombres que comienzan por /dev/tty hacen referencia a «consolas virtuales» de
su sistema (accesibles mediante las teclas <Alt+F1>,<Alt+F2>, etc). /dev/tty1 hace refe-
rencia a la primera VC, /dev/tty2 a la segunda, etc.
Los nombres de dispositivo que comienzan con /dev/pty son «pseudo-terminales».
Éstos son usados para proporcionar un «terminal» a sesiones remotas.
Por ejemplo, si su máquina está en una red, telnet de entrada usara uno de los disposi-
tivos /dev/pty.

/etc

/etc contiene una serie de ficheros de configuración del sistema.


Éstos incluyen /etc/passwd (la base de datos de usuarios), /etc/rc (guiones de inicia-
lización del sistema), etc.

/sbin

/sbin se usa para almacenar programas esenciales del sistema, que usará el administrador
del mismo.

/home

/home contiene los directorios home de los usuarios. Por ejemplo, /home/Crispin es el
directorio del usuario Crispin. En un sistema recién instalado, no habrá ningún usuario en
este directorio.

/lib

/lib contiene las imágenes de las librerías compartidas. Estos ficheros contienen código
que compartirán muchos programas. En lugar de que cada programa contenga una copia

ESware Linux 61
propia de las rutinas compartidas, éstas son guardadas en un lugar común, en /lib. Esto
hace que los programas ejecutables sean menores y reduce el espacio usado en disco.

/proc

/proc es un «sistema de ficheros virtual». Los ficheros que contiene realmente residen en
memoria, no en disco. Hacen referencia a varios procesos que corren en el sistema, y le per-
miten obtener información acerca de qué programas y procesos están ejecutándose en un
momento dado.

/tmp

Muchos programas tienen la necesidad de generar cierta información temporal y guar-


darla en un fichero temporal. El lugar habitual para esos ficheros es /tmp.

/usr

/usr es un directorio muy importante. Contiene una serie de subdirectorios que contienen
a su vez algunos de los más importantes y útiles programas y ficheros de configuración
usados en el sistema.
Los directorios descritos arriba son esenciales para que el sistema esté operativo, pero
la mayoría de las cosas que se encuentran en /usr son opcionales para el sistema. De cual-
quier forma, son estas cosas opcionales las que hacen que el sistema sea útil e interesante.
Sin /usr, tendría un sistema aburrido, sólo con programas como cp y ls. /usr contiene
la mayoría de los paquetes grandes de programas y sus ficheros de configuración.

/usr/X11R6

/usr/X11R6 contiene el sistema X Window si lo instala. El sistema X Window es un entorno


gráfico grande y potente, el cual proporciona un gran número de utilidades y programas
gráficos, mostrados en ventanas en su pantalla. Si está familiarizado con los entornos
Microsoft Windows o Macintosh, X Window le será muy familiar. El directorio /usr/X11R6
contiene todos los ejecutables de X Window, ficheros de configuración y de soporte.

/usr/bin

/usr/bin es el almacén real de programas del sistema Linux. Contiene la mayoría de los
programas que no se encuentran en otras partes como /bin.

62 Capítulo 3. El sistema operativo


/usr/etc

Como /etc contiene diferentes ficheros de configuración y programas del sistema,


/usr/etc contiene incluso más que el anterior. En general, los ficheros que se encuentran
en /usr/etc/ no son esenciales para el sistema, a diferencia de los que se encuentran en
/etc, que sí lo son.

/usr/include

/usr/include contiene los ficheros de cabecera para el compilador de C. Estos ficheros (la
mayoría de los cuales terminan en .h, de header) declaran estructuras de datos, subrutinas
y constantes usadas en la escritura de programas en C. Los ficheros que se encuentran en
/usr/include/sys son generalmente usados en la programación de Linux a nivel de siste-
ma. Si está familiarizado con el lenguaje de programación C, aquí encontrará los ficheros
de cabecera como stdio.h, el cual declara funciones como printf().

/usr/g++-include

/usr/g++-include contiene ficheros de cabecera para el compilador de C++ (muy pareci-


do a /usr/include).

/usr/lib

/usr/lib contiene las librerías stub y static equivalentes a las encontradas en /lib. Al
compilar un programa, éste es «enlazado» con las librerías que se encuentran en
/usr/lib, las cuales dirigen al programa a buscar en /lib cuando necesita el código de
la librería.
Además, varios programas guardan ficheros de configuración en /usr/lib.

/usr/local

/usr/local es muy parecido a /usr: contiene programas y ficheros no esenciales para el sis-
tema, pero que hacen el sistema más divertido y excitante. En general, los programas que
se encuentran en /usr/local son específicos de su sistema, esto es, el directorio /usr/local
difiere bastante entre sistemas Linux.
Aquí encontrará programas grandes como TEX (sistema de formateo de documentos)
y Emacs (gran y potente editor), si los instala.

ESware Linux 63
/usr/man

Este directorio contiene las páginas de manual. Hay un directorio para cada sección de las
paginas (use la orden man man para más detalles). Por ejemplo, /usr/man/man1,
/usr/man/man2, etc.

/usr/src

/usr/src contiene el código fuente (programas por compilar) de varios programas de su


sistema. El más importante es /usr/src/Linux, el cual contiene el código fuente del núcleo
de Linux.

/var

/var contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de
estos directorios solían residir en /usr, pero desde que estamos tratando de dejarlo relati-
vamente inalterable, los directorios que cambian a menudo han sido llevados a /var.
Algunos de estos directorios son:

/var/adm

/var/adm contiene varios ficheros de interés para el administrador del sistema, específi-
camente históricos del sistema, los cuales recogen errores o problemas con el sistema.
Otros ficheros guardan las sesiones de presentación en el sistema, así como los intentos
fallidos.

/var/spool

/var/spool contiene ficheros que van a ser pasados a otro programa. Por ejemplo, si su
máquina está conectada a una red, el correo de llegada será almacenado en
/var/spool/Correo hasta que lo lea o lo borre. Artículos nuevos de las noticias tanto
salientes como entrantes, pueden encontrarse en /var/spool/news, etc.

Directorio de trabajo actual

En cualquier momento, las órdenes que teclee al intérprete de comandos son dadas en
términos de su directorio de trabajo actual. Puede pensar en su directorio actual de tra-

64 Capítulo 3. El sistema operativo


bajo como en el directorio en el que actualmente está «situado». Cuando entra en el sis-
tema, su directorio de trabajo se inicializa a su directorio home: /home/Crispin en nues-
tro caso. En cualquier momento que se refiera a un fichero, puede hacerlo en relación a
su directorio de trabajo actual, en lugar de especificar la ruta de acceso completa del
fichero.
Vemos un ejemplo. Crispin tiene el directorio para_imprimir, y para_imprimir contie-
ne el fichero historia-final.
Si Crispin quiere echar un vistazo a ese fichero, puede usar la orden:

[Crispin@Globus /Crispin]$ more /home/Crispin/para_imprimir/historia-final

La orden more simplemente muestra el fichero, pantalla a pantalla. Pero, como el direc-
torio de trabajo actual de Crispin es /home/Crispin, podría haberse referido al fichero de
forma relativa a su directorio de trabajo actual. La orden sería:

[Crispin@Globus /Crispin]$ more para_imprimir/historia-final

Por tanto, si comienza el nombre de un fichero (como para_imprimir/final) con un


carácter distinto a /, el sistema supone que se está refiriendo al fichero con su posición
relativa a su directorio de trabajo. Esto es conocido como ruta de acceso relativa.
Por otra parte, si comienza el nombre del fichero con /, el sistema interpreta esto como
una ruta de acceso completa es decir, la ruta de acceso al fichero completa desde el direc-
torio raíz, /. Esto es conocido como ruta de acceso absoluta.

Refiriéndose al directorio home

Podemos referirnos al directorio home usando el carácter de la tilde (~).


Por ejemplo, la orden:

[Crispin@Globus /Crispin]$ more ~/para_imprimir/historia-final

es equivalente a:

[Crispin@Globus /Crispin]$ more /home/Crispin/para_imprimir/historia-final

El carácter ~ es simplemente sustituido por el intérprete de comandos con el nombre


del directorio home. Además, también puede especificar otros directorios home de usua-
rios con la tilde. La ruta ~Goliat/facturas es traducida por el intérprete de órdenes a
/home/Goliat/facturas (si /home/Goliat es el directorio home de Goliat). El uso de la

ESware Linux 65
tilde es simplemente un atajo; no existe ningún directorio llamado ~: es simplemente una
ayuda sintáctica proporcionada por el intérprete de comandos.

Cosas que podemos hacer… (comandos básicos)

Antes de comenzar es importante destacar que todos los nombres de ficheros y comandos
son case-sensitive (que hacen distinción entre mayúsculas y minúsculas, a diferencia de
otros sistemas operativos). Por ejemplo, el comando make es diferente a Make o MAKE.
Lo mismo ocurre en el caso de nombres de ficheros o directorios.

Moverse por el entorno

Ahora que ya podemos presentarnos al sistema como usuarios y sabemos cómo indi-
car ficheros con su ruta completa, ¿cómo podemos cambiar nuestro directorio de
trabajo?
La orden para movernos por la estructura de directorios es cd, abreviación de «cambio
de directorio». Hay que destacar que la mayoría de las órdenes Linux más usadas son de
dos o tres letras. La forma de uso de la orden cd es:

cd <directorio>

donde <directorio> es el nombre del directorio al que queremos ir.


Como dijimos, al entrar al sistema comenzamos en el directorio home. Si Crispin quie-
re ir al subdirectorio para_imprimir, debería usar la orden:

[Crispin@Globus /Crispin]$ cd para_imprimir


[Crispin@Globus /para_imprimir]$

Como puede ver, la línea de comandos de Crispin cambia para mostrar su directorio
actual de trabajo. Ahora que ya está en el directorio para_imprimir puede echarle un vis-
tazo a su fichero historia-final con el comando:

[Crispin@Globus /para_imprimir]$ more historia-final

Ahora Crispin está en el subdirectorio para_imprimir. Para volver al directorio padre


de éste, usará la orden:

[Crispin@Globus /para_imprimir]$ cd..


[Crispin@Globus /Crispin]$

66 Capítulo 3. El sistema operativo


(Dese cuenta del espacio entre cd y ..). Cada directorio tiene una entrada de nombre
«..», la cual se refiere al directorio padre.
De igual forma, existe en cada directorio la entrada «.», la cual se refiere a sí mismo. Así
que el comando siguiente nos deja donde estamos:

[Crispin@Globus /para_imprimir]$ cd.


[Crispin@Globus /Crispin]$

¿Entonces, para qué sirve? Enseguida lo veremos, un poco de paciencia.


También pueden usarse nombres con la ruta de acceso absoluta en la orden cd. Para ir
al directorio de Goliat con cd, introduciremos la siguiente orden:

[Crispin@Globus /para_imprimir]$ cd /home/Goliat


[Crispin@Globus /Goliat]$

También, el uso de cd sin argumentos nos llevará a nuestro directorio de origen.

[Crispin@Globus /Goliat]$ cd
[Crispin@Globus /Crispin]$

Consultar el contenido de los directorios

Ahora que ya sabe cómo moverse por los directorios, probablemente pensará: ¿Y bien? El
simple movimiento por el árbol de directorios es poco útil; necesitamos un nuevo coman-
do, ls. ls muestra por el terminal la lista de ficheros y directorios; por defecto, los del direc-
torio activo. Por ejemplo:

[Crispin@Globus /Crispin]$ ls
Correo
facturas
para_imprimir
[Crispin@Globus /Crispin]$

Aquí podemos ver que Crispin tiene tres entradas en su directorio actual:
Correo, facturas y para_imprimir.
Esto no nos dice demasiado; ¿son ficheros o directorios?
Podemos usar la opción -F de la orden ls para obtener más información.

[Crispin@Globus /Crispin]$ ls -F
Correo/

ESware Linux 67
facturas/
para_imprimir/
[Crispin@Globus /Crispin]$

Por el carácter / añadido a cada nombre sabemos que las tres entradas son subdirecto-
rios.
La orden ls -F puede también añadir al final un asterisco; esto indica que es un fichero
ejecutable. Si ls -F no añade nada, entonces es un fichero normal, es decir, no es ni un direc-
torio ni un ejecutable.
Por lo general, cada orden Linux puede tomar una serie de opciones definidas en forma
de argumentos. Éstos usualmente comienzan con el carácter «-», como vimos antes con
ls -F. La opción -F le dice a ls que dé más información sobre el tipo de ficheros, en este caso
añadiendo un carácter / detrás de cada nombre de directorio.
Si a ls le pasamos un nombre de directorio, mostrará el contenido de ese directorio.

[Crispin@Globus /Crispin]$ ls -F para_imprimir


capítulo-1
historia-final
tesis
notas/
[Crispin@Globus /Crispin]$

Para ver un listado más interesante, veamos el contenido del directorio del sistema
/etc.

[Crispin@Globus /Crispin]$ ls /bin

Vayamos al directorio raíz con cd.. y desde allí vayamos al directorio /usr/bin.

[Crispin@Globus /Crispin]$ cd..


[Crispin@Globus /home$ cd..
[Crispin@Globus /$ cd usr
[Crispin@Globus /usr$ cd bin
[Crispin@Globus /usr/bin$

También podemos movernos dentro de directorios en múltiples pasos, como en cd


/usr/bin.
Trate de moverse por varios directorios usando ls y cd. En algunos casos podrá encon-
trarse el desagradable mensaje de error Permission denied. Esto simplemente es debido a
cuestiones de seguridad de Linux. Para poder moverse o listar un directorio debe de tener
permisos para poder hacerlo. Hablaremos sobre ello más adelante.

68 Capítulo 3. El sistema operativo


Crear directorios nuevos

Es el momento de aprender a crear directorios. Para ello se usa la orden mkdir. Pruebe lo
siguiente:

[Crispin@Globus /Crispin]$ mkdir cursos


[Crispin@Globus /Crispin]$ ls -F
Correo/
cursos/
facturas/
para_imprimir/
[Crispin@Globus /Crispin]$ cd cursos
[Crispin@Globus /cursos]$ ls
[Crispin@Globus /cursos]$

Enhorabuena! Acaba de crear un directorio nuevo y moverse a el. Como no hay ningún
fichero en el directorio nuevo, veamos como copiar ficheros desde un lugar a otro.

Copiar ficheros

La copia de ficheros es efectuada por la orden cp:

[Crispin@Globus /cursos]$ cp /etc/termcap.


[Crispin@Globus /cursos]$ cp /etc/shells.
[Crispin@Globus /cursos]$ ls -F
shells termcap
[Crispin@Globus /cursos]$ cp shells bells
[Crispin@Globus /cursos]$ ls -F
bells shells termcap
[Crispin@Globus /cursos]$

La orden cp copia los ficheros listados en la linea de comandos al fichero o directorio


pasado como ultimo argumento. Nótese como se usa el directorio «.» para referirnos al
directorio actual.

Mover ficheros

La orden mv mueve ficheros en lugar de copiarlos. La sintaxis es muy sencilla.

[Crispin@Globus /cursos]$ mv termcap sells


[Crispin@Globus /cursos]$ ls -F

ESware Linux 69
bells sells shells
[Crispin@Globus /cursos]$

Nótese como termcap ya no existe, en su lugar esta el fichero sells.


Esta orden puede usarse para renombrar ficheros, como acabamos de hacer, pero tam-
bién para mover ficheros a directorios diferentes.

Nota: mv y cp sobreescribirán los ficheros destino (si ya existen) sin consultar. Sea cui-
dadoso cuando mueva un fichero a otro directorio: puede haber ya un fichero con el
mismo nombre que será sobrescrito.

Borrar ficheros y directorios

Para borrar un fichero, use la orden rm (rm viene de remove).

[Crispin@Globus /cursos]$ rm bells sells


[Crispin@Globus /cursos]$ ls -F
shells
[Crispin@Globus /cursos]$

Nos hemos quedado solo con el fichero shells, pero no nos quejaremos. Nótese que rm
por defecto no preguntara antes de borrar un fichero luego, sea cuidadoso.
Una orden relacionada con rm es rmdir. Esta orden borra un directorio, pero solo si
esta vacío. Si el directorio contiene ficheros o subdirectorios, rmdir se quejara. Esto es
una forma de evitar borrar accientalmente el contenido de los directorios y subdirecto-
rios.

Mirar el contenido de los ficheros

Las ordenes more y cat son usadas para ver el contenido de ficheros. More muestra el
fichero pantalla a pantalla mientras que cat lo muestra entero de una vez.
Para ver el contenido del fichero shells podemos usar la orden

[Crispin@Globus /cursos]$ more shells

Por si esta interesado en el contenido de shells, es una lista de interpretes de comandos


validos disponibles en el sistema. En la mayoría de los sistemas incluye /bin/sh,
/bin/bash y /bin/csh.
Hablaremos sobre los diferentes interpretes de comandos mas adelante.

70 Capítulo 3. El sistema operativo


Durante la ejecución de more pulse <Space> para avanzar a la pagina siguiente y <b>
para_volver a la pagina anterior. Hay otros comandos disponibles, los citados son solo los
mas básicos. <q> finalizara la ejecución de more.
Salga de more y pruebe cat /etc/termcap. El texto probablemente pasara demasiado
rápido como para poder leerlo. El nombre cat viene de concatenate, que es para lo que
realmente sirve el programa. La orden cat puede ser usada para concatenar el contenido
de varios ficheros y guardar el resultado en otro fichero. Esto se discutirá mas adelante.

¡Ayuda!

Linux proporciona una utilidad conocida como «paginas de manual». Estas paginas con-
tienen documentación en linea para todas las ordenes del sistema, recursos, ficheros de
configuración, etc.
La orden usada para acceder a las paginas de manual es man. Por ejemplo, si esta inte-
resado en conocer otras opciones de la orden ls, puede escribir:

[Crispin@Globus /Crispin]$ man ls

y le será mostrada la pagina de manual para ls.


Desafortunadamente la mayoría de las paginas de manual han sido escritas por gente
que ya conocía lo que la orden o recurso hacia, por esto, las paginas de manual usualmente
solo contienen detalles técnicos de la orden sin ningún tipo de tutoríal de uso. Pese a esto,
estas paginas son una gran fuente de información que permiten refrescar la memoria si
olvidamos la sintaxis de un comando. Igualmente, estas paginas le darán mucha informa-
ción sobre órdenes que no trataremos en este libro.
Le sugiero que pruebe man con los comandos que ya hemos tratado y con los que vaya-
mos introduciendo. Notara que alguno de los comandos no tiene pagina de manual. Esto
puede ser debido a diferentes motivos. En primer lugar, las paginas no han sido escritas
aun (el Proyecto de Documentación de Linux es también el responsable de las paginas de
manual). En segundo lugar, la orden puede ser interna del interprete de comandos, o un
alias, en cuyo caso no tendrán una pagina propia.
Un ejemplo es la orden cd la cual es interna del interprete de comandos. El propio inter-
prete de comandos es quien procesa cd no hay un programa que se llame cd.

Sumario de Ordenes Básicas

Esta sección introduce algunas de las ordenes básicas mas útiles de un sistema Linux,
incluidas las ya cubiertas en las secciones anteriores.
Recuerde que las opciones usualmente comienzan con «-» y en la mayoría de los casos
se pueden añadir múltiples opciones de una letra con un único «-». Por ejemplo, en lugar
de usar ls -l -F es posible usar ls -lF.

ESware Linux 71
En lugar de listar todas las opciones disponibles para cada uno de los comandos solo habla-
remos de aquellas mas útiles o importantes. De hecho, la mayoría de las ordenes tienen un
gran numero de opciones (muchas de las cuales nunca usará). Puede utilizar man para ver las
paginas de manual de cada orden, la cual mostrara la lista completa de opciones disponibles.
Nótese también, que la mayoría de las ordenes toman una lista de ficheros o directorios
como argumentos, denotados como «<fichero1>… <ficheroN>».
Por ejemplo, la orden cp toma como argumentos la lista de ficheros a copiar, seguidos
del fichero o directorio destino. Cuando se copia mas de un fichero, el destino debe de ser
un directorio.

cd Cambia el directorio de trabajo actual.


Sintaxis: cd <directorio>
<directorio> es el directorio al que cambiamos. («.» se refiere al
directorio actual, «..» al directorio padre.)
Ejemplo: cd../cursos pone../cursos como directorio actual.

ls Muestra información sobre los ficheros o directorios indicados.


Sintaxis: ls <fichero1> <fichero2>…<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros o directorios a listar.

Opciones: Hay mas opciones de las que podría suponer. Las mas usadas comúnmente
son: -F (usada para mostrar información sobre el tipo de fichero), y -l (da un listado «largo»
incluyendo tamaño, propietario, permisos, etc. Trataremos esto en detalle mas adelante.)
Ejemplo: ls -lF /home/Crispin mostrara el contenido del directorio
/home/Crispin.

cp Copia fichero(s) en otro fichero o directorio.


Sintaxis: cp <fichero1> <fichero2>…<ficheroN> <destino>
Donde <fichero1> a <ficheroN> son los ficheros a copiar, y <destino> es el fichero o
directorio destino.
Ejemplo: cp../precios presupuestos copia el fichero../precios al fichero o directorio pre-
supuestos.

mv Mueve fichero(s) a otro fichero o directorio.


Es equivalente a una copia seguida del borrado del original. Puede ser usado para
renombrar ficheros.
Sintaxis: mv <fichero1> <fichero2>…<ficheroN> <destino>
Donde <fichero1> a <ficheroN> son los ficheros a «mover» y <destino> es el fichero o
directorio destino.
Ejemplo: mv../precios presupuestos mueve el fichero../precios al fichero o directorio
presupuestos.

72 Capítulo 3. El sistema operativo


rm Borra ficheros.
Sintaxis: rm <fichero1> <fichero2>…<ficheroN>
Donde <fichero1> a <ficheroN> son los nombres de los ficheros a borrar.
Opciones: -i pedirá confirmación antes de borrar un fichero. Ejemplo:
rm -i /home/Crispin/presupuestos /home/Crispin/precios borra los ficheros presu-
puestos y precios en /home/Crispin.

mkdir Crea directorios nuevos.


Sintaxis: mkdir <dir1> <dir2>…<dirN>
Donde <dir1> a <dirN> son los directorios a crear.
Ejemplo: mkdir /home/Crispin/test crea el directorio test colgando de
/home/Crispin.

rmdir Borra directorios (vacíos).


Al usar rmdir, el directorio de trabajo actual no debe de estar dentro del directorio a borrar.
Sintaxis: rmdir <dir1> <dir2>…<dirN>
Donde <dir1> a <dirN> son los directorios a borrar.
Ejemplo: rmdir /home/Crispin/para_imprimir borra el directorio
/home/Crispin/para_imprimir si esta vacío.

man Muestra la pagina de manual del comando o recurso (cualquier utilidad del siste-
ma que no es un comando, como funciones de librería) dado.
Sintaxis: man <command>
Donde <command> es el nombre del comando o recurso sobre el que queremos obte-
ner la ayuda
Ejemplo: man ls muestra ayuda sobre la orden ls.
Opciones: -a mostrará todas las páginas del manual relacionadas con ese comando.

more Muestra el contenido de los ficheros indicados, (una pantalla


cada vez).
Sintaxis: more <fichero1> <fichero2>…<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: more para_imprimir/historia-final muestra por el terminal el contenido del
fichero para_imprimir/historia-final.

cat Concatena ficheros, cat también es usado para mostrar el contenido completo de un
fichero.
Sintaxis: cat <fichero1> <fichero2>…<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: cat facturas_de_HFL muestra por el terminal el contenido del fichero factu-
ras_de_HFL.

ESware Linux 73
echo Envía al terminal los argumentos pasados.
Sintaxis: echo <arg1> <arg2>…<argN>
Donde <arg1> a <argN> son los argumentos a mostrar.
Ejemplo: echo “Hola mundo” muestra la cadena «Hola mundo».

grep Muestra todas las líneas de un fichero que coinciden con un patrón.
Sintaxis: grep <patrón> <fichero1> <fichero2>…<ficheroN>
Donde <patrón> es una expresión regular y <fichero1> a <ficheroN> son
los ficheros donde buscar.
Ejemplo: grep globus /etc/hosts mostrara todas las líneas en el fichero
/etc/hosts que contienen la cadena globus

74 Capítulo 3. El sistema operativo


Capítulo 4. Conceptos Avanzados

Más sobre el intérprete de comandos

Como hemos mencionado anteriormente, Linux es un sistema operativo multitarea y mul-


tiusuario. La multitarea es muy útil, y una vez la haya probado, la usara continuamente.
En poco tiempo podrá ejecutar programas «de fondo», conmutar entre múltiples tareas y
canalizar programas unos entre otros para conseguir resultados complejos con un único
comando.
Muchas de las características que trataremos en esta sección son proporcionadas por el
interprete de comandos. Hay que tener cuidado en no confundir Linux (el sistema opera-
tivo) con el interprete de comandos este ultimo, es un interface con el sistema que hay
debajo. El interprete de comandos proporciona la funcionalidad sobre el Linux.
El interprete de comandos no es solo un interprete interactivo de los comandos que
tecleamos, es también un potente lenguaje de programación, el cual permite escribir guio-
nes, que permiten juntar varias ordenes en un fichero. El uso de los guiones del interprete
de comandos es una herramienta muy potente que le permitirá automatizar e incrementar
el uso de Linux.
Hay varios tipos de interpretes de comandos en el mundo Unix. Los dos más impor-
tantes son el «Bourne shell» y el «C shell». El interprete de comandos Bourne, usa una sin-
taxis de comandos como la usada en los primeros sistemas Linux, como el System III. El
nombre del interprete Bourne en la mayoría de los Unix es /bin/sh (donde sh viene de
shell, interprete de comandos en ingles). El interprete C usa una sintaxis diferente, a veces
parecida a la del lenguaje de programación C, y en la mayoría de los sistemas Unix se
encuentra como /bin/csh.
Bajo Linux hay algunas diferencias en los interpretes de comandos disponibles. Dos de
los más usados son el «Bourne Again Shell» o Bash (/bin/bash) y Tcsh (/bin/tcsh). Bash
es un equivalente al Bourne con muchas características avanzadas de la C shell. Como
Bash es un super-conjunto de la sintaxis del Bourne, cualquier guión escrito para el inter-
prete de comandos Bourne estandard funcionara en Bash. Para los que prefieren el uso
del interprete de comandos C, Linux tiene el Tcsh, que es una versión extendida del C ori-
ginal.

ESware Linux 75
El tipo de interprete de comandos que decida usar es puramente una cuestión de gus-
tos. Algunas personas prefieren la sintaxis del Bourne con las características avanzadas
que proporciona Bash, y otros prefieren el más estructurado interprete de comandos C. En
lo que respecta a los comandos usuales como cp, ls, etc, es indiferente el tipo de interpre-
te de comandos usado, la sintaxis es la misma. Solo, cuando se escriben guiones para el
interprete de comandos, o se usan características avanzadas aparecen las diferencias entre
los diferentes interpretes de comandos.
Para cada usuario se inicia una copia del shell en cada sesión. Dos consolas virtuales sig-
nifican dos copias del shell independientes entre sí, aunque sean del mismo usuario. Además
para cada orden que se ejecute el shell genera un sub-shell que «muere» al finalizar la ejecu-
ción de la orden. También se pueden lanzar nuevos shells (o sub-shells) dentro de una shell con
la orden sh (o con el nombre de la shell en cuestión que queramos lanzar).

Funciones avanzadas del interprete de comandos

Metacaracteres

Una característica importante de la mayoría de los interpretes de comandos en Linux es la


capacidad para referirse a más de un fichero usando caracteres especiales. Estos, llamados
comodines, le permiten referirse a, por ejemplo, grupos de ficheros que tienen algún tipo
de coincidencia.

El comodín * hace referencia cualquier carácter o cadena de caracteres.


Por ejemplo, cuando usa el carácter * en el nombre de un fichero, el interprete de
comandos lo sustituye por todas las combinaciones posibles provenientes de los ficheros
en el directorio al cual nos estamos refiriendo.
Veamos un ejemplo rápido. Supongamos que Crispin tiene los ficheros precios, presu-
puestos y notas en el directorio actual.

[Crispin@Globus /Crispin]$ ls
precios presupuestos notas
[Crispin@Globus /Crispin]$

Para acceder a todos los ficheros con la letra «o» en su nombre, hemos de usar la orden

[Crispin@Globus /Crispin]$ ls *o*


precios presupuestos
[Crispin@Globus /Crispin]$

76 Capítulo 4. Conceptos Avanzados


Como puede ver, el comodín * ha sido sustituido con todas las combinaciones posibles
que coincidían de entre los ficheros del directorio actual.
El uso de * solo, simplemente se refiere a todos los ficheros, puesto que todos los carac-
teres coinciden con el comodín.

[Crispin@Globus /Crispin]$ ls *
precios presupuestos notas
[Crispin@Globus /Crispin]$

Veamos unos pocos ejemplos más.

[Crispin@Globus /Crispin]$ ls n*
notas
[Crispin@Globus /Crispin]$ ls *os
precios presupuestos
[Crispin@Globus /Crispin]$ ls *t*
presupuestos notas
[Crispin@Globus /Crispin]$ ls n*s
notas
[Crispin@Globus /Crispin]$

El proceso de la sustitución de * en nombres de ficheros es llamado expansión de


comodines y es efectuado por el interprete de comandos. Esto es importante: las
ordenes individuales, como ls, nunca ven el * en su lista de parámetros. Es el inter-
prete quien expande los comodines para incluir todos los nombres de ficheros que se
adaptan.
Luego la orden:

[Crispin@Globus /Crispin]$ ls *t*

es expandida para obtener

[Crispin@Globus /Crispin]$ ls notas presupuestos

Otra nota importante acerca del carácter comodín *. El uso de este comodín NO cua-
drara con nombres de ficheros que comiencen con un punto («.»). Estos ficheros son trata-
dos como «ocultos» aunque no están realmente ocultos, simplemente no son mostrados en
un listado normal de ls y no son afectados por el uso del comodín *.
He aquí un ejemplo. Ya hemos mencionado que cada directorio tiene dos entradas
especiales: . que hace referencia al directorio actual y .. que se refiere al directorio padre.
De cualquier forma, cuando use ls esas dos entradas no se mostraran.

ESware Linux 77
[Crispin@Globus /Crispin]$ ls
precios presupuestos notas
[Crispin@Globus /Crispin]$

Si usa el parámetro -a con ls podrá ver nombres de ficheros que comienzan por «.».
Observe:

[Crispin@Globus /Crispin]$ ls -a
. .. .bash_profile .bashrc precios presupuestos notas
[Crispin@Globus /Crispin]$

Ahora podemos ver las dos entradas especiales, «.» y «..», así como otros dos ficheros
«ocultos». bash_profile y.bashrc. Estos dos ficheros son usados en el arranque por bash
cuando Crispin se presenta al sistema.
Note que cuando usamos el comodín *, no se muestra ninguno de los nombres de fiche-
ro que comienzan por «.».

[Crispin@Globus /Crispin]$ ls *
precios presupuestos notas
[Crispin@Globus /Crispin]$

Esto es una característica de seguridad: si «*» coincidiera con ficheros que comienzan
por «.» actuaría sobre «.» y «..». Esto puede ser peligroso con ciertas ordenes, (como por
ejemplo: rm *).

Otro carácter comodín es ?. Este carácter comodín solo expande un único carácter. Luego
«ls ?» mostrara todos los nombres de ficheros con un carácter de longitud, y «ls termca?»
mostrara «termcap» pero no «termcap.backup». Aquí tenemos otro ejemplo:

[Crispin@Globus /Crispin]$ ls ?resupuestos


presupuestos
[Crispin@Globus /Crispin]$ ls p??cios
precios
[Crispin@Globus /Crispin]$ ls ????as
notas
[Crispin@Globus /Crispin]$

Como puede ver, los caracteres comodín le permiten referirse a más de un fichero a la
vez. En el resumen de ordenes dijimos que cp y mv pueden copiar o mover múltiples
ficheros de una vez. Por ejemplo,

78 Capítulo 4. Conceptos Avanzados


[Crispin@Globus /Crispin]$ cp /etc/s* /home/Crispin

copiara todos los ficheros de /etc que comiencen por «s» al directorio /home/Crispin.
Por lo tanto, el formato de la orden cp es realmente

cp <fichero1> <fichero2> <fichero3>...<ficheroN> <destino>

donde <fichero1> a <ficheroN> es la lista de los ficheros a copiar, y <destino> es el


fichero o directorio destino donde copiarlos. mv tiene idéntica sintaxis.
Nótese que si esta copiando o moviendo más de un fichero, <destino> debe ser un
directorio. Solo puede copiar o mover un único fichero a otro fichero.

[..]

Sustituye cualquier valor incluido entre los corchetes. Supongamos que en el directorio
actual hay varios archivos que se llaman “nota” y Crispin los numera para distinguirlos.
Ahora para realizar operaciones con grupos de ellos escribiría:

[Crispin@Globus /Crispin]$ls nota[123]


nota1 nota2 nota3
[Crispin@Globus /Crispin]$

en este caso nota[123] Representa: nota1, nota2, nota3. ¿Potente, verdad? Otro ejemplo:

[Crispin@Globus /Crispin]$ls not[ae]3


nota3 note3
[Crispin@Globus /Crispin]$

Aquí not[ae]3 representa: nota3 y note3


Además admite rangos especificando los extremos separados por un guión.

[Crispin@Globus /Crispin]$ls nota[1-5]


nota1 nota2 nota3 nota4 nota5
[Crispin@Globus /Crispin]$

Ahora nota[1-5] representa a nota1, nota2, nota3, nota4, nota5.

La secuencia [A-z] representa todos los caracteres comprendidos entre A mayúscula y


z minúscula. Ello incluye signos de puntuación, asteriscos, etc. Hay que tener en cuenta
que utiliza el orden lexicográfico de la tabla ASCII de manera que no es igual nota[0-A]
que nota[A-0].

ESware Linux 79
Tambien es muy importante saber que los extremos del rango deben ser un solo carácter.
La expresión [10-25] sólo incluye 1, 5 y los caracteres comprendidos entre O y 2, es
decir: O, 1, 2, 5.
El uso del signo ! tras el corchete de apertura significa inversión en la selección.
Veamos:

[Crispin@Globus /Crispin]$ls nota[!345]


nota1 nota2 nota6 note7
[Crispin@Globus /Crispin]$

lo que hace nota[!345] es agrupar todos los ficheros de nombres constituidos por nota
y otro carácter distinto de 3, 4 o 5.

Agrupamiento de órdenes

Más potencia para tu Linux: podemos pedirle al interprete de comandos que lance la eje-
cución de varias órdenes consecutivamente. Observa:

orden1;orden2:orden3 Esto provoca la ejecución sucesiva e independiente de las órde-


nes indicadas.

por ejemplo:

[Crispin@Globus /Crispin]$date;cal;who

emite una salida así:

mié jun 21 10:57:55 CEST 2000


junio 2000
do lu ma mi ju vi 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

root tty1 Jun 21 09:10


[Crispin@Globus /Crispin]$

El shell ha ejecutado las tres órdenes y cuando acaba nos devuelve el prompt.

80 Capítulo 4. Conceptos Avanzados


(orden1;orden2;orden3) Tiene el mismo efecto que el caso anterior pero para ciertas
actuaciones, todo lo que esté entre paréntesis se considera como un conjunto.

[Crispin@Globus /Crispin]$(date;cal;who) > archivo1


[Crispin@Globus /Crispin]$

(date;cal;who) > archivo1, re direcciona la salida de las tres ordenes a archivo1 en lugar
de a la salida estándar.

[Crispin@Globus /Crispin]$(date;cal;who) &


[Crispin@Globus /Crispin]$

(date;cal;who) & ejecuta las tres órdenes en segundo plano liberando el terminal para
otras tareas.
{orden1;orden2;orden3} Ejecuta las tres órdenes en el shell actual sin generar otros nue-
vos. Los cambios en el entorno permanecen.

Funciones «and» y «or»

Otra característica avanzada del interprete de comandos es lanzar la ejecución de una


orden en función de lo que suceda con otra.

Función «and»:

orden1 && orden2 Solo ejecuta la orden2 si la ejecución de orden1 ha tenido éxito.

[Crispin@Globus /Crispin]$ls /etc/printcap && cat /etc/printcap

Si la orden1 falla por algún motivo, la orden2 no se llega a ejecutar.


En el ejemplo, ls mira en /etc el fichero llamado printcap, sí ls da una respuesta correc-
ta, osea sí el fichero está ahí, la siguiente orden, cat, abrirá el fichero y lo mostrará en pan-
talla.

Función «or»:

orden1 || orden2 Ejecuta la orden2 solo si la ejecución de orden1 no ha tenido éxito.

[Crispin@Globus /Crispin]$ ls /etc/printcap || cp /etc/printcap_backup/etc/printcap

ESware Linux 81
En este caso, si la orden1 funciona, osea si el fichero que busca ls está en /etc, la ejecu-
ción se detiene ahí. En caso contrario la orden2 se ejecuta: se copiará un fichero de copia
de seguridad, printcap_backup, como printcap en /etc.

Eliminación de significados especiales

Ya hemos visto que existen caracteres, como *, &, $, etc, que tienen una interpretación espe-
cial para el interprete de comandos. Si se quiere evitar esta interpretación y utilizarlos
como caracteres ordinarios, se deben emplear los siguientes métodos:

• \ Barra inclinada invertida. Inhibe la interpretación del carácter siguiente (sólo uno).
• ’..’ Comillas simples. Impide que el shell interprete todo lo incluido entre las comillas.
• “..” Comillas dobles. Evita la interpretación de los caracteres incluidos salvo $,\,,’
(comillas simples y dobles).
• ‘..’ Acentos graves. Provoca la ejecución de la orden incluida.

Entrada y salida estandard

Muchos comandos Linux toman su entrada de algo conocido como entrada estándar y
envían su salida a la salida estándar (a menudo abreviado como stdin y stdout). El inter-
prete de comandos configura el sistema de forma que la entrada estándar es el teclado y la
salida la pantalla.
Veamos un ejemplo con el comando cat. Normalmente cat lee datos de los ficheros
cuyos nombres se pasan como argumentos en la linea de comandos y envía estos datos
directamente a la salida estándar. Luego, usando el comando

[Crispin@Globus /para_imprimir]$ cat historia-final tesis

mostrara por pantalla el contenido del fichero historia-final seguido por tesis.

Si no se le pasan nombres de ficheros a cat como parámetros, leerá datos de stdin y los
enviara a stdout. Veamos un ejemplo.

[Crispin@Globus /para_imprimir]$ cat


Hola caracol.
Hola caracol.
Adiós.
Adiós.
<ctrl-D>
[Crispin@Globus /para_imprimir]$

82 Capítulo 4. Conceptos Avanzados


Como se puede ver, cada linea que el usuario teclea, es inmediatamente reenviada al moni-
tor por cat (impresa en itálica.) Cuando se esta leyendo de la entrada estándar, los comandos
reconocen el fin de la entrada de datos cuando reciben el carácter EOT (end-of-text, fin de texto).
Normalmente es generado con la combinación <ctrl-D>.
Veamos otro ejemplo. El comando sort toma como entrada líneas de texto (de nuevo
leerá desde stdin si no se le proporcionan nombres de ficheros en la linea de comandos), y
devuelve la salida ordenada a stdout.
Pruebe lo siguiente:

[Crispin@Globus /para_imprimir]$ sort


berenjenas
castañas
aceitunas
<ctrl-D>
aceitunas
berenjenas
castañas
[Crispin@Globus /para_imprimir]$

Podemos ordenar alfabéticamente la lista de la compra.

Redireccionando la entrada y salida

Ahora, supongamos que queremos que la salida de sort vaya a un fichero para poder sal-
var la lista ordenada de salida. El interprete de comandos nos permite redireccionar la sali-
da estándar a un fichero usando el símbolo >. Veamos como funciona.

[Crispin@Globus /para_imprimir]$ sort > lista-compra


berenjenas
castañas
aceitunas

<ctrl-D>
[Crispin@Globus /para_imprimir]$

Como puede ver, el resultado de sort no se muestra por pantalla, en su lugar es salva-
do en el fichero lista-compra. Echemos un vistazo al fichero.

[Crispin@Globus /para_imprimir]$ cat lista-compra


aceitunas

ESware Linux 83
berenjenas
castañas
[Crispin@Globus /para_imprimir]$

Ya podemos ordenar la lista de la compra y además guardarla.


Supongamos ahora que teníamos guardada nuestra lista de compra desordenada ori-
ginal en el fichero cosas. Una forma de ordenar la informacióny salvarla en un fichero
podría ser darle a sort el nombre del fichero a leer en lugar de la entrada estándar y redi-
reccionar la salida estándar como hicimos arriba.

[Crispin@Globus /para_imprimir]$ sort cosas > lista-compra


[Crispin@Globus /para_imprimir]$ cat lista-compra
aceitunas
berenjenas
castañas
[Crispin@Globus /para_imprimir]$

Hay otra forma de hacer esto. No solo puede ser re-direccionada la salida estándar,
también puede ser re-direccionada la entrada estándar usando el símbolo <.

[Crispin@Globus /para_imprimir]$ sort < cosas


aceitunas
berenjenas
castañas
[Crispin@Globus /para_imprimir]$

Técnicamente, sort < cosas es equivalente a sort cosas, pero nos permite demostrar que
sort < cosas se comporta como si los datos del fichero fueran tecleados por la entrada
estándar. El interprete de comandos es quien maneja las re-direcciones. sort no recibe el
nombre del fichero (cosas) a leer, desde el punto de vista de sort, esta leyendo datos de la
entrada estándar como si fueran tecleados desde el teclado.
Esto introduce el concepto de filtro. Un filtro es un programa que lee datos de la entra-
da estándar, los procesa de alguna forma, y devuelve los datos procesados por la salida
estándar. Usando la redirección la entrada estándar y/o salida estándar pueden ser refe-
renciadas desde ficheros. sort es un filtro simple: ordena los datos de entrada y envía el
resultado a la salida estándar. cat es incluso más simple, no hace nada con los datos de
entrada, simplemente envía a la salida cualquier cosa que le llega.

84 Capítulo 4. Conceptos Avanzados


Redirección no destructiva

Es necesario saber que el uso de > para redireccionar la salida a un fichero que ya exista,
es destructivo: en otras palabras, el comando

[Crispin@Globus /para_imprimir]$ ls > lista_de_archivos

sobreescribe el contenido del fichero lista_de_archivos. Si en su lugar, usamos el


símbolo «>>», la salida será añadida al final del fichero nombrado, en lugar de ser
sobrescrito.

[Crispin@Globus /para_imprimir]$ ls >> lista_de_archivos

añadirá la salida de ls al final de lista_de_archivos.

Uso de tuberías (pipes)

Demos un paso más adelante, hemos visto como usar sort como un filtro. Pero estos ejem-
plos suponen que tenemos los datos en un fichero en alguna parte o vamos a introducir
los datos manualmente por la entrada estándar.
¿Que pasa si los datos que queremos ordenar provienen de la salida de otro comando,
como ls? Por ejemplo, usando la opción -r con sort ordenaremos los datos en orden inverso. Si
queremos listar los ficheros en el directorio actual en orden inverso, una forma podría ser.

[Crispin@Globus /para_imprimir]$ ls
capítulo-1
historia-final
tesis
notas
[Crispin@Globus /para_imprimir]$ ls > lista_de_archivos
[Crispin@Globus /para_imprimir]$ sort -r lista_de_archivos
notas
tesis
historia-final
capítulo-1
[Crispin@Globus /para_imprimir]$

Aquí, salvamos la salida de ls en un fichero, y entonces ejecutamos sort -r sobre ese


fichero. Pero esta forma necesita crear un fichero temporal en el que salvar los datos gene-
rados por ls.

ESware Linux 85
La solución es usar las pipes. El uso de pipes es otra característica del interprete de coman-
dos, que nos permite conectar una cadena de comandos en una pipe, donde la stdout del pri-
mero es enviada directamente a la stdin del segundo y así sucesivamente. Queremos conec-
tar la salida de ls con la entrada de sort. Para crear un pipe se usa el símbolo l:

[Crispin@Globus /para_imprimir]$ ls | sort -r


notas
tesis
historia-final
capítulo-1
[Crispin@Globus /para_imprimir]$

Esta forma es más corta y obviamente más fácil de escribir.


Otro ejemplo útil usando el comando

[Crispin@Globus /para_imprimir]$ ls /usr/bin

mostrara una lista larga de los ficheros, la mayoría de los cuales pasara rápidamente
ante nuestros ojos sin que podamos leerla. En lugar de esto, usemos more para mostrar la
lista de ficheros en /usr/bin.

[Crispin@Globus /para_imprimir]$ ls /usr/bin | more

Ahora podemos ir avanzando pagina a pagina cómodamente.


Pero el asunto no termina aquí!. Podemos «entubar» más de dos comandos a la vez. El
comando head es un filtro que muestra la primeras líneas del canal de entrada (aquí la
entrada desde una pipe). Si queremos ver el ultimo fichero del directorio actual en orden
alfabético, usaremos:

[Crispin@Globus /para_imprimir]$ ls | sort -r | head -1


notas
[Crispin@Globus /para_imprimir]$

Donde head -1 simplemente muestra la primera linea de la entrada que recibe en este
caso, el flujo de datos ordenados inversamente provenientes de ls.

86 Capítulo 4. Conceptos Avanzados


Control de Tareas

Tareas y procesos

Control de Tareas es una utilidad incluida en muchos shells (incluidas Bash y Tcsh), que
permite el control de multitud de comandos o tareas al momento. Antes de seguir, debe-
remos hablar un poco sobre los procesos.
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como proceso,
que es simplemente el nombre que se le da a un programa cuando se esta ejecutando.
El comando ps visualiza la lista de procesos que se están ejecutando actualmente, por
ejemplo:

[Crispin@Globus /Crispin]$ ps

PID TTY STAT TIME COMMAND


24 3 S 0:03 (bash)
161 3 R 0:00 ps

[Crispin@Globus /Crispin]$

La columna PID representa el identificador de proceso. La ultima columna COM-


MAND, es el nombre del proceso que se esta ejecutando. Ahora soloestamos viendo los
procesos que esta ejecutando Crispin. Vemos que hay dos procesos, bash (que es el shell o
interprete de comandos que usa Crispin), y el propio comando ps. Como puede observar,
bash se ejecuta concurrentemente con el comando ps. bash ejecuta ps cuando Crispin
tecleo el comando. Cuando ps termina de ejecutarse (después de mostrar la tabla de pro-
cesos), el control retorna al proceso bash, que muestra el prompt, indicando que esta listo
para recibir otro comando.
Un proceso que esta corriendo se denomina tarea para el shell. Los términos proceso y
tarea, son intercambiables. Sin embargo, se suele denominar «tarea» a un proceso, cuando
es usado en conjunción con control de tareas, que es un rasgo del shell que permite cam-
biar entre distintas tareas.
En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el ultimo
comando que ellos teclearon desde el shell. Sin embargo, usando el control de tareas, usted
podrá ejecutar diferentes tareas al mismo tiempo, cambiando entre cada uno de ellos con-
forme lo necesite.
¿Cuan beneficioso puede llegar a ser esto?. Supongamos que esta usted con su proce-
sador de textos, y de repente necesita parar y realizar otra tarea, con el control de tareas,
usted podrá suspender temporalmente el editor, y volver al shell para realizar cualquier

ESware Linux 87
otra tarea, y luego regresar al editor como si no lo hubiese dejado nunca. Lo siguiente solo
es un ejemplo, hay montones de usos prácticos del control de tareas.

Primer plano y Segundo plano

Un proceso puede estar en Primer plano o en Segundo plano. Solo puede haber un proceso
en primer plano al mismo tiempo, el proceso que esta en primer plano, es el que interactúa
con usted recibe entradas de teclado, y envía las salidas al monitor. (Salvo, por supuesto, que
haya re-dirigido la entrada o la salida). El proceso en segundo plano, no recibe ninguna
señal desde el teclado por lo general, se ejecutan en silencio sin necesidad de interacción.
Algunos programas necesitan mucho tiempo para terminar, y no hacen nada intere-
sante mientras tanto. Compilar programas es una de estas tareas, así como comprimir un
fichero grande. No tiene sentido que se siente y se aburra mientras estos procesos termi-
nan. En estos casos es mejor lanzarlos en segundo plano, para dejar el ordenador en con-
diciones de ejecutar otro programa.
Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se esta
ejecutando actualmente, sino que esta temporalmente parado. Después de suspender una
tarea, puede indicar a la misma que continúe, en primer plano o en segundo, según nece-
site. Retomar una tarea suspendida no cambia en nada el estado de la misma la tarea con-
tinuara ejecutándose justo donde se dejo.
Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo.
Cuando usted interrumpe un proceso (generalmente con la pulsación de <ctrl-C>), el
proceso muere, y deja de estar en memoria y utilizar recursos del ordenador.
Una vez eliminado, el proceso no puede continuar ejecutándose, y deberá ser lanzado otra
vez para volver a realizar sus tareas. También se puede dar el caso de que algunos programas
capturan la interrupción, de modo que pulsando <ctrl-C>no se para inmediatamente. Esto se
hace para permitir al programa realizar operaciones necesarias de limpieza antes de terminar.
De hecho, algunos programas simplemente no se dejan matar por ninguna interrupción.

Envío a segundo plano y eliminación de procesos

Empecemos con un ejemplo sencillo. El comando yes es un comando aparentemente inú-


til que envía una serie interminable de y-es a la salida estándar. (Realmente es muy útil. Si
se utiliza una tubería (o pipe) para unir la salida de yes con otro comando que haga pre-
guntas del tipo si/no, la serie de y-es confirmara todas las preguntas.)
Pruebe con esto.

[Crispin@Globus /Crispin]$ yes


y
y

88 Capítulo 4. Conceptos Avanzados


y
y
y

La serie de «y» continuara hasta el infinito, a no ser que usted la elimine, pulsando la
tecla de interrupción, generalmente <ctrl-C>.
También puede deshacerse de esta serie de «y» redirigiendo la salida estándar de yes
hacia /dev/null, que como recordara es una especie de «agujero negro» o papelera para
los datos. Todo lo que usted envié allí, desaparecerá.

[Crispin@Globus /Crispin]$ yes > /dev/null

Ahora va mucho mejor, el terminal no se ensucia, pero el prompt de la shell no retorna.


Esto es porque yes sigue ejecutándose y enviando esos inútiles «y» a /dev/null. Para recu-
perarlo, pulse la tecla de interrupción.
Supongamos ahora que queremos dejar que el comando yes siga ejecutándose, y vol-
ver al mismo tiempo a la shell para trabajar en otras cosas.
Para ello nos enviaremos a yes a segundo plano, lo que nos permitirá ejecutarlo, pero
sin necesidad de interacción.
Una forma de mandar procesos a segundo plano es añadiendo un carácter & al final de
cada comando.

[Crispin@Globus /Crispin]$ yes > /dev/null &


[1] 164
[Crispin@Globus /Crispin]$

Como podrá ver, ha regresado a la shell. ¿ Pero que es eso de [1] 164?, ¿ se esta ejecu-
tando realmente el comando yes?
«[1]» representa el numero de tarea del proceso yes.
La shell asigna un numero a cada tarea que se este ejecutando. Como yes es el único
comando que se esta ejecutando, se le asigna el numero de tarea 1.
El numero «164» es el numero de identificación del proceso, o PID, que es el numero
que el sistema le asigna al proceso. Ambos números pueden usarse para referirse a la tarea
como veremos después.
Ahora usted tiene el proceso yes corriendo en segundo plano, y enviando constante-
mente la señal y hacia el dispositivo /dev/null. Para chequear el estado del proceso, uti-
lice el comando interno de la shell jobs:

[Crispin@Globus /Crispin]$ jobs


[1]+ Running yes >/dev/null &
[Crispin@Globus /Crispin]$

ESware Linux 89
¡Ahí esta!. También puede usar el comando ps, como mostramos antes, para compro-
bar el estado de la tarea.
Para eliminar una tarea, utilice el comando kill. Este comando toma como argumento
un numero de tarea o un numero de ID de un proceso. Esta era la tarea 1, así que usando
el comando

[Crispin@Globus /Crispin]$ kill %1

matará la tarea.
Cuando se identifica la tarea con el numero de tarea, se debe preceder el numero con el
carácter de porcentaje (`%»).
Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo para
comprobarlo:

[Crispin@Globus /Crispin]$ jobs

[1]+ Terminated yes >/dev/null


[Crispin@Globus /Crispin]$

La tarea está, en efecto, muerta, y si usa el comando jobs de nuevo, no mostrara nada.
También podrá matar la tarea usando el numero de ID de proceso (PID), el cual se mues-
tra conjuntamente con el ID de tarea cuando arranca la misma. En nuestro ejemplo el ID
de proceso es 164, así que el comando

[Crispin@Globus /Crispin]$ kill 164

es equivalente a

[Crispin@Globus /Crispin]$ kill %1

No es necesario usar el % cuando nos referimos a una tarea a través de su ID de proce-


so.

Parada y relanzamiento de tareas

Hay otra manera de poner una tarea en segundo plano. Usted puede lanzarlo como un
proceso normal (en primer plano), pararlo, y después relanzarlo en segundo plano.
Primero, lance el proceso yes en primer plano como lo haría normalmente:

[Crispin@Globus /Crispin]$ yes > /dev/null

90 Capítulo 4. Conceptos Avanzados


De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de la shell.
Ahora, en vez de interrumpir la tarea con <ctrl-C>, suspenderemos la tarea. El suspen-
der una tarea no la mata: solamente la detiene temporalmente hasta que Ud. la retoma.
Para hacer esto usted debe pulsar la tecla de suspender, que suele ser <ctrl-Z>.

[Crispin@Globus /Crispin]$ yes > /dev/null

<ctrl-Z>
[1]+ Stopped yes >/dev/null
[Crispin@Globus /Crispin]$

Mientras el proceso esta suspendido, simplemente no se esta ejecutando. No gasta


tiempo de CPU en la tarea. Sin embargo, usted puede retomar el proceso de nuevo como
si nada hubiera pasado. Continuara ejecutándose donde se dejo.
Para relanzar la tarea en primer plano, use el comando fg (del ingles foreground).

[Crispin@Globus /Crispin]$ fg
yes >/dev/null

La shell muestra el nombre del comando de nuevo, de forma que tenga conocimiento
de que tarea es la que ha puesto en primer plano. Pare la tarea de nuevo, con <ctrl-Z>. Esta
vez utilice el comando bg para poner la tarea en segundo plano. Esto hará que el coman-
do siga ejecutándose igual que si lo hubiese hecho desde el principio con & como en la sec-
ción anterior.

[Crispin@Globus /Crispin]$ bg
[1]+ yes >/dev/null &
[Crispin@Globus /Crispin]$

Y tenemos de nuevo el prompt. El comando jobs debería decirnos que yes se esta ejecu-
tando, y podemos matar la tarea con kill tal y como lo hicimos antes.
¿Como podemos parar la tarea de nuevo? Si pulsa <ctrl-Z> no funcionara, ya que el
proceso esta en segundo plano. La respuesta es poner el proceso en primer plano de
nuevo, con el comando fg, y entonces pararlo. Como puede observar podrá usar fg tanto
con tareas detenidas, como con las que estén segundo plano.
Hay una gran diferencia entre una tarea que se encuentra en segundo plano y una que
se encuentra detenida. Una tarea detenida es una tarea que no se esta ejecutando, es decir,
que no usa tiempo de CPU, y que no esta haciendo ningún trabajo (la tarea aun ocupa un
lugar en memoria, aunque puede ser volcada a disco). Una tarea en segundo plano, se esta
ejecutando, y usando memoria, a la vez que completando alguna acción mientras usted
hace otro trabajo. Sin embargo, una tarea en segundo plano puede intentar mostrar texto

ESware Linux 91
en su terminal, lo que puede resultar molesto si esta intentando hacer otra cosa. Por ejem-
plo, si usted uso el comando

[Crispin@Globus /Crispin]$ yes &

sin redirigir stdout a /dev/null, una cadena de y-es se mostraran en su monitor, sin
modo alguno de interrumpirlo (no puede hacer uso de <ctrl-C>para interrumpir tareas en
segundo plano). Para poder parar esas interminables y-es, tendría que usar el comando fg
para pasar la tarea a primer plano, y entonces usar <ctrl-C>para matarla.
Otra observación. Normalmente, los comandos fg y bg actúan sobre el ultimo pro-
ceso parado (indicado por un «+» junto al numero de tarea cuando usa el comando
jobs). Si usted tiene varios procesos corriendo a la vez, podrá mandar a primer o segun-
do plano una tarea especifica indicando el ID de tarea como argumento de fg o bg,
como en:

[Crispin@Globus /Crispin]$ fg %2

(para la tarea de primer plano numero 2), o

[Crispin@Globus /Crispin]$ bg %3

(para la tarea de segundo plano numero 3). No se pueden usar los ID de proceso con fg
o bg. Además de esto, si usa el numero de tarea por si solo, como

[Crispin@Globus /Crispin]$ %2

es equivalente a

[Crispin@Globus /Crispin]$ fg %2

Recuerde que el uso de control de tareas es una utilidad de la shell. Los comandos fg,
bg y jobs son internos de la shell. Si por algún motivo usted utiliza una shell que no sopor-
ta control de tareas, no espere disponer de estos comandos.

Variables

Dijimos antes que la shell es algo más que un interprete interactivo, es un lenguaje de pro-
gramación en toda regla, y como tal, hace uso de variables. Una variable es una pequeña
porción de memoria a la que se le asigna un valor (puede ser un número, una ruta de direc-
torios..., etc.) que se puede leer o consultar e incluso modificar.

92 Capítulo 4. Conceptos Avanzados


Hay tres tipos de variables: de entorno, que forman parte del entrono del sistema, las
variables incorporadas, que las proporciona el sistema y no pueden ser modificadas con
un programa shell y las variables de usuario, modificables con la shell.
Un ejemplo de variable es PATH, define las rutas que deben ser “miradas” por la shell
para buscar comandos o ejecutables.
Veamos el contenido de PATH:

[Crispin@Globus /Crispin]$ echo $PATH


/bin:/usr/bin:/usr/X11R6/bin:/home/Crispin/bin
[Crispin@Globus /Crispin]$

Observe el uso del carácter $; Indica el principio del nombre de una variable shell, sin
él, la orden echo de volvería únicamente la cadena de texto pasada a continuación.
De manera que siempre que queramos ver el contenido de una variable debemos
usar $.
En concreto PATH se define en un fichero de texto que se lee en el inicio del sistema,
por lo que ya está establecida.

Definir variables

Vamos a definir una variable sencilla:

[Crispin@Globus /Crispin]$ a=playa


[Crispin@Globus /Crispin]$

ya está. La variable tiene un nombre: a, y un valor: playa. Note que no debe dejar espa-
cios entre el nombre, el igual y el valor. Ahora podemos usar el valor de esta variable refi-
riéndonos a ella por su nombre. Lo importante aquí es: ¿donde?, pues en la ejecución de
ordenes desde el prompt, por ejemplo, o en el uso de scripts de shell, (se verán en otro
momento del curso). Pero, ojo, las variables de usuario creadas de esta manera solo fun-
cionan en el shell (o subshell) en que se han definido. Se entiende mejor con un ejemplo:

[Crispin@Globus /Crispin]$ echo $a


playa
[Crispin@Globus /Crispin]$ bash
[Crispin@Globus /Crispin]$ echo $a
[Crispin@Globus /Crispin]$

¿Qué ha pasado? ¿Ha desaparecido nuestra variable? mmm....... si y no. Primero com-
probamos su valor y está correcto, pero después hemos lanzado otro shell y aquí no apa-

ESware Linux 93
rece. La variable a solo es “visible” desde la shell donde se fue definida; Es una variable
local.
Esto nos lleva a otra pregunta: ¿Qué variables tenemos en cada shell?, fácil: con la orden
env veremos una lista de variables iniciales del entorno o globales y con la orden set vere-
mos una lista de variables locales.
Resumiendo, en cada shell se tendrá acceso únicamente a las variables locales que tenga
definidas. Esto es importante de cara a la ejecución de scripts que, por algún motivo,
requieran el uso de una variable determinada, o al revés: ¿que pasa si queremos que nues-
tra variable sea accesible por programas ejecutados en otros shells?

Exportar al entorno

La solución a este pequeño problema es lo que se conoce como exportar variables.

El comando export es capaz de hacer dos cosas:

1. Sin argumentos muestra una lista con las variables exportadas


2. Convierte las variables consignadas (locales) en globales, para que sus valores sean
accesibles por cada shell que se genere.

[Crispin@Globus /Crispin]$ echo $a


playa
[Crispin@Globus /Crispin]$ export a
[Crispin@Globus /Crispin]$ bash
[Crispin@Globus /Crispin]$ echo $a
playa
[Crispin@Globus /Crispin]$

Ahora el valor de la variable a puede ser leído desde otro shell o sub-shell y también por
programas que se ejecuten en ellos.

94 Capítulo 4. Conceptos Avanzados


Capítulo 5. Conceptos sobre ficheros

Permisos de Ficheros

Conceptos de permisos de ficheros

Linux es un sistema multiusuario, por lo tanto es necesario establecer un mecanismo que


proteja los ficheros de los usuarios y a la vez el sistema debe también protegerse a si mismo
de la manipulación por parte de otros. Esto lo consigue mediante el uso de permisos de
ficheros.
Este mecanismo permite que ficheros y directorios «pertenezcan» a un usuario en par-
ticular. Por ejemplo, como Crispin creo ficheros en su directorio home, Crispin es el pro-
pietario de esos ficheros y tiene acceso a ellos.
Linux también permite que los ficheros sean compartidos entre usuarios y grupos de
usuarios.
Si Crispin lo desea, podría restringir el acceso a sus ficheros de forma que ningún otro
usuario tenga acceso. De cualquier modo, en la mayoría de los sistemas por defecto se per-
mite que otros usuarios puedan leer sus ficheros pero no modificarlos o borrarlos.
Como hemos explicado arriba, cada fichero pertenece a un usuario en particular. Por
otra parte, los ficheros también pertenecen a un grupo en particular, que es un conjunto de
usuarios definido por el sistema.
Cada usuario pertenece al menos a un grupo cuando es creado. El administrador del
sistema puede hacer que un usuario tenga acceso a más de un grupo.
Los grupos usualmente son definidos por el tipo de usuarios que acceden a la maqui-
na. Por ejemplo, en un sistema Linux de una empresa, los usuarios pueden ser divididos
en los grupos marketing, dirección, contabilidad e invitados. Hay también unos pocos gru-
pos definidos por el sistema (como bin y admin) los cuales son usados por el propio siste-
ma para controlar el acceso a los recursos, y muy raramente los usuarios normales perte-
necen a estos grupos.
Los permisos están divididos en tres tipos: lectura, escritura y ejecución.
Estos permisos pueden ser fijados para tres clases de usuarios: el propietario del fichero,
el grupo al que pertenece el fichero y para todos los usuarios independientemente del grupo.

ESware Linux 95
El permiso de lectura (r) permite a un usuario leer el contenido del fichero o en el caso
de un directorio, listar el contenido del mismo (usando ls).
El permiso de escritura (w) permite a un usuario escribir y modificar el fichero. Para
directorios, el permiso de escritura permite crear nuevos ficheros o borrar ficheros ya exis-
tentes en dicho directorio.
Por ultimo, el permiso de ejecución (x) permite a un usuario ejecutar el fichero si es un
programa o guión del interprete de comandos. Para directorios, el permiso de ejecución
permite al usuario cambiar al directorio en cuestión con cd.

Interpretando los permisos de ficheros

Veamos un ejemplo del uso de permisos de ficheros. Usando el comando ls con la opción
-l se mostrara un listado «largo» de los ficheros, el cual incluye los permisos de ficheros.

[Crispin@Globus /cursos]$ ls -l nominas


-rw-r—r— 1 Crispin contabilidad 505 Mar 13 19:05 nominas
[Crispin@Globus /cursos]$

El primer campo impreso en el listado representa los permisos de ficheros. El tercer


campo es el propietario del fichero (Crispin), y el cuarto es el grupo al cual pertenece el
fichero (contabilidad).
Obviamente, el ultimo campo es el nombre del fichero (nominas), y los demás campos
los trataremos más adelante.
Este fichero pertenece a Crispin y al grupo contabilidad. Echemos un vistazo a los per-
misos. La cadena:

-rw-r—r—

nos informa, por orden, de los permisos para el propietario, el grupo del fichero y cual-
quier otro usuario.
El primer carácter de la cadena de permisos (-) representa el tipo de fichero.
El «-» significa que es un fichero regular. Si aparece una «d», se trata de un directorio.
Las siguientes tres letras (rw-) representan los permisos para el propietario del fichero,
Crispin. La «r» para lectura y «w» para escritura. Luego Crispin tiene permisos de lectura
y escritura para el fichero nominas.
Como ya mencionamos, aparte de los permisos de lectura y escritura esta el permiso de
«ejecución», representado por una «x». Como hay un «-» en lugar del «x», significa que
Crispin no tiene permiso para ejecutar ese fichero. Esto es correcto, puesto que nominas no
es un programa de ningún tipo. Por supuesto, como el fichero es de Crispin, puede darse
a si mismo permiso de ejecución si lo desea. Este tema será cubierto en breve.

96 Capítulo 5. Conceptos sobre ficheros


Los siguientes tres caracteres, r— representan los permisos para los miembros del
grupo. El grupo al que pertenece el fichero es contabilidad. Como solo aparece un «r» cual-
quier usuario que pertenezca al grupo contabilidad puede leer este fichero.
Los últimos tres caracteres, también r—, representan los permisos para cualquier otro
usuario del sistema (diferentes del propietario o de los pertenecientes al grupo contabili-
dad). De nuevo, como solo esta presente el «r», los demás usuarios pueden leer el fichero,
pero no escribir en el o ejecutarlo.
Aquí tenemos otros ejemplos de permisos de grupo.

-rwxr-xr-x

El propietario del fichero puede leer, escribir y ejecutar el fichero. Los usuarios pertene-
cientes al grupo del fichero, y todos los demás usuarios pueden leer y ejecutar el fichero.

-rw———

El propietario del fichero puede leer y escribir. Nadie más puede acceder al fichero.

-rwxrwxrwx

Todos los usuarios pueden leer, escribir y ejecutar el fichero.

Dependencias

Es muy importante darse cuenta de que los permisos de un fichero también dependen de
los permisos del directorio en el que residen. Por ejemplo, aunque un fichero tenga los per-
misos -rwxrwxrwx, otros usuarios no podrán acceder a el a menos que también tengan
permiso de lectura y ejecución para el directorio en el cual se encuentra el fichero.
Si Crispin quiere restringir el acceso a todos sus ficheros, podría simplemente poner los
permisos de su directorio home /home/Crispin a -rwx———. De esta forma ningún usua-
rio podrá acceder a su directorio ni a ninguno de sus ficheros o subdirectorios. Crispin no
necesita preocuparse de los permisos individuales de cada uno de sus ficheros.
En otras palabras, para acceder a un fichero, debes de tener permiso de ejecución de
todos los directorios a lo largo del camino de acceso al fichero, además de permiso de lec-
tura (o ejecución) del fichero en particular.
Los directorios, usualmente tienen los permisos -rwxr-xr-x, lo que permite que los
demás usuarios puedan moverse y ver los directorios, pero sin poder crear o borrar nue-
vos ficheros en ellos.
Muchos usuarios pueden querer limitar el acceso de otros usuarios a sus ficheros.
Poniendo los permisos de un fichero a -rw———- no se permitirá a ningún otro usuario
acceder al fichero.

ESware Linux 97
Igualmente, poniendo los permisos del directorio a -rwx——— no se permitirá a los
demás usuarios acceder al directorio en cuestión.

Cambiando permisos

El comando chmod se usa para establecer los permisos de un fichero. Solo el propietario
puede cambiar los permisos del fichero. La sintaxis de chmod es:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

Con las opciones {a,u,g,o}, indicamos a que usuarios afecta: all, user, group o other.
Entonces se especifica si se están añadiendo permisos (+) o quitándolos (-). Finalmente se
especifica que tipo de permiso read, write o execute, ({r,w,x}).
Algunos ejemplos:

chmod a+r nominas Da a todos (all) los usuarios acceso de lectura al fichero.
chmod +r nominas Como arriba. Si no se indica a, u, g u o por defecto se toma a.
chmod og-x nominas Quita permisos de ejecución a todos los usuarios excepto al pro-
pietario.
chmod u+rwx nominas Permite al propietario leer, escribir y ejecutar el fichero.
chmod o-rwx nominas Quita permisos de lectura, escritura y ejecución a todos los
usuarios menos al propietario y a los usuarios del grupo del fichero.

Esta forma de manipular los permisos es conocida como en modo absoluto, existe otra
forma que consiste en codificar numericamente los permisos de acuerdo con su valor en
binario. A este metodo se le conoce como modo octal.
Los valores en binario son:

• Lectura: 4
• Escritura: 2
• Ejecución: 1

Básicamente el proceso es el mismo, la diferencia es que se usa un valor numérico para


cada conjunto de permisos (usuario, grupo y otros), que es la suma de los valores en bina-
rio que tengan los permisos que se van a asignar. ¿Alguien lo ha entendido?.......

[Crispin@Globus /cursos]$ ls -l nominas


-rw-r—r— 1 Crispin contabilidad 505 Mar 13 19:05 nominas
[Crispin@Globus /cursos]$

98 Capítulo 5. Conceptos sobre ficheros


Este fichero tiene en modo octal: 644. ¿De donde sale este número?
Podemos ver el detalle de los permisos:
• para el usuario “rw”, lectura y escritura, osea 4 + 2 = 6,
• para el grupo “r”, lectura, osea 4,
• para el resto “r”, lectura, osea 4,
Juntandolo todo, en el mismo orden, 644. ¿De acuerdo?

El cambio de permisos usando este método se hace de la siguiente manera:

chmod 444 nominas Da a todos los usuarios acceso de lectura al fichero.


chmod 777 nominas Todos los permisos a todo el mundo.
chmod 700 nominas El usuario tiene todos los permisos y nadie más puede hacer
nada.
chmod 555 nominas Todos, lectura y ejecución.

Enlaces de ficheros

Los enlaces le permiten dar a un único fichero múltiples nombres. Los ficheros son identi-
ficados por el sistema por su numero de inodo, el cual es el único identificador del fiche-
ro para el sistema de ficheros.
Un directorio es una lista de números de inodo con sus correspondientes nombres de
fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.

Enlaces duros (hard links)

La orden ln es usada para crear enlaces para un fichero.


Por ejemplo, supongamos que tiene un fichero dietas en un directorio.
Usando ls -i, veremos el numero de inodo para el fichero.

# ls -i dietas
22192 dietas
#

Aquí, el fichero dietas tiene el numero de inodo 22192 en el sistema de ficheros.


Podemos crear otro enlace a dietas, llamado restaurantes:

# ln dietas restaurantes

Con ls -i veremos que los dos ficheros tienen el mismo inodo.

ESware Linux 99
# ls -i dietas restaurantes
22192 restaurantes 22192 dietas
#

Ahora, accediendo a dietas o a restaurantes accederemos al mismo fichero. Si hace cam-


bios en dietas, estos cambios también serán efectuados en restaurantes. Para todos los efec-
tos, dietas y restaurantes son el mismo fichero.
Estos enlaces son conocidos como enlaces duros (hard links) porque directamente
crean el enlace al inodo. Nótese que solo podemos crear enlaces duros entre ficheros del
mismo sistema de ficheros; los enlaces simbólicos (ver más adelante) no tienen esta res-
tricción.
Cuando borra un fichero con rm, esta solamente borrando un enlace a un fichero. Si usa
el comando:

# rm dietas

solo el enlace de nombre dietas es borrado; restaurantes todavía existirá.


Un fichero es solo definitivamente borrado del sistema cuando no quedan enlaces a el.
Usualmente, los ficheros tienen un único enlace, por lo que el uso de rm los borra. Pero si
el fichero tiene múltiples enlaces, el uso de rm solo borrara un único enlace; para borrar el
fichero, deberá borrar todos los enlaces del fichero.
La orden ls -l muestra el numero de enlaces a un fichero (entre otra información).

# ls -l dietas restaurantes
-rw-r—r— 2 root root 12 Aug 5 16:51 restaurantes
-rw-r—r— 2 root root 12 Aug 5 16:50 dietas
#

La segunda columna en el listado, 2, especifica el numero de enlaces al fichero. Así


resulta que un directorio no es más que un fichero que contiene información sobre la
dirección del enlace al inodo. También, cada directorio tiene al menos dos enlaces duros
en el: «.» (un enlace apuntando a si mismo) y «..» (un enlace apuntando al directorio
padre).
En el directorio raíz (/), el enlace «..» simplemente apunta a /.

Enlaces simbólicos

Los enlaces simbólicos son otro tipo de enlace, que es diferente al enlace duro. Un enla-
ce simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un
inodo.

100 Capítulo 5. Conceptos sobre ficheros


La orden ln -s crea un enlace simbólico a un fichero. Por ejemplo, si usamos la orden

# ln -s dietas restaurantes

crearemos un enlace simbólico restaurantes apuntando al fichero dietas. Si usamos


ls -i, veremos que los dos ficheros tienen inodos diferentes, en efecto.

# ls -i dietas restaurantes
22195 restaurantes 22192 dietas
#

De cualquier modo, usando ls -l vemos que el fichero restaurantes es un enlace simbó-


lico apuntando a dietas.

# ls -l dietas restaurantes
lrwxrwxrwx 1 root root 3 Aug 5 16:51 restaurantes -> dietas
-rw-r—r— 1 root root 12 Aug 5 16:50 dietas
#

Los bits de permisos en un enlace simbólico no se usan (siempre aparecen como


rwxrwxrwx). En su lugar, los permisos del enlace simbólico son determinados por los per-
misos del fichero «apuntado» por el enlace (en nuestro ejemplo, el fichero dietas).
Funcionalmente, los enlaces duros y simbólicos son similares, pero hay algunas dife-
rencias. Por una parte, puede crear un enlace simbólico a un fichero que no está en el
mismo dispositivo de almacenamiento; lo mismo no es cierto para enlaces duros. Los enla-
ces simbólicos son procesados por el núcleo de forma diferente a los duros, lo cual es solo
una diferencia técnica, pero a veces importante. Los enlaces simbólicos son de ayuda pues-
to que identifican al fichero al que apuntan; con enlaces duros no es tan fácil saber que
fichero esta enlazado al mismo inodo.
Los enlaces se usan en muchas partes del sistema Linux. Los enlaces simbólicos son
especialmente importantes para las imágenes de las librerías compartidas en /lib.

ESware Linux 101


Capítulo 6. Scripts de Shell

Ya conocemos en profundidad el interprete de comandos y la flexibilidad y potencia que


tiene. En este apartado estudiaremos los scripts de shell o guiones del interprete de coman-
dos. Son ficheros que contienen una serie de comandos para su ejecución. Al lanzar el
script cada una de esas ordenes es leída y ejecutada una tras otra por el interprete de
comandos. La ventaja de esto es que se pueden ejecutar igual que cualquier otra orden o
comando, pero los «creamos» nosotros mismos con un simple editor de textos. Además,
podemos hacer uso del propio lenguaje de programación del interprete de comandos y de
las variables definidas como se vio anteriormente.
Para la creación de un script usaremos cualquiera de los múltiples editores de textos que
aporta Linux, los hay con maravillosos entornos gráficos en modo «Lo Que Ves Es Lo Que
Tienes» o integrados en estupendas «Suites de Ofimática» y también feos editores en modo
consola que apenas ofrecen ayuda al usuario sentado frente a la pantalla. Desafortunadamente
el editor elegido por el autor para estudiar aquí es de estos últimos: el clásico de Unix vi.
¿Motivos?, varios; Primero: se encuentra prácticamente en cualquier máquina del mundo que
tenga Linux o Unix, segundo: tiene un tamaño reducido y podría estar en un disquete de
arranque y salvarnos la vida en alguna ocasión y tercero: no es tan difícil de manejar.

Introducción al editor vi

Es muy posible que vi no sea su editor habitual, lo entiendo. Sin embargo el conocimiento
de su manejo siempre será una ventaja. Personalmente siempre edito los ficheros de confi-
guración con vi. No lo uso para escribir, pero no lo utilizo continuamente para solucionar
problemas o configurar equipos y conozco multitud de personas que hacen lo mismo.

Los conocimientos mínimos de vi

La forma de lanzar vi para editar un fichero es la siguiente:

vi < nombre de fichero >

ESware Linux 103


por ejemplo para que Crispin edite el fichero llamado «carta», escribirá en línea de
comandos:

[Crispin@Globus /Crispin]$ vi carta


y obtendrá una pantalla similar a la Figura 6.1:

Figura 6-1. El editor vi

La orden vi carta abrirá el fichero carta si este existe, si el fichero no existe, creará uno
con ese nombre.
Lo primero que hay que saber es que el editor tiene tres modos de funcionamiento:

• Modo Ordenes
• Modo Inserción
• Modo Última Línea

y lo mínimo que necesitamos saber para editar / crear un ficheros es:

1. Como cambiar entre modos de funcionamiento.


2. Como guardar los cambios y
3. Como salir sin guardar los cambios. (por si nos equivocamos)

Nota importante: todas las ordenes se indican entre comillas para distinguirlas, pero en
el editor, las comillas no hay que teclearlas!

104 Capítulo 6. Scripts de Shells


Como cambiar entre modos de funcionamiento

Por defecto se entra en modo Ordenes, que sirve para ejecutar los comandos propios del
editor.
Los comandos (u ordenes) son normalmente de uno o dos caracteres de longitud y nos
permiten editar el fichero o cambiar a otros modos.
El modo Inserción se usa para escribir en el fichero, es la forma habitual de trabajo del
editor.
Para entrar en el modo Inserción se pulsará (desde el modo Ordenes):

• «i» para insertar texto a la izquierda del cursor


• «a» para añadir texto a la derecha del cursor
• «o» para empezar a escribir en la línea debajo del cursor

Si el fichero está vacío, no hay diferencia entre las tres ordenes. Para volver al modo
ordenes pulsaremos la tecla Esc.
El movimiento entre líneas más sencillo es mediante las flechas del cursor y las teclas
de avance y retroceso de página. (Hay comandos específicos que veremos enseguida.)
El modo Última Línea es un modo especial usado para proporcionar ciertas ordenes
extendidas a vi. Al usar esos comandos, aparecen en la ultima linea de la pantalla (de ahí
el nombre).
Para entrar en el modo Última Línea debe pulsar (desde el modo Ordenes):

El modo de ultima linea es habitualmente usado por ordenes de vi con más de un carácter.
En el modo de ultima linea, introduce una orden de una sola linea y pulsa <enter> para
ejecutarla.
Para volver al modo ordenes pulsaremos la tecla Esc.

Como guardar los cambios

Una vez escrito o modificado el fichero y si estamos satisfechos con los cambios reali-
zados, podemos guardar el fichero con la orden (desde el modo Ordenes):

Si ademas queremos salir del editor:

:q

Se pueden combinar las dos ordenes:

ESware Linux 105


:wq

esto salva el fichero y sale del editor. Un atajo para: wq es ZZ (desde el modo Ordenes).
El resultado es el mismo.

Como salir sin guardar los cambios

Si los cambios realizados no son de su agrado, cambiamos al modo ordenes y pulsa-


mos:

q!

Si omite !, el editor se pondrá bastante pesado y no le permitirá salir sin guardar.


Estas nociones básicas son suficientes para un trabajo sencillo de corrección o edición
de ficheros. Quizá no necesite más (o no quiera saber más) en ese caso salte directamente
a la sección siguiente. Lo que viene a continuación son ordenes avanzadas para el manejo
del editor vi.
La ventaja y la potencia de vi está en la habilidad de usarlo con éxito con sólo saber
unos pocos comandos. No expondremos todos los ordenes de vi, aunque se cubren los más
comúnmente usados y aún otros adicionales.

Órdenes de movimiento
(Siempre desde el modo órdenes)

La función más básica de un editor es el mover el cursor por el texto.

w mueve al principio de la siguiente palabra.


e mueve al final de la siguiente palabra.
E mueve al final de la siguiente palabra antes de un espacio.
b mueve al principio de la palabra anterior.

0 mueve al principio de la línea actual.


^ mueve a la primera palabra de la línea actual.
$ mueve al final de la línea.
Intro mueve al principio de la siguiente línea.
- mueve al principio de la línea anterior.

G mueve al final del fichero.


1G mueve al principio del fichero.

106 Capítulo 6. Scripts de Shells


nG mueve a la línea n.
<Ctrl> G muestra el número de línea actual.
% va al paréntesis correspondiente.
H mueve a la línea superior en pantalla.
M mueve a la línea de en medio de la pantalla.
L mueve al final de la pantalla.

El texto se desplaza automáticamente cuando el cursor alcanza la parte superior o infe-


rior de la pantalla. También hay ordenes que permiten controlar el desplazamiento del texto.

<Ctrl> f desplaza una pantalla hacia delante.


<Ctrl> b desplaza una pantalla hacia atrás.
<Ctrl> d desplaza media pantalla hacia abajo.
<Ctrl> u desplaza media pantalla hacia arriba

Las ordenes anteriores controlan el movimiento del cursor. Algunas de las ordenes
usan un modificador en forma de un número que precede al comando. Esta característica
normalmente repite la orden ese número de veces.

ni inserta algún texto y lo repite n veces.

Los ordenes que tratan con líneas usan el modificador para referirse al número de línea.
La orden G es un buen ejemplo.

Modificación del texto

El propósito es cambiar el contenido del fichero y vi ofrece un amplio conjunto de ordenes


para ayudarnos en este proceso.
Vamos a ver como añadir texto, cambiar el texto existente y borrar texto. Cuando usted
teclea nuevo texto puede introducir varias líneas usando < Enter> Si hay que corregir un
error mientras escribe, puede usar la tecla < Retroceso > para mover el cursor sobre el
texto.

a Añadir texto a partir de la posición actual del cursor.


A Añadir al final de la línea.
i Insertar texto a la izquierda del cursor.
I Insertar texto a la izquierda del primer caracter que no sea espacio en la línea
actual.
o Abrir una nueva línea y añade texto debajo de la línea actual.
O Abrir una nueva línea y añade texto encima de la línea actual.

ESware Linux 107


vi tiene un pequeño grupo de ordenes para borrar texto que se pueden mejorar con el
uso de modificadores.

x Borrar el carácter que está debajo del cursor.


dw Borrar desde la posición actual al final de la palabra.
dd Borrar la línea actual.
D Borrar desde la posición actual al final de la línea.

Los modificadores se pueden usar para aumentar la potencia de los ordenes. Los
siguientes ejemplos son un subgrupo de las posibilidades.

nx Borrar n caracteres desde el que está bajo el cursor.


ndd Borrar n líneas.
dnw Borrar n palabras (igual que ndw).
dG Borrar desde la posición actual hasta el final del fichero.
d1G Borrar desde la posición actual hasta el principio del fichero.
d$ Borrar desde la posición actual al final de la línea. (Esto es igual que D.)
dn$ Borrar desde la línea actual al final de la enésima línea.

En ocasiones puede que sea necesario deshacer los cambios que hemos realizado. Las
siguientes ordenes recuperan el texto que había antes de hacer cambios.

u Deshacer el último comando.


U Deshacer todos los cambios ocurridos en la línea actual.
:e! Editar otra vez. Recupera el estado del fichero desde la última vez que se salvó.

También puede dar la vuelta al comando deshacer. Usando la orden u podemos des-
hacer y rehacer mas de una vez.

vi ofrece ordenes que permiten que se hagan cambios al texto sin tener que borrar y vol-
ver a escribir:

rp Reemplaza el carácter con la letra «p»


R Sobreescribe el texto con el nuevo texto..
cw Cambia el texto de la palabra actual.
c$ Cambia el texto desde la posición actual al final de la línea.
cnw Cambia las siguientes n palabras.

Las series de ordenes de cambio que permiten que se introduzca un grupo de caracte-
res se terminan con la tecla Esc.

108 Capítulo 6. Scripts de Shells


Copiar, cortar y pegar bloques de texto

La copia de texto se realiza en tres pasos principales:

1. Copia del texto a un buffer de memoria.


2. Movimiento del cursor al lugar de destino.
3. Pegar (poner) el texto en el buffer de edición.

Un buffer de memoria es un área de intercambio en la RAM, (como el portapapeles),


donde almacenaremos una información temporalmente. En este caso se usan buffers para
almacenar una copia temporal del texto que usted desea copiar o mover. Podemos tener
más de un buffer con distintas informaciones (datos) en ellos. Esto se consigue poniendo
«nombre» al buffer, para poder distinguirlos entre si. Se pueden tener hasta 26 buffers con
nombre. Un buffer sin nombre perderá la información al guardar nuevos datos en el.
El buffer de edición no es sino el propio fichero en el que usted está trabajando.
Para Copiar texto al buffer sin nombre use la orden y.

yy Mueve una copia de la línea actual al buffer sin nombre.


nyy Mueve las siguientes n lineas al buffer sin nombre.
yw Mueve una palabra al buffer sin nombre.
ynw Mueve n palabras al buffer sin nombre.
y$ Mueve el texto desde la posición actual al final de la línea al buffer sin nombre.

Los buffers usan las letras del alfabeto como el nombre de identificación. Para distinguir
un comando de un buffer con nombre, vi usa el carácter < « >. Cuando use un buffer con
nombre de letra minúscula los contenidos se sobreescriben, mientras que el uso del nom-
bre en letra mayúscula añade el nuevo texto al contenido actual.

ayy Mueve la línea actual al buffer con nombre a.


byw Mueve la palabra actual al buffer con nombre b.
Byw Añade la palabra actual al contenido del buffer b.
by3w Mueve las siguientes 3 palabras al buffer b.

Use la orden p para pegar el contenido del buffer al buffer de edición.

p Pegar del buffer sin nombre a la DERECHA del cursor.


P Pegar del buffer sin nombre a la IZQUIERDA del cursor.
nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor.
aP Pegar del buffer con nombre «a» a la DERECHA del cursor.
b3P Pegar 3 copias del buffer con nombre «b» a la IZQUIERDA del cursor.

ESware Linux 109


Para mover un bloque de texto son necesarios tres pasos.

1. Borrar el texto para ponerlo en un buffer con o sin nombre.


2. Mover el cursor a la posición de destino.
3. Pegar el buffer.

El proceso es idéntico al de copia, con un solo cambio: borrar.


Cuando se usa la orden dd, la línea se borra y se coloca en el buffer sin nombre. Luego
puede poner el contenido del mismo modo que lo hizo cuando copió el texto en la posi-
ción deseada.

add Borrar la línea y ponerla en el buffer con nombre a.


a4dd Borrar cuatro líneas y ponerlas en el buffer con nombre a.
dw Borrar una palabra y ponerla en el buffer sin nombre.

Repase las ordenes sobre el modificado de texto para ver más ejemplos de borrado de
texto.

Búsqueda y cambio de texto

vi dispone de varios ordenes para búsqueda. Podemos buscar desde un solo carácter hasta
expresiones completas.
Las dos ordenes principales de búsqueda basados en caracteres son f y t.

; Repite el último comando f,t.

Si el carácter que usted buscaba no se encuentra, vi emitirá un pitido o le dará otro tipo
de señal (tal vez un parpadeo de toda la pantalla).
vi le permite buscar una cadena de texto en el buffer de edición.

/texto Busca hacia la derecha y abajo la siguiente instancia de texto.


?texto Busca hacia la izquierda y arriba la siguiente instancia de texto.
n Repite el último comando / o ?.

Cuando use las ordenes / o ?, la última línea de la pantalla se borrará para que escriba
la cadena de texto que busca.
Con estos conocimientos (y un poco de práctica) usted será capaz de deslumbrar a sus
amistades con sus rápidos movimientos por cualquier fichero de texto. Lo mejor de todo
es que podrá editar cualquier fichero de configuración de su sistema Linux. Y crear sus
propios scripts!

110 Capítulo 6. Scripts de Shells


Creación de un script

Conociendo el uso de un editor de texto, la realización de un script de shell es una tarea tri-
vial.
Generalmente crearemos scripts para uso personal, como automatización de tareas o
ejecución de sentencias largas de ordenes. También es posible que usemos scripts de terce-
ros e incluso que otros leguen a utilizar un script nuestro.
Existe un carácter especial del cual haremos bastante uso: la almohadilla (#).
Toda línea que comience por almohadilla será ignorada por el interprete de comandos.
Es lo que se conoce como comentario. Normalmente se usa para documentar los scripts o
para omitir la ejecución de una línea determinada. (Recuerde que la shell leerá línea a línea
el contenido del script, cada línea una orden.)
Ademas la usaremos para otra cosa más, la primera línea del script se suele empezar
así:

#!/bin/sh

Es la forma de indicar al interprete de comandos que lo que viene a continuación es un


script y como debe usarlo. Se suele indicar sh por ser un interprete que se encuentra en
todas las maquinas Linux y Unix
A partir de aquí el script sigue según nuestras necesidades. Puede que necesite usar
variables o simplemente ejecutar dos docenas de comandos. Recuerde lo que aprendió del
uso avanzado del shell, como el uso de caracteres especiales ya que le será útil en la crea-
ción de potentes scripts.
Aquí unos ejemplos sencillos:

#!/bin/sh
/usr/bin/netscape
rm -f $HOME/.netscape/history.list

Este script lo único que hace es lanzar el navegador Netscape y borrar el histórico de los
sitios visitados al cerrarlo.
Si se abalanzó sobre el teclado para probar enseguida estos y otros scripts que se le
han ocurrido, se habrá dado cuenta de que algo no va del todo bien, pues a pesar de
haber dominado correctamente el editor vi y escrito el texto con soltura y estilo, el script
no funciona.
¿Recuerda el capítulo de los permisos de los ficheros? Efectivamente. Todavía quedan
un par de pasos para que los scripts sean del todo operativos:

1. Dar al script permiso de ejecución.


2. Poner el script en un directorio que esté incluido en el PATH.

ESware Linux 111


Haciendo esto, no debería haber mayor problema, aunque hay algunas variantes del
mismo tema.
Por ejemplo, un script se puede lanzar como argumento de una shell:

[Crispin@Globus /Crispin]$ sh navegador

Sí el script anterior se llamase navegador, la sentencia anterior lo lanzaría. Esto es igual


que:

[Crispin@Globus /Crispin]$. navegador

¡Fijese en el punto!

Otro ejemplo, asignamos permiso de ejecución, pero el directorio donde se encuentra


no está en el PATH:

[Crispin@Globus /Crispin]$./navegador

El./ (punto - barra)indica al shell que el script se encuentra en el directorio actual y lo eje-
cuta. Este método es perfecto para probar el script o la ejecución esporádica. Lo más correcto
para un script de uso habitual es colocar el script en un directorio que esté incluido en el PATH.
Recuerde que los scripts que realicen tareas administrativas pueden ir al directorio
/sbin, los generales para todos los usuarios a /bin, los personales se deberían guardar en
/home/user/bin (sustituyendo user por el nombre del usuario en cuestión) y que hay que
vigilar bien la asignación de permisos.
Sí aún con esto no tiene suficientes recursos para realizar determinadas tareas, no le
queda más remedio que continuar leyendo, por que a continuación explicamos el uso de
sentencias de repetición y sentencias condicionales.

Sentencias de repetición

Ya podemos realizar increíbles tareas de forma profesional mediante la ejecución de


scripts, pero todavía falta algo, un poco de dinamismo quizá.
Las sentencias de repetición se usan para realizar un determinado número de veces una
serie de órdenes que aparecen entre dichas sentencias.
Los que han estudiado programación pueden saltarse esta sección ya que se verán con-
ceptos básicos que tendrán superados. Los que no tengan el más mínimo interés por saber
más de programación de scripts de shell, también pueden dar un salto adelante, siempre
pueden volver a consultar esta parte. El resto, que encienda el ordenador y practique sobre
la marcha. Será más divertido.

112 Capítulo 6. Scripts de Shells


Primero veamos las herramientas que tenemos a nuestra disposición para evaluar
expresiones o comandos.
Un comando completado con éxito devuelve un valor cero (verdad). Si la orden finali-
zo anormalmente devolverá un valor distinto de cero. Recuerde esto pues puede utilizar-
lo en la ejecución de sus scripts. Otro dato a tener en cuenta es el uso de parámetros en la
ejecución del script, puesto que podemos refereciarlos de la siguiente manera:

$1 primer parámetro
$2 segundo parámetro (así se numerarán cada uno de los parametros)
$# número de parámetros pasados al programa
$* todos los parámetros
$? código de la última orden o programa ejecutado desde el script
$0 nombre del programa

La orden test

Tambien podemos evaluar variables u operadores (numéricos o cadenas). La orden que se


usa para realizar comparacion de expresiones es test.
test evalua la expresión y si esta es verdad devuelve como salida cero. Si la expresion
no se cumple devuelve un valor distinto de cero.
Nos permite comparar:

• Cadenas
• Operaderes lógicos
• Archivos
• Comparación númerica

Comparación de cadenas

= para ver si son iguales


!= para ver si son no iguales
-n para evaluar si la longitud de la cadena es mayor que cero
-z para evaluar si la longitud de la cadena es cero

Comparación de Operadores Lógicos

Se utilizan para comparar expresiones usando las reglas lógicas.

!: para negar una expresión lógica

ESware Linux 113


-a para utilizar un AND con dos expresiones lógicas
-o para utilizar un OR con dos expresiones lógicas

Comparación de archivos

-d comprueba si es un directorio
-f comprueba si es un archivo
-r comprueba si tiene permiso de lectura
-w comprueba si tiene permiso de escritura
-x comprueba si tiene permiso de ejecución
-s comprueba si tiene tamaño mayor que cero
-e comprueba si existe
-b comprueba si es un dispositivo de bloques

Comparación de numérica

- eq comprueba si son iguales


- ge comprueba si un número es mayor o igual que otro
- le comprueba si un número es menor o igual que otro
- ne comprueba si son diferentes
- gt comprueba si un número es mayor que otro
- lt comprueba si un número es menor que otro

La orden expr

Si necesitamos realizar operaciones usaremos expr. Es una utilidad de cálculo aritmetico


entero.
Admite las siguientes operaciones básicas:

+ suma
- sustracción
* producto
/ división entera
% resto

¡Ojo!, el carácter * es especial por lo que debe ir precedido de \ para evitar su interpre-
tación por el interprete de comandos.
Solo admite valores enteros naturales y los decimales se eliminan.

114 Capítulo 6. Scripts de Shells


La orden read

Para tomar un valor de forma interactiva y usarlo en nuestro script usaremos «read».
Normalmente el valor se almacena en una variable para su posterior uso.
Este conjunto de herramientas lo usaremos a la hora de tomar decisiones respecto al
trabajo que realizará nuestro script en función de los resultados que obtenga. Ahora vea-
mos las sentencias:

La sentencia for

Se puede usar de varias maneras:

for contador in lista


do
sentencias
done

Se ejecutaran las sentencias una vez por cada valor de lista, en cada repetición (o bucle)
se asigna el valor de la lista a contador. Lista puede ser una variable que contenga un núme-
ro de elementos o una lista de valores separados por espacios.
Un ejemplo sencillo:

for contador in 1 2 3
do
echo hola $c
done

Lo único que hace es saludarnos por cada valor de la lista y mostrar el valor de conta-
dor, en este caso dirá hola tres veces.
Un ejemplo más complejo:

for valor in ‘ls’


do
cat $valor | more
done

Este script ejecuta ls, cada archivo es «pasado» a valor y hasta que se lea todo el direc-
torio muestra el contenido de cada archivo.
Otra forma de usar for:

ESware Linux 115


for contador
do
sentencias
done

En este caso sentencias se ejecuta una vez por cada uno de los parámetros pasados al
script.
Un ejemplo sencillo:

for valor
do
echo hola
done

Al ejecutarlo saludara tantas veces como parámetros le pasemos… si el script se llama


saluda y escribimos:

[Crispin@Globus /Crispin]$ saluda 1 2 3


hola
hola
hola
[Crispin@Globus /Crispin]$

Se puede obtener una lista de los parámetros con $@.

La sentencia while

While significa «mientras», de manera que ejecutará las sentencias mientras suceda algo
que hemos especificado, cuando deje de cumplirse, el bucle finalizará.
La sintaxis es:

while expresión
do
sentencias
done

Fácil, ¿verdad?; Un ejemplo:

116 Capítulo 6. Scripts de Shells


#!/bin/sh
n=10
while [ $n -ge 0 ]
do
echo «Restando 1» $n
n=`expr $n - 1`
done

Se inicializa una variable a un valor (10) y se ejecutan las ordenes (echo y expr) mien-
tras no tenga otro valor (0). Notese que expr se ejecuta por que está entre acentos
graves.

La sentencia until

Ejecutará las ordenes hasta que se cumpla una condición dada. Cuando deje de ser cierto
finalizará el bucle.
La sintaxis es:

until expresión
do
sentencias
done

El formato es similar al de la sentencia while. while ejecuta el bucle «mientras» la com-


probación sea verdadera, until ejecuta el bucle hasta que la comprobación sea verdadera.
Ejemplo:

#!/bin/sh
n=0
until [ $n -ge 10 ]
do
echo «Sumando 1» $n
n=`expr $n + 1`
done

Se inicializa una variable a un valor (0) y se ejecutan las ordenes (echo y expr) hasta que
tenga otro valor (10).

ESware Linux 117


Sentencias condicionales

Se utilizan en los scripts para tomar una decisión. Normalmente se realizará algún tipo de
evaluación y dependiendo del resultado se opta por ejecutar una parte del programa u
otra determinada.

La sentencia if

Evalúa una expresión para tomar una decisión. La sintaxis es:

if [ expresión ]
then sentencias
elif [ expresión ]
then sentencias
else
sentencias
fi

Un intento de traducir esto a nuestra manera de pensar es el sí condicional:

sí pasa_tal_cosa
entonces haz_lo_que_sea
o_sí tal_otra_cosa
entonces haces_esto_otro
sí_no
pues_haces_lo_de_mas_allá
se_acabó

Las condiciones if se pueden anidar. Puede haber un if dentro de otro if. Las partes elif
y else no son necesarias. La parte else solo se ejecuta si no se cumple ningunas de las
expresiones de la parte if o elif. La palabra fi se utiliza para indicar el final de las senten-
cias if. Debe existir un fi para cada if. Es util sobre todo cuando se anidan condiciones if.
Ejemplo:

#!/bin/sh
echo « ¿ Me quiere o no me quiere ? «
read var
if [ $var = Si ]
then echo « $var te quiere»
elif [ $var = No ]

118 Capítulo 6. Scripts de Shells


then echo « $var te quiere»
else
echo « $var no parece una respuesta válida»
fi

Aquí hemos introducido un elemento nuevo: read, que espera una entrada del usuario
y la asigna a la variable (var) que luego es evaluada. En función de la respuesta se escribe
un mensaje en pantalla que además hace uso de la misma variable.

La sentencia case

Se utiliza para ejecutar diferentes sentencias dependiendo de un valor o rango de valores


que coincida con la variable especificada. El formato de uso es:

case cadena in
lista_de_patrones1)
sentencias ;;
lista_de_patrones2)
sentencias;;
esac

Un par de aclaraciones: Para cada una de las condiciones especificadas se ejecutan


todas las sentencias asociadas hasta encontrar el doble punto y coma (;;). Notese que
las condiciones acaban con un cierre de parentesis. «)». Sí la última condición es aste-
risco (*), las sentencias asociadas se ejecutan sí no se cumple ninguna de las otras. (¡
que lio!). Vamos con el ejemplo:

#!/bin/sh
case $# in

0) echo « No has puesto parametros» ;;


1) echo « Has puesto un parametro» ;;
*) echo « Has puesto más de un parametro» ;;
esac

Otras sentencias

Estas otras sentencias puede que sean utiles si es necesario una salida rapida del script.

ESware Linux 119


Sentencia break

Se usa para salir de un bucle.

Sentencia exit

Está se utiliza para salir del programa.

Funciones

Una función es una parte del programa que realiza un proceso concreto y que se puede uti-
lizar cada vez que sea necesario repetir el proceso, sin necesidad de repetir el código.
Suponga que tiene que calcular el I.V.A. de ciertas cantidades que lee de una lista, el
cálculo siempre es el mismo, solo cambia el dato sobre el que opera, pues escriba una fun-
ción y le pasa el dato cada vez que sea necesario.
La sintaxis de la función es:
func () {
sentencias
}

La llamada a una función se hace así:

func parametro1 parametro2 parametro3

Una función puede analizar los parametros como si se tratase de los parametros posi-
cionales pasados a un script de shell.
El código de retorno de la función será el código de retorno del último de los coman-
dos del cuerpo.
Para cambiar la salida de la función se usa return valor en cuyo caso se devuelve el valor.
A ver si un ejemplo nos ayuda.
Esta función recibe dos numeros, los compara y devuelve el mayor de ellos.

#!/bin/sh
max () {
if [ $1 -gt $2 ]
then return $1
else return $2
fi
}

120 Capítulo 6. Scripts de Shells


max $1 $2
MAX=$?
echo « El mayor es $MAX «

Lo primero es declarar la función. Siempre antes de llamarla desde el programa.


Y la función es invocada desde el programa simplemente con su nombre.
En este caso el cálculo se realiza sobre los parametros posicionales pasados al progra-
ma, osea que la ejecución de este script en concreto debe ir con dos parametros, que son los
números que deseamos evaluar.
Estamos usando $1 y $2 dentro y fuera de la función, y funciona. Pero podriamos dar
nombre propio a las variables dentro de la función, son tratadas como variables locales:

max () {
local A=$1
local B=$2
if [ $A -gt $B ]
then return $A
else return $B
fi
}

Con este rápido repaso a las funciones daremos por terminada la sección de scripts de
shell. Espero que haya sido útil, práctica e indolora.

ESware Linux 121


Capítulo 7. Administración del Sistema

A primera instancia, el asunto suena interesante: administrar un red con cientos de orde-
nadores y multitud de usuarios es lo que quiero hacer cuando sea mayor.
Empezaremos de una forma más modesta, afinando nuestro sistema, estudiando los
servicios que tenemos disponibles y el control que tenemos sobre ellos. Nuestra meta es
hacer que las cosas vayan exactamente como habiamos pensado. (Que no es poco).
Un sistema Linux es grande y complicado. Y la principal tarea del administrador es que
todo funcione. El administrador gestionará los recursos del sistema para que estén dispo-
nibles a los usuarios. Será necesario identificar dichos recursos y asignarlos correctamen-
te definiendo correctamente las formas de acceso, los propietarios de los mismos y la auto-
ridad relacionada con cada uno de ellos.
No está en los escritos todas las funciones de un administrador, pero por si alguien
necesita una lista por la cual guiarse, o para ese trabajo de la facultad, aquí va una a titu-
lo orientativo:

• Gestión de cuentas.
• Copias de seguridad y restauraciones.
• Control del rendimiento.
• Ayudar y documentar a usuarios.
• Control de los sistemas.
• Selección e instalación de software.
• Gestión de seguridad.
• Configuración y ajuste de los sistemas

Pero empecemos por el principio, la figura del administrador del sistema en Linux
tiene nombre propio: root.

La cuenta root
Anteriormente vimos todo lo relacionado con los permisos de usuario y de como el siste-
ma protege a los usuarios y a si mismo de errores y malas intenciones. Pues el sistema se

ESware Linux 123


olvida completamente de esto cuando reconoce al usuario root. Es la cuenta del adminis-
trador y no hay limitaciones para este usuario. Esto es lo primero y más veces repetido:
¡No use la cuenta root habitualmente!. Solo se debe emplear para realizar tareas adminis-
trativas. Si se comete un error siendo root, el sistema no le detendrá.
La formula habitual, si se requieren los poderes del root, es utilizar el comando «su».
Este comando ejecuta una shell con identificadores de usuario y grupo distintos.
Lo que quiere decir que permite a un usuario convertirse temporalmente en otro usua-
rio. Si no se especifica ningún nombre de usuario, por defecto se usa root. shell a ejecutar
se toma de la entrada correspondiente al usuario en el fichero de contraseñas, o /bin/sh si
no está especificada en dicho fichero. La ejecución de su solicitará el contraseña del usua-
rio, menos que se ejecute por el root.
El administrador será tambien el encargado de la realización de cambios en el sistema.
Cualquier cambio deberá ser cuidadosamente planificado y probado en un entorno con-
trolado antes de implantarlo en producción.
Sé que es imposible evaluar todas las posibles variables y condiciones que se genera-
rán al llegar los usuarios al día siguiente de realizar ese cambio tan importante. Pero inten-
teló, la responsabilidad es suya.
El administrador debe ser el que provee las soluciones, si su actividad genera proble-
mas, tenga previsto como restaurar una condición estable en el minimo lapso de tiempo.
A eso me referia al decir «cuidadosamente planificado», no solo debe pensar como imple-
mentar el nuevo cambio, además tenga previsto un plan de recuperación de emergencia,
por si algo sale mal.
Tambien es buena idea plantear gradualmente las mejoras, es más facil volver atrás si
los cambios son menores que cuando se cambian de golpe gran número de cosas. No sabrá
que falló ni porque si hizo todos los cambios a la vez. Y no digamos si afectan a gran parte
del equipo. Podrá diagnosticar un problema si sólo tocó un par de cosas y comprobó el
funcionamiento antes de seguir adelante.
Cada cambio (aparte del éxito con que se realice) debe ser anunciado con suficiente
antelación cuando afecte a los usuarios, de manera que sepan como comportarse ante la
novedad. El mejor sistema, funcionando correctamente puede ocasionar una pequeña
revuelta si los usuarios ven afectado su trabajo, aunque solo hablemos de pequeños cam-
bios de forma. Informeles con antelación de lo que va a ocurrir y documente, si es necesa-
rio, las nociones sobre el manejo (o lo que sea) que necesiten.

Programación de tareas

Es bastante común que necesite ejecutar un script (o un comando) periodicamente para


algún tipo de tarea rutinaria. ESware Linux le permite planificar la ejecución de ta-
reas.

124 Capítulo 7. Administración del Sistema


Para ello se utilizan servicios que emplean el reloj del sistema para lanzar unos proce-
sos, determinados previamente, a la hora indicada, aunque no esté presente el usuario.
Estos servicios se lanzan en el arranque del sistema y permanecen vivos durante toda la
sesión para atender esa programación de tareas.
Tambien disponemos de otro tipo de planificación. El método descrito anteriormente
nos permite planificar en el tiempo, lo que sin duda resulta útil, pero otra manera de apro-
vechar recursos es programar la ejecición de tareas dependiendo de la carga del sistema.
Linux es multitarea, de manera que el uso de la CPU se reparte entre los procesos que
estén en ejecución. Esto se consigue repartiendo el tiempo de procesamiento entre cada
uno de ellos. Si el número de procesos simultaneos es elevado, el tiempo dedicado a cada
uno de ellos disminuye. El efecto que percibe el usuario es una ralentización en la ejecu-
ción de las tareas. Para estas situaciones disponemos de mecanismos que permiten pro-
gramar la ejecución de procesos para cuando la carga del sistema sea baja. O modificar la
prioridad que tendrán durante su ejecución.

at

El comando at permite la ejecución de una serie de ordenes en un momento especificado.


La sintaxis de at es:

at hora fecha + incremento


ordenes
[ctrl+d]

at permite especificaciones de hora con bastante prcisión. Acepta horas con formato
HH:MM para ejecutar un trabajo a una determinada hora del día. (Claro está que si esa
hora ya ha pasado, se ejecutará el día siguiente). También se puede especificar la hora con
usando AM o PM para indicar por la mañana o por la tarde. Podemos indicar el día de eje-
cución, proporcionando la fecha con el formato MMDDYY o MM/DD/YY o DD.MM.YY.
La especificación de una fecha debe seguir a la de la hora del día.
Se pueden dar horas como now + count unidades_de_tiempo, donde unidades_de_tiempo
puede ser minutes, hours, days, o weeks y se puede indicar a at que ejecute el trabajo hoy
poniendo como sufijo de la hora la palabra today y para ejecutarlo mañana, se pondría
como sufijo la palabra tomorrow.
Por ejemplo, para ejecutar un trabajo el 12 de septiembre a las siete de la tarde:

[Crispin@Globus Cripin]$ at 19:00 Sep 12


at> comandos
at> <EOT> # aquí pulsé <ctrl-d>
warning: commands will be executed using /bin/sh

ESware Linux 125


job 2 at 2000-09-12 19:00
[Crispin@Globus Cripin]$

Si quiero lanzar un programa dentro de tres horas:

[Crispin@Globus Cripin]$ at now + 3 hours


at> comandos
at> <EOT> # aquí pulsé <ctrl-d>
warning: commands will be executed using /bin/sh
job 3 at 2000-06-20 12:25
[Crispin@Globus Cripin]$

Para ver un listado con todos los trabajos lanzados en diferido ejecute at con la opción
-l y para eliminar un trabajo de la «cola» usaremos la opción -d seguida del número iden-
tificativo del trabajo.

batch

El comando batch ejecuta comandos en modo diferido cuando lo permite el nivel de carga
del sistema; osea, cuando la carga media cae por debajo de 0.8, o del valor especificado en
la invocación de atrun.
La sintaxis de batch es:

batch
ordenes
[ctrl+d]

Para ambos at y batch, los comandos a los que se aplicarán son leídos de la entrada
estándar o de un fichero indicado si usamos la opción -f y ejecutados. El directorio de tra-
bajo, el entorno son tomados del momento de invocación, y no el de ejecución. El usuario
recibirá un correo con la salida de error y la salida estándar de sus comandos, si hay algu-
na. El correo se enviará utilizando el comando /usr/lib/sendmail. Correo que podrá leer
con la orden mail.
El usuario root, por supuesto, siempre puede utilizar estos comandos. Para otros usua-
rios, los permisos para utilizarlos se pueden limitar mediante el uso de los ficheros
/etc/at.allow y /etc/at.deny.
Si el fichero /etc/at.allow existe, sólo los usuarios cuyos nombres están mencionados
aquí tienen permiso para utilizar at.
Si /etc/at.allow no existe, se chequea /etc/at.deny y entonces todos los usuarios cuyos
nombres no estén mencionados allí tienen permiso para utilizar at.

126 Capítulo 7. Administración del Sistema


Si ninguno de los ficheros existe, sólo podrá utilizar at el administrador del sistema.
Un /etc/at.deny vacío significa que todo el mundo puede utilizar estos comandos, esta
es habitualmente la configuración por defecto.

nice

El comando nice modifica el nivel de prioridad de ejecución de órdenes o programas asig-


nando más o menos tiempo de CPU a la tarea dada.
La prioridad puede ser ajustada por nice en el rango entre -20 (la prioridad más alta) a
19 (la más baja). Únicamente el root puede asignar valores negativos.
La sitaxis de nice es:

nice -n orden

donde n es el número que indica la prioridad.

nohup

El comando nohup inhibe la terminación de un proceso aunque el usuario salga del siste-
ma.
Esto tiene sentido para procesos largos que no requieran asistencia del usuario que los
lanzó, normalmente se ejecutarán en segundo plano y nohup impedirá que finalicen al
salir el usuario del sistema.
La sitaxis de nohup es:

nohup orden &

cron y crontab

Para establecer la ejecución periodica de órdenes a intervalos prefijados se usa cron, que
es lanzado durante el arranque del sistema, y permanece activo para dar servicio a las
entradas que los usuarios le indiquen mediante la ejecución de crontab.
El comando crontab necesita leer la información de las especificaciones de un archivo
externo.
La sitaxis de crontab es:

crontab archivo_especificaciones

El archivo de especificaciones constará de una línea para cada tarea, con seis campos
separados por espacios.

ESware Linux 127


Los campos son, por este orden:

Minutos Horas Día (del mes) Mes Día (de la semana) Orden

Los minutos se indican de 0 a 59, las horas de 0 a 23, el día del mes de 1 a 31, el mes
de 1 a 12 y el día de la semana de 0 a 6, siendo el domingo el número cero. El asteris-
co (*) significa «todos» osea cualquier valor del rango. Al final se indica la orden a eje-
cutar.
Veamos algunos ejemplos de como pueden ser estos archivos:

30 9 * * * orden (ejecuta orden todos los días a las nueve y media)


0 12 * * 5 orden (ejecuta orden los viernes a las doce en punto)
* 8 12 9 * orden (ejecuta orden todos los minutos desde las 8 horas a las 9 horas cada 12
de septiembre)
* 0 19 1 * 1 orden (ejecuta orden todos los lunes y todos los dias 1 de cada mes a las siete
de la tarde)

De manera que si creamos un archivo de esta manera, sencillamente con ejecutar cron-
tab seguido del nombre del archivo, cron se encargará de la ejecución de las órdenes con
la frecuencia indicada.
Tambien están admitidos rangos, como por ejemplo, para indicar la repetición de una
orden de lunes a viernes, en el campo del día de la semana ponemos: 1-5.
Cada usuario solo puede tener un fichero de especificación de crontab (se le conoce
como archivo crontab). Cada ejecución de crontab archivo_de especificaciones establece
ese archivo como el válido para que cron lo interprete y ejecute.
En realidad podrá tener varios archivos definidos, pero solo será utilizado el último
que se ejecutó con crontab.
De nuevo se puede limitar el uso de crontab mediante la inclusión de usuarios en los
ficheros /etc/cron.allow y /etc/cron.deny.
Si el fichero cron.allow existe, sólo los usuarios cuyos nombres están mencionados aquí
tienen permiso para utilizarlo.
Si cron.allow no existe, se chequea cron.deny y entonces todos los usuarios cuyos nom-
bres estén mencionados se les denegará el uso.
Si ninguno de los ficheros existe, sólo podrá utilizar crontab el administrador del sistema.
Si cron.allow no existe y cron.deny vacío significa que todo el mundo puede utilizar
crontab.
Por último decir que una vez editado el fichero de especificaciónes y ejecutado crontab
con él, no es conveniente modificarlo con un editor de texto. La forma de introducir algún
cambio en el fichero es utilizar crontab con la opción -e. Para eliminar el fichero utilice la
opción -r.
Y si quiere ver una lista del contenido del fichero pruebe la opción -l.

128 Capítulo 7. Administración del Sistema


X-facilidades para crontab

Si se ha entendido, y practicado un poco, el uso de crontab no supondrá ningún pro-


blema y podremos realizar tareas rutinarias de forma desatendida. Para terminar de faci-
litarnos el trabajo, existen aplicaciones en entrono gráfico que ayudan a definir nuestro
fichero crontab.
Desde XWindow ejecute kcrontab, verá la siguiente pantalla:

Figura 7-1. Pantalla principal de kcrontab.

De un vistazo ya vemos los campos del fichero crontab. Podemos, desde el menú file
(archivo), abrir nuestro fichero (read), crear uno nuevo (new) o escribir en él (write).
Al crear un fichero crontab o añadir una entrada al existente veremos la siguiente pan-
talla:

ESware Linux 129


Figura 7-2. Pantalla de edicón de entradas de kcrontab.

Administración de Usuarios

Un sistema Linux se puede usar como equipo domestico personal con una única cuenta de
usuario o como servidor corporativo con cientos de usuarios a los que hay que permitir el
acceso. No importa cual sea su caso. La gestión de usuarios es uno de los aspectos que es
importante comprender.
Aún en el primer caso, usted debería crear una cuenta para las tareas habituales y usar
la cuenta de root solo para la realización de tareas de administración. (No se canse de leer
esto, se repetirá frecuentemente.)

130 Capítulo 7. Administración del Sistema


Usuarios

Cada usuario debe tener su propia cuenta, y el sistema identificará a cada usuario permi-
tiendole acceder (o no) y controlará las tareas que pueda realizar.

Esta es la información que el sistema mantiene acerca de cada usuario:

• Nombre de usuario
El nombre de usuario es el identificador único dado a cada usuario del sistema.
Crispin y Goliat son nombres de usuarios, existe una serie de usuarios que vienen con
el sistema o asociados a un programa determinado y suele ser buena idea dejarlos como
están, seguramente hay software que los usará para lanzar aplicaciones. Se pueden utili-
zar letras y dígitos junto a los caracteres «_» (subrayado) y «.» (punto). Los nombres de
usuario se limitan normalmente a 8 caracteres de longitud.

• Identificación de usuario
El user ID, o UID, es un numero único dado a cada usuario del sistema.
El sistema reconoce a los usuarios por su UID, no por el nombre de usuario.

• Identificación de grupo
El group ID, o GID, es la identificación del grupo del usuario por defecto. Cada usuario
pertenece a uno o mas grupos definidos por el administrador del sistema. Por defecto se
crea un grupo, de igual nombre que el usuario, al utilizar la orden adduser.

• Contraseña
El sistema almacena la clave encriptada del usuario. El comando passwd se utiliza para
poner y cambiar las claves de los usuarios.

• Nombre completo
El «nombre real o nombre completo del usuario es una información opcional que usa-
remos para identificar a los usuarios del sistema por sus nombres reales. Por ejemplo, el
usuario Crispin puede tener el nombre «Javier Roman» en la vida real.

• Directorio Personal
Es el directorio en el que se coloca al usuario acceder a el sistema. Cada usuario debe
tener su propio directorio personal, normalmente situado bajo /home.

• Interprete de comandos
Es el interprete de comandos que es arrancado para el usuario al acceder a el sistema.
Ejemplos pueden ser /bin/bash y /bin/tcsh.
Esta información se guarda en el fichero /etc/passwd.

ESware Linux 131


Cada linea del fichero contiene información acerca de un único usuario; el formato de
cada linea es

nombre:clave encriptada:UID:GID:nombre completo:dir-personal:interprete

Cada campo está separado por dos puntos.


Un ejemplo puede ser:

Crispin:TBe1jvLU$QWNBxcwdVM:506:506:Javi Roman:/home/Crispin:/bin/bash

El primer campo, «Crispin», es el nombre de usuario.

El siguiente campo, TBe1jvLU$QWNBxcwdVM, es la clave encriptada. Las claves no se


almacenan en un formato legible, son encriptadas utilizándose a si mismas como clave. En
otras palabras, solo si se conoce la clave, esta puede ser desencriptada. Es una forma de
Encriptación conocida como «de un solo sentido». El mecanismo es bastante seguro, en
realidad la contraseña nunca se desencripta, lo que sucede al hacer un login (acceder a el
sistema identificandose mediante el nombre de usuario y la contraseña) es que la contra-
seña se vuelve a encriptar y se compara con la que tenemos almacenada. Si las dos coinci-
den, se reconoce al usuario y se le permite entrar.
Una forma más segura de almacenar las contraseñas es el sistema «shadow password»
(«claves en sombra») en la que la información de las claves se relega al fichero /etc/sha-
dow. Este es el método empleado por Esware Linux. (salvo si se optó por desactivarlo en
el proceso de instalación)
En este caso en el campo de la contraseña de /etc/passwd se sustituye por una x, de
esta manera:

Crispin:x:506:506:Javi Roman:/home/Crispin:/bin/bash

El problema de /etc/passwd es que es legible por todo el mundo, mientras que


/etc/shadow no lo es, por lo que suministra un grado extra de seguridad. Las claves sha-
dow suministran otras funciones como la expiración de claves. Veremos con más detalle las
shadow password en el capítulo dedicado a seguridad.
Si necesitamos deshabilitar una cuenta temporalmente, basta con colocar un asterisco
(*) delante de la clave encriptada:

Crispin:*TBe1jvLU$QWNBxcwdVM:506:506:Javi Roman:/home/Crispin:/bin/bash

El asterisco (*) no es un carácter válido para un campo encriptado. Si después necesi-


tamos usar esta cuenta de nuevo, solamente tendremos que retirar el asterisco.

132 Capítulo 7. Administración del Sistema


El tercer campo «506», es el UID (Número de Identificación de Usuario). Este debe ser
único para cada usuario.
El cuarto campo, «506», es el GID (Número de Identificación de Grupo). Este usuario
pertenece al grupo numerado 506. La información de grupos, se almacena en el fichero
/etc/group. Lo repasaremos enseguida.
El quinto campo es el nombre completo del usuario. «Javi Roman». Este campo es
opcional rellenarlo. Es útil en sitios donde tengamos muchos usuarios para la identifica-
ción de los mismos.
El sexto campo es el directorio personal del usuario (/home/Crispin). No es necesario
que el directorio inicial de un usuario tenga el mismo nombre que el del nombre de usua-
rio. Sin embargo, ayuda a identificar el directorio.
Y el último es interprete de comandos que usará para esa sesión (/bin/bash).

Grupos

Cada usuario pertenece a uno o mas grupos. La única importancia real de las relaciones de
grupo es la perteneciente a los permisos de ficheros, cada fichero tiene un «grupo propie-
tario» y un conjunto de permisos de grupo que define de que forma pueden acceder al
fichero los usuarios del grupo.
Hay varios grupos definidos en el sistema, como pueden ser bin, Mail, y sys. Los usua-
rios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos de ficheros
del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como users.
Si se quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejem-
plo estudiantes, soporte y facultad.
El fichero /etc/group contiene información acerca de los grupos. El formato de cada
linea es

nombre de grupo:clave:GID:otros miembros

Algunos ejemplos de grupos pueden ser:

root:*:0:
usuarios:*:100:mdw,larry
invitados:*:200:
otros:*:250:kiwi

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root.
El siguiente grupo, usuarios, es para usuarios normales. Tiene un GID de 100. Los usua-
rios mdw y larry tienen acceso a este grupo. Recuérdese que en /etc/passwd cada usua-
rio tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer a mas de un

ESware Linux 133


grupo, añadiendo sus nombres de usuario a otras líneas de grupo en /etc/group. El
comando groups lista a que grupos se tiene acceso.
El tercer grupo, invitados, es para usuarios invitados, y otros es para «otros» usuarios.
El usuario kiwi tiene acceso a este grupo.
Como se puede ver, el campo clave de /etc/group raramente se utiliza. A veces se uti-
liza para dar una clave para acceder a un grupo. Esto es raras veces necesario. Para evitar
el que los usuarios cambien a grupos privilegiados (con el comando newgroup), se pone
el campo de la clave a «*».
Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema.
Normalmente es mas sencillo añadir líneas a /etc/group uno mismo, puesto que no se
necesitan mas configuraciones para añadir un grupo. Para borrar un grupo, solo hay que
borrar su entrada de /etc/group.

Alta y baja de usuarios

El proceso es agregar una entrada al fichero /etc/passwd con los datos antes descritos,
para el nuevo usuario, crear su directorio personal y asignarle una contraseña de acceso al
sistema.
Realizar esto manualmente, ósea editar el fichero, crear el directorio (con el contenido
necesario), no es algo complicado, pero es posible que olvidemos algún paso, por lo que
es mucho más habitual utilizar alguna herramienta que tenga automatizado el procedi-
miento.
Si desea hacer esto a mano (por experimentar nuevas sensaciones, por verificar como
funciona o por alguna otra razón) no olvide realizar todos estos pasos:

• Agregar la entrada correspondiente al nuevo usuario en el fichero /etc/passwd,


rellenado todos los campos necesarios. Tenga en cuenta lo siguiente: los campos
van separados por dos puntos (:) ósea que un campo en blanco será dos puntos
seguido de otros dos puntos. El campo debe existir, aunque esté vacío. Vea un
ejemplo:

• Goliat::508:508::/home/Goliat:/bin/bash

• Se ha dejado en blanco el campo de la contraseña y el nombre completo (que es


opcional).
• El campo de la contraseña en blanco significa que este usuario puede entrar al siste-
ma sin introducir password. Evidentemente esto es un agujero de seguridad.
Recuerde que la generación de la clave encriptada no se realiza hasta ejecutar el
comando passwd. ¡No puede poner la clave encriptada a mano!, el proceso correcto
es rellenar el campo de la contraseña de la siguiente manera:

134 Capítulo 7. Administración del Sistema


• Goliat:!!:508:508::/home/Goliat:/bin/bash

• Así no se podrá usar la cuenta de ninguna manera hasta que se establezca la contra-
seña. Y queda otra cuestión importante, ¿está usando shadow password?, entonces
aplique esto pero al fichero /etc/shadow y lea en cuanto pueda la parte de seguridad
referente a shadow password.
• Ojo tambien al UID y GID, deben ser únicos en el sistema, asegurese de no asignar
uno que ya esté en uso.
• Agregar la entrada correspondiente al grupo al que pertenece el nuevo usuario en el
fichero /etc/group, rellenado todos los campos necesarios.
• Cree el directorio de trabajo personal del usuario. Hay una plantilla de los ficheros
de configuración por defecto en el directorio /etc/skel, es recomendable copiar el
contenido de este directorio al directorio personal del usuario recién creado. Tenga
en cuenta los ficheros que empiezan por punto. Y asegurese de dar la propiedad del
directorio y el fichero al usuario, con el comando chown.
• Establezca la contraseña del usuario usando passwd nombre_de_usuario.

Si opta por la opción más cómoda de usar alguna de las herramientas diseñadas para
añadir usuarios el proceso es significativamente más sencillo, ya que las tareas anteriores
se pueden realizar de manera automática, dependiendo de la herramienta que usemos.
Vamos a verlas:

• Comando adduser
• Sintaxis:

adduser nombre_de_usuario

Esto actualiza el fichero /etc/passwd añadiendo la entrada para el usuario nuevo, crea
el directorio personal (con los ficheros de configuración), y añade la entrada al fichero de
los grupos, /etc/groups. Lo único que falta es asignarle una contraseña y la cuente estará
operativa.

Opciones interesantes:

–b directorio personal
Normalmente se usa el nombre de usuario dentro del directorio /home, pero podemos
especificar el que deseemos con esta opción.

–e fecha de expiración
La fecha en que la cuenta del usuario dejará de estár activa.

ESware Linux 135


–g grupo inicial
El grupo principal del usuario, si deseamos que sea distinto al que se crea por defecto.

–s shell por defecto


El shell que usará el usuario.

después de ejecutar adduser, asigne la contraseña con passwd para completar el proce-
so.
El comando adduser es equivalente, en algunos sistemas a useradd.

• Comando userdel
• Sintaxis:
• userdel nombre_de_usuario

• Igual que adduser, modifica los ficheros /etc/passwd, /etc/group y si se está usan-
do, /etc/shadow, eliminando las entradas del usuario en cuestión.
• Comando userconf
userconf es una herramienta que nos permite gestionar desde un único interfaz, tanto
usuarios como grupos e incluso aspectos avanzados como politica de cuentas (número
minimo de caracteres del password, duración de las cuentas y cuentas especiales; Se tra-
tará con más profundidad la politica de cuentas en el apartado de seguridad.)
La comodidad de userconf es que funciona igual desde una consola de texto, (en for-
mato menús) como desde una interfaz gráfica; con comodos clics de ratón.
En la figura 7.3 puede apreciar la pantalla principal de userconf.

Figura 7-3. Pantalla de entrada de userconf.

136 Capítulo 7. Administración del Sistema


Conociendo la base de datos de usuarios y grupos, (como estamos seguros ya ocurre),
la utilización de esta herramienta es completamente intuitiva. Pulse en Cuentas de usua-
rio para ver los usuarios existentes o para agregar, borrar o modificar un usuario.

Primero veremos todas las cuentas del sistema (véase la Figura 7.4).

Figura 7-4. Pantalla de cuentas de usuario

ESware Linux 137


Desde esta pantalla podemos editar una cuenta ya existente, haciendo doble clic en ella
o si pulsa en Agregar tendremos un menú para rellenar los campos que ya conoce:

Figura 7-5. Pantalla para agregar usuarios

138 Capítulo 7. Administración del Sistema


• Comando kuser
Si utilizamos el gestor de ventanas KDE, tenemos en el menú Sistema una opción lla-
mada Administrador de Usuarios, que es una forma de llamar a el programa kuser, la
herramienta que KDE pone a nuestra disposición para la tarea que estamos tratando.

Figura 7-6. Pantalla de entrada de kuser

ESware Linux 139


Resulta ser igual de intuitivo que el anterior (véase la Figura 7.7). Desde el menú
Usuario editaremos, borraremos o añadiremos cuentas al sistema, rellenando los campos
correspondientes. Igual sucede con el menú Grupo. Además, unos comodos iconos atajan
los clics de ratón (especial para perezosos).

Figura 7-7. Pantalla de edición de una cuenta

140 Capítulo 7. Administración del Sistema


La elección de una u otra herramienta es un aspecto de preferencias personales y quizá
de entorno de trabajo. (Sí no trabaja con XWindow, dificilmente usará kuser). Lo que siem-
pre es recomendable es comprobar el resultado de las operaciones realizadas, idependien-
temente del método empleado.

Ficheros de personalización

En Linux las posibilidades de configuración, ajuste y modificación se limitan a la cantidad


de software que tenga instalado. Se puede decir que «todo» es modificable. Una de las
cosas que normalmente suelen hacer los usuarios del sistema es personalizar su entorno
de trabajo. Veamos que ficheros afectan directamente a cada usuario.
El shell de cada usuario y el directorio de trabajo se indican, como ya se ha visto en
/etc/passwd.
Dentro del directorio de trabajo de cada usuario se encuentran sus propios ficheros de
configuración. Como es lógico, la modificación que haga en éstos, únicamente le afectará
al propio usuario. Los ficheros de configuración suelen empezar por un punto, (se les
conoce por su nombre en ingles: dot files) De manera que para verlos use la opción -a
de ls.
Para el bash (el que usa ESware) los ficheros son: .bash_profile y .bashrc. Cada línea
incluida en estos ficheros se lee durante el inicio de sessión y se ejecuta, definiendo de esta
manera el entorno del usuario.
Veamos un ejemplo de los dos ficheros:

Fichero.bash_profile

#.bash_profile

# Get the aliases and functions


if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

mesg n

Este fichero se lee al entrar en el sistema (ingreso interactivo). Practicamente está for-
zando la lectura de.bashrc cada vez que se lea este fichero. La última línea inibe la escri-
tura en consola por parte de otros usuarios. (El comando mesg se verá en la seccion de
comunicaciones).

ESware Linux 141


Fichero.bashrc

#.bashrc
# User specific aliases and functions

alias rm=’rm -i’


alias cp=’cp -i’
alias mv=’mv -i’
alias d=’ls’
alias s=’cd..’
alias p=’cd -’
alias cdd=’mount /mnt/cdrom’
alias cdu=’umount /mnt/cdrom’

echo $PATH|grep -q /sbin || export PATH=$PATH:/sbin:/usr/sbin

[ -z $DISPLAY ] ||. /etc/profile.d/color_ls.sh

# Source global definitions


if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
ENV=$HOME/.bashrc
USERNAME=»root»
export USERNAME ENV PATH

Los alias definidos aquí sirven para la ejecución de órdenes escribiendo en modo abre-
viado (como cdd, al ejecutar cdd en realidad el interprete de comandos ejecuta mount
/mnt/cdrom), o bien con opciones que consideremos interesantes (como rm, mv y cp, que
son órdenes «peligrosas» y forzamos su ejecución interactiva, osea pidiendo confirma-
ción.)
Como este fichero pertenece al root, incluye opcoines especiales que los usuarios no
deben tener, como la inclusión en el PATH de los directorios /sbin y /usr/sbin, que con-
tienen comando para uso administrativo.
Las definiciones globales se leen del fichero /etc/bashrc. La configuración que se inclu-
ya en /etc/bashrc afectan a todos los usuarios.

142 Capítulo 7. Administración del Sistema


Otros «dot files»

Una facilidad que ofrece Linux a la hora de trabajar en modo consola es la repetición de
los comandos tecleados simplemente pulsando las flechas del cursor. Esta información se
guarda en un fichero llamado.bash_history y está directamente relacionado con el coman-
do history.
La orden interna del interprete de comandos history se puede utilizar para mostrar o
modificar la lista de historia y manipular el fichero de historia.

ESware Linux 143


Capítulo 8. Gestión del Sistema de Archivos

Sistemas de Archivos

Una de las características que más llama la atención y cuesta entender al comenzar a tra-
bajar con un sistema Linux es la gestión que hace de los sistemas de archivos: todo apare-
ce como un archivo.
Una partición del disco duro, una impresora, un directorio compartido en red, todo
aparece con un interfaz de archivo. Este diseño simple y elegante, facilita al usuario el
acceso a cualquier dispositivo del sistema, permitiendole el usarlos con las mismas orde-
nes de manejo de ficheros.

Una nota sobre dispositivos

Los archivos especiales que representan a los dispositivos de hardware se mantienen en el


directorio /dev (dev, abreviatura de devices, dispositivos en castellano). Los podemos divi-
dir en dispositivos de bloque y de carácter.
Los dispositivos de carácter son aquellos que pueden leer una secuencia de caracteres.
Un ejemplo seria la secuencia de teclas pulsadas por el teclado, un modem conectado a
una línea serie, enviando una secuencia de bytes. Las aplicaciones usan llamadas estándar
del sistema para abrirlos, leer de ellos, escribir en ellos y cerrarlos exactamente como si el
dispositivo fuera un archivo.
Un dispositivo de bloques es el que almacena información y permite acceso a sí mismo.
También soportan que se acceda a ellos como archivos. Un ejemplo de esto son los discos
duros y los disquetes.

¡Organización!

El método de acceder a la información de forma organizada en el dispositivo de almace-


namiento en Linux recibe el nombre de sistema de archivos.

ESware Linux 145


Cada sistema de archivos debe ser previamente «montado» en un directorio. Esto sig-
nifica que para acceder al contenido de un disquete se le debe asignar un directorio, desde
el que podamos leerlo y escribir en el.
Tras montar el sistema de archivos, todos los ficheros (directorios, subdirectorios, etc.)
aparecen en ese directorio. El directorio donde se monta un sistema de archivos es llama-
do, punto de montaje, (o punto de anclaje).
Desde el momento en que un dispositivo está «montado», pasa a formar parte del
árbol de directorios del sistema. Es la comodidad que ofrece esta formula de trabajo. Ya
sea una partición, otro disco duro, un directorio compartido en una máquina remota (de
red) o un sencillo disquete, el usuario lo verá y accederá como a un directorio más. No
hay letras de unidades ni rutas de red, solo directorios con el contenido del dispositivo en
cuestión.
El precio a pagar por ello: únicamente «montarlo».

El comando mount

El sistema monta automáticamente algunos sistemas de archivos durante el arranque. El


más importante es el llamado sistema de archivos raíz y se monta en el directorio /.
Podemos tener todo nuestro sistema en un único dispositivo o utilizar varios dispositivos
para conformar el árbol de directorios de una forma que se ajuste a nuestras necesidades.
Por ejemplo es habitual tener un dispositivo dedicado al directorio de los usuarios /home
y también otro para /usr. Pueden ser particiones o discos duros diferentes al del «Sistema
de archivos raíz», no importa. Desde el punto de vista del usuario, no habrá diferencia
alguna. El árbol será el mismo.
El comando mount se utiliza para montar los sistemas de archivos. Veamos su manejo.

Sintaxis:

mount < opciones > < dispositivo > < punto_de_montaje >

donde <dispositivo> debe ser un dispositivo de bloques y <punto_de_montaje> debe ser


un directorio ¡que debe existir! Si intenta montar un dispositivo en un directorio que no
existe, mount fallará estrepitosamente.
Las opciones de mount aparecen en un listado más adelante. De momento nos intere-
sa la que le dice a mount el tipo del sistema de archivos que debe montar: -t tipo_siste-
ma_archivos.
Un ejemplo:

mount -t msdos /dev/fd0 /mnt/floppy

146 Capítulo 8. Gestión del Sistema de Archivos


Esto «montará» un disquete (¡que debe estar en la disquetera!) de formato MSdos en el
directorio /mnt/floppy. Este directorio existe por defecto en el sistema para facilitarnos la
tarea, pero podemos usar el que deseemos, siempre que exista y esté vacío. Si el directorio
contiene archivos, estos no serán accesibles mientras otro sistema de archivos esté monta-
do, pero reaparecerán al desmontarlo.
Otra consideración importante: ¡no extraiga un disco de la disquetera mientras esta
montado! Siempre hay que desmontarlo antes. La orden para desmontar un sistema de
archivos es umount.
El sistema gestiona la lectura y escritura de forma asíncrona, básicamente eso quiere
decir que los datos no se escribirán al disco de forma inmediata, sino que el núcleo man-
tendrá la información en buffers de memoria hasta que considere que la carga del sistema
es suficientemente baja como para no estorbar las tareas del usuario. Por lo que sacar el
disco sin desmontarlo antes, podría implicar perdida de datos y probablemente un moles-
to error de mount.
Uso de umount:

umount < punto_de_montaje >

en nuestro ejemplo anterior:

umount /mnt/floppy

observe que es suficiente con indicar el punto de montaje.

El parámetro de tipo de archivo es importante para mount ya que lo utiliza para la


forma en que interpreta los datos. Linux soporta muchos tipos de archivos, los siguientes
pueden ser algunos de los más utilizados.
Ojo al tipo iso9660, es el estándar de los CD-Rom. Montar un CD-Rom es algo así:

mount -t iso9660 /dev/cdrom /mnt/cdrom

En este ejemplo el dispositivo (/dev/cdrom es en realidad un enlace simbólico al dis-


positivo real, que puede ser /dev/hdb o /dev/hdc...). Si tiene problemas al montar el CD,
compruebe este punto.
El CD-Rom tiene ligeras diferencias con los disquetes, cuando montamos un CD-
Rom el botón de expulsión se bloquea y no permite sacar el CD-Rom hasta que se des-
monte. Así se evita el problema que comentábamos antes, no podremos sacar el disco
por error.
Otra operación no permitida es la de desmontar un dispositivo que esté en uso. Ósea si
estamos ejecutando un programa de un disquete montado, o leyendo un fichero, el coman-
do umount dará un error y no desmontará el sistema de archivos. Una cosa así:

ESware Linux 147


[root@Globus floppy]# umount /mnt/floppy/
umount: /mnt/floppy: device is busy
[root@Globus floppy]#

Observen que simplemente «estando» en el directorio se genera el error, nos indica:


device is busy (dispositivo ocupado). Es necesario «salir» a otro directorio para poder des-
montarlo.
Un comando que es cómodo para usar con las unidades de CD, es eject. Siempre que
no se tenga el dispositivo ocupado, el comando eject, lo desmonta y lo expulsa (abre la
bandeja).
Una observación más: por defecto montar unidades es tarea del administrador, un
usuario normal no podrá montar o desmontar disquetes o CD-Rom, salvo que se modifi-
que esta condición. (Ahora trataremos este asunto.)

Montaje automático de Sistemas de Archivos

Durante el arranque del sistema se ejecuta la orden mount -a para realizar el montaje de
los sistemas de archivos necesarios para el normal funcionamiento. La información nece-
saria sobre los dispositivos y los puntos de anclaje se toma de una tabla de sistemas de
archivos que se almacena en un fichero llamado fstab que se encuentra en el directorio
/etc.

/etc/fstab

La tabla de sistemas de archivo /etc/fstab es un fichero de texto que contiene una relación
de los dispositivos y las opciones necesarias para que mount las gestione.

El formato del fichero es el siguiente:

<dispositivo> <punto de anclaje> < sistema de archivos> <opciones> <dump> <fsckorder>

Aquí tenemos un ejemplo de un fichero /etc/fstab:

#/etc/fstab

148 Capítulo 8. Gestión del Sistema de Archivos


/dev/hda8 / ext2 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/hda7 /home ext2 defaults 1 2
/dev/hda5 /usr ext2 defaults 1 2
/dev/hda6 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,user,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,user 0 0
none /proc proc defaults 0 0

Cada línea del fichero se refiere a un sistema de archivos. Las cuatro primeras entradas
son sistemas de archivos ext2fs que componen el sistema Linux de la máquina donde tra-
bajo, los directorios /boot, /usr, /home y / se encuentran en particiones diferentes.
Después se indica qué partición se usará como memoria de intercambio o virtual, esto
no es un sistema de de archivos como tal ya que el usuario no accede directamente al espa-
cio swap, es el sistema el que lo usa.
Las dos siguientes líneas son las unidades extraibles, (disquetera y CD-Rom), tienen la
opción noauto para que no se monten automáticamente en el arranque, (seria necesario
tener siempre un disquete y un cd en las unidades).
El último sistema indicado es /proc, que es un sistema de archivos virtual, no existe
realmente en disco. Lo genera el kernel para suministrar información sobre el sistema a los
programas de usuario.
La tres primeras columnas de /etc/fstab representan, el dispositivo, el punto de mon-
taje y el tipo de sistema de archivos respectivamente. La cuarta columna especifica qué
opciones de mount se usarán para este dispositivo. La opción «defaults» es en realidad un
conjunto de opciones.
Al indicar defaults se están agrupando las siguientes opciones:

• rw: Montar el sistema de archivos de lectura y escritura.


• suid: Permitir el uso de identificadores de los bits SUID y SGID.
• dev: Interpretar dispositivos especiales de caracteres o bloques en el sistema de
archivos.
• exec: Permite la ejecución de binarios.
• auto: Puede montarse con la opción -a.
• nouser: Prohibe a un usuario ordinario (esto es, distinto de root) montar el sistema
de archivos.
• Async: Toda la E/S al sistema de archivos deberá hacerse asíncronamente.

Las opciones (si son más de una) van separadas por comas. En el ejemplo el CD-Rom
y la disquetera indican la opción user, permitiendo así que usuarios que no son root mon-
ten el dispositivo.

ESware Linux 149


Otras opciones de mount son:

• ro: Montar el sistema de archivos en modo de solo lectura.


• nosuid: Opuesto a suid.
• nodev: Opuesto a dev.
• noexec: Opuesto a exec.
• sync: Toda la E/S al sistema de archivos se producirá de inmediato y el programa
que las produjo esperará a que terminen. Este modo de trabajo más lento que usan-
do async.

La columna quinta lo utiliza el comando dump para determinar qué sistemas de archi-
vos necesitan ser volcados (dumped). Si el quinto campo está a cero, dump asume que el
sistema de archivos no necesita ser volcado. De esta forma el administrador puede estar
informado de cuando se necesita hacer copias de seguridad.
La sexta (y última) lo usa el programa fsck (chequeador del estado de la partición, ver
más abajo) para determinar el orden en el cual se van a chequear los sistemas de archivos
cuando el sistema arranca. El sistema de archivos raíz debería llevar fsck pass igual a 1, y
otros sistemas de archivos deberían llevarlo igual a 2. sistemas de archivos en un mismo
disco serán comprobados secuencialmente, pero sistemas de archivos en diferentes discos
serán comprobados al mismo tiempo para utilizar el paralelismo disponible en el equipo.
Si el sexto campo tiene un valor de 0, fsck asumirá que los sistemas de archivos no necesi-
tan ser chequeados. (como disquetes y CD-Rom)
La inclusión de un sistema de archivos en /etc/fstab aporta una facilidad a la hora de
montar dispositivos extraibles, únicamente pasando a mount el directorio de montaje
como argumento, mount lee el fichero /etc/fstab y usa las opciones y el dispositivo que
correspondan.
Usando el fichero /etc/fstab del ejemplo, para montar un disquete basta con escribir:

[root@Globus floppy]# mount /mnt/floppy/

Y se montará el disquete.

El fichero /etc/fstab puede modificarse «a mano» con cualquier editor de texto. Tenga
siempre en cuenta que un error en este fichero puede hacer que falle el arranque del siste-
ma. Si no domina algún aspecto de el fichero, antes de modificarlo, haga una copia de
seguridad, relea el capítulo dedicado a los nombres de dispositivos y asegurese de lo que
hace.
Una ayuda extra para el entorno gráfico es la herramienta usermount (véase Figura
8.1). Básicamente es un interfaz para el comando mount. Facilita el montaje o desmontaje,
especialmente de las unidades extraibles.

150 Capítulo 8. Gestión del Sistema de Archivos


Figura 8-1. usermount. Entorno gráfica

Comprobar sistemas de archivos

Si se han desmontado inadecuadamente, por ejemplo por un corte de fluido eléctrico, el


sistema comprobará, en el arranque, los sistemas de archivos en busca de ficheros daña-
dos o corrompidos.
Esta comprobación se realiza también de forma automática cada cierto número de
encendidos del sistema.
Y por supuesto podemos realizar revisiones periódicas. El comando utilizado para com-
probar un sistema de archivos depende del tipo de sistema de archivos en cuestión. Para sis-
temas de archivos ext2fs (el que usaremos en Linux normalmente), el comando es e2fsck.
Por ejemplo:
# e2fsck -av /dev/hda2
comprobará el sistema de archivos de /dev/hda2 y corregirá automáticamente cual-
quier error.
Normalmente deberá desmontar el sistema de archivos antes de chequearlo.
La única excepción es el sistema de archivos raíz, que no se puede desmontar, ya que
está en uso.

ESware Linux 151


Otros tipos de sistemas de archivos utilizan formas diferentes del comando e2fsck,
como pueda ser efsck y xfsck. El comando fsck, es un front-end para un conjunto de herra-
mientas que determinan el tipo de sistema de archivos y ejecuta el comando apropiado.
(fsck, fsck.ext2, fsck.minix y fsck.msdos)
Después de comprobar un sistema de archivos es importante que se reinicialice el sis-
tema inmediatamente, si se hizo alguna corrección al sistema de archivos. Si fsck informa
que ha corregido algún error en el sistema de archivos, se debe apagar el sistema con shut-
down -r o reboot para rearrancarlo. Esto permite al sistema sincronizar su información
acerca del sistema de archivos cuando fsck lo modifica.
El sistema de archivos /proc no necesita nunca ser comprobado. /proc es un sistema
de archivos virtual, gestionado directamente por el núcleo.
En la tabla 8.1 de sistemas de archivos y las abreviaturas usadas por mount.

Tabla 8.1. Abreviaturas utilizadas por mount

Second Extended Filesystem ext2 sistema de archivos mas común en Linux


Extended Filesystem ext Reemplazado por ext2.
MS-DOS Filesystem msdos Utilizado para acceder a ficheros MS-DOS.
MS-Windows vfat Como MS-DOS, con soporte para nombres largos
UMSDOS Filesystem umsdos Utilizado para instalar Linux en una partición
MS-DOS.
ISO 9660 Filesystem iso9660 Formato utilizado por muchos CD-ROMs.
/proc Filesystem proc Suministra información de proceso para ps, etc.
Network File System NFS sistema de archivos en Red.
Xenix Filesystem xenix sistema de archivos de Xenix.
System V Filesystem sysv Variantes del System V para el x86
Coherent Filesystem coherent Acceso a ficheros de Coherent.
HPFS Filesystem hpfs Acceso en lectura a particiones HPFS
(DoubleSpace).
Minix Filesystem Minix sistema de archivos Minix original; no utilizado.

152 Capítulo 8. Gestión del Sistema de Archivos


Capítulo 9. Gestión de software

Una tarea de importancia que realiza el administrador del sistema es instalar nuevo soft-
ware y actualizar el ya instalado. Los formatos tradicionales en los que nos vamos a encon-
trar prácticamente todo el software disponible para Linux son:

a) Empaquetados con tar y posiblemente comprimidos con gzip.


b) En el que usa la distribución Esware: rpm, que se está convirtiendo en standard por
su potencia y facilidad de uso.

Por razones de respeto histórico veremos en primer lugar la pareja formada por tar y
gzip.

El empaquetador universal: tar

El comando tar es utilizado normalmente para archivar ficheros. El concepto de archivar


ficheros « o «empaquetar» no es otro que guardar en un único fichero una lista de varios
ficheros, o el contenido de todo un directorio (o varios directorios).
El formato del comando tar es

tar <opciones> <fichero1> <fichero2>...<ficheroN>

Donde <opciones> es la lista de opciones y <fichero1> hasta <ficheroN> es la lista de


ficheros a añadir o extraer del archivo. Se puede usar para directorios completos.
Por ejemplo, el comando:

[Crispin@Globus /Crispin]$ tar cvf archivo.tar /etc

empaquetará todos los ficheros de /etc en el fichero tar archivo.tar.

Veamos con detalle esto: c le dice a tar que cree un nuevo fichero de archivo. La opción
v fuerza a tar en el modo verbose, (osea mostrando en pantalla el progreso de la tarea que
realiza, en este caso los nombres de los ficheros según se archivan.)

ESware Linux 153


La opción f le dice a tar que el siguiente argumento archivo.tar es el nombre del archi-
vo a crear. El resto de los argumentos de tar son los nombres de ficheros y directorios a
añadir al archivo.
El comando:

[Crispin@Globus /Crispin]$ tar xvf archivo.tar

extraerá el fichero archivo.tar en el directorio actual.


Una de las ventajas que nos ofrece tar es que respeta la estructura de directorio exis-
tente en el momento de empaquetar, de forma que al desempaquetar se reproducirá como
estaba originalmente.
Por supuesto esto nos obliga a tener cierto cuidado a la hora de desempaquetar.
Primero por que los ficheros antiguos se sobreescriben, aunque puede que sea esto preci-
samente lo que queramos hacer.
Segundo porque la estructura de directorios se mantiene, pero en relación al directorio
desde donde desempaquete el archivo.tar (esto último es importante)
Por ejemplo, digamos que se archivaron los siguientes ficheros:

/etc/fstab, /etc/inittab y /etc/passwd.

Si se uso el comando

[Crispin@Globus /Crispin]$ tar cvf archivo.tar /etc/fstab /etc/inittab /etc/passwd

el nombre de directorio /etc se añadió al principio de cada nombre de fichero. Para


poder extraer
los ficheros en la localización inicial, se necesitara utilizar los siguientes comandos:

[Crispin@Globus /Crispin]$ cd /
[Crispin@Globus /Crispin]$ tar xvf archivo.tar

Puesto que los ficheros se extraen con el nombre de camino almacenado en el fichero
de archivo.
Sin embargo, si se archivaron los ficheros con los comandos:

[Crispin@Globus /Crispin]$ cd /etc


[Crispin@Globus /Crispin]$ tar cvf fstab inittab passwd

Los nombres de directorio no se salvaron en el fichero de archivo. Por esto se necesita-


ra hacer cd /etc antes de extraer los ficheros. Como se puede ver, el como haya sido crea-
do un fichero tar marca una gran diferencia en como se extrae.

154 Capítulo 9. Gestión de Software


Se puede usar el comando

[Crispin@Globus /Crispin]$ tar tvf archivo.tar

La t le indica a tar que deseas un «test» del contenido del fichero antes de desempa-
quetarlo. De esta forma se puede ver que directorio se utilizo como origen de los nombres
de los ficheros, y se puede extraer el archivo desde la localización que necesitemos.

Comprimiendo: gzip

Ya podemos empaquetar y hacer copias de seguridad con tar. Desgraciadamente uno de


los problemas de prácticamente todos los sistemas informáticos es el espacio de almace-
namiento. No importa lo grandes que sean nuestros discos duros: siempre acaban llenan-
dose. Una de las soluciones es la compresión por software de los datos almacenados. Y tar,
por defecto, no comprime.
La herramienta clásica para comprimir es compress, pero por motivos de eficiencia ha
sido desplazada en los últimos tiempos por gzip. Ademas gzip entiende perfectamente el
formato de compress.
El programa gzip reduce el tamaño de los ficheros dados mediante el algoritmo de
compresión de Lempel-Ziv (LZ77).
Normalmente, el fichero a comprimir se reemplaza por otro con la extensión.gz, man-
teniéndose los mismos permisos, propietarios y tiempos de modificación. Si no se da nin-
gún fichero, o si un nombre de fichero es «-», se lee de la entrada estándar, que se compri-
me y se manda el resultado a la salida estándar.
La cantidad de compresión obtenida depende del tamaño de la entrada y de la distri-
bución de subcadenas de caracteres comunes. Típicamente, texto o código fuente se redu-
ce en un porcentaje del 60 al 70%. Un fichero ya comprimido, como la mayoría de archi-
vos gráficos (gif, jpg), difícilmente reducirán su tamaño.
Podemos decirle a gzip el nivel de compresión que esperamos que use, en una escala
de 1 a 9, siendo el 9 la máxima compresión que puede aplicar el programa. Tenga en cuen-
ta que más compresión también significa mayor tiempo de procesamiento.
El comando:

[Crispin@Globus /Crispin]$ gzip -9 archivo.tar

comprimirá archivo.tar y le cambiará el nombre: archivo.tar.gz, que es la versión


comprimida del fichero. La opción -9 le dice a gzip que utilice el mayor factor de com-
presión.
Para descomprimir usaremos:

ESware Linux 155


[Crispin@Globus /Crispin]$ gzip -d archivo.tar.gz

En esta ocasión archivo.tar.gz será reemplazado por archivo.tar.


El comando gunzip puede ser utilizado también para descomprimir un fichero com-
primido con gzip. Es equivalentemente a gzip -d.

Los ficheros comprimidos con compress terminan en la extensión.Z. Por ejemplo, archi-
vo.tar.Z es la aversión comprimida con compress de archivo.tar, mientras que
archivo.tar.gz es la versión comprimida con gzip. La ventaja es que gunzip sabe también
como tratar los ficheros comprimidos con compress.
Manejando el conjunto formado por tar y gzip podremos instalar el software que venga
empaquetado de esta manera y ademas realizar de forma sencilla nuestras copias de segu-
ridad
Por ejemplo, para archivar un grupo de ficheros y comprimir el resultado, se pueden
utilizar los comandos:

[Crispin@Globus /Crispin]$ tar cvf archivo.tar /etc


[Crispin@Globus /Crispin]$ gzip -9 archivo.tar

El resultado será archivo.tar.gz. Para desempaquetar este fichero, se usan los comandos
contrarios:

[Crispin@Globus /Crispin]$ gunzip archivo.tar.gz


[Crispin@Globus /Crispin]$ tar xvf archivo.tar

Recuerde asegurarse siempre de que esta en el directorio correcto antes de desempa-


quetar un fichero tar.
El comando tar también incluye la opción z para comprimir/descomprimir automáti-
camente los ficheros al vuelo, utilizando el algoritmo de compresión de gzip.
En este caso, el comando

[Crispin@Globus /Crispin]$ tar cvfz archivo.tar.gz /etc

es equivalente a

[Crispin@Globus /Crispin]$ tar cvf archivo.tar /etc


[Crispin@Globus /Crispin]$ gzip archivo.tar

Igual que el comando

[Crispin@Globus /Crispin]$ tar xvfz archivo.tar.Z

156 Capítulo 9. Gestión de Software


se puede utilizar en vez de

[Crispin@Globus /Crispin]$ uncompress archivo.tar.Z


[Crispin@Globus /Crispin]$ tar xvf archivo.tar

tar, gzip y unos disquetes

tar es perfectamente utilizable para la realización de copias de seguridad y una opción


potente de tar es la posibilidad de trabajar con múltiple volúmenes. Lo que quiere decir
que si optamos por guardar los datos en simples disquetes, en el momento que el primer
disco está lleno, tar se para y pide el siguiente «volumen» (disquete).
El comando:

[Crispin@Globus /Crispin]$ tar cvfzM /dev/fd0 /etc

hará una copia de seguridad de /etc utilizando el disquete /dev/fd0. La opción M de


tar es la que permite que la copia de seguridad sea copia multi-volumen.
Para recuperar el contenido del disquete usaremos el comando:

[Crispin@Globus /Crispin]$ tar xvfzM /dev/fd0

Este método puede ser utilizado también si se tiene una unidad de cinta (/dev/rmt0)
conectada al sistema.
El otro formato habitual en que encontraremos paquetes de software es el desarrollado
por la empresa Red Hat: rpm. Señoras, señores quitense el sombrero, pues vamos a ver el
manejo y uso de Red Hat Package Manager.

rpm

Rpm es un sistema es empaquetamiento que se está convirtiendo en un estándar de hecho


en el mundo Linux por las ventajas que supone sobre otros modelos de empaquetamien-
to y gestión de las instalaciones. Además se distribuye bajo los términos de la GPL (General
Public License).
Proporciona al usuario final una serie de facilidades que hacen el mantenimiento del
sistema mas sencillo de gestionar ya que mantiene una base de datos de los paquetes ins-
talados y de sus archivos, lo que permite realizar consultas y verificaciones del sistema.
Otra ventaja es que al actualizar software, los archivos de configuración se respetan de
manera que no sea necesario volver a realizar los ajustes específicos que ya tuviera defini-
dos, o si no fuera posible, realiza una copia de seguridad de los mismos.

ESware Linux 157


Trabajar con rpm

rpm tiene cinco modos de trabajo:

• instalación
• desinstalación
• actualización
• consulta
• verificación

Instalación

Esto es un típico paquete rpm:

remoza-1.0-1.i386.rpm

Normalmente se nombran normalmente utilizando el nombre del paquete (remoza),


versión (1.0), desarrollo (1), y arquitectura (i386). Asegurese de elegir la arquitectura ade-
cuada para su sistema !
Para instalar un paquete:

[Crispin@Globus /Crispin]$ rpm -ivh remoza-1.0-1.i386.rpm


remoza ####################################

El parámetro i es el utilizado para la instalación. Los otros dos son opcionales, pero úti-
les. El modo verbose, con v aporta información extra y la h (hash) imprime esas marcas de
progreso (#) que nos dicen que algo está ocurriendo.
Siempre podemos hacer una prueba de lo que ocurrirá, sin llegar a instalar, usando la
opción: —test. La instalación de paquetes es sencilla, pero pueden ocurrir algunos errores:

• Si intentas instalar un paquete que ya está instalado:

[Crispin@Globus /Crispin]$ rpm -ivh remoza-1.0-1.i386.rpm


remoza package remoza-1.0-1 is already installed
error: remoza-1.0-1.i386.rpm cannot be installed

Para forzar la instalación usaremos: —replacepkgs

• Si intenta instalar un paquete que contiene un archivo que ha sido ya instalado por
algún otro paquete:

158 Capítulo 9. Gestión de Software


# rpm -ivh remoza-1.0-1.i386.rpm
remoza /usr/bin/remoza conflicts with file from mim-1.0-1
error: remoza-1.0-1.i386.rpm cannot be installed

Para hacer que rpm ignore el error, use —replacefiles

• Si intenta instalar un paquete para el cual existe una dependencia no satisfecha

Los paquetes rpm pueden “depender” de otros paquetes, lo cual significa que requie-
ren que otros paquetes estén instalados en el sistema para que funcionen. En este caso el
error será:

[Crispin@Globus /Crispin]$ rpm -ivh mim-1.0-1.i386.rpm


failed dependencies: remoza is needed by mim-1.0-1

La mejor forma de arreglar este error es instalar los paquetes requeridos. Se puede for-
zar la instalación usando —nodeps, pero sea consciente que si un paquete necesita a otro
para funcionar, debe satisfacer las dependencias.

Desinstalación

Desinstalar un paquete es tan sencillo como instalarlo, rpm garantiza la limpieza del
procedimiento y que se desintalarán todos los ficheros, no importa donde estén insta-
lados:

[Crispin@Globus /Crispin]$ rpm -e remoza

En la desinstalación se usa el nombre remoza para el paquete, no el nombre del paque-


te original remoza-1.0-1.i386.rpm.

Un error habitual es el de «romper» las dependencias al desinstalar un paquete si algún


otro paquete instalado depende del que está intentando borrar. Por ejemplo:

[Crispin@Globus /Crispin]$ rpm -e remoza


removing these packages would break dependencies:
remoza is needed by mim-1.0-1

Para hacer que rpm no realice la comprobación de dependencias y desinstale el paque-


te de todas maneras: —nodeps. De nuevo recuerde que las dependencias no resueltas,
generan un error en la ejecución del programa en cuestión.

ESware Linux 159


Actualización

Actualizar un paquete como instalar un paquete con la salvedad de que rpm desinstala
automáticamente cualquier versión antigua del paquete.

[Crispin@Globus /Crispin]$ rpm -Uvh remoza-2.0-1.i386.rpm


remoza ####################################

Comentamos anteriormente que en la actualización se mantienen los ficheros de confi-


guración. Esto es cierto siempre que sea posible para rpm. Si el formato del archivo ha
sufrido tantos cambios que no es compatible con el antiguo, rpm hace una copia de segu-
ridad del fichero antiguo.
Veremos un mensaje como:

saving /etc/remoza.conf as /etc/remoza.conf.rpmsave

En este caso será necesario resolver las diferencias entre los dos archivos «a mano» para
asegurarse de que su sistema continúa funcionando de acuerdo con sus necesidades.
Los errores del modo instalación se pueden replicar aquí: dependencias no resueltas o
paquetes ya instalados. Ademas sí intenta actualizar un paquete con una versión más anti-
gua que la instalada, también se genera un error:

[Crispin@Globus /Crispin]$ rpm -Uvh remoza-1.0-1.i386.rpm


remoza package remoza-2.0-1 (which is newer) is already installed
error: remoza-1.0-1.i386.rpm cannot be installed

Si necesita actualizar de cualquier manera: —oldpackage

Consulta

Otra de las grandes característica s del sistema rpm es el mantenimiento de una base de
datos de todo lo instalado, lo que permite interrogar al sistema para obtener determinada
información sobre los paquetes que tenemos instalados, qué ficheros contenían estos
paquetes, donde se encuentran ubicados, que tipo de documentación aportaban o cuales
son los ficheros de configuración. Cualquiera que lea esto y se haya «pegado» alguna vez
con instalaciones de software verá rápidamente las posibilidades de este mecanismo.
Consultar la base de datos de paquetes instalados tampoco es complicado: lo conse-
guimos con la opción rpm -q.
La forma más sencilla de usarlo es: rpm -q remoza
lo que imprimirá el nombre, versión y número de desarrollo del paquete instalado remoza:

160 Capítulo 9. Gestión de Software


[Crispin@Globus /Crispin]$ rpm -q remoza
remoza-2.0-1

No parece mucho ¿verdad?. Combinando -q con otros parámetros, extraeremos más


información.

Para consultar todos los paquetes instalados utilice -a

[Crispin@Globus /Crispin]$ rpm -qa

Mostrará en pantalla una (larga) lista con los nombres de los paquetes.

Para consultar el paquete al que pertenece un fichero concreto: -f

[Crispin@Globus /Crispin]$ rpm -qf /bin/ls


fileutils-4.0-21
[Crispin@Globus /Crispin]$

Suponga que tiene un paquete y quiere tener una descripción de su contenido: utilice
entonces -i.

[Crispin@Globus /Crispin]$ rpm -qi fileutils


Name: fileutils Relocations: (not relocateable)
Version: 4.0 Vendor: Red Hat, Inc.
Release: 21 Build Date: mié 08 mar 2000 02:42:54 CET
Install date: mar 18 abr 2000 18:32:12 CEST Build Host: porky.devel.redhat.com
Group: Aplicaciones/Ficheros Source RPM: fileutils-4.0-21.src.rpm
Size: 1608922 License: GPL
Packager: Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary: Utilidades de gestión de los ficheros realizados por GNU

Description:

El paquete fileutils contiene varias utilidades de gestión de los ficheros realizados por
la GNU. En este paquete encontrará: chgrp (cambia el grupo de un fichero), chown (cam-
bia el propietario del grupo) chmod (cambia los permisos de un fichero), cp (copia los
ficheros), dd (copia y convierte los ficheros), df (visualiza el uso del disco), dir (proporcio-
na una lista de los ficheros), dircolors (proporciona la coloración de los ficheros al coman-
do ls), du (visualiza el uso del disco), install (copia ficheros y inicializa los permisos), ln
(crea los link), ls (enumera el contenido de un directorio), mkdir (crea directorios), mkfifo
(crea FIFOs, que son pipe), mknod (crea ficheros especiales), mv (renombra los ficheros),
rm (cancela los ficheros), rmdir (cancela los directorios vacios), sync (descarga los buffers

ESware Linux 161


en el disco), touch (cambia el tiempo de impresión de los ficheros), y vdir (visualialización
en si del contenido de un directorio).
Ah!, que interesante. Ahora veamos un listado de los ficheros que contiene: -l

[Crispin@Globus /Crispin]$ rpm -ql fileutils


/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/dd
/bin/df
/bin/ln
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mv
/bin/rm
/bin/rmdir
/bin/sync
/bin/touch
......

El listado continua, esto es solo una muestra.

Si los archivos que buscamos son los de documentación, utilice -d

[Crispin@Globus /Crispin]$ rpm -qd fileutils


/usr/doc/fileutils-4.0/README
/usr/doc/fileutils-4.0/THANKS
/usr/doc/fileutils-4.0/TODO
/usr/info/fileutils.info.gz
/usr/man/man1/chgrp.1.gz
/usr/man/man1/chmod.1.gz
/usr/man/man1/chown.1.gz
/usr/man/man1/cp.1.gz
/usr/man/man1/dd.1.gz
/usr/man/man1/df.1.gz
....

de nuevo el listado continua.......


Y si queremos saber cuales son de configuración, utilice -c.

162 Capítulo 9. Gestión de Software


[Crispin@Globus /Crispin]$ rpm -qc fileutils
/etc/DIR_COLORS
/etc/profile.d/colorls.csh
/etc/profile.d/colorls.sh

Todas las opciones que presenten listas de archivos, admiten el uso de -v para obtener
la salida en el mismo formato que ls -l.

Verificación

Verificar un paquete es comprobar la integridad del mismo, osea si tenemos en el sistema


actualmente lo mismo que se instaló en su día y si está como se supone que debería estar.
Entre otras cosas, se compara el tamaño, chequeo MD5, permisos, tipo, usuario y grupo
de cada archivo.
Para verificar un paquete: rpm -V remoza
Si el paquete está correcto, la salida es: nada. No hay cambios, osea que no hay nada
que mostrar.
En el caso de encontrar diferencias muestra en pantalla una palabra de ocho caracteres,
uno por cada prueba que realiza. Un punto equivale a que la comparación es correcta. Una
letra indica un cambio en esa comparación concreta.
Los chequeos que hace son:

• Tamaño del archivo: S


• Enlace simbólico: L
• Fecha del archivo: T
• Dispositivo distinto: D
• Usuario distinto: U
• Grupo distinto: G
• Modo (permisos) distinto: M
• MD5 modificado: 5

Por ejemplo:

[Crispin@Globus /Crispin]$ rpm -Va


S.5....T c /etc/exports
S.5....T c /etc/hosts.allow
S.5....T c /etc/hosts.deny
S.5....T c /etc/printcap
S.5....T c /etc/profile
missing /etc/securetty

ESware Linux 163


S.5....T c /etc/services
......G. /usr/X11R6/lib/X11
S.5....T c /etc/localtime
.......T c /etc/nsswitch.conf
S.5....T c /etc/info-dir

y sigue....

Esto indica los ficheros que han sufrido algún cambio, como se puede apreciar, la
mayoría son ficheros de configuración, que es lógico modificar, un fichero missing (desa-
parecido), etc. Es una buena manera de localizar errores del sistema, o motivos de com-
portamientos erráticos de algunos programas. Dependiendo de estos datos se procederá a
reinstalar o eliminar el paquete dañado.

La opción «verificar» admite las mismas combinaciones que la opción «comparar»


Para comprobar el estado de un archivo en particular:

[Crispin@Globus /Crispin]$ rpm -Vf /bin/ls

Para verificar un paquete instalado con su correspondiente paquete rpm:

[Crispin@Globus /Crispin]$ rpm -Vp remoza-1.0-1.i386.rpm

Esto puede ser útil si sospecha que su base de datos de paquetes rpm esta corrupta.

rpm es una herramienta muy útil tanto para manejar el sistema como para diagnosti-
car y solucionar problemas.

Por supuesto existen las correspondientes aplicaciones desarrolladas para trabajar con
rpm desde el entorno gráfico X11. Un ejemplo es kpackage, desarrollado por KDE.
Las funciones que implementa son prácticamente las mismas, con la ventaja añadi-
da de la facilidad de manejo, (aunque ya se ha visto que desde línea de comandos no
existe ninguna dificultad) y las desventajas de ser más lento al ocupar más recursos del
sistema y no se tiene tanta potencia a la hora de realizar consultas complejas a la base
de datos de rpm. Como siempre, la decisión del modo de trabajo: a gusto del consu-
midor.

Para finalizar con rpm

Para localizar ficheros que afectan a la gestión de las base de datos de rpm tendremos que
mirar en /ovar/lib/rpm y en /usr/lib/rpm.
Listado de /ovar/lib/rpm:

164 Capítulo 9. Gestión de Software


Figura 9-1. kpackage en funcionamiento

conflictsindex.rpm groupindex.rpm packages.rpm requiredby.rpm


fileindex.rpm nameindex.rpm providesindex.rpm triggerindex.rpm

packages.rpm es el que contiene la base de datos de los programas que tenemos insta-
lados en el sistema. La integridad de este fichero es importante para el correcto funciona-
miento de rpm.

De el contenido de /usr/lib/rpm, cabe destacar dos ficheros de configuración, rpmopt


y rpmrc. La configuración actual se puede ver ejecutando:

[Crispin@Globus /Crispin]$ rpm —showrc

ESware Linux 165


Capítulo 10. Arranque del sistema

Otra tarea que de la que se hace cargo el administrador es arrancar y detener el sistema,
controlando los servicios que se inician. ESware Linux utiliza el proceso de arranque init
de Sys V; init es el primer proceso que se ejecuta en el sistema, es el más importante, del
que dependen el resto de procesos del sistema.

El proceso init

El núcleo ejecuta init al arrancar; Este programa, ahora como proceso, cargará los sub-pro-
cesos necesarios para la puesta en marcha del sistema. Esto incluye un concepto impor-
tante: el nivel de ejecución (runlevel) de los procesos.
Los niveles de ejecución determinan los servicios que tendremos disponibles en cada
uno de ellos. Es una forma de tener diferentes modos de trabajo, cada uno de ellos con
características bien definidas, en función del tipo de tarea a que estén orientados.
Existen ocho niveles de ejecución, que están numerados del cero al seis, más otro deno-
minado con la letra «S» (tiene un alias con la letra «s», que realmente es igual a el nº 1).
Los niveles de ejecución de ejecución que manejaremos y una descripción de para qué
están definidos se puede ver en la siguiente tabla:

Tabla 10.1. Niveles de ejecución

Nivel de ejecución 0 Detener el sistema.


Nivel de ejecución 1 Modo mono usuario, sin soporte de red.
Nivel de ejecución 2 Modo multiusuario, sin soporte de red.
Nivel de ejecución 3 Modo multiusuario completo
Nivel de ejecución 4 Sin uso. Recomendado para pruebas.
Nivel de ejecución 5 Modo multiusuario completo en entorno gráfico.
Nivel de ejecución 6 Reiniciar el sistema.

ESware Linux 167


Init necesita un fichero de configuración para saber exactamente lo que tiene que hacer.
Este fichero es /etc/inittab y contiene información sobre el nivel a ejecutar por defecto,
previsión sobre lo que hacer ante determinadas situaciones, describe qué procesos se ini-
cian en la carga y durante la operación normal.
Las entradas del fichero /etc/inittab tienen el siguiente formato: (Como es habitual
líneas que comienzan con `#’ se ignoran.)

id:niveles_ejecución:acción:proceso
• id: Una secuencia única de 1 a 4 caracteres que identifican la entrada de inittab
• niveles_ejecución: Lista de niveles de ejecución para los que se llevarán a cabo las
acciones definidas a continuación en la línea.
• acción: La acción se llevará a cabo.
• proceso: El proceso a ejecutar.

Para que una línea sirva para varios niveles de ejecución, el campo niveles_ejecución
tiene incluirlos. Por ejemplo, 135 indica que el proceso se iniciará en los niveles 1, 3 y 5.
Cuando se cambia de un nivel de ejecución a otro, los procesos en ejecución que no
estén definidos en el nuevo nivel se matan.
Las acciones que podemos definir, más habitualmente, en el campo acción son:

initdefault: Especifica el nivel de ejecución por defecto al arrancar el sistema. El campo


proceso se ignora.
Respawn: El proceso se reiniciará cuando termine.
once: El proceso se ejecutará una sola vez cuando se entre en el nivel de ejecución espe-
cificado.
wait: El proceso se iniciará una vez cuando se entre en el nivel de ejecución e init espe-
rará a su terminación.
boot: El proceso se ejecutará durante el arranque del sistema. El campo niveles_ejecu-
ción se ignora.
bootwait: El proceso se ejecutará durante el arranque del sistema, mientras init espera
su terminación. El campo niveles_ejección se ignora.
sysinit: El proceso se ejecutará durante el arranque del sistema, antes que cualquier
entrada boot o bootwait. El campo niveles_ejecución se ignora.
powerwait: El proceso se ejecutará si init recibe una señal SIGPWR, que indica algún
problema con la alimentación eléctrica. Init esperará que el proceso termine.
powerfail: Como powerwait, excepto que init no espera a que trmine el proceso.
powerokwait: El proceso se ejecutará si init recibe la señal SIGPWR, con la condición
de que haya un fichero llamado /etc/powerstatus que contenga la palabra OK. Esto
significa que se ha restablecido la alimentación eléctrica.
ctrlaltdel: Especifica qué proceso se ejecutará al pulsar la combinación de teclas
[Ctrl+Alt+Supr]. Normalmente, reiniciar la máquina.

168 Capítulo 10. Arranque del sistema


El fichero /etc/inittab de mi máquina es el siguiente:

#
# inittab Este fichero describe como arrancará el sistema el proceso INIT
# en cada nivel de ejecución.
#
# Autor: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#

# Nivel de ejecución por defecto. Los niveles que usa Esware Linux son:
# 0 - Detener. (NO ponga initdefault a 0 !)
# 1 - Mono Usuario
# 2 - Multiusuario, sin NFS (Es igual que 3, si no dispone de red.)
# 3 - Multiusuario, con soporte de red.
# 4 - Sin uso.
# 5 - X11, entorno gráfico.
# 6 - Reiniciar. (NO ponga initdefault a 6 !)
#
#
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Cosas a hacer en cada Run-Level


ud::once:/sbin/update

# Al pulsar [Ctrl+Alt+Supr]
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# Cuando la SAI informe de una caída de tensión, dispone de varios minutos antes
# de que el sistema se apague. Se han programado 2 minutos.
# Esto solo funcionará, si tiene una SAI conectada y funcionando correctamente.

ESware Linux 169


pf::powerfail:/sbin/shutdown -f -h +2 «Fallo Eléctrico; El sistema se apagará en 2 minu-
tos»

# Si vuelve la alimentación eléctrica antes de que el sistema se apague, se cancelará.


pr:12345:powerokwait:/sbin/shutdown -c «Alimentación correcta; Sigan trabajando»

# Ejecuta « getty» en run-levels


1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Ejecuta» xdm» en run-level 5


x:5:respawn:/etc/X11/prefdm -nodaemon

Fichero /etc/inittab

Uno de los scripts más importantes en el arranque del sistema es /etc/rc.d/rc.sysinit.


Es el primer script que init encuentra y ejecuta. En él están definidas funciones como:

Inicio y activación del espacio de intercambio. (swap)


Configuración de la red.
Especificación de variables del sistema.
Comprobación y montaje de los sistemas de archivos.
Inicialización de puertos serie.
Carga los módulos del kernel.
Establecimiento de cuotas de usuarios.
Ajuste del reloj del sistema.

El último script en ejecutarse es /etc/rc.d/rc.local. En este fichero podremos poner ini-


cializaciones especificas del sistema, aunque su propósito inicial es controlar los servicios
de red.

Directorios directamente implicados

El directorio rc.d es de vital importancia para el arranque del sistema. Tiene una estructu-
ra bien definida ya que existe un directorio para cada nivel de ejecución, identificado con

170 Capítulo 10. Arranque del sistema


el mismo número que el nivel, y en cada uno de estos directorios se indican qué servicios
se iniciarán o detendrán al entrar en ese nivel de ejecución. En la figura se ve el árbol del
directorio /etc/rc.d.

Figura 10 -1. Directorio /etc/rc.d

El directorio init.d contiene los scripts que lanzarán o detendrán los servicios que ten-
gamos disponibles en nuestro equipo. La normalmente es suficiente invocar al servicio por
su nombre y pasarle uno de los siguientes argumentos: start, stop, status, restart o reload.
Los directorios numerados para cada run-level contienen enlaces simbólicos que apun-
tan a los scripts del directorio init.d. Veamos un muestra, esto es parte del directorio rc3.d:

lrwxrwxrwx 1 root root 17 jun 20 17:47 K92anacron ->../init.d/anacron


lrwxrwxrwx 1 root root 18 jun 20 17:47 K92ipchains ->../init.d/ipchains
lrwxrwxrwx 1 root root 18 jun 20 17:47 K95reconfig ->../init.d/reconfig
lrwxrwxrwx 1 root root 14 jun 20 17:47 K96irda ->../init.d/irda
lrwxrwxrwx 1 root root 16 jun 20 17:47 K96pcmcia ->../init.d/pcmcia
lrwxrwxrwx 1 root root 15 abr 18 18:42 K98mysql ->../init.d/mysql
lrwxrwxrwx 1 root root 23 abr 26 13:41 K99webmin_1->/etc/rc.d/init.d/webmin
lrwxrwxrwx 1 root root 17 jun 20 17:47 S10network ->../init.d/network
lrwxrwxrwx 1 root root 16 jun 20 17:47 S20random ->../init.d/random
lrwxrwxrwx 1 root root 16 jun 20 17:47 S30syslog ->../init.d/syslog
lrwxrwxrwx 1 root root 13 jun 20 17:47 S40atd ->../init.d/atd
lrwxrwxrwx 1 root root 15 jun 20 17:47 S40crond ->../init.d/crond
lrwxrwxrwx 1 root root 14 jun 20 17:47 S50inet ->../init.d/inet
lrwxrwxrwx 1 root root 13 jun 20 17:47 S60lpd ->../init.d/lpd

Observemos con atención como se llaman los enlaces, cada uno de ellos tiene el nom-
bre del script al que están asociados. Curiosamente unos empiezan con una «K» y otros con

ESware Linux 171


una «S». Precisamente este detalle es el que define si el servicio se inicia, («S» de start) o si
se detiene («K» de kill). El número que lucen es simplemente una facilidad para ordenar y
que no tiene mayor relevancia.
Lo realmente ventajoso de este sistema es que, en primer lugar, no se repiten los scripts
en cada directorio de run-level, si no que permanecen en un único lugar bien definido, el
directorio init.d, y en segundo lugar, la modificación a realizar si lanzamos un servicio o
no, en un run-level determinado, es tan sencilla como cambiar el nombre del enlace a el
servicio en cuestión.
Si queremos que se inicie bastará con asegurarse de que su nombre empieza por una
«S» y en caso contrario, osea que en ese nivel de ejecución no se ofrezca el servicio, pon-
dremos el nombre empezando por una «K». Así de sencillo.
Vuelva a mirar el fichero /etc/inittab de más arriba. Hay una línea para cada nivel de
ejecución que tiene como proceso «rc» con los números de los run-levels como parámetro.
El script rc se encarga de reinicializar el sistema en un nivel de ejecución distinto.
Otra ventaja es el control que tenemos sobre los servicios del sistema. Independiente
del estado en el que estén, los podemos lanzar, detener, reiniciar, etc. sobre la marcha, sin
necesidad de reiniciar la máquina, ni nada parecido.

El comando init

Podemos ejecutar init desde línea de comandos con alguno de los siguientes argumentos:

0, 1, 2, 3, 4, 5, 6: Para cambiar al nivel de ejecución especificado.


Q, q: Si queremos que init relea el fichero /etc/inittab.
S, s: Entra en modo monousuario.
U, u: Reejecuta init respetando el estado actual. No se relee el fichero /etc/inittab.

Formas de arrancar

El kernel finaliza su carga lanzando el proceso init, pero antes de eso alguien tiene que
decirle a su máquina cosas como donde está ese kernel o, si tiene más de un sistema ope-
rativo, cual debe arrancar en cada momento. Esta tarea es la que realiza normalmente un
gestor de arranque.
El gestor de arranque que proporciona Esware Linux es LILO (Linux Loader). El más uti-
lizado en el mundo Linux.
Lilo es verdaderamente flexible y potente, permitiendonos configurar el arranque de
nuestro PC a medida, con gran cantidad de opciones y, lo que es mejor, gran facilidad de
manejo. Pero, ¡ojo!, es un software que interviene directamente en un proceso importante: el

172 Capítulo 10. Arranque del sistema


inicio del ordenador, por lo que un mal uso puede dejarnos en la primera pantalla. Lo que
viene a continuación nos ayudará a entender como funciona y como manejarlo de forma que
no tengamos un inmenso dolor de cabeza después de una manipulación inadecuada.

Encendiendo el ordenador

Cuando se pulsa el botón de encendido del ordenador, se pone en funcionamiento la BIOS


(acrónimo de Basic Input-Output System) del sistema, que ejecuta una serie de rutinas pre-
establecidas, unos chequeos de hardware y termina leyendo el primer sector del disco
duro. Este sector se llama Master Boot Record (MBR) y es de especial importancia, ya que
contiene información sobre el disco, como la tabla de particiones y un pequeño programa
que la BIOS ejecuta en el arranque.
Este programa lee la tabla de particiones y sus atributos para saber cual está activa, lee
el primer sector de dicha partición (Boot Sector, o sector de arranque) y ejecuta cualquier
código que se encuentre en él. Este código normalmente será el encargado de lanzar el
núcleo del sistema operativo que se encuentra en esa partición.
Resumamos el proceso: La BIOS hace unas cuantas cosas básicas con el hardware, lee
el MBR y le pasa el control, éste a su vez se lo pasa al Boot Sector iniciando el núcleo del
S.O. que hace el resto hasta la presentación del prompt (o el entorno gráfico), esperando las
órdenes del usuario.
Un gestor de arranque va a interferir en esta encantadora relación permitiendonos
direccionar el control del sistema hacia diferentes núcleos de distintos sistema operativos
que tengamos en el sistema. Aunque únicamente tengamos Linux en nuestra máquina,
esto es una operación interesante ya que, como veremos en breve, es posible tener más de
un núcleo utilizable con características diferentes y necesitaremos un método para selec-
cionar con cual de ellos arrancamos.

Linux Loader: LILO

Si instaló Esware Linux debería tener ya Lilo en alguna parte de su disco duro. Hay una
pantalla del proceso de instalación donde se configura básicamente el gestor de arranque.
Lilo se puede instalar en dos sitios, en el MBR, con lo que tendrá un arranque controlado
por Lilo, o en el Boot Sector de la partición Linux, lo que supone que depende de otro ges-
tor de arranque que le permita acceder allí.
Lo más normal, y lo que le recomiendo, es la primera opción, el MBR. Lilo pondrá algo
de código ejecutable en el MBR y como resultado cuando encienda el ordenador verá el
prompt de Lilo esperando a que le diga qué sistema quiere lanzar. Para ver la lista de sis-
temas que están configurados en Lilo pulse el tabulador ([Tab]).

ESware Linux 173


Si no escribe nada en el prompt de Lilo, éste esperará un tiempo y arrancará el sistema
por defecto.

Configuración de LILO

Linux Loader tiene un fichero binario (ejecutable) que es el encargado de escribir en el


MBR la información de la configuración que deseemos. Este fichero es /sbin/lilo y la
información que debe grabar en el MBR la lee del fichero de configuración
/etc/lilo.conf.
Un ejemplo de /etc/lilo.conf es el siguiente:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50

image=/boot/vmlinuz-2.2.14-5.0
label=linux
root=/dev/hda8
read-only

other=/dev/hda1
label=dos
table=/dev/hda

Fichero de configuración de lilo, /etc/lilo.conf

Se distinguen dos secciones en el fichero /etc/lilo.conf, una es para esfecificaciones «glo-


bales» (las seis primeras líneas) y en la otra se definen las imágenes. Las «imágenes» son
configuraciones especificas para cada uno de los sistemas que podemos arrancar. Desde
luego, las opciones que se pongan en la sección «global» afectarán a todas las imágenes. El
fichero lilo.conf puede tener hasta 16 imágenes.

La forma de modificar la configuración de LILO es la siguiente:

1. Realizar los cambios en el fichero /etc/lilo.conf


2. Ejecutar /sbin/lilo para que estos cambios se escriban en el MBR. Sin este paso los
cambios que haya realizado ¡no tendrán ningún efecto!

174 Capítulo 10. Arranque del sistema


Opciones de lilo.conf

Opciones Globales
Veamos las opciones más interesantes que podemos utilizar en el fichero /etc/lilo.conf:

boot=dispositivo-de-arranque
Indica el nombre del dispositivo que contiene el sector de arranque.

compact
Intenta agrupar operaciones de lectura en sectores adyacentes en una sola operación.
Esto reduce drásticamente el tiempo de carga y hace que el mapa sea mas pequeño. Se
recomienda usar `compact’ cuando se arranca de un disco flexible.

default=nombre
Indicaremos aquí la imagen especificada para que arranque por omisión. Si se omite
esta entrada, se utilizará la imagen que aparezca en primer lugar en el fichero
/etc/lilo.conf.

delay=décimas-seg
Tiempo (en décimas de segundo) que Lilo esperará antes de lanzar la imagen por defec-
to. Si se omite o si se pone a 0 no habrá tiempo de espera.

timeout=décimas-seg
Si no se aprieta ninguna tecla en el tiempo (en décimas de segundo) especificado, se lanza
automáticamente la primera imagen. Es un límite de tiempo para entradas por teclado.

map=fichero-mapa
Especifica la ubicación del fichero mapa.

message=fichero-mensajes
Puede hacer que aparezca un mensaje antes del prompt de Lilo. Aquí especificaria un
fichero con el texto del mensaje. No puede exceder de 65536 bytes.

Opciones para la Imágenes

Cada imagen empieza con la línea:

image=nombre-de-ruta

en el caso de que la imagen de arranque pertenezca a un núcleo Linux, o con la línea:

ESware Linux 175


other=nombre-de-ruta
para lanzar cualquier otro sistema. En este caso se debe indicar una de estas opcio-
nes:

table=dispositivo
Indica el dispositivo que contiene la tabla de particiones. Lilo no va a enviar informa-
ción de partición al sistema operativo si se omite esta variable.

loader=cargador-cadena
Indica que debe emplearse un cargador en cadena.

unsafe
Indica que lilo no debe acceder al sector de arranque cuando cree el mapa. `unsafe’ y
`table’ son incompatibles.
Las opciones comunes para imágenes Linux y de otros sistemas son:

label=nombre
Nombre para identificar la imagen. Es el que deberemos indicar en el prompt de Lilo.

alias=nombre
Define un segundo nombre (o alias) para la misma imagen.

password=contraseña
Pide contraseña al intentar lanzar la imagen.

restricted
Al poner esta opción, sólo pedirá contraseña si se especifican parámetros en el prompt
de Lilo.

Opciones del núcleo

Para imágenes de núcleos Linux, disponemos además de otras opciones.


read-only

Monta el sistema de ficheros raíz en modo «solo lectura», hasta despues de hacer la
comprobación que realiza en el arranque. Pasado este punto se re-monta ya en modo «lec-
tura escritura»

root=dispositivo-raíz
Especifica el dispositivo que debe ser montado como sistema de ficheros raíz.

176 Capítulo 10. Arranque del sistema


vga=modo
Esta opción especifica el modo de texto VGA que se usará al arrancar el sistema. Son
válidos los siguientes valores:

• normal: modo de texto 80_25.


• extended: modo de texto 80_50.
• ask: pregunta al usuario
• <número>: modo de texto correspondiente al número.

Para obtener una lista de modos disponibles, arranque con vga=ask y pulse [Intro].

El ejecutable /sbin/lilo, tiene ademas numerosas opciones:

–v Muestra más información durante la ejecución.


–q Da una lista de los ficheros en el fichero mapa (/boot/map), que contiene el nombre
y lugar del (de los) núcleo(s) a arrancar. Esta opción muestra los nombres en dicho fichero.
–m fichero-mapa
Emplea el mapa especificado, en lugar del predeterminado.
–C fichero-configuración
Se usa para especificar otro fichero de configuración distinto de /etc/lilo.conf.
–t Test. Realiza una prueba sin escribir realmente un nuevo MBR ni el fichero-mapa.
Puede usarse en combinación con -v para ver lo que Lilo está a punto de hacer.
–s backup_boot_sector
Al escribir el sector de arranque, lilo guarda el contenido previo en unfichero, por omi-
sión /boot/boot.XXXX (donde XXXX depende del dispositivo. Esta opción especifica un
fichero aternativo para guardar el sector de arranque. (Usado con la opción -u, especifica
desde dónde restaurar el sector de arranque.)
–u nombre-dispositivo
Desinstala lilo, simplemente copiando el sector de arranque que previamente salvó.

Si usted está planeando hacer que Linux coexista con otro sistema operativo, verá las
ventajas que aporta el uso de Lilo, pero tenga en cuenta que algunos sistemas operativos
escriben directamente (y sin preguntar) en el MBR para controlar el arranque. Si va a usar
uno de estos, (por ejemplo Windows 95/98), recuerde que instalarlo despues de tener ins-
talado Linux, le hará perder el control del arranque con Lilo ya que será sobreescrito por
esta instalación tan amable.
Esto lo evita instalando Linux en último lugar ya que es mucho más respetuoso y coe-
xiste sin ningún tipo de problema con otros, o en el caso de haber perdido ya el contenido
del MBR, sencillamente arranque con el disco de inicio (¿lo hizo durante la instalación,
verdad?), y cuando entre en el sistema como root, vuelva a ejecutar /sbin/lilo. Asunto
resuelto.

ESware Linux 177


Capítulo 11. Compilar el kernel

El núcleo (o kernel, se usarán los dos términos indistintamente) es en realidad lo más


importante del sistema; Es el encargado de interactuar con el hardware de nuestro equipo.
Cuando un usuario ejecuta programas, es el kernel el responsable de manejar la informa-
ción para que el hardware se ponga a trabajar, ya sea comunicarse con la tarjeta de red o
modem, gestionar el tiempo de uso de la CPU por cada programa (multitarea), la admi-
nistración de memoria, etc. Todas estas funciones definen el funcionamiento de la máqui-
na y es muy interesante conocer la posibilidades que nos permiten «afinar» la manera en
que se va a comportar.

Las versiones

El núcleo está en continuo desarrollo y se actualiza con bastante frecuencia, aproximada-


mente cada dos meses, por lo que es imprescindible saber que versión tenemos en nuestro
equipo, que hardware soporta, y si realmente necesitaremos actualizarlo o simplemente
re-compilar el que ya tenemos para optimizar sus prestaciones.
El comando uname -a muestra información de nuestro equipo, entre la cual se encuen-
tra el número de la versión que estamos utilizando.
Los números de versión del núcleo se representa siguiendo un patrón que aporta bas-
tante información, es más o menos así: 2.2.16.
El primer número indica la versión, una nueva versión solo se realiza cuando el kernel
ha experimentado grandes cambios.
El segundo número indica la actualización, a mayor valor, más reciente es el núcleo,
ademas si este número es par, indica que esa versión es estable, (y estable en el núcleo
quiere decir exactamente eso, estable.) Sin embargo un número impar indica que es una
versión de desarrollo y puede ser inestable. No quiere decir que vaya a ir mal necesaria-
mente, pero se recomienda únicamente si se quiere experimentar o sí se necesita soporte
urgente para algún tipo de dispositivo que se incluya en esta versión.
El último número es el de la revisión, indica el nivel de actualización que ha alcanzado
esa versión.

ESware Linux 179


Desde la llegada de la versión 2.x.x se trabaja con dos partes del núcleo diferentes, en
primer lugar tenemos el núcleo en sí, (lo podemos llamar parte monolítica del núcleo) y en
segundo lugar están los módulos.
La parte monolítica del núcleo es la que se carga en cada arranque y está activa en todo
momento, sin embargo los módulos únicamente se activan cuando se requiere utilizar ese
dispositivo en concreto. Esto significa que podemos tener una serie de dispositivos sopor-
tados, pero que no están cargados en memoria durante todo el tiempo, si no que se incor-
poran cuando se hace una llamada a ese hardware.
Por ejemplo, suponga que tiene en su equipo una tarjeta de sonido, pero no la utiliza
demasiadas veces, si compila el núcleo con el soporte para su tarjeta de sonido como
módulo, el núcleo resultante será más pequeño, ocupará menos espacio en memoria, pero
cuando lance una aplicación que necesite usar la tarjeta de sonido, el módulo se incorpo-
rará y realizará su tarea correctamente. Después de un tiempo de inactividad, el módulo
será descargado automáticamente.
Tenga en cuenta el uso de módulos en todas las opciones crea que pueden ayudarle a
optimizar el núcleo, y por consiguiente el rendimiento del sistema. Pero preste también
atención a determinadas opciones que obligatoriamente deberán ir en la parte monolítica,
como puede ser el soporte del sistema de archivos ext2fs, que se requiere desde al momen-
to de arrancar.

El código fuente

Para compilar el núcleo necesariamente debe tener en el sistema el código fuente. En el


caso de no haberlo instalado, hagalo desde el CD-Rom del sistema o descargelo del sitio
oficial del núcleo:

http://www.kernel.org

Normalmente las fuentes se instalan en el directorio /usr/scr/linux. Si va a actualizar


y quiere mantener el código anterior, mantenga cada versión en directorios diferentes (por
ejemplo: /usr/src/2.2.16 para la versión anterior y /usr/src/2.4.0 para la nueva) y sim-
plemente haga un enlace simbólico del directorio que tenga el código que desee compilar
al directorio /usr/src/linux.
Una vez instalado podemos ver un conjunto de directorios con todo el código necesa-
rio para hacer un nuevo núcleo «a medida», incluye abundante información en el directo-
rio /usr/scr/linux/Documentation, no es mala idea dar un repaso a su contenido. Por
ejemplo encontraremos en el fichero Changes una lista del software mínimo necesario para
la correcta ejecución de ese kernel (esto es importante), además de pequeñas instrucciones
concretas referentes a cualquier problema que pueda aparecer.

180 Capítulo 11. Compilar el Kernel


Preparándose para compilar

El proceso en sí es bastante sencillo, hay una serie de comandos que se repetirán cada vez
que compilemos. Esta parte es puramente mecánica y la única complicación es elegir
correctamente entre la gran cantidad de opciones de hardware disponibles.
Si es la primera vez que compila, la recomendación es: NO SE ASUSTE. Tenga este libro
a mano, papel y lápiz, puede ser interesante anotar las opciones que le parecieron conflic-
tivas para repasarlas posteriormente, (recuerde que serán muchos menús, con muchas
opciones) y tiempo, hágalo cuando tenga tiempo, las primeras veces debería leer cada
menú e incluso las ayudas, después los recorrerá más rápidamente, aparte del tiempo que
lleva la compilación en sí.

Primer paso: configurar el núcleo

Esta es la parte complicada: elegir «que» va a componer nuestro nuevo núcleo. Aquí selec-
cionaremos que se cargará como módulo y que en la parte monolítica. Existen tres modos
de hacer esta tarea, la primera, más peliaguda y tediosa es en modo texto, la segunda es
en formato «menús», por los que iremos seleccionando nuestra configuración y la tercera,
en modo gráfico, más agradable pero requiere el conjunto TCL/TK (es un lenguaje de pro-
gramación en entorno gráfico.)
Cualquiera de estas tres opciones son equivalentes en lo que referente al resultado, la
diferencia está en el interface de usuario. Siempre nos deberemos situar en el directorio
/usr/src/linux para lanzar el programa de configuración que elija.
La orden:

make config

lanzará el programa en modo texto. No es recomendable, por lo menos las primeras


veces que intente la compilación, más que nada por el formato que usa. Le irá preguntan-
do una a una por todas las opciones de la compilación y como ya se ha comentado son bas-
tantes. La cosa acaba agotando.
Más cómoda es la orden make menuconfig.

Veremos un menú mucho más manejable que el anterior.


La opción gráfica la veremos ejecutando (desde una sesión X) la orden make xconfig
El resultado será algo parecido a lo mostrado en la Figura 11.1.

ESware Linux 181


Figura 11-1. Menú gráfico de opciones de compilación.

Recuerde que estas ordenes deben ejecutarse desde el directorio /usr/src/linux y si se


decide por la configuración en modo gráfico, lo más practico es abrir un terminal (p.ej.:
xterm, konsole, etc.) desde tu escritorio, cambiar al directorio de las fuentes (cd
/usr/src/linux) y ejecutar la orden make xconfig.

Recorrer los menús

Como se puede ver en la figura, la primera pantalla es el menú principal, desde este reco-
rreremos todas las opciones de cada submenú, decidiendo si se incluyen o no en el núcleo
y en que modo lo hacen.
Se accede a cada submenú haciendo click con el botón izquierdo del ratón sobre la
opción deseada y desde cada submenú podemos pasar al siguiente o volver al principal.
Es buena idea recorrerlos todos ordenadamente (empezando por el principio), así nos ase-
guramos de no dejar una opción sin revisar.
Cuando tengamos más experiencia, lo usual es ir directamente a las partes que desea-
mos modificar.
Dentro de cada submenú marcaremos No para no incluir esa opción, Si para incluirla
en la parte monolítica o M para que se cargue como módulo. Si la opción M aparece apa-
gada significa que ese dispositivo no admite ser cargado como módulo, hay que optar por
incluirlo o no.

182 Capítulo 11. Compilar el Kernel


Se encontrará en alguna (o en muchas...) ocasión un dispositivo u opciones que no sabe
exactamente para que sirven. Recuerde la primera premisa: NO SE ASUSTE. En la parte
derecha hay un botón al que podremos recurrir. Pone: Ayuda e incluye una pequeña des-
cripción y recomendaciones generales del tipo: «...si no está seguro, marque «Si» en esta
opción...», cosa que se agradece.

Figura 11-2. Ayuda en menú de opción de módulos.

Cada opción que seleccione para ser compilada en la parte monolítica hará un núcleo
un poco más grande, exigiendo así más memoria, de manera que sea cuidadoso.
Al acabar la configuración vemos cuatro botones de opción más. Nos permiten guar-
dar la configuración seleccionada, cosa que tendremos que hacer para compilar, no
guardar y salir del programa de configuración, podremos también guardar la informa-
ción de esta configuración en un fichero y cargar una configuración desde un fichero.
Esto último es interesante ya que si por algún motivo cometemos un error en la compi-
lación y es necesario rectificar un paso, no será necesario pasar por todas las opciones,
si no que, cargando el fichero guardado, podremos realizar cambios únicamente en la
zona afectada.
Observará también que hay opciones que dependen de que otras estén seleccionadas,
por ejemplo, no seleccionar Soporte SCSI implica desactivar automáticamente todas las
opciones de ese menú y del siguiente: Controladores SCSI de bajo nivel, téngalo también
en cuenta.

ESware Linux 183


Algo de orientación

No vamos a ver aquí todas las opciones de todos los menús, la velocidad de cambio
del núcleo deja unas opciones obsoletas de una versión a otra y aparecen opciones nue-
vas, por lo tanto, no tiene sentido empeñarse en conocer en profundidad absoluta-
mente todas las opciones, salvo si el desarrollo del sistema es su actividad, claro. Aquí
prima más el conocimiento del sistema, la experiencia con los ordenadores y la capa-
cidad de investigación, ya que todo, lo nuevo y lo viejo, viene correctamente docu-
mentado. Sin embargo daremos un repaso inicial a los menús más importantes o inte-
resantes.
Veamos el primero de los menús: Opciones de nivel de madurez del código.
En la parte superior aparece el título del menú y debajo de él la lista de opciones. Este
menú sólo tiene una opción, Preguntar por controladores/código incompleto o en desa-
rrollo.
Como puede ver en la Figura 11.3, la opción Módulo está desactivada.
Esta opción concreta no añade o elimina nada del kernel, sino que sirve para decidir si
quiere que le aparezcan opciones que estén aún en desarrollo. Si activa N, las secciones
experimentales del kernel estarán desactivadas automáticamente.

Figura 11-3. Primer menú: ¿Quiere ver las opciones en desarrollo?

Tipo de Procesador y características

Puede seleccionar el tipo de procesador que utiliza su máquina. Esto mejora el rendi-
miento al optimizar el núcleo para un tipo especifico de procesador. Un kernel compilado
para «386» funcionará con todos los tipos de CPU basados en la arquitectura intel386, pero
no conseguirá la rapidez de proceso optima.
También podrá indicar si su máquina usa multiprocesador. (Multiproceso simétrico)

184 Capítulo 11. Compilar el Kernel


Soporte para módulos cargables

Los módulos son partes del kernel que se cargan cuando son necesarios (véase Figura 11.4).
Esto le permite disponer de características que no se utilizan habitualmente, sin necesidad
de consumir memoria durante los periodos en los que no son utilizados. Tendrá que selec-
cionar esta opción, si quiere ser capaz de crear módulos.

Figura 11-4. Haga módulos de lo que pueda.

La siguiente opción, Establecer información de versiones, le permite utilizar módulos


que originalmente fueron compilados con versiones diferentes del kernel, si son compati-
bles. Debería seleccionar esta opción como Si.
La última opción, Cargador de módulos en el núcleo, le permite olvidarse de la carga
manual de los módulos, el núcleo hará todo el trabajo automáticamente.

Ajustes Generales

Este submenú le permite configurar varios elementos cruciales para el kernel (véase Figura
11.5). Repase cuidadosamente las opciones (y las ayudas)

ESware Linux 185


Figura 11-5. Opciones de Ajustes Generales.

186 Capítulo 11. Compilar el Kernel


Si piensa conectar su ordenador a algún tipo de red, ya sea mediante LAN o módem,
necesitará seleccionar Si en la opción Soporte para trabajo en redes. Esta opción determi-
na si se le presentarán otras opciones más adelante y no es una característica por sí misma,
no se puede seleccionar como módulo.
IPC System V o Comunicación entre procesos de System V, es un método por el que dos
programas que se ejecutan al mismo tiempo en un mismo sistema pueden comunicarse
entre ellos, algunos programas no funcionarán si esta opción está desactivada.
En Linux los ficheros ejecutables se conocen como binarios, aquí podemos elegir los
diferentes formatos soportados. El utilizado actualmente es ELF, que está dejando rápida-
mente obsoleto al antiguo formato a.out.

Soporte para Plug and Play

Le permite al núcleo configurar automáticamente algunos dispositivos periféricos.

Dispositivos de Bloques

Este menú presenta las opciones disponibles para el soporte básico de dispositivos IDE,
disqueteras y algunos otros tipos más antiguos (como MFM y RLL). También incluye Raid
(múltiples dispositivos)
Debería seleccionar Si en la opción Soporte de disquetera normal, ya que no podrá
acceder a su disquetera si no lo hace así. Si quiere impedir que los usuarios accedan a los
disquetes, cambie los permisos de /dev/fd0 a 0600, o use las opciones de mount para tal
efecto en el fichero /etc/fstab.
Si tiene discos duros IDE, seleccione la opción Soporte para disco/cdrom/cinta
IDE/MFM/RLL avanzado. Si selecciona No, desactivará todas las opciones del resto del
submenú.
El resto de las opciones IDE definen conjuntos de chip específicos. Está claro que la
selección varía en cada ordenador. Seleccionar S, no hará ningún daño, aunque su kernel
será de mayor tamaño.
Cada controlador comprobará el sistema automáticamente en el momento del arranque
para determinar si debería activarse o no.
El soporte de dispositivo en bucle es útil para montar un archivo como un sistema de
archivos (por ejemplo, para probar una imagen IS09660 antes de grabarla en un CD). Este
«dispositivo en bucle» no tiene nada que ver con el «dispositivo bucle de red», siendo éste
último utilizado para conexiones en red de una máquina a ella misma.
La opción Soporte para disco RAM le permitirle crear sistemas de archivos virtuales en
la memoria de su sistema.

ESware Linux 187


Opciones de trabajo en Red

Este submenú le ofrece gran variedad de posibilidades, desde decidir si habilita el sopor-
te para dispositivos de red hasta activar opciones de cortafuegos o enrutado (véase la
Figura 11.6). Lo primero es tener una idea clara de las características de red que necesita
que soporte su ordenador.
Un ordenador personal de usuario, no requiere grandes complicaciones. Sin embargo
para configurar la máquina como pasarela o proxy, deberá prestar bastante atención a
todas las opciones.

Figura 11-6. ¿Configuración para Cortafuegos o para Encaminador?

188 Capítulo 11. Compilar el Kernel


Una opción que deberá marcar si pretende a conectarse a Internet es la indicada como
Protección frente a ataques SYN, un tipo de ataque de denegación de servicio. No activar-
lo supone que la máquina es vulnerable a este ataque.
Otras posibilidades como realizar enmascaramiento de las direcciones IP de las maqui-
nas de su red, lo que significa que las direcciones IP de todos los puestos quedaran ocul-
tas por la máquina que tenga la conexión a Internet.
También se incluyen opciones para trabajar con protocolos IPX/SPX y AppleTalk, que
deberá activar si en su red hay ordenadores Macintosh y PC basados en Novell.

Soporte SCSI

Para poder utilizar discos o cualquier otro dispositivo SCSI en su sistema, deberá repasar
esta sección y la siguiente: Controladores SCSI de bajo nivel.
La opción Informe Detallado de Errores SCSI hará que los mensajes de error concer-
nientes al hardware SCSI serán más fáciles de comprender si se activa.

Soporte para dispositivos de red

Presenta una lista de los controladores disponibles para conectarse a otros ordenadores, ya
sea por modem o por tarjetas de red (véase Figura 11.7). Soporta tarjetas Ethernet, dispo-
sitivos inalámbricos, fibra óptica conexiones PPP, SLIP, Token Ring, etcétera.
Asignar alias al dispositivo de red para disponer de hosts o dominios virtuales se habi-
litan también desde aquí.

ESware Linux 189


Figura 11-7. Configure su dispositivo de red

190 Capítulo 11. Compilar el Kernel


Soporte para Emisoras de Radioaficionado

Puede conectar su máquina Linux a una emisora de radio. La respuesta a esta pregunta no
afectará directamente al núcleo: responder N únicamente hará que no se le hagan más pre-
guntas acerca de emisoras de radioaficionado.

Soporte para subsistema IRDA

Configure aquí la transmisión sin hilos a través de infrarrojos, muy útil para ordenadores
portátiles y de PDA’s.

Soporte para RDSI

RDSI (Red Digital de Servicios Integrados) es un servicio telefónico completamente digi-


tal. La principal ventaja es la mayor velocidad de transmisión comparado con las cone-
xiones analógicas y que puede transmitir simultáneamente conversaciones de voz y de
datos. Sólo podrá habilitar está opción si posee una tarjeta RDSI y si ha contratado una
línea RDSI con su compañía telefónica.

Soporte para CD-ROM no SCSI, IDE o ATAPI

Seleccione esta opción para soportar unidades de CD-ROM que no sean SCSI, IDE o
ATAPI.

Dispositivos tipo Carácter

Una serie de opciones como habilitar el puerto paralelo para impresoras, uso de termina-
les virtuales, configuración de puertos serie, soporte para ratones que usan puerto PS/2 o
bus. Algunas de las opciones marcadas aquí únicamente sirven para que posteriormente
aparezcan o no otros menús.

Vídeo para Linux

Soporte para captura de audio/vídeo, dispositivos digitalizadores y tarjetas de radio FM.


Hay una serie de herramientas para Vídeo For Linux que están disponibles en:
ftp://ftp.uk.linux.org/pub/linux/video4linux.

Ftape, controlador de cinta

Si tiene una unidad de cinta que está conectada a su controladora de disquetes, deberá
configurarla Algunas unidades de cinta vienen con una controladora de «alta velocidad»
propia, también dará soporte a estas unidades activando esta opción.

ESware Linux 191


Sistemas de ficheros

Linux soporta gran cantidad de sistemas de archivos, facilitando el uso discos de otros sis-
temas sin necesidad de un proceso de conversión. Deberá activar los que va a utilizar,
como pueden ser el sistema de archivos para CD-Rom, iso9660, sin el cual no podrá leer el
contenido de sus CD’s o el sistema de archivos de MS-Dos, por ejemplo. Recuerde que no
puede cargar el sistema Ext2fs como módulo ya que el kernel debe montar el sistema de
archivos raíz durante el arranque.

Figura 11-8. Soporte para diferentes sistemas de ficheros

192 Capítulo 11. Compilar el Kernel


Sistema de ficheros en Red

Si quiere compartir directorios a través de su red puede activar el soporte para NFS
(Network File System), o usar SMB y NCP para compartir ficheros con máquinas que utili-
cen Windows o volúmenes NetWare, respectivamente.

Tipos de partición

Algunos sistemas operativos utilizan sus propios esquemas de tabla de particiones, si


desea que su sistema Linux pueda leer tablas de partición de discos duros estos sistemas,
y por lo tanto, utilizar particiones en esas unidades, deberá activar las opciones corres-
pondientes a este menú.

Soporte para idiomas nativos

Seleccione aquí el juego de caracteres que desea utilizar con su máquina.

Controladores para consola

Este menú le ofrece diferentes opciones para trabajo en modo texto, como pueden ser
selección del modo de vídeo, para sacar mayor partido a su tarjeta gráfica cuando trabaja
en consola o frame buffer.

Sonido

Al activar el soporte para las tarjetas de sonido, podrá seleccionar la tarjeta que tenga ins-
talada en su sistema.
Deberá conocer el modelo de su tarjeta y quizá información sobre la IRQ, DMA y direc-
ción E/S Base.
La información necesaria varía de una tarjeta a otra, consulte el manual que le sumi-
nistró el fabricante.

Control avanzado del núcleo

Esta opción está reservada para usuarios con conocimientos avanzados del funcionamien-
to del núcleo, tendrá mayor control sobre el sistema, incluso ante errores durante la depu-
ración del núcleo (usted podrá vaciar el caché del buffer en disco, reiniciar el sistema inme-
diatamente o recoger información de estado).

ESware Linux 193


Al activar esta opción algunas funciones son llamadas con la intención de provocar su
fallo. La idea es poder comprobar todas las variantes de ejecución posibles para garantizar
la estabilidad del núcleo. El resultado es un kernel menos estable. No active esta opción a
menos que pretenda trabajar en el desarrollo del núcleo.

Últimos consejos

Como ya se ha comentado, las primeras veces que se compila, puede obtener resultados
no esperados, tenga en cuenta que hay opciones que dependen de otras y quizá requiera
varios intentos antes de tener su propio kernel. Creo que esto es lo normal, de manera que
no se desanime.
Recuerde guardar su configuración al terminar y si además lo hace en un fichero apar-
te, podrá recuperarla en ocasiones posteriores, ahorrando tiempo en la siguiente compila-
ción.

Ordenes de compilación

Una vez seleccionadas las opciones de configuración del nuevo kernel, el proceso de com-
pilación es significativamente más sencillo. Dependiendo del sistema que tenga, el tiempo
que tarde en compilar puede variar desde 10 ó 15 minutos en un Pentium II, hasta un poco
más de media hora en un 486.
En primer lugar debe ejecutar (desde el directorio /usr/src/linux):

make dep

esta orden lee el archivo de configuración y genera el árbol de dependencias corres-


pondiente, seleccionando los elementos que serán compilados y los que no. A continuación
debe teclear la orden:

make clean

para eliminar residuos de anteriores compilaciones, para evitar errores entre versiones.
Lo siguiente es el proceso de compilación en si:

make zImage

También se puede emplear, alternativamente, la orden: make bzImage, que creará una ima-
gen del núcleo más comprimida. El tamaño de la imagen es importante ya que no debe supe-
rar los 500 ó 600 kb. Esto es debido a la naturaleza de la arquitectura Intel, el kernel debe ser
capaz de descomprimirse dentro del primer MB de memoria o dará un fallo en el arranque.

194 Capítulo 11. Compilar el Kernel


La ejecución de estas tres ordenes generan una imagen nueva del núcleo en el directorio:

/usr/src/linux/arch/i386/boot/

El nombre de la imagen será: zImage o bzImage dependiendo de la orden utilizada. Lo


siguiente es copiar la imagen al directorio /boot:

cp /usr/src/linux/arch/i386/boot/bzImage /boot

Normalmente las imágenes usan un nombre que comienza con la cadena vmlinuz. Si
quiere seguir este patrón, agregue un identificador propio que le permita distinguir las
diferentes imagenes. Por ejemplo:

cp /usr/src/linux/arch/i386/boot/ bzImage /boot/vmlinuz.2.2.16-test

No elimine imagenes anteriores antes de haber comprobado el funcionamiento correc-


to del nuevo núcleo, mantenerlas no tiene efectos secundarios y le permitirá seguir entran-
do en el sistema en caso de errores graves.
Para tener opción en el arranque de utilizar la nueva imagen es necesario modificar la
información que lilo tiene guardada en el mbr, (repase la parte del arranque del sistema y
lilo, si tiene alguna duda.) Modifique el contenido del fichero /etc/lilo.conf, agregando una
nueva entrada para la nueva imagen. (lo más practico es copiar integra la entrada de la ima-
gen existente y modificar los campos label e image, con los nombres correspondientes. ¡No
elimine la entrada original o no podrá entrar en el sistema en caso de algún fallo!.
Ejemplo de fichero /etc/lilo.conf con la imagen original.

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=10
compact
image=/boot/vmlinuz-2.2.16-5.0 #Esta es la imagen original
label=linux
read-only
root=/dev/hda8

Ejemplo de fichero /etc/lilo.conf con las dos imagenes.

boot=/dev/hda
map=/boot/map
install=/boot/boot.b

ESware Linux 195


prompt
timeout=10
compact
image=/boot/vmlinuz-2.2.16-5.0 #Esta es la imagen original
label=linux
read-only
root=/dev/hda8
image=/boot/vmlinuz-2.2.16-test #Esta es la imagen nueva
label=test
read-only
root=/dev/hda8

Despues de esto es necesario ejecutar /sbin/lilo. No olvide este paso o no se agregará


su imagen al menú de arranque.

Compilar los módulos

Antes de que poder arrancar con el nuevo kernel, necesitará compilar las opciones que con-
figuró como módulo. Sencillamente ejecute la siguiente orden:

make modules

ya solo queda una cosa por hacer, instalar los módulos. Un núcleo nuevo creará sus
propios módulos, mientras que recompilar un kernel modificará los ya existentes, mi con-
sejo es que haga copia de seguridad previamente. Si la compilación falla y los módulos han
sido sustituidos, es posible que pierda funcionalidad. Los módulos se almacenan en
/lib/modules/X.X.X, siendo las X el número de versión del núcleo, en el ejemplo: 2.2.16.
Para asegurarse de que mantiene los módulos originales ejecute:

mv /lib/modules/2.2.16 /lib/modules/2.2.16-originales

Así en caso de necesitar recuperarlos, simplemente volviendo a renombralos volverá a


dejarlo todo como estaba.
Despues de haber hecho la copia de seguridad de los módulos puede ejecutar la orden
para instalar los módulos:

make modules_install

En este momento puede reiniciar el ordenador y en el prompt de Lilo seleccionar el


núcleo nuevo. En caso de error, y si siguio las indicaciones de copias de seguridad, podrá
arrancar con el antiguo y realizar las modificaciones necesarias.

196 Capítulo 11. Compilar el Kernel


Si arranca con el kernel recien compilado, dé un repaso por el sistema para comprobar
que todo funciona como debería, disquetera, lector de CD-Rom, soporte de red, sistemas
de archivos, puertos serie y paralelo, etc. En caso afirmativo, enhorabuena. Lo ha conse-
guido, tiene un núcleo a medida, corriendo sin problemas en su máquina.

ESware Linux 197


Capítulo 12. Linux en Red

Linux incorpora soporte para trabajo en red desde en propio núcleo del sistema. Esta
característica le coloca entre los sistemas operativos más estables, rápidos y seguros en lo
tocante a comunicación entre ordenadores y redes de área local. Tanto si planea implantar
una intranet en un entorno corporativo o simplemente desea crear una pequeña red
domestica, Linux le proporciona un conjunto de herramientas y posibilidades más que
suficientes para llevar a cabo, practicamente todas las soluciones habituales y muchas
otras no tan habituales.
Tambien hemos visto que, dependiendo de la configuración definida en el kernel,
Linux podrá interpretar protocolos propietarios de diversos fabricantes, como puedan ser
Apple, Novell y otros.
Sin embargo los mayores esfuerzos de Linux los desarrolla con el protocolo que se ha
convertido en un estandar de facto en todo el mundo: TCP/IP.

Introducción a TCP/IP

TCP/IP es el nombre de una familia (conjunto) de protocolos que en los últimos años ha
conseguido convertirse en el más utilizado para realizar comunicaciones entre ordenado-
res. De la historia del nacimiento paralelo de TCP/IP e Internet se han escrito innumera-
bles documentos, por lo que aquí nos limitaremos a describir los fundamentos básicos
necesarios para dominar la configuración de una red basada en TCP/IP.
Los protocolos definen una serie de normas que se establecen para lograr la comuni-
cación entre los ordenadores participantes. El objetivo final de la definición ( y el segui-
miento ) de estas normas es que cada uno de los “interlocutores” sepa interpretar lo que
el otro le remite. Es algo así como definir el “lenguaje“ que se va a usar en esa comunica-
ción.
Un ejemplo simple para entender esta idea es comparar la comunicación entre los orde-
nadores con una conversación telefónica. El protocolo sería el idioma utilizado en la conver-
sación. La condición es que para una “conversación” determinada, los dos interlocutores
empleen el mismo “idioma”.

ESware Linux 199


El conjunto de protocolos TCP/IP le debe su nombre a dos de los protocolos más
importantes que contiene: TCP (Transmision Control Protocol o Protocolo de Control de
Transmisiones) e IP (Internet Protocol, Protocolo de Internet), sin embargo hay algunos
más, distribuidos en los diferentes niveles en los que operan.
En una primera aproximación se puede estructurar la torre de protocolos TCP/IP en
cuatro niveles funcionales, como se muestra en la siguiente tabla:

Aplicacion
Transporte
Internet
Físico

Cada nivel está definido para realizar una serie de tareas especificas y suministrar el
resultado de su trabajo al nivel adyacente.
Existe cierta analogia con el Modelo de Referencia de la OSI (Open System
Interconnection), pero al ser TCP/IP anterior en el tiempo no se ajusta exactamente con los
siete niveles definidos por la OSI.

Nivel de aplicación

En el nivel de aplicación se encuentran las aplicaciones disponibles para los usuarios. Es el


nivel superior, controla y coordina las funciones que realizan por los programas (aplicacio-
nes) de usuario.
Dentro del este nivel podemos encontrar aplicaciones como:

• FTP (File Transfer Protocol, Protocolo de transferencia de ficheros.) El método más


rapido a la hora de mover ficheros de una máquina a otra.
• NFS (Network File System, Sistema de ficheros en red.) Se utiliza para tener acceso
a directorios de máquinas remotas, utilizando un sistema de archivo distribuido.
• Telnet (Registro y ejecución remota.) Permite a un usuario acceder a una máquina
remota y actuar exactamente igual que si estuviera sentado frente al segundo orde-
nador, que puede estar realmente separado varios kilometros.
• SMTP (Simple Mail Transfer Protocol, Protocolo de transferencia de correo.)
Utilizado para enviar correo electrónico.
• DNS (Domain Name Service, Servicio de nombres de dominio.) Permite que los usua-
rios se refieran a las máquinas por un nombre en lugar de un número (dirección IP.)
• Kerberos. Protocolo de seguridad, utilizado para validar contraseñas y ciertos esque-
mas de encriptación.

200 Capítulo 12. Linux en Red


• RPC (Remote Procedure Call, Llamadas de procedimiento remoto.) Permite a ciertas
aplicaciones comunicarse con otra máquina.
• POP (Post Office Protocol, Protocolo de oficina de correos.) Encargado de recibir y
distribuir posteriomente el correo electrónico a los usuarios.
• HTTP (Hiper Text Transfer Protocol, Protocolo de transferencia de hipertexto). El uti-
lizado para leer páginas Web.

Por supuesto existen más aplicaciones que operan en este nivel, pero estas deben ser las
más utilizadas. Todas operan siguiendo el esquema cliente-servidor, de manera que en la
comunicación entre dos ordenadores intervienen, por una parte la máquina que ofrece el
servicio, por ejemplo HTTP, que tendrá activo un servidor Web y por la otra parte la
máquina que solicita el servicio a traves de una aplicación cliente, por ejemplo un nave-
gador como pueda ser Netscape.

Nivel de transporte

El nivel de transporte suministra a las aplicaciones servicios de comunicación entre las


máquinas que van a comunicacarse. Para ello se utilizan dos protocolos:
TCP ( Transmision Control Protocol,Protocolo de Control de Transmisiones), que es un
protocolo fiable, ya que permite la recuperación ante datos perdidos, erroneos o duplica-
dos, garantizando la secuencia de entrega. Además esta orientado a conexión, permite
multiplexación, o lo que es igual, que multiples usuarios puedan utilizar una conexión
TCP simultaneamente, empleando el uso de puertos y sockets.
Un puerto es un número que identifica hacia qué aplicación o proceso deben dirigirse
los datos, mientras que un socket contiene un par de números, uno es el puerto a través
del cual la aplicaión se comunica con TCP y el otro identifica la máquina en la que la apli-
cación está corriendo.
UDP (User Datagram Protocol, Protocolo de Datagrama de Usuario), que ofrece un servi-
cio basado en envio de datagramas, no es orientado a conexión, por lo que cada datagrama
debe contener la información de direccionamiento necesaria, y no es fiable ya que no se reci-
be confirmación de los datagramas recibidos, ni se garantiza el orden de entrega, debiendo ser
la aplicación la encargada del control de estas tareas. Igual que TCP, permite multiplexación.

Nivel Internet

Este nivel es responsable de asegurar que la información se transmita correctamente a tra-


vés de la red. Libera al nivel de transporte de la necesidad de conocer los mecanismos de
transmisión de datos. No es fiable ni orientado a conexión. Los protocolos más importan-
tes del nivel Internet son:
IP (Internet Protocol, Protocolo de Internet.) Trabaja con entrega de datagramas que, al
no ser un protocolo fiable, pueden perderse o llegar desordenados o duplicados, debien-
do ser TCP quien se encarge de estas cuestiones.

ESware Linux 201


Este protocolo selecciona la trayectoria que deben seguir los datagramas, realizando si
es necesario fragmentación y reensamblado de la información.
ICMP (Internet Control Message Protocol, Protocolo de Mensajes de Control de
Internet.) El objetivo principal es proporcionar información sobre errores o de control entre
nodos. Normalmente son generados por el software TCP/IP y no por el usuario.
ARP (Address Resolution Protocol, Protocolo de Resolución de Direcciones.) Los adapta-
dores de red tienen un número único que les identifica en la red. Se le conoce como “dirección
física del adaptador”, y es puesto por el fabricante del hardware, de manera que no se repite
en ningún otro adaptador del mundo. De esta manera se identifica a nivel fisico cada puesto
en la red. El protocolo ARP se encarga de convertir las direcciones IP en direcciones físicas.

Nivel Fisico

Es el responsable de la definición de características mecánicas, electricas y funcionales de


la transmisión y recepción de información. Este nivel coincide con el homologo del
Modelo de Referencia de la Osi.
Se refiere al interfaz de red utilizado, de hecho TCP/IP no define ningún protocolo en
este nivel, lo que pone de manifiesto la flexibilidad de TCP/IP.

Arquitectura cliente - servidor

El diseño de los servicios TCP/IP se implementan en dos partes diferenciadas, por un lado
tendremos la máquina que proporciona el servicio, a la que llamaremos “servidor”, que
atenderá las peticiones de otras máquinas que soliciten este servicio y en el otro extremo
de la conexión estarán precisamente estas máquinas que llamaremos “clientes” .
Ejemplos de este módelo pueden ser ordenador que ofrezca ficheros a el resto de orde-
nadores de su red mediante “ftp”. Este ordenador sería el servidor y el resto los clientes.
Sencillamente tendrá activado el servicio ftp y los demás podrán conectarse para utilizar
sus ficheros.
Por supuesto una máquina puede ser servidor y cliente a la vez, suponga la red del ejem-
plo anterior con una variante: todos los puestos tienen activado el servicio ftp. Todos los pues-
tos serán servidores en el momento en que un ordenador solicite sus servicios y clientes al
hacer lo mismo con otros puestos.

Direcciones IP

El método utilizado por TCP/IP para localizar e identificar cada uno de los puestos que
están conectados a una red es mediante la asignación de una dirección IP , que debe ser
única en esa red, y que define tanto el puesto (host) y la red a que pertenece.

202 Capítulo 12. Linux en Red


La dirección IP es un número de 32 bits de longitud, representado habitualmente en
formato decimal,por cuatro grupos de números separados por puntos. Por ejemplo:

192.168.112.125

Consta de dos direcciones lógicas:

< Dirección de red > < Dirección de host >

También puede identificarse en la direcció IP la subred a la que pertenece el puesto:

< Dirección de red > < Dirección de subred > < Dirección de host >

Esta segunda formula surge debido a la limitación en cuanto a números de host que
puede identificar una determinada clase de direcciones IP. Para agregar más puestos que
los soportados por la clase lo se divide la red en redes lógicas más pequeñas: esto es lo se
denomina subred.

Clases de direcciones IP

Existen 5 tipos de formato diferentes para las direcciones IP que las dividen en las siguien-
tes clases:

• Clase A. Dedica 7 bits para direcciones de red, lo que supone un máximo de 27= 128
redes, cada una de las cuales puede tener un máximo de 224= 16.777.216 ordenado-
res, ya que hay 24 bits para las direcciones de host. Esta clase se utiliza cuando se un
número muy elevado de ordenadores; por ejemplo, redes gubernamentales.
• Rango: de 1.0.0.0 a 127.0.0.0
• Clase B. Emplea 14 bits para direcciones de red y 16 bits para direcciones de host. Esto
nos permite un número de 214= 16.536 redes, de un máximo 216= 65.536 hosts por red.
• Rango: de 128.0.0.0 a 191.255.0.0
• Clase C. Tiene 21 bits para direcciones de red y 8 bits para direcciones de host. Esto
nos permite un máximo de 221= 2.097.142 redes de 28= 256 hosts por red.
• Rango: de 192.0.0.0 a 223.255.255.0
• Clase D. Se reservan todas las direcciones para multidestino (multicasting), esto es,
cada mensaje se transmite para todo un grupo especifico de ordenadores.
• Clase E. Esta clase se utiliza con fines experimentales.

Direcciónes reservadas

Las redes de área local tienen un rango de direcciones reservadas que podremos usar siem-

ESware Linux 203


pre en ordenadores que no tengan conexión directa a Internet o a redes que utilicen las
mismas direcciones IP, no se puede tener dos ordenadores con la misma dirección IP
conectados a la misma red. Las direcciones reservadas para LAN en cada clase son:

Clase A, de la 10.0.0.0 a la 10.255.255.255, la máscara a utilizar es 255.0.0.0


Clase B, de la 172.16.0.0 a la 172.31.255.255, la máscara a utilizar es 255.255.0.0
Clase C, de la 192.168.0.0 a la 192.168.255.255, la máscara a utilizar es 255.255.255.0

A su vez están reservadas las direcciones acabadas en cero (el útimo octeto en binario
todo ceros), que define la dirección de red, por ejemplo:

213.220.25.0

Las que acaban en 255 (el útimo octeto en binario todo unos) son direcciónes de difu-
sión, que alcanzan a todos los puestos, como:

213.220.25.255

y por último la dirección de bucle o lazo (loopback) que se refiere siempre a si misma:

127.0.0.1

Subredes

Si su red supera el número de puestos máximo deberá utilizar diferentes máscaras de


subred para implementar las subredes que necesite.
La máscara es un mecanismo compuesto de «ceros» y de «unos» mediante el cual los
«unos» indican la parte de dirección de red y subred y los «ceros» se corresponden con las
direcciones de host.

Por ejemplo:

Un rango de direcciones de Clase C para LAN, podrá contener hasta 254 hosts, (recuer-
de que no puede utilizar ni la que el último octeto es todo ceros, 192.168.0.0 por ser la
dirección de red, ni la que el último octeto es todo unos, 192.168.0.255, por ser la dirección
de difusión), usará un máscara de sub red con el siguiente formato:

255 . 255 . 255 . 0

11111111 11111111 11111111 00000000

204 Capítulo 12. Linux en Red


esta máscara emplea 8 bits a las direcciones de host: 28= 256 hosts .( restando 2 reserva-
das = 254)
Si en nuestra red tenemos 400 hosts necesitariamos emplear una máscara con al menos
9 bits para poder direccionar todos: 29 = 512 host, quedaría de la siguiente manera:

255 . 255 . 255 . 0

11111111 11111111 01111111 00000000

Otro ejemplo:

Suponga que desea dividir una Clase C en 4 redes de 64 puestos. Se necesitarán 6 bits
para representar los 64 hosts (26 = 64 ), entonces la máscara para cada uno de los puestos
sería:

255 . 255 . 254 . 192

11111111 11111111 11111111 11000000

Configuración del Hardware de Red

Antes de poder utilizar un dispositivo de red, son necesarias una serie de funciones
especiales definidas por el núcleo, de manera que si este ha sido recompilado, es nece-
sario asegurarse de que proporciona los controladores necesarios para comunicarse
correctamente con el dispositivo.
El núcleo que proporciona Esware Linux por defecto está compilado con soporte para
la mayoria de dispositivos más comunes, por lo que si mantiene el núcleo original de la
distribución, no deberia tener muchos problemas para que su dispositivo sea correcta-
mente detectado.
El proceso de instalación realiza un chequeo de hardware y en caso de encontrar
algún dispositivo de red, le presenta un pantalla de configuración donde se le pide los
datos relativos a dirección IP del host, máscara de subred y las direcciones del servidor
DNS y de la puerta de enlace.
Si completó los datos de esta pantalla, probablemente tenga su dispositivo de red con-
figurado.
En caso contrario o si agregó el dispositivo despues de la instalación, deberá hacer la
configuración usted mismo.
Veremos los programas y archivos de configuración de red, trabajando con una tarjeta

ESware Linux 205


Ethernet como ejemplo, por ser las más utilizadas actualmente.
Los dispositivos de red se crean de forma dinámica por el controlador de dispositivos
mientras se inicia y localiza el hardware.
Hay nombres estándares para los dispositivos de red en Linux, sustituya n por el
número de dispositivo en el sistema, empezando a contar siempre desde cero, son los
siguientes:

ethn Es el usado para tarjetas de red Ethernet .

pppn Intefaz para dispositivos ppp (point to point protocol, protocolo punto a
punto), son interfaces que se asocian a un línea serie que se ha convertivo a
ppp.

sln Intefaz para dispositivos de línea serie.

trn Intefaz para dispositivos Token Ring.

Un dispositivo que merece especial atención es el dispositivo “loopback”, o de “bucle”.


Funciona como un circuito cerrado donde cada datagrama enviado es automáticamente
devuelto al mismo sistema. El nombre de este dispositivo es lo. Es un dispositivo un tanto
especial, necesario para algunos programas por lo que no se debe inhabilitar en ningún
caso.

Herramientas de configuración.

Disponemos de una serie de comandos y herramientas gráficas para la configuración de


los dispositivos de red, direcciónes IP y tablas de encaminamiento.

Primero: ifconfig

El comando básico es ifconfig, que se utiliza tanto para chequear el estado, configurar la
interfaz, incluyendo la dirección IP, dirección de difusión, mascara de red y si la interfaz
es o no operativa. Se utiliza durante el arranque para configurar aquellos interfaces que se
necesiten. Tras esto, normalmente sólo se necesita para la puesta a punto del sistema.
La sintaxis de ifconfig es la siguiente:

ifconfig interfaz dirección-IP [mascara] opciones dirección-difusión

si se usa sin argumentos, ifconfig mostrará el estado actual de los interfaces activos.
Ejemplo:

206 Capítulo 12. Linux en Red


[root@jcv /root]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:C0:DF:E0:39:6B
inet addr:192.168.13.47 Bcast:192.168.13.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4485 errors:0 dropped:0 overruns:0 frame:0
TX packets:401 errors:0 dropped:0 overruns:0 carrier:0
collisions:19 txqueuelen:100
Interrupt:10 Base address:0xe400

lo Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:603 errors:0 dropped:0 overruns:0 frame:0
TX packets:603 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

[root@jcv /root]#

aquí se pueden ver dos dispositivos: eth0, que el la tarjeta ethernet y lo, el dispositivo
de bucle o lazo, cuya dirección IP es 127.0.0.1. Esta es la forma más sencilla de realizar una
comprobación del estado de los dispositivos.
Si se pasa un sólo argumento de interfaz, muestra sólamente el estado de ese interfaz;
si se da un solo argumento -a, muestra el estado de todos los interfaces, incluso de aque-
llos que no están activos. De otro modo, configura un interfaz.
Los argumentos más comunes de ifconfig son los siguientes:

up Esta opción hace que el interfaz se active.


down Esta opción hace que el interfaz se desactive.
arp Activa el uso del Protocolo de Resolución de Direcciones (ARP) para este
interfaz.
[-] arp Desactiva el uso del protocolo ARP para este interfaz.
promisc Activa promiscuo del interfaz. Seleccionar esto, hará que el interfaz recibá
todos los paquetes de la red.
[-] promisc Desactiva el modo promiscuo del interfaz.
metric N Esta opción establece la métrica de la interfaz. Es una medida de enruta-
miento, a mayor metrica, menos favorable es la ruta.
mtu N Este parámetro establece la Unidad de Transferencia Máxima (MTU) de un
interfaz.
netmask [addr]
Establece la máscara de red IP para un interfaz. Este valor es por defecto el

ESware Linux 207


de la máscara de red normal de clase A, B o C , pero puede configurarse para
cualquier valor.
irq [addr] Establece la línea de interrupción usada por el dispositivo.
io_addr [addr]
Establece la dirección inicial en el espacio de E/S para este dispositivo.
broadcast [addr]
Establece la dirección de emisión del protocolo del interfaz.
[-] pointopoint [addr]
Esta opción activa el modo point-to-point (punto a punto) del interfaz, lo
cual significa que se trata de una unión directa entre dos máquinas, sin nadie
más a la escucha.

El uso de ifconfig para configurar una tajeta de red está restringido al administrador
del sistema (root), un usuario sin privilegios , únicamente puede usarlo para comprobar el
estado.
Por ejemplo, desactivar un dispositivo de red con ifconfig es tan sencillo como ejecu-
tar la siguiente orden:

[root@jcv /root]# ifconfig eth0 down

y para volvera activar el dispositivo:

[root@jcv /root]# ifconfig eth0 up

Una opción muy particular que nos ofrece Linux es la posibilidad de asignar a un dis-
positivo un “alias de red”. Esto consiste simplemente en proporcionar al mismo dispositi-
vo fisico una configuración “virtual”, que le asignará una nueva “identidad” en la red, de
manera que nos permite, por ejemplo disponer diferentes direcciones IP, en e mismo dis-
positivo, para diferentes servicios..
Para asignar un “alias de red” a un dispositivo tambien usaremos el comando ifconfig:

[root@jcv /root]# ifconfig eth0:0 192.168.100.1 netmask 255.255.255.0

fijese que despues del nombre de dispositivo añadimos dos puntos y un número, en
este caso el cero. Este es el número de alias con que será conocido el dispositivo. De mane-
ra que se ha creado el alias eth0:0 para la tarjeta Ethernet eth0.
Al ejecutar ahora ifconfig para comprobar el estado, obtenemos la siguiente salida:

[root@jcv /root]# ifconfig


eth0 Link encap:Ethernet HWaddr 00:C0:DF:E0:39:6B
inet addr:192.168.13.47 Bcast:192.168.13.255 Mask:255.255.255.0

208 Capítulo 12. Linux en Red


UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xd800
eth0:0 Link encap:Ethernet HWaddr 00:C0:DF:E0:39:6B
inet addr:192.168.100.2 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0xd800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

[root@jcv /root]#

dispondremos de dos direcciones IP con un única terjeta de red, las dos perfectamente
operativas.
Para que la creación de alias de red se realice automáticamente debe añadir el coman-
do que usó para activar el alias al script /etc/init.d/network.

Segundo: route

El comando route nos permite consultar y manejar la tabla de encaminamiento (tam-


bien leerá enrutamiento). El objetivo de esta tabla ( piense en tabla como equivalente a una
“lista”) es informar al núcleo que hacer con cada paquete que deba salir del equipo, que
dispositivo deberá usar y si utiliza una “puerta de enlace” (gateway) o lo envia directa-
mente a su destino.
La sintaxis de route es la siguiente:

route [opciones] [comando [parametros]]

ejecutardo sin argumentos, route muestra la configuración actual de la tabla de rutas:

[root@jcv /root]# route


Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 * 255.255.255.0 U 0 0 0 eth0

ESware Linux 209


192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
[root@jcv /root] #
al haber declarado un alias de red, obtenemos dos líneas asignadas al mismo dispositi-
vo, eth0, una para cada diracción de red.
La salida de route presenta siete columnas:

1. Destino, indica hacia donde se van a enviar los paquetes. El nombre especial default
indica la puerta de enlace por defecto.
2. Gateway, indica la dirección o el nombre de la puerta de enlace a traves de la cual se
envian los paquetes. Un asterisco (*) indica que los paquetes se envian directamen-
te a su destino.
3. Genmask, es la máscara que se aplica al valor Destino a través de esa ruta.
4. Flags, puede contener varios valores:

U (up), ruta disponible


H (host), el destino es un puesto no de trafico. Supone una ruta estática a ese
equipo.
G (gateway), el paquete se envia a un puesto controlador de trafico, no al destino
directamente

5. Metric, indica la distancia al destinatario, la emplean algunos demonios de enruta-


miento. No se usa con los últimos núcleos.
6. Ref, número de referencias a este ruta. (No se usa en el núcleo de Linux)
7. Use, cuenta el número de búsquedas para esta ruta.
8. Iface, indica el dispositivo a través del cual se enviarán los paquetes para esta ruta.

Para modificar las rutas de la tabla de encaminamiento se emplean los comandos add
y del.
La sintaxis en este caso es:

route add|del [-net|-host] <destinatario> [gw <puerta>] [netmask <máscara>] [dev]<dispositivo>

Los comandos add y del se usan respectivamente para añadir o borrar una entrada en
la tabla.
Las opciones -net y -host no son imprescindibles, pero eliminan cualquier posible ambi-
güedad. Indican si el objetivo es una red (-net) o si el objetivo es un ordenador (-host).
La opción gw indica que cualquier paquete IP para la red u ordenador objetivo se enca-
minará a través del gateway especificado
La opción netmask indica la máscara de red de la ruta que se va a añadir.
La opción dev asocia la ruta con el dispositivo que se especifica, de otro modo, el núcleo

210 Capítulo 12. Linux en Red


tratará de determinar el dispositivo por sí mismo (mediante la comprobación de las rutas
y especificaciones de dispositivo existentes). En la mayoría de los casos esta opción no será
necesaria.
Ejemplos:
route add -net 127.0.0.0

Añade la típica entrada de tipo loopback, usando una máscara de red 255.0.0.0 (red
clase A, determinada por la dirección de destino) asociada con el dispositivo «lo» (dicho
dispositivo se debe configurar previamente con ifconfig).
route add -net 192.168.13.0 netmask 255.255.255.0 dev eth0

añade una ruta a la red 192.168.13.x vía «eth0». El modificador de máscara de red de
clase C no resulta realmente necesario en este caso dado que 192.* es una dirección de clase
C. Tambien se podria omitir la opción «dev».

route add default gw 192.168.1.25

Añade una ruta por defecto (que será usada en caso de no poder usar ninguna otra).
Todos los paquetes que sigan esta ruta serán encaminados por medio de «192.168.1.25». El
dispositivo utilizado para esta ruta dependerá de cómo pueda alcanzarse «192.168.1.25»

route add -net 213.220.15.0 netmask 255.255.255.0 gw 192.168.1.25

Este comando añade la red «213.220.15.x» que ha de ser encaminada vía gateway a tra-
vés de la dirección 192.168.1.25.

route add 10.0.0.0 netmask 255.0.0.0 reject

Instala una ruta de rechazo para la red privada «10.x.x.x.»

Tercero: netstat

Una herramienta util donde las haya: netstat. En realidad es un conjunto de herramientas
que nos facilta información sobre la configuración y la actividad de la red. Por ejemplo,
veamos el resultado de la ejecución de netstat -r:

[root@jcv /root]#netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 * 255.255.255.0 U 0 0 0 eth0

ESware Linux 211


192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
[root@jcv /root]#
es en realidad una llamada al comando route que acabamos de ver.
Ejecutado sin argumentos muestra el estado de las conexiones de red. Presenta una lista
de los conectores (sockets) que estén abiertos.
Esta es la operación por defecto: si no se especifica ninguna familia de direcciones, se
mostrarán los conectores activos para todas las familias de direcciones configuradas.
Con la opción -e se puede obtener información adicional (userid, identificador de usua-
rio).
Con el modificador -v se consigue que netstat muestre familias de direcciones conoci-
das no soportadas por el núcleo.
La opción -o muestra información adicional sobre los temporizadores de red.
La opción -a muestra todos los conectores, incluyendo los que se encuentran a la escu-
cha de recibir peticiones en el servidor.
Este es el resultado de ejecutar netstat-a:

[root@jvc /root]# netstat -a


Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 jcv.linux:ftp globus.linux:1040 ESTABLISHED
tcp 0 0 globus.linux:1040 jcv.linux:ftp ESTABLISHED
tcp 0 0 jcv.linux:telnet globus.linux:1039 ESTABLISHED
tcp 0 0 globus.linux:1039 jcv.linux:telnet ESTABLISHED
tcp 26112 0 jcv.linux:16001 globus.linux:1038 ESTABLISHED
tcp 0 34848 globus.linux:1038 jcv.linux:16001 ESTABLISHED
tcp 0 0 jcv.linux:16001 *:* LISTEN
tcp 0 0 *:6000 *:* LISTEN
tcp 0 0 *:10000 *:* LISTEN
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 *:nntp *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
udp 0 0 *:10000 *:*
udp 0 0 *:sunrpc *:*
raw 0 0 *:icmp *:* 7
raw 0 0 *:tcp *:* 7
Active UNIX domain sockets (servers and established)

212 Capítulo 12. Linux en Red


Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 617 @0000002e
unix 1 [ ] STREAM CONNECTED 620 @0000002f
unix 1 [ ] STREAM CONNECTED 1802 @0000004a
unix 1 [ N ] STREAM CONNECTED 1216 @00000039
unix 0 [ ] STREAM CONNECTED 192 @00000018
unix 0 [ ACC ] STREAM LISTENING 470 /dev/printer
unix 1 [ ] STREAM CONNECTED 626 @00000030
unix 0 [ ACC ] STREAM LISTENING 521 /dev/gpmctl
unix 1 [ ] STREAM CONNECTED 293559 @00000053
unix 1 [ ] STREAM CONNECTED 293692 @00000054
unix 0 [ ] DGRAM 294069 [root@jcv /root]#

El significado de la información presentada en pantalla es el siguiente:

Conexiones a Internet activas (TCP, UDP, RAW)

Proto
El protocolo (tcp, udp, raw) usado por el conector.

Recv-Q
La cantidad de bytes no copiados por el programa del usuario conectado a este conector.

Send-Q
La cantidad de bytes no reconocidos por el ordenador remoto.

Local Address
La dirección local (nombre del ordenador local) y número de puerto del conector. A no
ser que se dé la opción -n, se resolverá la dirección del conector según su nombre canóni-
co, y el número de puerto se traduce a su número de servicio correspondiente.

Foreign Address
La dirección remota (nombre del ordenador remoto) y el número de puerto del conec-
tor. Al igual que ocurre con la dirección local:puerto, la opción -n desactiva la resolución
de nombres de servicio y de ordenador.

State
El estado del conector. Dado que no existen estados para el tipo RAW y normalmente
no se usan para el UDP, esta columna puede dejarse en blanco. Normalmente puede ser
uno de los siguientes valores:

ESware Linux 213


ESTABLISHED
El conector tiene una conexión establecida.
SYN_SENT
El conector está tratando de establecer una conexión activamente.

SYN_RECV
Se ha recibido una petición de conexión de la red.

FIN_WAIT1
El conector está cerrado y la conexión se está cerrando.

FIN_WAIT2
La conexión está cerrada y el conector está esperando que el remoto haga lo mismo.

TIME_WAIT
El conector, tras el cierre de la misma, se encuentra todavía esperando para manejar
paquetes en la red.

CLOSED
El conector no está en uso.

CLOSE_WAIT
Habiéndose cerrado el punto remoto, se está esperando a que el conector local se
cierre.

LAST_ACK
El extremo remoto se ha cerrado y se cierra el conector local. Esperando confirmación.

LISTEN El conector está a la escucha de conexiones entrantes. Estos conectores se


muestran solamente si la opción -a,—listening está presente.

CLOSING
Ambos conectores se están cerrando pero aún no han sido enviados todos los datos.

User
El nombre o el identificador de usuario (UID) del propietario del conector.
Conectores de dominio Unix activos.

Proto
El protocolo (normalmente Unix) que usa el conector.

214 Capítulo 12. Linux en Red


RefCnt
El cómputo de referencia (es decir, procesos relacionados con el uso de este conector)
Flags
Se muestran SO_ACCEPTON (mostrada como ACC), SO_WAITDATA (W) o SO_NOS-
PACE (N). SO_ACCECPTON se usa en conectores que no se encuentran en uso si sus proce-
sos correspondientes están a la espera de una petición de conexión. El resto de flags normal-
mente carecen de interés.

Type
Existen varios tipos de acceso a conectores:

SOCK_DGRAM
El conector se usa en modo Datagrama (sin conexión)

SOCK_STREAM
Este es un conector stream (con conexión).

SOCK_RAW
El conector se usa como un conector RAW.

SOCK_RDM
Este otro es capaz de distribuir mensajes de forma fiable.

SOCK_SEQPACKET
Este es un conector para paquetes secuenciales.

SOCK_PACKET
Conector para un interfaz de tipo RAW.

State
Este campo deberá contener una de las palabras siguientes:

FREE El conector no ha sido asignado.

LISTENING
El conector se encuentra a la espera de una petición de conexión. Estos conectores nor-
malmente sólo se muestran si se usa a opción -a,—listening.

CONNECTING
El conector está a punto de establecer una conexión.

ESware Linux 215


CONNECTED
El conector está conectado.
DISCONNECTING
El conector está desconectado.

(empty)
El conector no está conectado a otro.
Path
Muestra la ruta completa (path) de los procesos asociados al conector.

Desde la aparición de la versión 2.2 del núcleo netstat -i ya no muestra las estadísticas
de los interfaces alias de red.

Herramientas gráficas de configuración

A las herramientas básicas que hemos visto hay que añadir un par más que podemos usar
en los ordenadores que dispongan de entorno gráfico. Como es habitual, añaden una
comodidad de manejo que no poseen las ordenes ejecutadas desde línea de comandos,
pero no hay que olvidar que a cambio suelen sacrificar algo de la potencia y flexibilidad
que proporcionan las diversas opciones y argumentos que soportan las ordenes lanzadas
desde el prompt.

216 Capítulo 12. Linux en Red


netcfg

Al ejecutar la orden netcfg, se presenta una primera pantalla como la siguente:

Figura 12-1. Pantalla inicial de netcfg

en este apartado se indican los nombre de la máquina y el dominio a que pertenece,


además de información sobre dominios adicionales y los servidores de nombres que se
deberán usar.

ESware Linux 217


Figura 12-2. Fichero /etc/hosts, desde netcfg

Pulsando con el ratón el boton señalado como Hosts, accedemos al fichero /etc/hosts,
pudiendo añadir entradas, borrar o modificar las existentes.

218 Capítulo 12. Linux en Red


Figura 12-3. Dispositivos de red

La figura 12-3 muestra infirmación del estado de los didpositivos de red. Se puede aña-
dir o editar la propiedades de cada uno de los dispositivos disponibles.

Añadir un dispositivo.

Al pulsar sobre el botón “añadir” se muestra la siguiente pantalla:

ESware Linux 219


Figura 12-4. Selección del tipo de dispositivo

Donde se debe indicar el tipo de dispositivo que deseamos configurar. Se continua la


operación pulsando el botón “Ok”.

Figura 12-5. Parámetros del dispositivo

Se indica a continuación los detalles especificos del dispositivo que estamos añadiendo.
Note que los parámetros serán diferentes dependiendo del tipo de dispositivo de que se trate.

220 Capítulo 12. Linux en Red


Modificar un dispositivo ya existente.

Si se pulsa la opción “Edit” veremos una pantalla como la siguiente:

Figura 12-6. Modificar los parámetros de eth0

Una vez realizados los ajustes necesarios se finaliza la operación pulsando “Done”.

ESware Linux 221


Configuración de rutas

Figura 12-7. Definición de rutas

Las opciones que nos ofrece el comando route, las podemos utilizar desde esta pantalla.

222 Capítulo 12. Linux en Red


netconf

Al ejecutar el comando netconf, accedemos a otro interface gráfico que agrupa un buen
número de herramientas de configuración de todo lo relacionado con la parte de red:

Figura 12-8. Pantalla principal de netconf

La primera opción es “INFORMACIÓN BÁSICA DEL EQUIPO”. Donde podemos ver


una pantalla de configuración, con parámetros ya habituales , a estas alturas.

ESware Linux 223


Figura 12-9. Parámetros del dispositivo.

Se puede apreciar un mayor nivel de detalle en la configuración, como es la selección


del módulo del kernel y las interrupciónes que deseamos que emplee.

Configuración de rutas

Otra de las utilidades incluidas en netconf es la definición de rutas para acceder a otras
redes.

224 Capítulo 12. Linux en Red


Figura 12-10. Configuración de rutas

Por supuesto se puede definir la dirección IP de la pasarela por defecto:

Figura 12-11. dirección IP de la pasarela por defecto

Únicamente necesitará este paso en máquinas que usen este servicio para conectarse a
otras redes.

ESware Linux 225


Figura 12-12. Orden de búsqueda de resolución de nombres

En este apartado se define el orden de búsqueda de los diferentes servicios de resolu-


ción de nombres. Tenga en cuenta que para indicar Nis o DNS , estos deben estar disponi-
bles en la red y necesariamente se debe indicar a la máquina cual es la ubicación de dichos
servicios.
Para que las consultas al fichero /etc/hosts sean correctas, este debe estar configurado
correctamente. Lea el apartad Ficheros de configuración, un poco más adelante , para
saber la forma correcta de trabajar con este fichero.

Alias para dispositivos

Se vio anteriomente la posibilidad de asignar a un dispositivo un “alias de red”, que con-


siste en dotar al mismo dispositivo fisico una configuración “virtual”,proporcionando
diferentes direcciones IP para diferentes servicios.

226 Capítulo 12. Linux en Red


Figura 12-13. Definición de “alias”

Salir de netconf

Por último, la facilidad que nos ofrece netconf, si se han realizado cambios en la configu-
ración es que permite hacerlos cambios activos, reiniciando los servicios pertinentes. Es
equivalente a la ejecución de ordenes como:

/etc/rc.d/init.d/network restart
o
/etc/rc.d/init.d/inet restart

ESware Linux 227


Figura 12-14. Salida de netconf

Ficheros de configuración

A continuación detallaremos una serie de ficheros que afectan de alguna manera al com-
portamiento de nuestra máquina Linux al trabajar en una red.

/etc/hosts
Es una simple base de datos que se utiliza como un sencillo resolvedor de nombres.
Relaciona direcciones IP con nombres de máquinas , de manera que las referencias se pue-
dan realizar indistintamente de una u otra manera.

El formato de este fichero es:

<dirección IP> <nombre de host> <alias>

Ejemplo de un fichero /etc/hosts de una máquina que pertenece a una pequeña red de
área local:

127.0.0.1 localhost.localdomain localhost


192.168.0.10 maquina.linux.edu maquina
192.168.0.11 miguelin.linux.edu miguelin
192.168.0.12 fran.linux.edu fran
192.168.0.13 puesto13.linux.edu puesto13

228 Capítulo 12. Linux en Red


192.168.0.14 jc.linux.edu jc
192.168.0.15 trinijuan.linux.edu trinijuan
192.168.0.17 r2d2.linux.edu adrian
192.168.0.18 ruben.linux.edu ruben

De esta manera, nos podemos referir a una máquina por su nombre (o su alias) y fun-
cionará igual que si lo hacemos por la dirección IP.
Por ejemplo, con este fichero, será igual el comando:

ping 192.168.0.11 que el comando ping miguelin, siendo este último, quizás más facil
de recordar y utlizar.

Normalmente, siempre mantendremos en este fichero la entrada para localhost, la


dirección de lazo, el resto de máquinas que incluyamos aquí, dependerá de diversos fac-
tores, como, por ejemplo, de si en nuestra red disponemos de un Servicio de Nombres de
Dominio (DNS), en cuyo caso es DNS el encargado de resolver los nombres a sus correc-
tas direcciones IP

/etc/sysconfig/network

Este fichero sirve de información a otros ficheros y servicios relacionados con la red.
Un ejemplo de /etc/sysconfig/network:

NETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=jcv.linux.edu
DOMAINNAME=linux.edu
GATEWAY=230.213.45.40
GATEWAYDEV=eth0

/etc/services
Este fichero proporciona una correspondencia entre los nombres de los servicios de red
y sus correspondientes números de puerto y tipos de protocolo asociados. Las aplicacio-
nes de red deberan mirar este fichero para obtener el número de puerto (y protocolo) para
su servicio.
La presencia de una entrada para un servicio en el fichero no significa, necesariamen-
te, que el servicio se está ejecutando actualmente en la máquina.
El formato es bastante simple. Es un fichero de texto en el que cada línea representa una
entrada a la base de datos. Cada entrada comprende tres campos:

nombre puerto/protocolo alias # comentario

ESware Linux 229


El significado de los campos es el siguiente:

nombre
Es el nombre el que el servicio es conocido y buscado. Una sola palabra que represen-
ta el servicio descrito.

puerto/protocolo
Este campo está dividido en dos subcampos. Puerto es es el número de puerto (en deci-
mal) usado por este servicio y protocolo es el tipo de protocolo usado. Los valores habi-
tuales son tcp y udp.

alias
Otros nombres que pueden usarse para referirse a esta entrada de servicio.

Cualquier texto que aparezca en una línea después de un caracter # será ignorado y se
trata como un comentario.
Un ejemplo del fichero /etc/services (incompleto, ya que es bastante largo y no tiene
sentido reproducirlo integramente aquí):

tcpmux 1/tcp # TCP port service multiplexer


echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
# 24 - private
smtp 25/tcp mail
# 26 - unassigned

230 Capítulo 12. Linux en Red


time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp # Remote Mail Checking Protocol
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
mtp 57/tcp # deprecated
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
gopher 70/tcp # Internet Gopher
gopher 70/udp
rje 77/tcp netrjs
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5

Los números de puerto son asignados por la IANA (Internet Assigned Numbers
Authority: Autoridad para la Asignación de Números de Internet), y su política actual es
la de asignar tanto los protocolos TCP y UDP cuando se asigna un número de puerto. Es
por esto que la mayoría de los servicios tienen dos entradas, incluso para los servicios que
son exclusivos de TCP.
Los números de puerto por debajo de 1024 (llamados «puertos bien conocidos», del uso
anglosajón “well know ports”) sólo pueden ser asociados por el superusuario (root.) Esto es
así para que los clientes que se conecten a estos puertos, puedan confiar en que el servicio
que está ejecutándose en el puerto es la implementación estándar y no un servicio falso eje-
cutado por un usuario de la máquina.

/etc/protocols
El fichero /etc/protocols es una base de datos que relaciona números de identificación
de protocolos con sus nombres. Esto lo usan los programadores para especificar protoco-
los por su nombre en sus programas y también por programas para mostrar nombres en
lugar de números en sus mensajes de salida. Estos números se incluyen en el campo de
protocolo de cualquier cabecera IP.

ESware Linux 231


La sintaxis del fichero es:

nombredelprotocolo número alias

La descripción de los campos es la siguiente:

protocolo
Nombre nativo del protocolo. Por ejemplo: ip, tcp o udp.

número
Número oficial para este protocolo tal como irá en la cabecera IP.

alias
alias o nombres alternativos opcionales para este protocolo.

Un ejemplo del fichero /etc/protocols:

ip 0 IP # internet protocol, pseudo protocol number


icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially “IP”)
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # «reliable datagram» protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
ipv6 41 IPv6 # IPv6
ipv6-route 43 IPv6-Route # Routing Header for IPv6
ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6
ipv6-crypt 50 IPv6-Crypt # Encryption Header for IPv6
ipv6-auth 51 IPv6-Auth # Authentication Header for IPv6
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6

232 Capítulo 12. Linux en Red


ipv6-opts 60 IPv6-Opts # Destination Options for IPv6
rspf 73 RSPF # Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation

/etc/host.conf
El fichero /etc/host.conf configura la forma de usar el resolvedor de nombres de Internet,
indicando el orden en que se deben emplear los distintos métodos de búsqueda, ya sea el
fichero /etc/hosts, un servidor DNS o un servidor NIS (Network Informatión Service).
Debe contener una palabra clave de configuración por cada línea, seguida de la infor-
mación de configuración.
Las palabras clave reconocidas son order, trim, multi, nospoof y reorder. Cada palabra
clave se describe a continuación:

order
Especifica cómo se efectuarán las búsquedas de nombres de ordenadores. Debe ir
seguida de uno o más métodos de búsqueda, separados por comas. Métodos válidos son:
bind (si se emplea un servidor DNS), hosts (si se emplea el fichero /etc/hosts) y nis (si se
emplea un servidor NIS).

trim
Esta palabra puede ir repetida. Cada vez debe ir seguida por un solo nombre de domi-
nio, con el punto inicial.
Cuando se dé esta palabra, automáticamente se quitará el nombre del dominio dado
del final de cualquier nombre de ordenador resuelto a través de DNS. trim no afectará a
nombres de ordenador adquiridos mediante NIS ni mediante el fichero /etc/hosts.

multi
Los valores válidos son on y off. Si está como on, se devolverán todas las direcciones
válidas para un ordenador que aparezca en el fichero /etc/hosts, en vez de solamente la
primera. El valor por defecto es off, pues puede provocar una pérdida de rendimiento en
sitios con ficheros /etc/hosts muy grandes.

nospoof
Los valores válidos son on y off. Si está como on, se intentará prevenir los ataques
conocidos como suplantación de nombre de ordenador (“hostname spoofing”.)
El mecanismo es el siguiente: tras efectuar una búsqueda de nombre-dirección de orde-
nador, se efectuará una búsqueda de dirección-nombre (búsqueda inversa). Si los dos
nombres no concuerdan, la petición se considerá erronea. El valor por defecto es off.

ESware Linux 233


alert
Si esta opción está en on y la opción nospoof también está activada, se registrará un men-
saje de error a través de syslog (registros del sistema) en los intentos de acceso rechazados
por nospoof. El valor predeterminado es off.

reorder
Los valores válidos son on y off. Si está como on, se reordenan las consultas de modo
que las locales (o sea, las de la misma subred) se envian primero. El reordenamiento se
hace para todos los métodos de búsqueda. El valor predeterminado es off.
A continuación se muestra un ejemplo del fichero /etc/host.conf:

order hosts,bind
multi on
En el se indica que, en primer lugar se consulte el fichero /etc/hosts y despues el servidor
DNS (recuerde que esto último solo funcionará si en su red existe un servidor DNS válido)

Comportamiento de los servicios de red


Cada uno de los diferentes servicios de red pueden ser lanzados en el sistema en tiempo
de arranque, sencillamente configurando correctamente los scripts rc, como se ha visto
anteriomente.
Sin embargo, en Linux existe un servicio especial desde el cual es posible controlar el
comportamiento de algunos de estos servicio. Se trata del servidor inetd, conocido como
“servidor de servidores” o “ superservidor de internet”. Veamos su funcionamiento.
Inetd debe ejecutarse en el arranque mediante /etc/rc.local. A partir de ese momento per-
manece a la escucha de conexiones en ciertos conector (socket) de internet. Cuando encuen-
tra una conexión en uno de sus conectores, comprueba a qué servicio de conexión corres-
ponde, (mirando el fichero /etc/services) y llama a un programa para atender la solicitud.
Cuando este programa termina, continúa a la escucha en el conector (salvo en algún
caso que se describirá más adelante).
Esencialmente, inetd permite ejecutar un demonio para llamar a otros muchos, redu-
ciendo la carga del sistema.
En ejecución, inetd lee su información de configuración de un fichero de configuración,
que por defecto es /etc/inetd.conf.
Los campos del fichero de configuración deben separarse por espacios o tabuladures y
son de la siguiente forma:

nombre de servicio
tipo de conector
protocolo
wait/nowait[.max]

234 Capítulo 12. Linux en Red


usuario[.grupo]
programa servidor
argumentos del programa servidor

Para especificar un servicio basado en Sun-RPC la entrada debería contener estos campos.

nombre servicio/versión
tipo de conector
rpc/protocolo
wait/nowait[.max]
usuario[.grupo]
programa servidor
argumentos del programa servidor

La entrada nombre de servicio es el nombre de un servicio válido del fichero /etc/ser-


vices. Para servicios “internos”, el nombre de servicio tiene que ser el nombre oficial del
servicio (estoes, la primera entrada de /etc/services).
Cuando se usa para especificar un servicio basado en Sun-RPC, este campo es un nom-
bre de servicio RPC válido del fichero /etc/rpc. la parte a la derecha de “/” es el número de
versión RPC. Esto puede ser simplemente un argumento numérico o un rango de versiones.
El tipo de conector (tipo de socket) debería ser “stream”, “dgram”, “raw”, “rdm”, or
“seqpacket”, dependiendo de si el conector es un flujo, datagrama, en bruto, mensaje
entregado fiable o conector de paquetes secuenciados.
El protocolo tiene que ser un protocolo válido como los dados en /etc/protocols.
Pueden ser ejemplos “tcp” o “udp”. Los servicios basadso en Rpc se especifican con el tipo
de servicio “rpc/tcp” o “rpc/udp”.
La entrada wait/nowait es aplicable a conectores de datagrama sólo (los otros conec-
tores deberían tener una entrada “nowait” es este espacio).
Si un servidor de datagrama conecta a su par, libera el conector, de manera que inetd
puede recibir posteriores mensajes por ese conector, esto se conoce como servidor “multi-
hilo” y entonces deberá usar la entrada “nowait”.
Para los servidores de datagrama que procesa todos los datagramas entrantes por un
conector y al final del proceso lo desconecta, al servidor se conoce como de “hilo simple”
y deber usar una entrada “wait”.
El sufijo opcional “max” (separado de “wait” o “nowait” por un punto) especifica el
máximo numero de instancias del servidor que se pueden activar desde inetd en un inter-
valo de 60 segundos. Cuando se omite “max” toma el valor por defecto de 40.
La entrada usuario debería contener el nombre de usuario bajo el que ejecutará el
servidor. Esto permite que a los servidores se les dé menos permisos que al root. Se
puede especificar un nombre de grupo opcional añadiendo un punto al nombre de usua-
rio seguido por el nombre de grupo.

ESware Linux 235


Esto permite a los servidores ejecutarse con un identificador de grupo(primario) dife-
rente al especificado en el fichero /etc/passwd. Si se especifica un grupo y el usuario no
es root, se asignan los grupos suplementarios asociados con ese usuario.
La entrada programa servidor debería contener la ruta completa del programa que se
ejecutará por inetd cuando encuentre una solicitud en suconector. Si inetd proporciona
este servicio internamente, esta entrada debería ser “internal”.
Los argumentos del programa servidor será como son normalmente los argumentos,
empezando con argv, que es el nombre del programa Si proporciona este servicio interna-
mente, la palabra “internal” debería estar en el lugar de esta entrada.
Inetd proporciona varios servicios “triviales” internamente usandorutinas con él mismo.
“echo”, “discard”, “chargen” (generador decaracteres), “daytime” (fecha-hora en formato
legible), y “time” (fecha-hora formato de máquina, en el formato del número de segundos
desde medianoche de 1 de enero de 1900). Todos estos servicios están basados en tcp.
Se pueden añadir servicios, borrarlos sencillamente modificando el fichero de configu-
ración. Inetd crea el fichero /var/run/inetd.pid que contiene su identificador de proceso.
Para que los cambios realizados en el fichero de configuración se hagan activos es necesa-
rio, que inetd relea dicho fichero. Esto se consigue ejecutando la orden:

kill -HUP < número identificador de proceso>

o tambien:

/etc/rc.d/init.d/inet restart

236 Capítulo 12. Linux en Red


Capítulo 13. Compartir recursos en Red: Samba

Una de las necesidades que ocasionalmete se encuentra un administrador de red es la de


hacer coexistir máquinas con distintos sistemas operativos, y que a pesar de ello sean
capaces de compartir recursos a traves de la red. Un servidor de impresión Linux y un par
de máquinas en las que corre Windows 98 de Microsoft, por ejemplo. O tener acceso a
directorios compartidos de Windows NT desde las estaciones Linux, y viceversa.
Todo esto es posible implementarlo mediante una correcta configuración de un sofwa-
re que tiene disponible en su distribución Esware: Samba.
Samba proporciona a Linux servicios de protocolo Session Message Block (al que lla-
maremos a partir de ahora SMB, y que además es conocido también como NetBIOS o
LanManager), que es el protocolo empleado por los sistemas operativos de Microsoft para
compartir archivos y servicios de impresión. Y lo mejor de todo es que Samba trabaja en
las dos direcciones, lo que significa que tenemos posibilidad de hacer que las máquinas
Linux aparezcan en el Entorno de Red de Windows

Instalación de Samba

Si no lo selecciono durante la instalación, tendrá que recurrir al CD 1 (sistema) de Esware.


Encontrará, en el directorio: /mnt/cdrom/Esware/RPMS/ los siguientes paquetes, necesarios
para empezar a trabajar con Samba.

samba-2.0.6-9.i386.rpm
samba-client-2.0.6-9.i386.rpm
samba-common-2.0.6-9.i386.rpm

La instalación de cualquier paquete basado en rpm no debería suponer ningun proble-


ma, si ha llegado a este punto del libro, de todas formas el comando a ejecutar es:

rpm -ivh <nombre_del_paquete_rpm>

ESware Linux 237


Componentes de Samba
Samba incorpora un variado conjunto de componentes, cada uno de los cuales tiene un
función bien definida, a continuación se describe la tarea principal de los mismos:

smbd
El “demonio” Samba. Es el encargado de proveer servicio a los clientes SMB, como
Windows 95/98 y Windows NT. El fichero de configuración de este demonio es
/etc/smb.conf
snmbd
El “demonio” nmbd proporciona servicio de nombres y navegaciónNetBIOS
ssmbclient
Es un programa cliente (parecido a un ftp), que se usa para acceder desde Linux a
recursos compartidos mediante SMB (como puedan ser directorios o impresoras de
Windows NT)
stestparm
Utilidad que permite chequear el fichero de configuración /etc/smb.conf.
stestprns
Utilidad que permite chequear las impresoras definidas en el fichero /etc/printcap.
ssmbstatus
Herramienta que comprueba y presenta una lista de las conexiones activas en el servi-
dor smbd.
snmblookup
Realiza consultas sobre nombres NetBIOS, relacionandolos con sus direcciones IP,
desde máquinas Linux
smake_smbcodepage
Utilidad que permite crear ficheros de definición de páginas de codigos para el servi-
dor smbd.
ssmbpasswd
Cambia las contraseñas encriptadas SMB de los usuarios en los servidores Samba.

La instalación de Samba, coloca los scripts de inicio del servidor junto a todos los
scripts rc.d
de manera que el arranque y parada del servidor sigue la convención de este sistema.
(Repase la parte de arranque del sistema si no está seguro.)
Por supuesto, esto es modificable y se puede hacer el inicio de Samba desde inetd,
para ello deberá añadir al fichero de configuración de inetd, /etc/inetd.conf las siguien-
tes líneas:

238 Capítulo 13. Compartir recursos en red: Samba


#Servicios SAMBA NetBIOS (para compartir ficheros e impresoras en PC)
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

y despues reiniciar el servidor inetd de la siguente manera:

[root@marmol /root]# /etc/rc.d/init.d/inet restart


Stopping INET services: [ OK ]
Starting INET services: [ OK ]
[root@marmol /root]#

Configuración de Samba

La configuración del servidor Samba se define en un solo fichero, /etc/smb.conf. Aquí


podemos determinar qué recursos del sistema se comparten con las otras máquinas de la
red y las limitaciones y control de acceso que pondremos a estos recursos.
El fichero contiene una serie de secciones, con su nombre entre corchetes, como puede
ser [global]. Dentro de cada sección los parámetros se asignan en modo nombre = valor,
como, por ejemplo workgroup = ESWARE.
Si una línea comienza por un punto y coma (;), indica que es un comentario y no se ten-
drá en cuenta su contenido, al igual que el carácter #, que realiza la misma función. Se usa
el primer carácter para pasar por alto opciones y el segundo para comentarios reales.
Antes de empezar a modificar el fichero de configuración /etc/smb.conf, es buena idea
hacer una copia de seguridad del que trae por defecto, ya que viene con una serie de defi-
niciones básicas que pueden servir claramente de referencia.
Tambien deberá comprobar que el usuario que va a usar en las pruebas entre el cliente
y el servidor, existe en Linux. Añada un usuario si es necesario con el comando adduser y
asignele una contraseña con passwd.
La última comprobación es ver que la red sobre la que trabaja, está disponible para los
equipos. Haga ping entre los ordenadores implicados en las pruebas, no sea que un fallo
de configuración de red le vuelva loco configurando Samba.

Secciones de smb.conf

La sección [global]

Esta sección define parámetros de todo el servidor Samba. Se usarán para definir el com-
portamiento de todos los recursos. Además proporciona valores predeterminados para las
otras secciones:

ESware Linux 239


[global]
# workgroup = Nombre del dominio NT o Grupo de Trabajo
workgroup = ESWARE

workgroup = Especifica el grupo de trabajo. Recomendable el uso de mayúsculas, sin uti-


lizar espacios y no sobrepasar ocho caracteres.

# server string es la descripción del Grupo de Trabajo


server string = Servidor Samba

server string = Una descripción para identificar al servidor desde el programa cliente

# Optción importante para la seguridad. Permite rescringir las


# conexiones a máquinas de la red local.
# En el ejemplo se limita el acceso a dos redes locales de clase C
# y al dispositivo «loopback».
hosts allow = 192.168.1. 192.168.2. 127.

hosts allow = Determina el origen de las redes desde donde se aceptarán conexio-
nes.

# Para cargar automáticamente las impresoras declaradas en


# /etc/printcap

printcap name = /etc/printcap


load printers = yes

Estas líneas habilitan la impresión automáticamente, siempre que la impresora esté


configurada en el sistema.

# Número de caracteres de coincidencia entre mayusculas y minusculas


; password level = 8
; username level = 8

Si tiene problemas con las conexiones a clientes Windows, establezca el valor de pass-
word level = al mayor tamaño de contraseña de su sistema y username level = al nombre
más largo de usuario y quite las marcas de comentario.

# Para usar contraseñas encriptadas


; encrypt passwords = yes
; smb passwd file = /etc/smbpasswd

240 Capítulo 13. Compartir recursos en red: Samba


Encontrará contraseñas encriptadas para clientes Windows que utilicen la versión 95
OSR2 o posteriores, las versiones anteriores empleaban texto plano en las contraseñas.
Si este es su caso, retire las líneas de comentarios y añada al servidor las contraseñas de
los usuarios ejecutando el comando smbpasswd, con la opción -a, de la siguiente manera:

smbpasswd -a marmol

Esto añadirá el usuario marmol, que ya existia en Linux, al archivo de contraseñas encrip-
tadas de Samba.

# Si necesita que Samba trabaje como servidor de


# dominio (logon server) para estaciones de trabajo Windows95
; domain logons = yes

# Si activó lo anterior puede ejecutar un script especifico


# para cada estación de trabajo
; logon script = %m.bat

# O un un script especifico para cada usuario


; logon script = %U.bat

Estas líneas procesan un script individual para cada máquina o usuario que realizen
una conexión y convierte a Samba en un servidor de dominio.

La sección [homes]

La sección [homes] permite a los usuarios remotos acceder a sus respectivos directorios per-
sonales en la máquina Linux.
Esto es, si un usuario se conecta al servidor Samba desde su máquina Windows, lo hará
en su directorio personal. Recuerde que para hacer esto, tiene que ser usuario de la máqui-
na Linux. La sección [homes] es una facilidad para que cada usuario tenga acceso a sus
ficheros, sin tener que añadir una sección explicita en el fichero smb.conf.
Samba comparte dinamicamente el directorio del usuario localizandolo en el fichero de
contraseñas del sistema.

[homes]
comment = Directorios Personales
browseable = no
writable = yes
; preserve case = no

ESware Linux 241


; short preserve case = no
# El tipo “case” por defecto es normalmente “upper” para archivos DOS
; default case = lower
# Atención a “case sensitivity” (distinción entre mayusculas y
# minusculas. Puede hacer que “algo” no funcione.
; case sensitive = no
create mode = 0750

Aclaremos algunas entradas:

comment =
Identificación para los usuarios

browseable =
Indica si el recurso se verá en un navegador tipo Explorador de Windows o Entorno de
Red

writable =
Modo en que se comparte el recurso, en este ejemplo, se permite escritura

preserve case = ; default case = ; case sensitive =


Instrucciones sobre respetar o no la distinción entre mayusculas y minusculas en los
archivos nuevos creados en el servidor. Preste atención a esto porque Linux es case-sen-
sitive, y Windows no.

create mode =
Establece los permisos que tendrán los archivos nuevos creados en el servidor

Compartir una unidad Linux con máquinas Windows

Como se muestra en el fichero smb.conf anterior, compartir una unidad Linux con usua-
rios Windows es fácil. De todas maneras, como todo lo demás con Samba, puedes tener las
cosas MUY controladas. Aquí tiene unos pocos ejemplos:
Para compartir un directorio con todo el mundo, crea una copia de la sección [tmp] aña-
diendo algo como esto al smb.conf:

[public]
comment = Cosas publicas
path = /home/public

242 Capítulo 13. Compartir recursos en red: Samba


public = yes
writable = yes
printable = yes

Para que este directorio lo pueda leer todo el mundo, pero que sólo lo puedan cambiar
gente del grupo ‘laborales’, modifica la entrada de esta manera:

[public]
comment = Cosas publicas
path = /home/public
public = yes
writable = yes
printable = no
write list = @laborales

Compartiendo una unidad Windows con máquinas Linux

Se incluye un programa cliente de SMB para máquinas UNIX con la distribución de


Samba. Provee un interfaz estilo ftp para la línea de comandos. Puedes usar esta utilidad
para transferir ficheros entre un ‘servidor’ Windows y un cliente unix.
Para ver qué recursos están disponibles en un host dado, ejecuta:

/usr/sbin/smbclient -L host

donde ‘host’ es el nombre de la máquina que quieres ‘ver’. Esto devolverá un lista de
nombres de ‘servicios’ —esto es, nombres de unidades o impresoras que puede compartir
contigo—. A menos que el servidor SMB no tenga la seguridad configurada, te pregunta-
rá por una clave. Dale la clave de la cuenta de ‘invitados’ o de tu cuenta personal en esa
máquina.
Por ejemplo:

smbclient -L Noe

La salida de este comando debería ser algo parecido a esto:

Server time is Sat Aug 10 15:58:27 1996


Timezone is UTC+10.0
Password:
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
Server=[Noe] User=[] Workgroup=[WORKGROUP] Domain=[]

ESware Linux 243


Sharename Type Comment
ADMIN$ Disk Remote Admin
publico Disk Publico
C$ Disk Default share
IPC$ IPC Remote IPC
Laser Printer Impresora
print$ Disk Printer Drivers

This machine has a browse list:

Server Comment
Noe Samba 2.0.6p8
Ruth Samba 2.0.6p8
TOLE Samba 2.0.6p8
GILLES Samba 2.0.6p8

La lista muestra otros servidores SMB con recursos para compartir con la red.
Para usar el cliente, ejecuta:

smbclient servicio -U <usuario>

donde ‘servicio’ es una máquina y un recurso compartido. Por ejemplo, si estás inten-
tando entrar en un directorio que ha sido compartido como ‘public’ en una máquina lla-
mada Noe, el servicio debería llamarse /Noe/public
La orden, para esta máquina y este recurso, entonces será:

smbclient /Noe/public -U Mimi

De todas maneras, si se desea emplear la formula de Microsoft de llamar a máquinas


remotas, es decir usar la barra invertida ( \ ), debido a restricciones del shell, necesitará
poner las barras invertidas con secuencias de escape, por lo que al final saldrá algo pare-
cido a esto:

smbclient \\\\Noe\\public -U Mimi

donde ‘Mimi’ es el nombre del usuario.

Entonces aparecerá el ‘prompt’ de smbclient, despues de pedir la contraseña:


Server time is Sat Aug 10 15:58:44 1996
Timezone is UTC+10.0

244 Capítulo 13. Compartir recursos en red: Samba


Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
smb: \>

El comando de smbclient ,’h’, muestra lista de los comandos disponibles del cliente:

smb: \> h
ls dir lcd cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd prompt recurse
translate lowercase print printmode queue
cancel stat quit q exit
newe archive tar blocksize tarmode
setmode help ? !
smb: \>

Si sabe usar el ftp, no existe mucha diferencia con smbclient.

Compartiendo una impresora Linux con máquinas Windows

Para compartir una impresora Linux con máquinas Windows, necesita asegurarse de que
la impresora está preparada para trabajar bajo Linux. Si puede imprimir desde Linux, pre-
parar una ‘compartición’ SMB de la impresora es automático.
Puede añadir la configuración de la impresora a smb.conf:

[global]
printing = bsd
printcap name = /etc/printcap
load printers = yes
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba

[printers]
comment = Todas las impresoras
security = server
path = /var/spool/lpd/lp
browseable = no
printable = yes
public = yes
writable = no
create mode = 0700

ESware Linux 245


[laser]
security = server
path = /var/spool/lpd/lp
printer name = lp
writable = yes
public = yes
printable = yes
print command = lpr -r -h -P %p %s

¡Asegúrese de que el ‘path’ de la impresora (en este caso bajo [laser]) se corresponde
al directorio de ‘spool’ en /etc/printcap!

Compartiendo una impresora Windows con máquinas Linux


Para compartir una impresora en una máquina Windows, debe hacer lo siguiente:

a) Debe tener las entradas adecuadas en /etc/printcap y deben corresponderse a la


estructura de directorios local (el directorio de spool, etc)
b) Debes tener el script /usr/bin/smbprint. Viene con las fuentes de Samba, pero no con
la distribución de ejecutables del Samba.

La forma más facil y comoda es utilizar la herramienta printtool para añadir una impre-
sora, especificando el tipo smb

Figura 13-1. Selección de una impresora usando smb

246 Capítulo 13. Compartir recursos en red: Samba


A continuación debe completar los campos indicando los parámetros necesarios para
que samba sea capaz de encontrar la impresora.

Figura 13-2. Parámetros de configuración

ESware Linux 247


Configurar Samba con Swat

Existe una herramienta de configuración para el servidor samba, que puede ser de gran
auyda por dos motivos principalmente: primero, se trabaja en entorno grafico y usted eso
lo agradece y segundo trabaja via http, lo que nos permite administrar nuestro servidor
con absoluta comodidad remotamente.
La herramienta se llama Swat y la ejecución requiere de un navegador como, por ejem-
plo Netscape:
Para invocar a Swat debe poner lo siguiente en la línea de URL:

http://localhost:901/

y a continuación se le pedirá identificarse con un nombre de usuario y una contraseña


válida.
Demos un repaso por los menús de swat:

Figura 13-3. Pantalla de entrada de Swat

248 Capítulo 13. Compartir recursos en red: Samba


Global

Al hacer click sobre el enlace Global accedemos a la parte de configuración [global] que
estudiamos anteriormente:

Figura 13-4. Sección global

Los apartados deben ser suficientemente familiarres si leyó el correspondiente aparta-


do unas páginas atrás.

ESware Linux 249


Shares

Con esta pantalla podemos agregar o eliminar recursos compartidos ( y sus correspon-
dientes secciones al fichero /etc/smb.conf).

Figura 13-5. Recursos compartidos

250 Capítulo 13. Compartir recursos en red: Samba


Printers

Esta sección presenta la posibilidad de configurar tanto impresoras declaradas en


/etc/printcap como secciones especificas de imresora en el fichero /etc/smb.conf
Igual que con los direcctorios compartidos, se puede agregar, modificarlos parámetros o
eliminar las impresoras deseadas.

Figura 13-6. Impresoras en redes mixtas

ESware Linux 251


Status

Este apartado ofrece información sobre el estado actual del servidor. Tambien offrece la
posibilidad de detener el servicio, lanzarlo de nuevo o la tipica opción “restart”.
Además suministra datos como:

• Conexiones activas, con la dirección IP del cliente, su número de proceso y la posi-


bilidad de desconexión.
• Recursos compartidos activos, con usuario, grupo y el cliente actual.
• Archivos abiertos, con información sobre el modo ( lectura y escritura o solo lectura)

Figura 13-7. Estado actual de Samba

252 Capítulo 13. Compartir recursos en red: Samba


Figura 13-8. Conexiones activas con Samba

Esta imagen muestra una conexión activa desde un cliente llamado cincinaty, que tiene
un IP 192.168.0.5. Más abajo se aprecia el nombre de usuario empleado en la conexión
(root).
Si pulsara sobre el botón marcado con kill, el cliente sería desconectado y recibiría un
mesaje de error como el siguiente:

read_socket_data: recv failure for 4. Error = tuberia rota

y se vería obligado a restablecer la conexión.

ESware Linux 253


View

La sección View muestra un resumen del fichero de configuración /etc/smb.conf. No per-


mite la edición del fichero desde aquí.

Figura 13-9. Fichero/etc/smb.conf resumido

Tambien ofrece la opción de mostrar el fichero integro pulsando el botón “Full view” y
volver al modo resumido con “Normal view”.

254 Capítulo 13. Compartir recursos en red: Samba


Password

En esta última sección se puede definir usuarios validos para utilizar Samba como clien-
tes y además usuarios para las tareas de administración mediante Swat.

Figura 13-10. Modificación y alta de contraseñas para Samba

Las opciones disponibles son:

• Cambiar contraseñas de administración


• Añadir nuevos usuarios
• Desactivar usuarios
• Activar usuarios
• Cambiar la contraseña a los usuarios

ESware Linux 255


Capítulo 14. Webmin.
El configurador web del sistema

1. Instalación de Webmin.
2. Acceso al administrador.
3. Configuración general de Webmin. Carpeta Webmin.
3.1. Ayuda de Webmin.
3.2. Configuración de Webmin.
3.3. Usuarios de Webmin.
4. Configuración básica de nuestro sistema Linux.
4.1. Arranque y parada de procesos.
4.2. Configuración de servicios de arranque.
4.3. Exportación NFS.
4.4. Logs del sistema.
4.5. Instalación de software RPM.
4.6. Procesos en curso.
4.7. Páginas de manual.
4.8. Sistemas de archivos de disco y red.
4.9. Programación de tareas mediante Cron.
4.10. Usuarios y grupos.
5. Configuración de servidores.
5.1. Sendmail.
5.2. FTP anónimo y autentificado.
5.3. Servidor Web Apache.
5.4. Servidor de bases de datos MySQL.
6. Configuración de hardware.
6.1. Configuración de impresoras.
6.2. Configuración del cargador de arranque (LILO).
6.3. Fecha y hora del sistema.
6.4. Particiones de disco locales.
7. Otras utilidades.
7.1. Telnet.
7.2. Administrador de discos.

ESware Linux 257


Instalación de Webmin

Webmin, como bien explica el título del capítulo, es un administrador general del sistema.
El decir general no es nada exagerado debido a que con él podremos administrar funcio-
nes básicas del sistema, como usuarios y grupos; hardware (instalación de impresoras, dis-
positivos de red); servidores (podremos configurar Apache, Sendmail o DNS). Además
incorpora una serie de utilidades, como un terminal en JAVA, u otras que nos harán muy
sencilla la administración y configuración de todo un servidor ESware Linux desde el
navegador y de forma extremadamente sencilla.
ESware Linux instalará Webmin siempre y cuando esta opción sea seleccionada en el
grupo de aplicaciones a instalar. Webmin quedará instalado a falta de algunos parámetros
básicos de configuración, como, el nombre de la máquina en la que se ejecuta, así como el
usuario y contraseña de administración general. Si no modificamos estos parámetros, que-
darán configurados con los valores predefinidos. Dichos valores son:
El nombre de usuario y contraseña quedarán fijados a los de root. Éstos es conve-
niente cambiarlos para que una violación de Webmin no suponga también una total del
sistema.
Se asignará a nuestro equipo el nombre de host por defecto.
El directorio de configuración de Webmin queda asignado a /etc/webmin y el de pro-
gramas a /usr/libexec/webmin.
Con estas nociones generales estamos preparados para acceder a él y revisar posterior-
mente los componentes.

ESware Linux 259


Acceso a Webmin

El acceso a Webmin se hace directamente a través del navegador. Sólo tendremos que indi-
carle la dirección de la máquina donde se encuentra el servidor Webmin. Por defecto, uti-
liza el puerto 10000 para realizar las transacciones, por lo que si Webmin se encuentra en
la máquina local deberemos especificar http://localhost:10000 en la barra de navegación.
Al introducir la dirección adecuada, Webmin responderá con un cuadro de usuario y con-
traseña (véase la Figura 14-1).

Figura 14-1. Acceso a Webmin

Si el servidor estuviese en una ubicación de red, accederíamos a él especificando


http://webmin.esware.com:10000 o http://213.207.12.26:10000.

260 Capítulo 14. Webmin. El configurador web del sistema


Configuración general de Webmin. Carpeta Webmin.

La configuración general de Webmin engloba una búsqueda rápida de temas de ayuda, un


configurador de aspectos generales como control de acceso e idioma, creación de usuarios
de Webmin y un índice de acceso a otros servidores remotos (véase la Figura 14-2).

Figura 14-2. Carpeta Webmin

ESware Linux 261


Ayuda de Webmin

Este módulo permite buscar a través de las páginas de ayuda de todos los módulos de
Webmin instalados. Sólo tiene que introducir la palabra que buscar en el espacio asignado
y seleccionar en qué módulos desea buscar; una vez hecho esto haga clic en el botón
Buscar (véase la Figura 14-3).

Figura 14-3. Ayuda de Webmin

262 Capítulo 14. Webmin. El configurador web del sistema


Configuración de Webmin

Dentro de esta carpeta se engloban aspectos generales de la configuración de Webmin.


Uno de los más importantes es el control de acceso. Con éste podemos limitar el acceso a
nuestro configurador a ciertas direcciones IP. Puesto que se accede a Webmin mediante
web, cualquier equipo situado en la misma red o en internet podría acceder a nuestra con-
figuración de no ser por este módulo, que evita el acceso desde determinadas IP y permi-
te el de otras de forma tan sencilla como especificando dichas IP denegadas o aceptadas
en una determinada casilla (véase la Figura 14-4).
Al mismo tiempo podremos cambiar el puerto en el que Webmin escuchará las peti-
ciones de configuración; por defecto es el 10000.
En esta carpeta encontraremos al mismo tiempo un historial de acceso a Webmin, un
configurador de salida por proxy, un área de cambio de propiedades de la interfaz de usua-
rio, etc. Podremos cambiar el idioma, añadir módulos que aporten nueva funcionalidad, e
incluso, actualizarlo directamente desde Internet.

Figura 14-4. Control de acceso por IP

ESware Linux 263


Cada vez que se añada una nueva funcionalidad a Webmin ésta puede ser incorpora-
da a nuestro administrador con sólo indicar dónde se encuentra. Esta característica es
igualmente útil para los programadores, que podrán incorporar sus nuevos módulos si
mucha dificultad (véase la Figura 14-5).

Figura 14-5. Añadiendo nuevos módulos

264 Capítulo 14. Webmin. El configurador web del sistema


Usuarios de Webmin

Por defecto, Webmin crea un único usuario que podrá administrar todo el sistema (véase
la Figura 14-6). Además de utilizar esta opción, podemos agregar usuarios que adminis-
tren sólo ciertas funcionalidades de Webmin, con lo que evitaremos que usuarios no per-
mitidos accedan a partes del sistema de las que no sean administradores.

Figura 14-6. Usuarios de Webmin

ESware Linux 265


Configuración básica del sistema LINUX

Esta carpeta nos permitirá realizar todas las tareas de administración del sistema (véase la
Figura 14-7).

Figura 14-7. Panel de configuración del sistema

266 Capítulo 14. Webmin. El configurador web del sistema


Arranque y parada de procesos

Pulsando este icono accederá al panel de arranque y parada de procesos. Con él podrá ini-
ciar o detener cualquier servicio de Linux en todos sus niveles de ejecución (véase la
Figura 14-8).

Figura 14-8. Arranque y parada de servicios

ESware Linux 267


Configurador de servicios en arranque

Con él podremos modificar, añadir o borrar los servicios que se arrancan en cada nivel de
ejecución.
En realidad no es más que un configurador del SysV Init (véase la Figura 14-9).

Figura 14-9. Arranque de procesos por nivel de ejecución

268 Capítulo 14. Webmin. El configurador web del sistema


Exportación NFS

Esta herramienta nos va a permitir exportar sistemas de ficheros de red o Network File
Systems.
Con esta utilidad podremos ver las particiones exportadas desde nuestro servidor en
otros PC de la red y utilizar dicha propiedad para aumentar la capacidad de almacena-
miento general de la red.

Historiales o ficheros de LOG del sistema

Cualquiera de los ficheros de log controlados por syslog podrá ser visualizado desde esta
utilidad. Desde el log de correo o maillog al de SAMBA, pasando por los de seguridad del
sistema y servidor web. Ésta es una utilidad que permite al administrador, de forma fácil
y sin tener que acceder por telnet al sistema, localizar posibles errores y accesos no desea-
dos (véase la Figura 14-10).

Figura 14-10. Historiales o ficheros de log del sistema

ESware Linux 269


Instalación de aplicaciones en formato RPM

Podremos ver qué aplicaciones están instaladas en nuestro equipo, desinstalarlas, actuali-
zarlas e instalarlas.
Este módulo nos muestra las aplicaciones ordenadas por grupos y una descripción de
cada una de ellas (véase la Figura 14-11). Al mismo tiempo podremos identificar a qué
paquete pertenece un archivo determinado. Estamos ante una interfaz gráfica sencilla de
acceso al comando RPM.

Figura 14-11. Instalando nuevas aplicaciones

270 Capítulo 14. Webmin. El configurador web del sistema


Procesos en curso

Esta utilidad muestra todos los procesos en curso con sus procesos hijo indentados y mos-
trados bajo su padre (véase la Figura 14-12) . Para cada proceso se muestra el identificador
del proceso, propietario y el comando. Haga clic en PID para que se muestre más infor-
mación acerca del proceso.
Un proceso es simplemente un programa que se está ejecutando bajo su sistema. Su
navegador, gestor de ventanas, ventana de terminales y servidor X son todos procesos con
los que interactúa directamente. Muchos otros procesos son ejecutados en segundo plano
como servidores web y otras tareas del sistema. Se crea un nuevo proceso cada vez que se
teclea un comando como ls o pwd, aunque típicamente estos comandos son de vida corta.
Cada proceso tiene un ID único, llamado ID del proceso o PID. Al ejecutar cada proce-
so en un momento dado, se le asigna un ID diferente; con el tiempo, los PID pueden ser
utilizados.

Figura 14-12. Gestor de procesos

ESware Linux 271


Excepto el proceso inicial (típicamente llamado init) cada uno tiene un proceso padre desde
el cual ha sido creado. Por ejemplo, si ejecuta vi desde el prompt del shell, el proceso padre de
vi será el shell. Un proceso puede tener cualquier número de hijos, pero sólo un padre.
Cada proceso se ejecuta con los permisos de algún usuario y grupo, los cuales se apli-
can cada vez que accede a archivos y directorios. Los usuarios pueden matar solamente los
procesos que les pertenecen con la excepción de root, que puede matar cualquiera.

Páginas del manual

Desde este módulo podremos consultar cualquier página de manual existente en nuestro
sistema.
Tiene una zona de búsqueda con la que podremos localizar la página sin necesidad de
conocer su nombre exacto. Al mismo tiempo, podemos seleccionar la sección del manual
que queremos consultar(véase la Figura 14-13).

Figura 14-13. Acceso a páginas de manual

272 Capítulo 14. Webmin. El configurador web del sistema


Sistemas de archivos de disco y red

Desde este módulo visualizamos los sistemas de archivos presentes en nuestro equipo, ya
estén en uso o no. Además, también aparecen sistemas especiales como los de memoria
virtual, el proc o los pts.
También se pueden montar nuevos sistemas de archivos ya existentes utilizando los
tipos más conocidos (véase la Figura 14-14).

Figura 14-14. Sistemas de archivos

ESware Linux 273


Programación de tareas mediante Cron

Cron nos permite ejecutar tareas programadas en nuestro sistema con un usuario deter-
minado (véase la Figura 14-15). En el modo editar tarea (véase la Figura 14-16) podremos
controlar todos los aspectos fundamentales de cron: asignar el usuario propietario de la
tarea, el comando a ejecutar, y la hora, minutos, días del mes, meses y días de la semana
en los que se ejecutará.
El menú principal de tareas nos mostrará cualquier tarea añadida y su propietario.

Figura 14-15. Tareas de Cron existentes

274 Capítulo 14. Webmin. El configurador web del sistema


Figura 14-16. Pantalla de edición de tareas

ESware Linux 275


Usuarios y grupos

Introducción a los usuarios

Un usuario Unix es típicamente alguien que puede hacer login en el sistema, ya sea remo-
tamente vía telnet o desde la consola. Cada archivo pertenece a algún usuario y cada pro-
ceso se ejecuta con los derechos de algún usuario. El acceso a los archivos y procesos es
determinado por el usuario con el que realiza el login.
Hay realmente tres tipos de usuario en un sistema Unix típico:

• Usuarios administrativos. Cuentas como bin, lp y uccp son propietarias de archivos


como los comandos estándar de /bin, archivos de spool de impresora y datos UUCP.
• Hacer login con una de estas cuentas no está normalmente permitido; sólo son utili-
zadas por varios procesos del sistema. Estos usuarios serán creados cuando el siste-
ma operativo se instale por primera vez.
• Usuarios del sistema. Éstas son cuentas propiedad de usuarios reales, creados por el
administrador del sistema. Puede hacer que estos usuarios hagan login remoto o
quizá sólo dejarles enviar y recibir correo vía SMTP y POP3.
• El Usuario root. El usuario root tiene la potestad de leer y escribir en cualquier archi-
vo o directorio y de controlar cualquier proceso. Esta cuenta es típicamente utilizada
con propósitos de administración del sistema y es la cuenta bajo la que se ejecuta
Webmin.

En la parte superior de la página principal de este módulo hay una tabla de usuarios
ya existentes en el sistema. Puede hacer clic en uno de ellos para editarlo o hacer clic en el
enlace bajo la tabla para crear un nuevo usuario.

Introducción a los Grupos

Un grupo es simplemente una lista de usuarios de Unix. Cada usuario pertenece por lo
menos a un grupo (su grupo primario) y opcionalmente a varios otros. Todos los archivos
son propiedad de algún grupo y cada proceso se ejecuta con los permisos de un grupo.
Bajo la lista de usuarios hay una tabla de grupos que ya existen (Véase la Figura 14-17).
Puede hacer clic en un nombre de grupo para editarlo o hacer clic en el enlace bajo la tabla
para crear un nuevo grupo.

276 Capítulo 14. Webmin. El configurador web del sistema


Figura 14-17. Listado de usuarios y grupos

Logins registrados

Cada vez que un usuario hace login, ya sea por medio de telnet, FTP o desde la consola, el
sistema registra ese login y la consecuente salida del mismo. En la parte inferior de la pági-
na principal hay un pequeño formulario que le permite visualizar los logins de cada uno o
de un usuario concreto.

Respecto al módulo

Es uno de los módulos más interesantes de la zona de configuración básica. Desde él


vamos a poder realizar casi cualquier tarea relacionada con usuarios y grupos de nuestro
sistema (véase la Figura 14-18). Podemos crear usuarios asignándoles su directorio home,
su nombre, una descripción y su contraseña. Al mismo tiempo podremos configurar las
propiedades de grupo para el usuario, así como crear grupos desde la misma pantalla.

ESware Linux 277


Figura 14-18. Formulario de edición de usuarios

278 Capítulo 14. Webmin. El configurador web del sistema


Configuración de Servidores

Esta tercera carpeta del menú principal de Webmin engloba todos los módulos relaciona-
dos con la administración de servidores para Linux (véase la Figura 14-19).

Figura 14-19. Menú principal de servidores

ESware Linux 279


Samba

El servidor SAMBA permite compartir impresoras y archivos entre una red Microsoft y
una Linux.
Podremos así compartir directorios de nuestro servidor Linux para acceso desde clien-
tes Windows, imprimir desde Windows en impresoras situadas en clientes Linux y com-
partir impresoras situadas en la red Windows con clientes Linux. La pantalla principal de
configuración da acceso a todas estas opciones, al igual que al arranque y parada del ser-
vidor SAMBA. Se puede al mismo tiempo acceder desde esta ventana al configurador
SWAT que añade funcionalidad al uso de Webmin.

Figura 14-20. Configurador de SAMBA

280 Capítulo 14. Webmin. El configurador web del sistema


Sendmail

Figura 14-21. Panel principal de la configuración del servidor de correo

Introducción a Sendmail

Sendmail es el programa estándar de Unix para transportar y entregar correo (véase la


Figura 14-21). Cuando un usuario bajo su sistema desea enviar correo a alguien de otra
máquina, sendmail es el programa que en realidad lleva a cabo el proceso de entregar el
correo. De forma similar, cuando alguien de otro sistema envía correo a uno de sus usua-
rios, sendmail recibirá el correo y lo almacenará en el archivo de correo del usuario.
Sendmail es solamente un MTA (agente de transporte de correo «mail»), queriendo esto
decir que no presenta ninguna interfaz de usuario a la gente que desee enviar correo.
Programas como Eudora, elm o /bin/mail con los que los usuarios interactúan son llama-
dos MUA (agentes de correo del usuario). Un MUA no entrega correo por sí mismo; en su
lugar sólo pasa el correo a sendmail para que éste lo haga.

ESware Linux 281


Los MUA de usuario pueden ser ejecutados directamente en su sistema (MUA como
pine, elm o /bin/mail) o en una máquina aparte que puede ser un PC monousuario (para
MUA como Eudora, Exchange y Communicator de Netscape). En el primer caso, el correo
es enviado directamente invocando sendmail y pasándole el mensaje, y recibido median-
te la lectura del archivo de spool de correo del usuario. Para MUA ejecutados en otra
máquina, el correo es enviado conectando al proceso de sendmail de su sistema mediante
el protocolo SMTP y recibido conectando a un servidor POP3 aparte.

El módulo Sendmail

La página principal de este módulo muestra una tabla de iconos; cada uno se usa para con-
figurar diferentes partes de la funcionalidad de sendmail (véase la Figura 14-22). Sin
embargo, las características que hay tras algunos iconos puede que no estén disponibles si
no han sido configuradas en su sendmail. Al instalar sendmail, puede seleccionar qué
características están disponibles mediante la edición de un .mc que es convertido median-
te m4 en tu sendmail.cf. Muchas características (como el Mapeo de Direcciones,
Enmascaramiento de Dominio y Control de ‘a Rechazar’) puede que no estén disponibles
a menos que las haya activado en la instalación.

282 Capítulo 14. Webmin. El configurador web del sistema


Figura 14-22. Opciones generales de sendmail

ESware Linux 283


Alias de correo

Los alias de correo se utilizan para asignar a los usuarios otro nombre o nombres por los
que responder (véase la Figura 14-23) . De esta forma, podemos dar al usuario real del sis-
tema “root” el alias postmaster, con lo que al escribir a postmaster@maquinalocal el correo
irá a parar al buzón de root.

Figura 14-23. Alias de usuarios de correo

284 Capítulo 14. Webmin. El configurador web del sistema


Dominios locales

Los dominios locales, como su nombre indica, son dominios virtuales en la máquina local
(véase la Figura 14-24). Además de enviar correo en local, sendmail sólo aceptará para
entrega local correo para dominios y nombres de máquina listados en la caja de texto de la
izquierda. Si desea que su servidor de correo manipule dominios de correo múltiples,
éstos han de estar listados en este formulario.
Observe que con sólo incluir un dominio en la lista no es suficiente. Además tiene que
asegurarse de que existe un registro DNS para ese dominio y que apunta a su sistema.

Figura 14-24. Dominios locales del sistema

ESware Linux 285


Enmascaramiento de dominio

Si se introduce un dominio en cuadro de edición, sendmail alterará las direcciones Desde


(From) de todos los mensajes salientes para que parezcan venir desde ese dominio (véase
la Figura 14-25).
Además, cualquier mensaje de email que pase a través de su sistema desde alguna de
las máquinas o dominios listados a la izquierda tendrá su dirección Desde (From) modifi-
cada de igual manera. Tenga en cuenta que cualquier enmascaramiento de dominio defi-
nido aquí puede no ser tenido en cuenta para usuarios específicos que utilicen direcciones
de salida.
Esta característica puede ser útil si desea que el correo de su sistema aparente venir
desde un nombre de dominio determinado y no desde el nombre de su máquina.

Figura 14-25. Enmascaramiento de dominio

286 Capítulo 14. Webmin. El configurador web del sistema


Usuarios fiables

Si un usuario local intenta enviar correo, sendmail permitirá que suministre una dirección
Desde (From) diferente de la suya si el usuario está en la lista de la izquierda (véase la
Figura 14-26). Esta restricción existe para prevenir que los usuarios envíen correo con
direcciones Desde (From) falsas desde el sistema. Se previene así que los usuarios puedan
mandar correo de manera indiscriminada ocultando su dirección real de email.

Figura 14-26. Lista de usuarios de confianza

ESware Linux 287


Mapeo de direcciones

Los mapeos de direcciones son similares a los alias, pero son más adecuados en un siste-
ma que utiliza dominios de correo múltiples. Pueden ser utilizados para redirigir correo
de un dominio completo a una sola dirección, manipular usuarios con el mismo nombre
en diferentes dominios o mapear todo el correo desde un dominio a otro (véase la Figura
14-27).
Tenga en cuenta que tiene que tener una entrada en la tabla de dominios locales para
cualquier dominio usado por el mapeo de direcciones y que debe de haber un registro MX
de DNS para cada dominio que apunte a su sistema.

Figura 14-27. Mapeo de direcciones

288 Capítulo 14. Webmin. El configurador web del sistema


Enrutamiento de dominio

El enrutamiento de dominio proporciona un modo de definir un método de transferencia


especial de envío de correo a ciertos dominios (véase la Figura 14-28). Esto puede ser útil
si su sistema es una pasarela para servidores de correo que no pueden ser alcanzados
desde fuera de su red, o si quiere forzar que todo el correo para un dominio en particular
sea enrutado a través de algún otro servidor.
No debería tener entrada alguna en la lista de dominios locales para cualquier dominio
que esté enrutado. Sin embargo, debería tener un registro MX de DNS apuntando a su sis-
tema para cualquier dominio que sea una pasarela para él.

Figura 14-28. Enrutamiento de dominios

ESware Linux 289


Control de «a Rechazar»

Con este módulo se intenta evitar que cualquiera desde Internet pueda enviar correo a tra-
vés de nuestro servidor. Cuando esto ocurre, es decir, cuando alguien manda correo
mediante nuestro servidor sin ser usuario del sistema o tener permiso para hacerlo, come-
te una grave infracción denominada spam.
Desde esta ventana de control podemos denegar o permitir el acceso a determinadas
direcciones IP, dominios o direcciones de email a través de nosotros (véase la Figura
14-29).

Figura 14-29. Control anti Spam

290 Capítulo 14. Webmin. El configurador web del sistema


Dominios de A través de mía

A menos que esté autorizado por las reglas de control de spam, sendmail sólo permitirá
enviar correo a los dominios listados en la caja de texto de la izquierda (véase la Figura
14-30).
Los mensajes de correo entrantes que no sean para usuarios locales o para cualquiera
de los dominios listados, serán rechazados.
Si su sistema sirve de pasarela de varios dominios que no son directamente accesibles
desde fuera de su red (usando la característica de enrutamiento de dominio), entonces
todos esos dominios deberían estar listados aquí.

Figura 14-30. Dominios de paso

ESware Linux 291


Buzones de usuario

El configurador de sendmail aporta además dos módulos adicionales como son el listado
de cola de correo y el listado de usuarios y tamaños de buzón (véase la Figura 14-31).
El primero permite visualizar los email salientes que aún esperan para ser recibidos por
la máquina remota, ya sea por un tiempo de respuesta excesivo por parte del servidor o
por una mala resolución del nombre de dominio.
El segundo nos muestra el tamaño ocupado por cada buzón de usuario del sistema.

Figura 14-31. Control de buzones de usuario

292 Capítulo 14. Webmin. El configurador web del sistema


FTP anónimo y autentificado

Este módulo le permite configurar el servidor FTP de WU-FTPd instalado en el sistema (véase
la Figura 14-32). Los usuarios que tengan cuentas en el sistema pueden hacer login al servidor
FTP y acceder a sus archivos usando programas cliente como por ejemplo Netscape, ncftp, el
visor de archivos de KDE o cualquiera de los muchos clientes de FTP para Windows.

Figura 14-32. Menú principal del configurador FTP

Puede configurar también un servidor anónimo de FTP al que los usuarios puedan
tener acceso de sólo-lectura o de lectura-escritura a un subconjunto limitado de archivos
de su sistema.
La página principal de este módulo muestra una tabla de iconos, uno por cada catego-
ría de opciones configurables.
El servidor WU FTP le permite clasificar a los usuarios en base a la dirección desde
donde hacen login y a su tipo de usuario. Los tres tipos de usuario son:

ESware Linux 293


• Unix. Los usuarios normales del sistema.
• Invitado. Los usuarios de Unix que han sido clasificados como invitados.
• Anónimo. Logins mediante el usuario anónimo o ftp, si su sistema lo permite.
La sección superior de esta página le permite definir nombres de clases partiendo de la
base de tipos de usuario y direcciones emisoras (véase la Figura 14-33). Cada login es cla-
sificado dentro de la primera clase coincidente; por ello, las clases deberían estar ordena-
das desde la más específica hasta la menos.
Las direcciones coincidentes para cada clase pueden ser una dirección IP completa o
parcial, redes/máscaras de red IP, nombres de máquina, comodines de máquina (como
*.foo.com) o las trayectorias absolutas a archivos que contengan direcciones adicionales.
Cualquier tipo de dirección puede ir precedido con un carácter ! para negarlo.
La sección central de la página le permite controlar qué usuarios Unix han de ser clasi-
ficados como invitados. Un usuario invitado tiene derechos similares a un usuario normal
de Unix pero está restringido a un cierto directorio mediante chroot.
La sección inferior de la página controla a qué usuario Unix e invitado se le denegará
el acceso al servidor FTP. Puede especificar usuarios por nombre o por GID (como
%3000%3000-3010).

Figura 14-33. Usuarios y clases

294 Capítulo 14. Webmin. El configurador web del sistema


Mensajes y titulares

La primera tabla de esta página le permite configurar los archivos de mensajes que se mos-
trarán al usuario cada vez que haga login o cuando entre en un cierto directorio (Véase la
Figura 14-34). Para cada archivo de mensaje debe especificar un trayecto (absoluto o relativo
al directorio), decidir cuándo ha de ser mostrado y seleccionar las clases de usuario a las que
mostrar este archivo de mensaje (si no se añaden clases, el archivo se mostrará para todos).

Figura 14-34. Mensajes de usuario y titulares

La segunda tabla es para configurar archivos LEEME. El servidor FTP mostrará la hora
de la última modificación de cada archivo, ya sea al hacer login o cuando se entre en un
cierto directorio. Para cada archivo LEEME debe especificar una trayectoria, escoger cuán-
do ha de ser mostrado y seleccionar las clases de usuario a las que mostrar la hora de la
última modificación.
En la parte inferior de la página hay algunas opciones adicionales que se refieren a los
archivos de mensajes (véase la Figura 14-34). La más útil es la opción Titular en pre-login,
que permite escoger un archivo a mostrar antes de que el usuario haga login.

ESware Linux 295


Trabajo en red

La primera tabla de esta página le permite poner la medida de ventana TCP que utiliza el
servidor FTP para las conexiones de clientes (véase la Figura 14-35). La medida de la ven-
tana puede ser establecida para todas las clases o para las clases seleccionadas individual-
mente.
La segunda y tercera tablas son para configurar la dirección IP de destino y el puerto
usado para las conexiones PASV desde clientes que coincidan con la dirección IP dada y
bits de red.

Figura 14-35. Trabajo en red

296 Capítulo 14. Webmin. El configurador web del sistema


Historial

Esta página permite configurar lo que el servidor FTP guarda como log y dónde lo guar-
da (véase la Figura 14-36). Las opciones disponibles son:

• Llevar historial de todos los comandos para. Se llevará un historial de cada coman-
do de aquellos usuarios que pertenezcan a los tipos seleccionados.
• Llevar historial de transferencias para. Se llevará historial de las transferencias de los
directorios seleccionados realizadas por los usuarios de los tipos seleccionados.
• Llevar historial de transferencias a. Determina si las transferencias son grabadas en
syslog o el archivo xferlog de WU-FTPd, normalmente /var/log/xferlog.
• Llevar historial de violaciones de seguridad para. Usuarios de tipos seleccionados a
los que se grabarán las violaciones de seguridad en syslog.

Figura 14-36. Historial

ESware Linux 297


FTP anónimo

La primera tabla de esta página permite especificar el directorio al que el servidor


cambiará cuando un usuario anónimo haga login (véase la Figura 14-37). Se puede selec-
cionar un directorio diferente dependiendo de las clases de usuario o se puede utilizar un
solo directorio para todas las clases. Si no se especifica ningún directorio, el servidor FTP
cambiará al directorio inicial del usuario ftp.
Debido a que el servidor llama a programas externos como ls y tar, el directorio anó-
nimo raíz debe contener un directorio bin con esos programas, un directorio lib que
contenga cualquier biblioteca compartida que haga falta y un directorio etc que con-
tenga los archivos passwd y group. Cuando un servidor utiliza chroot para limitar el
acceso al directorio anónimo raíz, no puede acceder a ningún programa fuera de ese
directorio.

Figura 14-37. FTP anónimo

298 Capítulo 14. Webmin. El configurador web del sistema


La segunda tabla controla a qué directorio el servidor hará chroot cuando los usuarios
sean invitados. Para cada directorio se puede especificar a qué usuarios se aplicará; para
ello, sólo debe introducir sus nombres, UID (como %3000) o rangos de UID (como %3000-
3006). Si no hay usuarios, el directorio se utiliza para todos los usuarios invitados.
La tercera tabla permite controlar como qué grupo de Unix serán tratados los usuarios
anónimos de FTP, en vez del grupo primario del usuario ftp. Para cada grupo puede selec-
cionar una o más clases de usuario; por ejemplo, para garantizar el acceso a ciertos archi-
vos por parte de usuarios anónimos de ciertas direcciones IP.
Finalmente, la sección inferior de la página contiene entradas para controlar qué claves
de acceso son aceptables para los logins anónimos de FTP. Tradicionalmente, los usuarios
FTP deben enviar una dirección de correo válida como clave de acceso a login anónimo.

ESware Linux 299


Figura w10_18. Permisos

Los controles de la primera tabla de esta página pueden usarse para denegar el acceso a
ciertos comandos no vitales. Para cada comando puede escoger el permitir o denegar el
aceso y seleccionar qué tipos de usuario y clases tendrán y no tendrán acceso. A menos que
esté denegado, cualquier comando está disponible para cualquier usuario, por defecto.
La segunda tabla permite prevenir la carga de archivos que contengan ciertos caracte-
res o que coincidan con ciertas expresiones regulares. Esto puede ser muy útil si el servi-
dor anónimo FTP tiene un directorio incoming y quiere prevenir que los usuarios creen
directorios ocultos para almacenar basura. El primer campo de la tabla es una expresión
como ^[A-z0-9]$ que define los caracteres autorizados, la segunda es una serie de expre-
siones regulares para nombres de archivo que no están autorizados, la tercera consiste en
los tipos de usuario a los que se aplica esta restricción y la columna final es la trayectoria
completa a un archivo de mensajes de error a ser enviado al cliente FTP si ocurre una carga
de archivo ilegal.

300 Capítulo 14. Webmin. El configurador web del sistema


Figura w10_19. Otras opciones del FTP

Esta página contiene opciones que no se encuadran dentro de cualquier otra categoría.
La más útil es la tabla de la segunda sección, la cual permite poner el nivel de ‘nice’ (prio-
ridad de proceso) de las sesiones FTP por clase. Un nivel de nice negativo le da a la sesión
una prioridad de UCP mayor, mientras que un nivel de nice positivo le da una prioridad
menor. En la mayoría de sistemas operativos, el rango permitido de nivel de nice es -20
a 20.
La tabla inferior pone la máscara de permisos de archivo para los nuevos archivos y
directorios, por clases. Por ejemplo, una máscara de 0700 daría a los nuevos archivos car-
gados permisos de 077 (—-rw-rw-).

ESware Linux 301


Figura w10_20. Panel principal del configurador de Apache

Servidor Web Apache

Desde esta primera pantalla podemos acceder a la configuración global del servidor web,
donde entre otras podremos configurar los módulos que utilizará Apache, sus límites de
conexión, el puerto de escucha y nombre de máquina, los tipos MIME que reconocerá
nuestro servidor, las opciones de directorio y los parámetros especiales que se pasarán en
el momento del arranque.

302 Capítulo 14. Webmin. El configurador web del sistema


Figura w10_21. Control de límites globales de Apache

En este se controla desde el máximo número de peticiones simultáneas hasta el máxi-


mo número de servidores arrancados simultáneamente.
El siguiente icono nos muestra características de red globales de nuestro servidor Web.
Desde el puerto en el que atenderá las peticiones hasta una lista de direcciones para los
servidores web virtuales.

ESware Linux 303


Figura w10_22. Configuración de red

El icono de módulos de Apache muestra una lista de los posibles módulos a cargar por
el servidor web. Dichos módulos añaden funcionalidades a Apache como la posibilidad de
utilizar PHP o SSL.

304 Capítulo 14. Webmin. El configurador web del sistema


Figura w10_23. Lista de módulos

La siguiente opción importante dentro del módulo de Apache es la de creación de ser-


vidores web virtuales. Con ella podremos utilizar nuestra máquina como un servidor mul-
tidominio que escuchará peticiones web en todos aquellos dominios configurados.
A cada dominio virtual puede asignársele una IP fija o darle la principal de nuestra
máquina, si estamos utilizando DNS podremos llamarla con el nombre correspondiente a
la IP de nuestra máquina.
En el caso de utilizar una IP fija debemos tener en cuenta la creación de un alias a nues-
tro dispositivo principal o la inclusión de un segundo adaptador de red si queremos eli-
minar tráfico del adaptador principal.

ESware Linux 305


Figura w10_24. Servidores virtuales

En la casilla dirección aparecerá la dirección IP real para ese dominio virtual o el nom-
bre o IP del dispositivo principal. Si suponemos que el nombre del servidor donde esta-
mos creando el dominio virtual es virtuales.dominio.com este debe aparecer en el espacio
reservado para dirección. Si por el contrario queremos crearlo asociado a un dispositivo o
a un alias del principal debemos escribir en ese mismo espacio la IP.
En puerto aparecerá el número del puerto en el que Apache escuchará las peticiones
para ese servidor virtual.
En raíz de documentos indicaremos la situación de la pagina de inicio y directorios
relacionados.
En nombre del servidor escribiremos el nombre de nuestro dominio virtual, como
www.esware.com

306 Capítulo 14. Webmin. El configurador web del sistema


Una vez creado, en el servidor virtual aparecen las mismas opciones de configuración
que en el servidor principal de nuestro sistema, por lo tanto, podremos especificar directi-
vas específicas, ejecución de CGI y otras propiedades generales de Apache.

Figura w10_25. Propiedades del servidor virtual

ESware Linux 307


Servidor de bases de datos MySQL

MySQL es un servidor de base de datos simple para sistemas Unix. Soporta múltiples
bases de datos, potentes controles de acceso, muchos tipos de datos y la mayor parte de la
sintaxis SQL estándar. Cada base de datos gestionada por el servidor puede contener múl-
tiples tablas y cada tabla contener múltiples filas de datos.

Figura w10_26. Principal de MySQL

La página principal muestra una lista de iconos de base de datos en la parte superior,
con un enlace para añadir una nueva base de datos bajo cada uno de ellos.
Cada servidor MySQL tendrá al menos la base de datos mysql que almacena tablas de
configuración y de control de acceso.
Bajo las bases de datos hay iconos para configurar el control de acceso y en la parte infe-
rior hay un botón para parar y arrancar el servidor de base de datos.
Desde el módulo MySQL de Webmin puede accederse a la creación de una base de
datos.

308 Capítulo 14. Webmin. El configurador web del sistema


Figura w10_27. Creación de una base de datos

Este formulario te permite crear una nueva base de datos MySQL con tabla inicial
opcional. Debes introducir el nombre de la base de datos y, si estás creando una tabla ini-
cial, un nombre de tabla y los detalles de al menos un campo. Al termina, haz clic en Crear
para que la base de datos quede inmediatamente creada.
La base de datos puede ser editada una vez creada para añadir y borrar tablas y reali-
zar otros procesos administrativos.

ESware Linux 309


Figura w10_28. Editar base de datos

En la parte superior de esta página hay filas de iconos, cada uno representando una
tabla dentro de la base de datos. Para editar la estructura de una tabla, sólo haz clic en uno
de los iconos.
Debajo hay botones para crear una nueva tabla dentro de esta base de datos, ejecutan-
do SQL en las tablas de la base de datos, borrando la base de datos y todas las tablas.

310 Capítulo 14. Webmin. El configurador web del sistema


Figura w10_29. Editar tabla

La tabla que llena la mayor parte de esta página muestra la estructura de la tabla selec-
cionada de tu base de datos. Cada fila detalla un campo dentro de la tabla, mostrando el
nombre, tipo de datos y otras opciones.
En la parte inferior izquierda hay un botón para añadir un nuevo campo a la tabla.
Antes de hacer clic en él, debes seleccionar el tipo de campo a añadir - mira la documen-
tación de MySQL para más información sobre los tipos de campo. También en la parte
inferior hay botones para ver todos los datos de la tabla y borrar la tabla entera y todos sus
datos.

ESware Linux 311


Podemos también crear y editar usuarios que tendrán acceso a tus bases de datos
MySQL. Para cada usuario, puedes especificar un nombre, clave de acceso, máquinas
autorizadas y un conjunto de permisos que determinan lo que el usuario puede hacer.
Ya que cualquier usuario de la lista que tenga permisos tendrá esos permisos en todas
las bases de datos, es normalmente buena idea no conceder a los usuarios de esta página
permiso alguno. En su lugar, utiliza la página de Permisos de Base de Datos para conce-
der acceso a los usuarios según la base de datos.
Definir qué usuarios de MySQL tendrán acceso a qué base de datos de qué máquinas
es también muy sencillo. Cada usuario ya debe existir en la tabla de Permisos de Usuario,
aunque se les puede conceder permisos adicionales.
Los usuarios no pueden hacer login desde ninguna máquina no especificada en
Permisos de Usuario. Sin embargo, puedes conceder permisos diferentes para diferentes
máquinas mediante la creación de múltiples filas para el mismo usuario.
Para conceder acceso adicional de usuarios a tablas utilizaremos el icono de acceso adi-
cional, además de lo que esté autorizado en Permisos de Usuario o en Permisos de Base de
Datos. Los permisos concedidos aquí se aplican sólo para acceder a una tabla en una base
de datos por un usuario, permitiendo de esta manera un acceso granular.
Para añadir permisos a una nueva tabla, debes seleccionar primero la base de datos en
que se está usando la tabla mediante el formulario de la parte inferior de la página. Luego
haz clic en el botón Añadir nuevos permisos, saldrá un formulario para seleccionar la tabla
y otros detalles.
Este campo te permite conceder a usuarios acceso adicional a campos específicos de las
tablas. Los permisos concedidos no pueden ser mayores que los especificados en los
Permisos de Tabla bajo Permisos de Campo para la tabla donde esté el campo.
Para añadir nuevos permisos de campo debes seleccionar primero la base de datos y la
tabla donde está el campo mediante el formulario del final de la página. Luego haz clic en
el botón Añadir nuevos permisos aparecerá un formulario que permite seleccionar el
campo y otros detalles.

312 Capítulo 14. Webmin. El configurador web del sistema


Configuración de hardware

Desde este apartado podremos configurar el hardware principal de nuestro equipo.


Impresoras, tarjeta de red, arranque del sistema (lilo), fecha y hora e incluso la configura-
ción de RAID por software.

Figura w11_1. Configuración de hardware

ESware Linux 313


Configuración de impresoras

Podemos crear sin mucho esfuerzo impresoras locales, smb o de red. Solo tenemos que
acceder al enlace de creación de nueva impresora y seleccionar el tipo adecuado.
En el caso de creación de una impresora local, necesitaremos conocer el filtro que dicha
impresora utilizará para funcionar. Este filtro puede seleccionarse de una lista en la que
aparecen los mas habituales. Como puede observarse esta parte de la configuración no es
más que un acceso gráfico y sencillo al fichero de configuración /etc/printcap

Figura w11_2. Administración de impresoras

314 Capítulo 14. Webmin. El configurador web del sistema


Si la impresora que instalar es de red sólo necesitaremos conocer su ubicación remota
y su tipo, es decir, si está en un servidor UNIX remoto o en un servidor Windows remoto.
Si estas impresoras remotas están protegidas, es decir, se accede a ellas con un determina-
do usuario y contraseña, podemos especificarlo en el espacio reservado.

Figura w11_3. Nueva impresora

ESware Linux 315


Configuración de red

Con ese módulo accedemos a la configuración de cuatro apartados básicos de nuestra red:

La configuración del adaptador


La configuración de rutas y gateways de nuestro sistema
La configuración del cliente de resolución de nombres
La configuración del fichero de hosts

Figura w11_4. Configuración de red

316 Capítulo 14. Webmin. El configurador web del sistema


La configuración de adaptadores de red es muy completa y no solo podemos configu-
rar los adaptadores físicos sino que nos permite crear alias a dispositivos reales.

Figura w11_5. Configuración de adaptadores de red

Con los alias a dispositivos reales seremos capaces de situar nuestra máquina en redes
secundarias distintas a la del adaptador por defecto.

ESware Linux 317


Las rutas a otros hosts y redes también pueden ser configuradas desde Webmin logran-
do así enlazar máquinas y redes distintas a nuestra red principal.
Esta configuración al mismo tiempo determina la pasarela por defecto o gateway de
nuestra red.

Figura w11_6. Rutas y gateways

318 Capítulo 14. Webmin. El configurador web del sistema


Aquí encontramos una manera agradable de acceder a los ficheros de configuración
/etc/host.conf y /etc/resolv.conf. Añadirá pues las características de búsqueda de hosts ,
dominios y resolución de nombres. Nos permitirá situar el orden de búsqueda de resolu-
ciones, es decir, donde mirará primero nuestro sistema a la hora de cambiar un nombre por
su dirección IP, nuestro nombre de maquina y servidores DNS primario y secundario.

Figura w11_7. Cliente DNS

ESware Linux 319


Por último podemos modificar el contenido del fichero /etc/hosts y añadir entradas
para nombres de host conocidos asociándolos a su IP y a un alias.

Figura w11_8. Añadiendo una entrada en /etc/hosts

320 Capítulo 14. Webmin. El configurador web del sistema


Configuración del cargador de arranque (LILO)

LILO es el cargador de arranque del sistema y con él podremos iniciar nuestro ordenador
desde distintos sistemas operativos situados en particiones primarias diferentes o permi-
tir que nuestro sistema Linux arranque con distintos kernel que incluyan diferentes fun-
cionalidades.

Figura w11_9. Configuración de LILO

ESware Linux 321


Este módulo de Webmin nos permite acceder a la configuración de la primera de las
dos, con la que podremos hacer más configurable nuestro Linux.
Como regla general solo tendremos que conocer dos cosas, donde está nuestro kernel y
su nombre.

Figura w11_10. Configurar kernel de arranque

322 Capítulo 14. Webmin. El configurador web del sistema


Fecha y hora del sistema

Herramienta de Configuración para poner la hora del sistema y la hora hardware que hay
en el reloj de tiempo real.
También se puede utilizar para sincronizar el reloj del sistema con el del hardware.
También nos permite establecer la configuración de un servidor de hora. Un servidor
puede ofrecer el servicio ‘hora del día’, el cual devuelve la hora en curso del sistema. Se
puede ofrecer este servicio internamente con inetd. Este resultado puede aplicarse a la
hora del sistema o a la de hardware.

Figura w11_11. Fecha y hora del sistema

ESware Linux 323


Particiones de disco locales

Esta es una herramienta muy útil para el administrador ya que no solo permite la visuali-
zación rápida de tamaño de particiones sino que es capaz de modificar valores internos de
la configuración de nuestros discos duros y realizar comprobaciones de velocidad.
Ademas puede eliminar y crear particiones lo que la convierte en una herramienta muy
potente a la vez que peligrosa para el no experto.

Figura w11_12. Gestión de particiones

324 Capítulo 14. Webmin. El configurador web del sistema


Otras utilidades

En este módulo se intentan agrupar una serie de aplicaciones útiles para el administrador.
Entre ellas destaca un telnet en JAVA que permite el acceso en modo terminal a la
máquina remota sin necesidad de abrir ninguna consola en el sistema.

Figura w11_13. Otras utilidades

ESware Linux 325


Por otro lado encontramos un fabuloso administrador de discos con el que podremos
navegar sin ningún problema por la máquina remota creando directorios y pudiendo así
organizar el disco de forma visual sin necesidad de utilizar aplicaciones secundarias.

Figura w11_14. Telnet

326 Capítulo 14. Webmin. El configurador web del sistema


Como vemos Webmin es en definitiva un administrador integral del sistema muy útil
para configurar máquinas remotas ya sean de intranets o Internet.
Por su extremada potencia es una herramienta que deberá solo ser utilizada por perso-
nas con conocimientos de administración.

Figura w11_15. Administrador de disco

ESware Linux 327


Capítulo 15. Introducción a KDE

Un vistazo a KDE

En este capítulo se le va mostrar cómo utilizar el entorno de escritorio KDE que acaba de
instalar en su ordenador. KDE incluye muchas más características de las que aquí se des-
criben, pero los procedimientos y herramientas que se le van a mostrar a continuación son
más que suficientes para comenzar a trabajar rápidamente con el entorno.
El documento presupone unos mínimos conocimientos de uso de cualquier entorno
gráfico de usuario, como los disponibles en los sistemas operativos Windows de Microsoft,
MacOS de Apple, CDE, etc. Así, conceptos como el movimiento del ratón y el concepto de
clic no se explicarán aquí.

Introducción

Puesto que este capítulo pretende que se familiarice con el entorno y comience a usarlo lo
más pronto posible, no vamos a perder el tiempo tratando de explicarle cada uno de los
componentes que forman el entorno, o describiéndole todos los procesos que puede llevar
a cabo desde KDE. Lo que haremos es presuponer que el entorno KDE ya se encuentra ins-
talado en su equipo, y le guiaremos a lo largo de una sesión típica con KDE, detallándole
los procesos que deberá realizar, y que serán los que tendrá que conocer bien para traba-
jar de manera ágil con su entorno.
Si usted está leyendo esta guía básica, posiblemente sea porque no conoce todavía el
entorno, así que podremos suponer que KDE está disponible en su máquina con las opcio-
nes por defecto. Para arrancar el entorno KDE, si durante la instalación decidió que su
equipo arrancase en modo texto, deberá ejecutar el comando «startx» una vez inicie una
sesión de usuario en su sistema. Si su equipo arranca directamente en modo gráfico sólo
deberá introducir su nombre de usuario y contraseña para entrar en KDE.

ESware Linux 329


Descripción general del entorno

En la Figura 1 se muestra la apariencia típica de una sesión de KDE, recién comenzada, con las
opciones de instalación por defecto. Se pueden apreciar dos zonas claramente diferenciadas:

1. En la parte inferior de la pantalla se encuentra el Panel, que se usa para lanzar apli-
caciones y cambiar entre escritorios (más tarde explicaremos el concepto de escritorio
virtual). Además, en su extremo izquierdo incluye el icono «K», símbolo de KDE, que
le da acceso a numerosos menús para realizar tareas como configurar su sistema, lan-
zar aplicaciones, configurar el acceso a Internet, seleccionar temas de escritorio, etc.
2. El resto del espacio está ocupado por el Escritorio. Es el área de trabajo donde apa-
recerán las aplicaciones y ventanas que vaya lanzando. Inicialmente contiene un
conjunto de iconos asociados a ciertas aplicaciones y procedimientos, que pueden
ser invocados con un simple clic de ratón sobre el icono correspondiente.

Figura 1. Escritorio de KDE con la configuración por defecto

330 Capítulo 15. Introducción a KDE


Figura 2. Posibles acciones sobre el Escritorio cuando pulsamos con el botón derecho sobre él

La manera habitual de moverse e interactuar en el entorno KDE es mediante el uso del


ratón, aunque también podría hacerse con el teclado en caso de necesidad. Por defecto,
cada uno de los botones del ratón tiene asociada una función, aunque de momento vamos
a olvidarnos del botón central, en el caso de que su modelo de ratón disponga de él. Al
pulsar el botón izquierdo del ratón se ejecuta la acción asociada al objeto (aplicación,
menú, icono, Escritorio, Panel, etc.) sobre el que se encuentre el puntero. Al pulsar el botón
derecho sobre cualquier objeto se mostrará una lista con las propiedades y acciones que se
pueden realizar sobre él (por ejemplo, borrar, mover, cambiar propiedades, etc.).
Por ejemplo, si hace clic con el botón izquierdo del ratón sobre cualquier parte vacía del
Escritorio, no ocurrirá nada, puesto que el Escritorio no tiene acción por defecto asociada.
Sin embargo, si lo que pulsa es el botón derecho se le mostrará un menú como el de la
Figura 2, donde podrá elegir qué acción realizar sobre el objeto señalado por el puntero (el
Escritorio en el ejemplo). Pruebe ahora a hacer lo mismo sobre otros objetos del entorno de
KDE (iconos, Panel, el icono «K», etc.) y vaya familiarizándose con las acciones asociadas a
cada uno de ellos, así como las propiedades accesibles pulsando el botón derecho del ratón.

ESware Linux 331


Otro de los procedimientos que puede utilizar con KDE es el conocido «arrastrar y sol-
tar», que permite cambiar ciertos objetos de posición o ejecutar cierta acción sobre ellos con
sólo dejarlos caer en el lugar adecuado. Por ejemplo, si arrastra un icono cualquiera a una
parte vacía del Escritorio simplemente lo cambiará de posición, pero si lo deja caer sobre
el icono Papelera, lo que hará es eliminar el objeto arrastrado (en realidad el objeto no se
borra, se queda en la Papelera en espera de que confirme su eliminación). El método de
«arrastrar y soltar» es una manera cómoda de manejar sus ficheros cuando utilice el ges-
tor de ficheros de KDE, kfm, cuyo uso describiremos en breve. Por ejemplo, también puede
arrastrar un documento y soltarlo sobre el icono de impresora para imprimir el documen-
to. Si arrastra un objeto imagen y lo deja caer sobre un programa para ver imágenes, el pro-
grama mostrará la imagen automáticamente.

Comenzando a trabajar
Hasta ahora hemos aprendido cómo movernos por el entorno que ofrece KDE, pero de
momento no hemos hecho nada productivo. Por ejemplo, quizás esté deseando leer su
correo, navegar por Internet, redactar un documento de texto o ver sus ficheros persona-
les, así que vamos a ello.
Supongamos que usted desea hacer esto último, ver sus ficheros personales, o cual-
quier otro fichero de sus unidades de disco y CD-ROM. Para ello vamos a utilizar el ges-
tor de ficheros de KDE, kfm, que proporciona una interface muy sencilla e intuitiva para
gestionar sus ficheros.
kfm, al igual que el resto de aplicaciones en KDE, puede lanzarse de varias maneras,
unas más rápidas que otras, pero todas ellas dan el mismo resultado. Puesto que posible-
mente usará kfm a menudo, la instalación por defecto de KDE le proporciona en el Panel
un icono que le da acceso directo a la aplicación (vea la Figura 3). Otros iconos que apare-
cen en el Panel dan acceso a otras aplicaciones de uso frecuente, para que pueda acceder
a ellas rápidamente. Con sólo hacer clic con el botón izquierdo del ratón sobre el icono
mostrado se lanzará kfm (Figura 4).

Figura 3. El icono señalado da acceso al gestor de ficheros de KDE, kfm

332 Capítulo 15. Introducción a KDE


Figura 4. Ventana de kfm mostrando los ficheros en el directorio home del usuario

El número y tipo de los iconos que aparecerán en la ventana de kfm dependerán del
número y tipo de los ficheros en su directorio de usuario. Los iconos que aparezcan serán
lo bastante auto-explicativos en la mayoría de los casos, de manera que conocerá a prime-
ra vista los tipos de ficheros con los que está trabajando. Por ejemplo, los directorios se
representan mediante carpetas, y además el nombre del directorio termina siempre en /
para distinguirlo de otros tipos de ficheros. Si desea ver los contenidos de un directorio
basta con hacer clic con el botón izquierdo sobre el icono correspondiente. En general,
haciendo clic sobre cualquier objeto se desencadena la acción asociada al mismo: para un
fichero de texto, éste se abrirá en un editor, un archivo MP3 se reproducirá, un vídeo se
presentará en pantalla y una aplicación se lanzará.
Aunque podemos meternos en directorios cada vez más profundos, ¿sobre qué icono
pulsamos para volver hacia atrás, o para ver el directorio superior? Bajo la barra de menús
del kfm verá un conjunto de iconos, entre ellos tres flechas, hacia arriba, hacia la izquier-
da y hacia la derecha. Si pulsa (es decir, hace clic con el botón izquierdo del ratón) sobre la
flecha hacia arriba, se mostrará el contenido del directorio inmediatamente superior.

ESware Linux 333


Si pulsa la flecha hacia la izquierda, verá el directorio en el que se encontraba justo
antes de entrar en el actual (vuelve a la vista anterior). Si tras pulsar cualquiera de los ante-
riores iconos pulsa la flecha hacia la derecha, se mostrarán los contenidos del directorio
que estaba viendo antes de pulsar las flechas hacia la izquierda o hacia arriba.
Llevamos ya un rato con el gestor de ficheros de KDE, y aún no hemos gestionado
(movido, copiado, borrado, etc.) ningún fichero, simplemente nos hemos estado moviendo
por los directorios. Para saber qué podemos hacer con un fichero (o directorio o cualquier
otro objeto en KDE) basta con situar el puntero sobre el icono correspondiente y pulsar el
botón derecho del ratón. Inmediatamente se le mostrará una lista de acciones que realizar,
entre ellas «Copiar», «Suprimir» y «Tirar a la Papelera». La opción «Suprimir» borra el
fichero definitivamente, aunque por seguridad antes de proceder se le pide confirmación.
«Tirar a la Papelera» elimina el fichero de su localización actual, y lo deposita en la Papelera
en espera de borrarlo definitivamente o recuperarlo si lo hemos borrado por error.
Al seleccionar la opción «Copiar» parece que no ocurre nada, ni tan siquiera se le pre-
gunta dónde desea copiar el fichero. Sin embargo, kfm recuerda el fichero que ha selec-
cionado para copiar. Diríjase al directorio destino del fichero seleccionado, y en una parte
vacía de la ventana pulse el botón derecho del ratón. De las opciones mostradas escoja
«Pegar», y verá aparecer el fichero seleccionado previamente.
Una manera alternativa de copiar y mover ficheros es utilizar la funcionalidad de «arras-
trar y soltar» descrita antes. Así, bastaría arrastrar un fichero y dejarlo caer en un directorio
para que se muestren las posibles acciones que llevar a cabo, entre ellas «Copiar» y «Mover».
La primera opción crea una copia del fichero en el directorio y la segunda mueve el fichero
al directorio (es como si hiciésemos una copia y borrásemos el original).
A veces tenemos que copiar o mover gran cantidad de ficheros entre dos puntos, y
hacerlo uno por uno puede resultar muy lento. Para agilizar el proceso podemos seleccio-
nar varios objetos al mismo tiempo y realizar la misma acción sobre todos ellos. La forma
más sencilla de seleccionar varios objetos es, manteniendo pulsada la tecla CTRL, hacien-
do clic sobre ellos con el botón izquierdo del ratón. Cuando acabe de marcar ficheros
puede soltar la tecla CTRL, y proceder con el conjunto de objetos como si estuviese actuan-
do sobre sólo uno de ellos, como se acaba de describir.

Cómo sacar más provecho a kfm

Los procedimientos descritos le permitirán realizar gran número de tareas cotidianas, de


manera sencilla y rápida, pero kfm es mucho más de lo que ha visto hasta ahora. Por ejem-
plo, puede tener abierta más de una ventana de kfm, cada una mostrándole un directorio
distinto, haciendo posible «arrastrar y soltar» ficheros entre ambas. Para abrir una nueva
ventana de kfm pulse CTRL+N o escoja la opción «Nueva Ventana» en el menú «Archivo».
Hay veces que tras realizar alguna modificación sobre un fichero o directorio no pare-
cen apreciarse los resultados del cambio. También es posible que modifique desde otra

334 Capítulo 15. Introducción a KDE


aplicación el contenido de un directorio y no vea los cambios desde kfm. Para hacer que
kfm muestre el contenido actualizado del directorio basta con pulsar sobre el botón de
recarga ( ) o seleccionar «Actualizar Árbol» en el menú «Ver».
En algunas circunstancias la manera de mostrar los ficheros y directorios en forma de
iconos no es la más adecuada a las operaciones que vamos a realizar, quizás necesitemos
ver más datos de cada fichero, o ver los ficheros de otra manera distinta. Para seleccionar
otras maneras de ver los archivos, acuda al menú «Ver» y escoja cualquiera de las opcio-
nes «Vista...» que se le ofrecen. Pruebe todas ellas para ver qué tipo de vista se adecua
mejor a sus necesidades, y no se preocupe, porque los procedimientos descritos siguen
siendo válidos.

¿Qué habéis hecho con mi línea de comandos?

No se preocupe, si usted quiere o necesita recurrir a la línea de comandos para realizar


diversas tareas, la tiene a su disposición con las mismas funcionalidades de las que ya dis-
frutaba y con mejoras añadidas. KDE dispone del programa «konsole», que una vez lan-
zado le proporciona una sesión de línea de comandos idéntica a las que realiza en modo
texto, pero con las ventajas de ejecutarse como una aplicación más de KDE.

Figura 5. Consola de texto de KDE, konsole

ESware Linux 335


Para lanzar konsole, basta con pulsar sobre el icono de la concha sobre pantalla que
aparece en el Panel, apareciendo a continuación la ventana que se muestra en la Figura 5.
Ya puede comenzar a ejecutar comandos en esta ventana como si estuviera en la propia
consola de modo texto de la máquina. Recuerde que la identidad que posee en la sesión
recién iniciada es la del usuario con el que haya iniciado su sesión de KDE. Para compro-
bar quién es en ese momento (y quizás ahorrarse algún susto por estar trabajando como
root), ejecute «whoami».
Una de las mejoras añadidas que mencionábamos antes es la posibilidad de tener tan-
tas sesiones de línea de comandos como queramos, cada una en su propia ventana, y visi-
bles al mismo tiempo. También es posible modificar el tamaño de letra, los colores de
fondo y del texto, el ancho en caracteres de la ventana, etc., todo ello a partir del menú
«Opciones». Le dejamos como ejercicio el explorar las opciones disponibles, y escoger las
que mejor se adecuen a su gusto.

Escritorios virtuales

En los anteriores párrafos hemos abierto varias aplicaciones y ya tendremos en nuestro


escritorio un buen número de ventanas. Lo más habitual es que no necesitemos ver todas
ellas al mismo tiempo, y si lo necesitamos, quizás sea necesario redimensionar y recolocar
algunas de ellas. Pero aún no hemos explicado cómo se hace esto, aunque es algo sencillo
a la par que básico para un ágil manejo del entorno KDE.
En su configuración por defecto, KDE muestra todas las ventanas con una decora-
ción que incluye en la parte superior, en los extremos izquierdo y derecho, unos
pequeños iconos con una acción asociada a cada uno de ellos. En la esquina superior
derecha hay tres iconos, un punto, un cuadrado y un aspa. Al hacer clic sobre el pri-
mero, la ventana se minimiza, desaparece del Escritorio: para recuperar una ventana
minimizada pulse el icono junto al icono «K» y escoja de la lista de ventanas la que
desea recuperar.
La pulsación del segundo icono maximiza la ventana (ocupa todo el Escritorio): si una
vez maximizada la ventana pulsamos nuevamente el icono, la ventana recupera su tama-
ño original. El tercer icono provoca el cierre de la ventana y el de la aplicación asociada,
sin pedir confirmación alguna en la mayoría de los casos, así que tenga cuidado de no pul-
sar accidentalmente sobre el icono.
En la esquina superior izquierda habrá un icono característico de la aplicación, que al
ser pulsado muestra entre otras opciones la de «Pegar» (las demás opciones se explican
por sí mismas). La opción «Pegar» hace visible la ventana en todos los escritorios virtua-
les, y equivale a pulsar el icono que se encuentra junto al anterior.
Usted se preguntará qué es un escritorio virtual. Más que darle una definición más o
menos brillante, lo mejor es que vea qué funcionalidad proporciona y usted mismo deci-

336 Capítulo 15. Introducción a KDE


da sobre lo que es. Si se fija, en el Panel hay cuatro botones alargados («Uno», «Dos»,
«Tres» y «Cuatro»), y el etiquetado como «Uno» se encuentra pulsado. Eso indica que
usted está viendo actualmente el escritorio virtual etiquetado como «Uno».
Pruebe ahora y pulse sobre el botón etiquetado como «Dos» para situarse en el escrito-
rio virtual asociado a él. Salvo que alguna de las ventanas que antes veía tuviese estable-
cida la propiedad «Pegar», ahora no verá ninguna de las ventanas que veía hace un
momento, sólo verá el Panel y los iconos en el Escritorio. Esto es así porque ahora está en
el escritorio virtual «Dos», y las ventanas que antes veía estaban en el «Uno», de manera
que si pulsa nuevamente sobre el botón «Uno» verá otra vez sus ventanas. Los escritorios
virtuales le proporcionan más espacio para colocar ventanas y aplicaciones, y para agru-
parlas por temáticas (pulse sobre un botón de escritorio virtual cuando ya se encuentre
pulsado y podrá modificar el nombre del escritorio virtual).
Para cambiar de escritorio virtual pulse con el ratón sobre el botón correspondiente o
pulse CTRL+F1 a CTRL+F4 para cambiar a uno de los cuatro escritorios virtuales actual-
mente definidos (puede modificar el número de escritorios virtuales disponibles).
Dos últimos consejos. Para mover una ventana también puede colocar el puntero sobre
la parte superior de la ventana y «arrastrar y soltar». Para redimensionarla, sitúe el pun-
tero en cualquiera de los bordes de la ventana (vera que cambia el tipo de puntero) y
«arrastre y suelte» a la dimensión deseada.

Cómo lanzar otras aplicaciones

Hasta ahora sólo hemos lanzado algunas aplicaciones que estaban disponibles como ico-
nos en el Panel. Para lanzar otros programas y aplicaciones lo primero que debemos hacer
es pulsar sobre el icono «K» del Panel. Veremos un menú con bastantes opciones, entre
ellas «Aplicaciones», «Aplicaciones no-KDE», «Utilidades», «Juegos», etc. Todas estas
opciones del menú y algunas otras dan acceso a diversas aplicaciones instaladas en su sis-
tema. Basta con pulsar sobre la opción del menú que muestra la aplicación deseada para
que la aplicación se ejecute automáticamente.
Sin embargo, puede que no todas las aplicaciones de su ordenador sean accesibles
desde alguno de estos menús. Por ejemplo, la mayoría de los comandos del modo texto
deberá ejecutarlos desde una konsole que previamente haya abierto, para así ver el resul-
tado de su ejecución. Para aquellos comandos que, bien no interese su salida, bien des-
plieguen aplicaciones gráficas, quizás sea más cómodo recurrir a la miniventana de ejecu-
ción de comandos. Para ello pulse ALT+F2, y le aparecerá una pequeña ventana donde
deberá escribir el nombre del comando o aplicación que ejecutar. Tan pronto pulse ENTER
la ventana desaparecerá y no sabrá nada más de la aplicación salvo que ésta despliegue
una ventana en su escritorio. Tenga cuidado de no lanzar aplicaciones interactivas de
modo texto de esta manera, puesto que aunque el programa se ejecutará, nunca podrá

ESware Linux 337


interactuar con él. La miniventana de ejecución recuerda los últimos comandos tecleados
en ella, de manera que pulsando la tecla de flecha arriba se recuperan para su posible
nueva ejecución.

Configuración de su escritorio

Mencionamos al principio que el entorno KDE era mucho más rico en funcionalidad de lo
que aquí íbamos a explicar. Otra importante característica de KDE es que usted puede con-
figurar a su gusto casi cualquier aspecto del entorno de trabajo, desde el fondo de panta-
lla hasta la decoración de las ventanas pasando por los iconos del Escritorio, el número y
funciones de los botones, etc.
Si desea modificar cualquier característica del entorno, acuda al Panel y pulse el icono
«K». Seleccione la opción «Centro de control KDE» y se le mostrará la ventana de la Figura
6, desde donde podrá personalizar cualquier detalle de su entorno de trabajo. Si compar-
te su máquina con otras personas, no se preocupe, los cambios que usted haga sólo los verá
usted (siempre que cada persona acceda al ordenador con su propia identidad).

Figura 6. Pantalla principal del Centro de control KDE

338 Capítulo 15. Introducción a KDE


Por ejemplo, algo que le puede interesar cambiar es el tipo de focalización, es decir, qué
debe hacer para que lo tecleado se dirija a la ventana adecuada. Por defecto es necesario
hacer clic sobre la ventana antes de que lo tecleado se dirija a ella. Sin embargo en ciertas
ocasiones es preferible que sea la posición del puntero la que determine la ventana activa
(el foco sigue al ratón). Por ejemplo, si está traduciendo un documento que lee de la pan-
talla y escribe el resultado en otra ventana, este tipo de focalización le permitirá seguir
escribiendo el texto traducido sin dejar de leer el original en la pantalla. Para seleccionar
este comportamiento seleccione «Ventana» -> «Propiedades» y escoja «El foco sigue el
ratón» como tipo de focalización. Los cambios serán efectivos una vez pulse «OK» o
«Aplicar». Desde este momento para poner una ventana en primer plano deberá pulsar
sobre la barra de título de la ventana, no sobre cualquier parte de la misma como ocurría
antes.

Temas de escritorio

Un tema de escritorio es un conjunto de parámetros de configuración, fondos de pantalla,


iconos, salva-pantallas, sonidos, etc. que comparten una temática en común y que pueden
dar a su entorno de trabajo una apariencia completamente distinta a la original. KDE
soporta temas de escritorio, y en su instalación por defecto incluye un buen número de
ellos listos para utilizar. Para sustituir el tema de escritorio actual seleccione «Escritorio» -
> «Gestor de Temas». La lista que aparece le muestra los temas actualmente disponibles:
seleccione uno por uno para ver su apariencia, y una vez que decida cuál desea instalar,
pulse el botón «Apply». Siempre podrá regresar a la configuración original escogiendo el
tema «Default» y pulsando «Apply».
Sin embargo, puede que un tema en concreto le guste pero algún aspecto del mismo no
le termine de convencer, por ejemplo los fondos de escritorio. No hay problema, seleccio-
ne el tema de la lista pero antes de pulsar «Apply» seleccione la pestaña «Contents» y
borre la casilla «Wallpapers». De esta manera puede combinar las características que más
le gusten de los distintos temas de escritorio disponibles.
Para finalizar, si los temas disponibles no le parecen suficientes puede acudir a la direc-
ción http://kde.themes.org/ y ampliar notablemente su biblioteca de temas de escritorio.

Acceso a las unidades de disquete y CD-ROM

Posiblemente haya oído usted hablar de que en Linux, para poder acceder a un disquete o
a una unidad de CD-ROM primero necesita montar la unidad. Bien, pues esto es cierto,
pero también es cierto que desde hace mucho ya no es necesario que usted se preocupe de
hacer esto manualmente, pues el sistema montará automáticamente los disquetes y/o CD-
ROM que se encuentren en sus respectivas unidades.

ESware Linux 339


Aparte de lo anterior, KDE le ofrece la ventaja añadida de permitirle hacer todas las
tareas cotidianas a través de su cuidada interface gráfica, para que no tenga que preocu-
parse de aprender comandos que quizás no comprenda. Si se fija en su Escritorio verá dos
iconos que identifican respectivamente a un CD-ROM y a un disquete: cada vez que desee
acceder a los contenidos de un disquete o CD-ROM por primera vez deberá pinchar sobre
el icono correspondiente, y KDE se encargará de montar el dispositivo de forma automá-
tica, mostrándole al finalizar los contenidos de la unidad accedida. A partir de ese momen-
to podrá realizar con los ficheros de dicha unidad las operaciones que desee.
Cuando trabaje con dispositivos extraibles como disquetes o CD-ROM debe recordar
que antes de sacar el medio de la unidad (sobre todo en el caso de los disquetes) debe des-
montar el dispositivo. En determinadas circunstancias Linux almacena las transferencias
desde/hacia los dispositivos en memoria intermedia, para efectuarlas en otro momento,
de manera que si se extrae físicamente el disquete de la unidad se pueden perder datos.
Para desmontar una unidad, pinche con el botón derecho del ratón sobre el icono corres-
pondiente y elija «Desmontar». Una vez el icono cambie a su forma original ya podrá
extraer físicamente el dispositivo de su unidad. Para asegurarse de que no extrae un CD-
ROM antes de tiempo, pulse con el botón derecho sobre el icono del CD-ROM y escoja la
opción «Eject» para expulsar el CD-ROM de la unidad.

Cómo imprimir desde KDE

Si usted dispone de impresora posiblemente ésta ya se encuentre configurada desde que


realizó la instalación inicial de Linux y de las aplicaciones asociadas. Es el propio sistema
operativo el que se encarga de las tareas de impresión, KDE se encarga de proporcionar un
acceso sencillo a la impresora para que usted pueda imprimir sus documentos desde cual-
quier parte del entorno. De manera que si aún no ha configurado su impresora este es el
momento de hacerlo: consulte cómo configurar su impresora en la documentación sumi-
nistrada y una vez la impresora funcione regrese a esta sección.
En el escritorio de KDE verá un icono de impresora: imprimir un documento es tan sen-
cillo como arrastrar éste y dejarlo caer sobre el icono de la impresora. Pero sea cauto con
esta posibilidad: si no ha configurado correctamente un programa de filtros para su impre-
sora no debería intentar imprimir más que documentos de texto y PostScript, de lo con-
trario puede que su impresora comience a imprimir decenas de hojas sin sentido. Si esto
ocurriese, pinche sobre el icono de la impresora para mostrar la cola de impresión, y eli-
mine los trabajos de la cola (pinchando sobre el trabajo que eliminar y luego en el botón
«Suprimir»).
Para imprimir documentos desde otras aplicaciones, sin arrastrar y soltar los ficheros
sobre el icono de impresora, en el menú de impresión de la aplicación en concreto deberá
indicar que el comando de impresión es «lpr». «lpr» es el comando de impresión tradicio-

340 Capítulo 15. Introducción a KDE


nal de todos los UNIX: si no se le suministra ninguna opción imprime el documento en la
impresora por defecto, que será lo correcto si no dispone más que de una impresora.

Adición de tipos MIME: cómo asociar tipos de fichero a aplicaciones

Posiblemente desconozca lo que es un tipo MIME y por lo tanto no entenderá porqué le


contamos esto cuando hay otras cosas más importantes que aún no hemos explicado
(conexión a Internet por ejemplo). La razón es que los tipos MIME son el mecanismo por
el cual KDE y los navegadores de Internet en general son capaces de distinguir entre la
multitud de tipos de ficheros y contenidos existentes, dándole a cada uno de ellos el tra-
tamiento más adecuado. Por ejemplo, los documentos .html tienen tipo MIME text/html,
las imágenes en formato PNG son de tipo image/png, etc. Tanto KDE como los principa-
les navegadores utilizan esta información de tipos para decidir qué hacer con cada tipo de
fichero o contenido.
Por ejemplo, puede desear que cuando pulse sobre un archivo MP3 de su disco duro
automáticamente se lance el programa adecuado para escuchar dicho fichero. Para lograr
esta asociación de un tipo de fichero a una aplicación necesita crear un tipo MIME para
dicho tipo de fichero, si es que aún no está creado. Vamos a ver cómo se crea un tipo MIME
para los ficheros MP3.
Abra una ventana del gestor de ficheros de KDE, kfm, y en el menú «Editar» seleccio-
ne la opción «Tipos MIME». Automáticamente será llevado al lugar donde se mantienen
los tipos MIME que tiene definido en su entorno. Verá varias carpetas como «video» y
«audio», que se usan para organizar los tipos MIME por el tipo de contenido que descri-
ben. En el caso que nos ocupa el directorio «audio» debería ser nuestro destino. Verá que
ya está definido un tipo «x-mp3», pero teníamos que elegir un tipo de fichero para el ejem-
plo, y el MP3 es lo bastante conocido como para ponerlo de ejemplo.
Una vez en el directorio «audio» pulse el botón derecho del ratón sobre una parte vacía
de la ventana y escoja la opción «Nuevo» y a continuación «Tipo MIME». En la ventana
que aparece sustituya el texto «MimeType» por algo identificativo del tipo (por ejemplo,
MPEG1Layer3) y pulse «OK». En la ventana que aparece puede ir directamente a la pes-
taña «Uniones», puesto que las opciones por defecto de las otras dos pestañas son válidas
en la mayoría de los casos.
En la entrada «Esquema» deberá poner, separados por punto y coma, las extensiones
de los ficheros de tipo audio MPEG-1 Layer 3, en formato *.extensión (en el ejemplo pon-
dríamos: *.mp3;*.m3u;*.pls). En el campo «Tipo MIME» debemos poner el tipo MIME
registrado para el tipo de contenido que estamos definiendo (para el ejemplo,
audio/mpeg). En «Comentario» puede poner una breve descripción del tipo de ficheros
(Archivo de sonido MP3, por ejemplo). Finalmente, en «Aplicación por defecto» debe ele-
gir la aplicación asociada a los ficheros MP3: de no encontrar la aplicación en la lista, de

ESware Linux 341


momento deje esta casilla con el valor «<ninguno>». Además de todo esto, puede selec-
cionar el icono que representará este tipo de ficheros de la lista que aparece al pinchar
sobre el botón con el icono por defecto.
Si en la lista anterior no aparecía ninguna aplicación para reproducir MP3, aunque
tenga alguna instalada en su sistema, deberá crear una nueva «aplicación» de KDE, uno
de cuyos tipos MIME soportados sea el que desea reproducir (x-mp3 en nuestro ejemplo).
Supondremos que se encuentra instalado en su sistema el programa XMMS, un potente
reproductor gráfico de ficheros MP3.
Para crear la nueva «aplicación», lance una ventana de kfm y escoja la opción
«Aplicaciones» en el menú «Editar». Se le mostrarán varios iconos representando varias
carpetas: vaya a la carpeta de nombre «Applications», y en ella pulse el botón derecho del
ratón y elija la opción «Nuevo» -> «Aplicaciones». Se le presentará la misma pantalla que
al definir un tipo MIME, así que ahora también deberá sustituir el nombre a la izquierda
del punto por uno identificativo de la aplicación. Pulse «OK» y acuda directamente a la
pestaña «Ejecutar».
En el recuadro «Ejecutar» teclee la ruta completa de la aplicación (por ejemplo,
/usr/bin/xmms), aunque puede usar el botón «Examinar...» para hacerlo gráficamente.
Pase entonces a la pestaña «Aplicación» y ponga un «Comentario» descriptivo de la apli-
cación y el «Nombre» que desea asociar a dicha aplicación (este será el nombre aparecerá
en los menús). Finalmente, pero más importante que todo lo anterior, en la lista desplega-
ble inferior derecha seleccione el tipo MIME correspondiente a los ficheros de audio MP3,
x-mp3, y añádalo a la lista izquierda pulsando la flecha en dicho sentido. Sobre todo ase-
gúrese de elegir el mismo tipo MIME que escogió antes al crear el tipo MIME, o la asocia-
ción entre el tipo de fichero y la aplicación correspondiente fallará.
Desde este momento cada vez que pulse sobre algún archivo con extensión .mp3, .m3u
o .pls, XMMS se abrirá automáticamente para reproducir el fichero.

Configuración del acceso a Internet mediante módem

KDE proporciona una herramienta gráfica para la configuración del acceso a Internet
mediante módem llamada kppp. Sin embargo, para poder modificar la configuración del
acceso a Internet es necesario que lo haga como root, así que abra una consola de texto (eje-
cutando «konsole» o pinchando el icono correspondiente del Panel) y hágase root con el
comando «su -». Se le pedirá la contraseña del superusuario: teclee la contraseña y si todo
fue bien el indicador cambiará de un signo $ a un signo # y ya podrá ejecutar comandos
como root. Tenga mucho cuidado cuando esté trabajando como root, puesto que un peque-
ño error sobre determinados archivos puede tener graves consecuencias para su sistema.
Sin más dilación, ejecute el programa «kppp» desde su sesión de root, y verá aparecer
en su Escritorio la ventana mostrada en la Figura 7. Si la lista desplegable «Conectar con:»

342 Capítulo 15. Introducción a KDE


Figura 7. Ventana inicial de kppp cuando aún no hay conexiones a Internet configuradas

aparece vacía, entonces todavía no ha configurado su acceso a Internet y deberá hacerlo


ahora. Para ello pulse el botón «Configuración» y en la ventana que aparece pulse el botón
«Nueva...» para crear una nueva conexión. Como nombre de conexión puede poner cual-
quier cosa que le sirva para distinguir unas conexiones por módem de otras, si utiliza más
de una conexión a Internet.
El número de teléfono será el que utiliza para conectarse a su proveedor (9 cifras). La
casilla «Guardar contraseña» la puede dejar marcada si no quiere teclearla cada vez que
conecte: la primera vez que conecte se le pedirá y una vez validada se guardará para cone-
xiones posteriores.
En la lista desplegable «Autenticación» deberá escoger entre las opciones «Mediante PAP»
y «Mediante CHAP». Consulte con su proveedor de acceso a Internet qué método de auten-
ticación usa en sus conexiones a Internet. El resto de opciones las debería dejar en blanco.
Del resto de pestañas puede que sólo sea necesario modificar los datos en la titulada
«Servidor de Nombres», y en algunos casos ni tan siquiera habrá que tocar ahí, depende-
rá de la configuración de su proveedor. Si su proveedor le informa de las direcciones de
los DNS, deberá introducir estas direcciones IP en el campo «Direcciones IP de los servi-
dores de Nombres:», una por una. Teclee estas direcciones una por una y pulse ENTER,
y se irán añadiendo a la lista de direcciones de los servidores de nombres.
Cuando pulse «OK» regresará a la pantalla que le muestra las conexiones disponibles,
donde verá que ahora aparece la conexión recién creada. Acuda a la pestaña «Dispositivo
Serie» y modifique el valor de «Velocidad de Conexión» para que sea igual a 115.200 (lo
mejor para modems de 56.000 bps). Ahora ya puede pulsar «OK» para regresar a la pan-

ESware Linux 343


talla inicial e introducir el nombre de usuario y contraseña de su acceso telefónico. A con-
tinuación pulse «Conectar» para comprobar el correcto funcionamiento de su conexión
telefónica a Internet desde Linux.
Cada vez que desee conectar a Internet por módem deberá abrir una consola, identifi-
carse como root y ejecutar el comando «kppp» como se ha descrito al comienzo de este
apartado. Para terminar una conexión en marcha bastará con pulsar CTRL+C sobre la con-
sola desde la que haya lanzado «kppp», y dicha conexión se cerrará limpiamente.

Cómo terminar una sesión con KDE

KDE es un entorno de trabajo muy amigable y atractivo, pero llegará un momento en que
quizás desee cerrar el sistema para dormir un rato y reponer fuerzas. En cualquier momen-
to puede concluir su sesión con KDE con sólo pulsar sobre el pequeño icono en forma de
aspa junto al botón que representa el escritorio virtual «Uno», o pulsando sobre
«Terminar» en el menú que aparece al pulsar sobre el icono «K» del Panel.
Al comenzar el cierre de la sesión las aplicaciones diseñadas para KDE guardarán infor-
mación del estado en que se encontraban en ese momento. Así, la próxima vez que entre
en KDE estas aplicaciones se ejecutarán automáticamente y mostrarán el mismo estado
que tenían justo antes del cierre de sesión. Por ejemplo, si se encontraba editando un texto
con «kedit» y cierra la sesión, la próxima vez que entre en KDE «kedit» arrancará de mane-
ra automática, cargará el fichero que estaba editando y se posicionará en el punto concre-
to del fichero en que se encontraba al cerrar la sesión.
Las aplicaciones que no están diseñadas específicamente para KDE no permiten esta
funcionalidad, y por ello KDE antes de completar el cierre de sesión le pide su confir-
mación para cerrar aquellas aplicaciones que aún están abiertas. Así dispone de una
última oportunidad de guardar su trabajo antes de cerrar la sesión sin perder los cam-
bios que no hayan sido almacenados. Pulse «Cancelar» para regresar al Escritorio, cie-
rre las aplicaciones que aún se encuentren abiertas y vuelva a intentar el cierre de la
sesión.

Otros consejos generales de utilización de KDE

A continuación le mostramos un breve número de consejos y procedimientos que pueden


serle muy útiles en determinadas circunstancias.

1. KDE no responde, se ha quedado «colgado». Aunque KDE es un entorno muy


robusto y estable, utilizado a diario por miles de personas en todo el mundo, aún
cabe la posibilidad de que el entorno quede inutilizable debido a algún problema

344 Capítulo 15. Introducción a KDE


que se le escapó a los programadores. Primero, intente guardar los documentos que
haya modificado, pero si no es posible, quizás pierda las últimas modificaciones que
no haya guardado en disco. En cualquier caso, aunque KDE no responda el sistema
operativo sigue funcionando, así que pulse CTRL+ALT+BS (BS es la tecla encima del
ENTER) y volverá a su indicador de sistema en el modo de texto. Si su máquina
arranca directamente en modo gráfico, se le mostrará de nuevo la pantalla de login
donde se le pide su nombre de usuario y contraseña.
2. Uno de mis programas no responde, ¿qué hago? Un síntoma inequívoco de que un
programa no va bien es que la ventana donde se ejecuta aparezca en blanco, sin redi-
bujar, sin verse sus contenidos. En ese caso lo mejor es cerrar el programa: para ello
intente en primer lugar pinchar sobre la esquina superior derecha de la ventana en
el icono del aspa. En la mayoría de los casos esta acción bastará para cerrar la apli-
cación. Si el problema persiste, pruebe lo siguiente desde una consola de texto:

ps ax | grep nombreProgramaColgado

3. Se le mostrarán tantas líneas como ocurrencias del programa cuyo nombre sea
nombreProgramaColgado. El primer número de cada línea es el identificador de
proceso o PID del programa: identifique cuál de ellos corresponde al programa pro-
blemático y ejecute desde una consola de texto:

kill -9 PIDprogramaColgado

2. Sin embargo, si usted no sabe muy bien de qué le estamos hablando deberá tener
cuidado de no matar un programa distinto al que está dando problemas. Para evitar
problemas quizás sea mejor cerrar limpiamente las aplicaciones que funcionan bien
y terminar la sesión, para reiniciarla a continuación.
3. Ya lo hemos mencionado, pero lo repetimos porque pensamos que es muy impor-
tante. No entre en su sistema como superusuario (root) a menos que sea imprescin-
dible: las tareas cotidianas y el uso habitual de su PC deberá hacerlas como un usua-
rio cualquiera de su máquina, nunca como root.
2. Cualquier fallo de seguridad, error en una aplicación o comando erróneo ejecutado
como root pueden llevar su sistema al desastre. Cuando necesite realizar tareas
administrativas, lance un «konsole» y hágase root mediante el comando «su -».
Realice las tareas de administración y al terminar cierre la sesión mediante el coman-
do «exit» o pulsando la combinación de teclas CTRL+D.

ESware Linux 345

Vous aimerez peut-être aussi