Anda di halaman 1dari 278

2014

Curso LINUX

Ing. Ricardo Ruiz


PROCURADURIA GENERAL DE LA
REPUBLICA DE NICARAGUA
Contenido
Introducción ....................................................................................................................... 1
-Objetivos del Curso ....................................................................................................... 1
-Audiencia ...................................................................................................................... 2
-Certificación y Pre-requisitos ......................................................................................... 2
-Agenda ......................................................................................................................... 3
-Escenario ...................................................................................................................... 3
-Estándares de este documento ..................................................................................... 4
Capitulo 1: Historia de Linux .............................................................................................. 5
Tema 1: Comprender la historia de Linux ....................................................................... 5
-El desarrollo histórico de UNIX .................................................................................. 5
-El desarrollo de Linux ................................................................................................ 6
-Las diferencias de software entre las distribuciones para usuarios y las distribuciones
para servidores ........................................................................................................... 7
Tema 2: Entender el Entorno Multiusuario ..................................................................... 8
Tema 3: Optimizar una instalación simple de Linux ...................................................... 10
-Requerimientos previos a la Instalación .................................................................. 10
-Opciones de Instalación .......................................................................................... 11
-Instalación Básica.................................................................................................... 12
-Configuración .......................................................................................................... 14
Capitulo 2: Instalación de Linux ....................................................................................... 18
Tema 1: Personalizar una instalación de Linux ............................................................ 18
-Verificar Particiones ................................................................................................. 19
-Particionamiento básico del Disco Duro .................................................................. 19
-Esquema de particionamiento básico en Linux ........................................................ 20
-Como cambiar la propuesta de particiones de YaST ............................................... 21
-Uso del Modo de Particionamiento Experto ............................................................. 21
-Crear nuevas particiones ......................................................................................... 23
-Editar particiones existentes .................................................................................... 23
-Borrar particiones existentes ................................................................................... 23
-Re-dimensionar particiones existentes .................................................................... 23
-Seleccionar el Software ........................................................................................... 24
-Iniciar el proceso de Instalación ............................................................................... 25
Tema 2: Configurar la instalación de Linux. .................................................................. 26
-Interfaces de Red .................................................................................................... 26
-Probar conexión a Internet....................................................................................... 28
Tema 3: Corregir errores en el proceso de instalación. ................................................ 29
Capitulo 3: Uso del Escritorio de Linux ............................................................................ 31
Tema 1: Conocer el porqué del escritorio grafico de Linux ........................................... 31
Tema 2: Usar el escritorio grafico GNOME................................................................... 33
-Iniciar Sesión ........................................................................................................... 33
Cerrar Sesión y Apagar el Sistema ........................................................................... 34
-Identificar componentes del Escritorio GNOME ....................................................... 34
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Administrar Iconos en GNOME ................................................................................ 35


-Usar el Administrador de Archivos de GNOME (Nautilus) ....................................... 37
Tema 3: Accesar a la interface de línea de comandos desde el escritorio grafico ........ 37
Capitulo 4: Administración de la plataforma de Linux ....................................................... 39
Tema 1: Conocer YaST ................................................................................................ 39
Tema 2: Entender los roles de SuSEconfig .................................................................. 40
Tema 3: Administrar la información de configuración de red desde YaST .................... 40
Tema 4: Instalar los paquetes de aplicaciones ............................................................. 42
Tema 5: Administrar las fuentes de instalación ............................................................ 42
Capitulo 5: Administrar archivos y directorios .................................................................. 43
Tema 1: Entender la Jerarquía Estándar del Sistema de Archivos. .............................. 43
-La Estructura Jerárquica del Sistema de Archivos. .................................................. 44
-FHS (Filesystem Hierarchy Standar) ....................................................................... 45
-Directorio root (/)...................................................................................................... 45
-Binarios esenciales para el uso de todos los usuarios (/bin) .................................... 46
-Directorio boot (/boot) .............................................................................................. 46
-Otras particiones (/data) .......................................................................................... 46
-Archivos de dispositivo (/dev) .................................................................................. 46
-Archivos de configuración (/etc) ............................................................................... 47
-Directorio de usuario (/home) .................................................................................. 48
-Librerias (/lib) ........................................................................................................... 48
-Punto de montaje para medios removibles (/media) ................................................ 49
-Directorio de Aplicaciones (/opt) .............................................................................. 49
-Directorio del usuario root (/root) ............................................................................. 49
-Binarios del sistema (/sbin) ...................................................................................... 49
-Directorio de datos para los servicios (/srv) ............................................................. 50
-Directorio temporal (/tmp) ........................................................................................ 50
-La jerarquía bajo /usr ............................................................................................... 50
-Archivos de variables (/var) ..................................................................................... 50
-Partición de ventanas (/windows) ............................................................................ 51
-Archivos de procesos (/proc) ................................................................................... 51
-Directorio de información del sistema (/sys) ............................................................ 51
-Punto de montaje para los sistemas de archivos montados temporalmente (/mnt) .. 51
-Directorio de montaje para otros sistemas de archivos. ........................................... 52
Tema 2: Identificar los tipos de archivos en el sistema Linux. ...................................... 53
-Archivos Normales .................................................................................................. 53
-Directorios ............................................................................................................... 53
-Archivos de Dispositivos .......................................................................................... 53
-Enlaces ................................................................................................................... 53
-Sockets ................................................................................................................... 53
-FIFOs ...................................................................................................................... 54
Tema 3: Cambiar de directorios y listar su contenido. .................................................. 54
-cd ............................................................................................................................ 54
-ls ............................................................................................................................. 54
-pwd.......................................................................................................................... 55
Tema 4: Crear y visualizar archivos. ............................................................................ 55

Ing. Ricardo Ruiz


1
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Crear un archivo nuevo usando „touch‟ .................................................................... 56


-Visualizar contenido de un archivo usando „cat‟....................................................... 56
-Visualizar contenido de un archivo usando „less‟ ..................................................... 56
-Visualizar contenido de un archivo usando „tail‟ ....................................................... 56
Tema 5: Trabajar con archivos y directorios. ................................................................ 57
-Copiar y Mover archivos y directorios ...................................................................... 57
-Crear directorios ...................................................................................................... 58
-Borrar archivos y directorios .................................................................................... 58
-Archivos de Enlace .................................................................................................. 59
Tema 6: Buscar archivos en Linux. .............................................................................. 60
-Herramientas de Búsqueda Grafica ......................................................................... 61
-Comando find .......................................................................................................... 62
-Comando locate ...................................................................................................... 62
-Comando whereis .................................................................................................... 62
-Comando which ....................................................................................................... 63
-Comando type ......................................................................................................... 63
Tema 7: Buscar contenido en los archivos. .................................................................. 63
-Comando grep ......................................................................................................... 63
-Expresiones Regulares............................................................................................ 64
Capitulo 6: Trabajar con los Shell de Linux y la línea de comandos ................................. 65
Tema 1: Que debemos saber sobre comandos de Shell .............................................. 65
-Tipos de Shell .......................................................................................................... 65
-Archivos de configuración de bash .......................................................................... 65
-Completar los comandos y nos nombres de archivos .............................................. 66
Tema 2: Ejecutar comandos en la línea de comandos ................................................. 66
-Función „history‟....................................................................................................... 66
-Conmutar hacia el usuario „root‟ .............................................................................. 67
Tema 3: Que debemos saber sobre los comandos comunes y las tareas de la línea de
comandos .................................................................................................................... 67
-Variables de entorno ............................................................................................... 67
-Aliases ..................................................................................................................... 68
Tema 4: Entender la sintaxis de los comandos y caracteres especiales....................... 68
-Seleccionar la codificación de caracteres ................................................................ 69
-Expansión de nombres usando patrones de búsqueda ........................................... 69
-Prevenir que el Shell de la interpretación de caracteres especiales......................... 70
Tema 5: Usar tuberías y redirección ............................................................................. 70
Capitulo 7: Usar un Editor de texto de Linux .................................................................... 71
Tema 1: Qué cosa es un editor de texto ....................................................................... 71
-Iniciar vi ................................................................................................................... 72
-Uso del editor vi ....................................................................................................... 73
-Aprender algunos modos de trabajo ........................................................................ 73
Capitulo 8: Administrar Usuarios, Grupos y Permisos ...................................................... 75
Tema 1: Administrar usuarios y grupos usando YaST .................................................. 75

Ing. Ricardo Ruiz


2
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Temas básicos sobre usuarios y grupos .................................................................. 75


-Administración de usuarios y grupos con YaST ....................................................... 76
Tema 2: Describir las características básicas de la seguridad de los usuarios ............. 77
-Componentes de la seguridad del sistema de archivos ........................................... 78
-Usuarios y Grupos ................................................................................................... 78
Tema 3: Administrar usuarios y grupos usando la línea de comandos ......................... 81
-Administrar cuentas de usuario desde la línea de comandos .................................. 81
-Administrar grupos de usuarios desde la línea de comandos .................................. 84
-Crear mensajes de texto para los usuarios que acceden al sistema ........................ 85
Tema 4: Administrar permisos y propietarios de archivos............................................. 85
-Los permisos de archivo .......................................................................................... 86
-Cambiar los permisos de archivos con chmod ......................................................... 87
-Cambiar los propietarios de archivos con chown y chgrp ........................................ 88
-Modificar los permisos de acceso estándar ............................................................. 88
-Configurar permisos especiales ............................................................................... 89
Tema 5: Entender la seguridad del sistema de archivos .............................................. 90
-Reglas básicas para definir usuarios con acceso de escritura. ................................ 90
-Reglas básicas para definir usuarios con acceso de lectura. ................................... 90
Capitulo 9: Administrar el Sistema de Archivos de Linux ................................................. 92
Tema 1: Seleccionar un sistema de archivos de Linux. ................................................ 92
-El sistema de archivos de Linux .............................................................................. 92
-Conmutación a sistemas de archivos virtuales ........................................................ 93
-El sistema de archivos interno de Linux ................................................................... 94
-El FSJ ...................................................................................................................... 97
-Documentación adicional sobre los sistemas de archivos. ...................................... 98
Tema 2: Configurar particiones de sistemas de archivos de Linux. .............................. 98
-Dispositivos Linux y nombres de las particiones ...................................................... 99
-Diseñar estrategias para la implementación de particiones ................................... 100
-Administrar particiones con YaST .......................................................................... 101
-Administrar particiones con fdisk ........................................................................... 101
Tema 3: Administrar sistemas de archivos de Linux. .................................................. 104
-Crear un sistema de archivos usando YaST. ......................................................... 104
-Crear un sistema de archivos usando las herramientas de línea de comandos. .... 104
-Montar sistema de archivos. .................................................................................. 106
-Monitorear y revisar sistemas de archivos ............................................................. 109
Tema 4: Configurar LVM y aplicaciones RAID........................................................... 111
- Como usar componentes VM ............................................................................... 112
- Como usar características VM .............................................................................. 112
- Como configurar volúmenes lógicos usando YaST ............................................... 113
- Como configurar LVM con las herramientas de línea de comandos ..................... 116
- Administrar aplicaciones RAID ............................................................................. 118
Tema 5: Definir y configurar cuotas de discos. ........................................................... 120
- Preparar el sistema de archivos. .......................................................................... 121

Ing. Ricardo Ruiz


3
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

- Inicializar el sistema de cuotas. ............................................................................ 121


- Iniciar y activar el servicio de cuotas..................................................................... 122
- Configurar y administrar cuotas de usuarios y grupos. ......................................... 122
Capitulo 10: Administrar el Acceso de Usuarios y Seguridad ......................................... 124
Tema 1: Configurar la autenticación de usuarios PAM. .............................................. 124
- Ubicación y propósito de los archivos de configuración de PAM. ......................... 125
- Configuración de PAM. ......................................................................................... 125
- Ejemplos de archivos de configuración de PAM. .................................................. 127
- Guías para contraseñas seguras. ......................................................................... 129
- Recursos de documentación PAM. ....................................................................... 129
Tema 2: Administrar y asegurar el ambiente de usuario en Linux. ............................. 130
- Ejecutar tareas administrativas como 'root' ........................................................... 130
- Delegar tareas administrativas con 'sudo' ............................................................. 131
- Configuración estándar para cuentas de usuario nuevas ..................................... 133
- Configurar ajustes de seguridad ........................................................................... 133
Tema 3: Usar ACL para control de acceso avanzado. ............................................... 134
- Conceptos básicos ............................................................................................... 134
- Comandos básicos ............................................................................................... 134
- Términos importantes ........................................................................................... 135
- Tipos .................................................................................................................... 135
- Como las ACL define privilegios de acceso .......................................................... 136
- Como usar las herramientas de línea de comandos de ACL ................................ 137
- Como configurar el acceso a un directorio con una ACL ...................................... 137
- Como configurar el acceso a un directorio con una ACL estándar ........................ 139
- Opciones adicionales de setfacl ........................................................................... 140
- Como las aplicaciones manejan las ACL .............................................................. 141
Capitulo 11: Configurar la Red de forma Manual ........................................................... 142
Tema 1: Términos de redes en Linux. ........................................................................ 142
Tema 2: Configurar las interfaces de red con la herramienta ip. ................................. 142
- Desplegar la configuración de red actual. ............................................................. 143
- Cambiar la configuración de red actual. ................................................................ 145
- Guardar los ajustes del dispositivo a un archivo de configuración. ....................... 146
Tema 3: Configurar enrutamiento con la herramienta ip. ............................................ 148
- Visualizar la tabla de enrutamiento. ...................................................................... 148
- Agregar rutas a la tabla de enrutamiento. ............................................................. 149
- Borrar rutas de la tabla de enrutamiento. .............................................................. 149
- Salvar la configuración de rutas en un archivo de configuración. .......................... 150
Tema 4: Probar las conexiones de red con comandos de Shell. ................................ 150
- Probar la conexión a la red con ping. .................................................................... 150
- Mostrar la ruta que siguen los paquetes usando traceroute. ................................. 151
Tema 5: Configurar el nombre de host y la resolución de nombres. ........................... 152
- Configurar el nombre de host y dominio. .............................................................. 152
- Configurar resolución de nombres. ....................................................................... 152
Capitulo 12: Administrar Procesos y Servicios de Linux ................................................. 154

Ing. Ricardo Ruiz


4
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 1: Visualizar y administrar procesos. ................................................................ 154


- Definición de procesos ......................................................................................... 154
- Tareas y procesos ................................................................................................ 155
- Administrar procesos en primer y segundo plano ................................................. 156
- Visualizar y priorizar procesos .............................................................................. 157
- Fin de un proceso ................................................................................................. 161
- Servicios (demonios) ............................................................................................ 162
- Administrar servicios............................................................................................. 162
Tema 2: Programar tareas. ........................................................................................ 163
- Programar una tarea con „cron‟ ............................................................................ 163
Capitulo 13: Monitorear un Servidor Linux ..................................................................... 167
Tema 1: Monitorear un sistema Linux......................................................................... 167
- Información del log de arranque. .......................................................................... 167
- Información del hardware (/proc/). ........................................................................ 168
- Información del hardware (herramientas de la línea de comandos). ..................... 169
- Información del sistema y procesos (herramientas de la línea de comandos)....... 169
- Monitor de espacio de disco. ................................................................................ 171
Tema 2: Usar el servicio de eventos del sistema. ....................................................... 171
- El demonio syslog (syslog-ng) .............................................................................. 171
- Archivos de bitácora ............................................................................................. 175
- Administración de las bitácoras ............................................................................ 176
Tema 3: Monitorear actividad de logins ...................................................................... 179
- Comando „who‟ ..................................................................................................... 179
- Comando „w‟ ......................................................................................................... 179
- Comando „finger‟ .................................................................................................. 180
- Comando „last‟ ...................................................................................................... 180
- Comando „lastlog‟ ................................................................................................. 181
- Comando „faillog‟ .................................................................................................. 181
Capitulo 14: Configurar el Sistema de Inicio .................................................................. 182
Tema 1: Descripción del procedimiento de carga de Linux......................................... 182
- BIOS y el administrador de arranque .................................................................... 183
- Kernel ................................................................................................................... 183
- initramfs (Initial RAM File System) ........................................................................ 183
- init......................................................................................................................... 184
Tema 2: GRUB (Grand Unified Bootloader) ............................................................... 184
- Que es un administrador de arranque .................................................................. 184
- Administradores de arranque en SUSE Linux ....................................................... 185
- Iniciar el Shell de GRUB ....................................................................................... 186
- Modificar el archivo de configuración de GRUB .................................................... 186
- Iniciar un sistema directamente en un Shell .......................................................... 187
Tema 3: Administrar los niveles de ejecución. ............................................................ 189
- El programa init y los niveles de ejecución de Linux. ............................................ 189
- Scripts de init y los directorios de niveles de ejecución. ........................................ 192
- Cambiar el nivel de ejecución. .............................................................................. 197

Ing. Ricardo Ruiz


5
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 15: Administración del Software en Linux ........................................................ 199


Tema 1: Administrar paquetes de software RPM ....................................................... 199
- Componentes y características de RPM ............................................................... 199
- RPM Básico .......................................................................................................... 200
- Administración de paquetes de software con rpm ................................................. 201
Capitulo 16: Administrar Respaldos y Recuperación ..................................................... 207
Tema 1: Desarrollar una estrategia de respaldos ....................................................... 207
- Seleccionar un método de respaldo...................................................................... 207
- Seleccionar el medio correcto para los respaldos. ................................................ 209
Tema 2: Respaldar archivos con YaST ...................................................................... 209
- Respaldar datos del sistema con YaST ................................................................ 209
- Restaurar datos del sistema con YaST ................................................................. 211
Tema 3: Crear respaldos con tar ................................................................................ 211
- Crear archivos tar ................................................................................................. 211
- Desempacar archivos tar ...................................................................................... 212
- Excluir archivos del respaldo ................................................................................ 212
- Ejecutar respaldos incrementales y diferenciales ................................................. 212
- Opciones del comando tar .................................................................................... 214
Tema 4: Trabajar con cintas magnéticas .................................................................... 214
Tema 5: Copiar datos con dd ..................................................................................... 216
Tema 6: Hacer directorios espejos con rsync ............................................................. 216
- Ejecutar una copia local con rsync........................................................................ 217
- Ejecutar una copia remota con rsync .................................................................... 217
Tema 7: Automatizar respaldos de datos con cron ..................................................... 218
Capitulo 17: Usar el Acceso Remoto ............................................................................. 219
Tema 1: Proveer acceso remoto seguro con OpenSSH ............................................. 219
- Fundamentos de criptografía ................................................................................ 219
- Arquitectura y propiedades de SSH ...................................................................... 220
- Configurar el servidor SSH ................................................................................... 224
- Configurar el cliente SSH ..................................................................................... 224
- Comandos relacionados ....................................................................................... 225
- Administración de la autenticación de llave publica .............................................. 227
Tema 2: Habilitar administración remota con YaST .................................................... 229
- Administración remota con YaST usando VNC..................................................... 229
- Configurar el servidor para la administración remota ............................................ 229
- Acceder al servidor para administrarlo remotamente ............................................ 230
Capitulo 18: Servicio de Impresión................................................................................. 232
Tema 1: Configuración de impresión local. ................................................................. 232
- Cuando configurar una Impresora. ....................................................................... 232
- Aplicaciones requeridas para la impresión. ........................................................... 233
- Agregar una impresora. ........................................................................................ 233
Tema 2: Administrar trabajos y colas de impresión. ................................................... 240

Ing. Ricardo Ruiz


6
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

- Generar un trabajo de impresión .......................................................................... 240


- Desplegar información de trabajos de impresión .................................................. 241
- Cancelar trabajos de impresión ............................................................................ 242
- Administrar colas .................................................................................................. 242
- Configurar colas ................................................................................................... 243
- Iniciar y detener CUPS ......................................................................................... 245
Tema 3: Como trabaja CUPS. .................................................................................... 245
- Pasos del proceso de impresión ........................................................................... 245
- Colas de impresión ............................................................................................... 246
- Archivos de bitácora. ............................................................................................ 248
- Archivo de Configuración. ..................................................................................... 250
Tema 4: Configurar y administrar un servidor de impresión........................................ 250
- Transmitir información sobre las impresoras a otras computadoras ..................... 250
- Restricciones de acceso ....................................................................................... 252
- Restringir el acceso a las impresoras a los usuarios y grupos .............................. 254
- Restringir el acceso a la interface web ................................................................. 255
Capitulo 19: Servicio SAMBA......................................................................................... 257
Tema 1: ¿Que es Samba? ......................................................................................... 257
Tema 2: Configurar un servidor de archivos simple .................................................... 258
- Instalar Samba ..................................................................................................... 258
- Entender el archivo de configuración de Samba ................................................... 258
Tema 3: Configurar autenticación de usuario ............................................................. 260
- Preparar el servidor para autenticación de usuario ............................................... 260
- Configurar un recurso compartido que sea accesible solo por un usuario ............ 261
- Configurar acceso al recurso compartido a un grupo de usuarios......................... 261
- Configurar la exportación de directorios Home ..................................................... 262
Tema 4: ¿Cómo usar las herramientas para clientes Samba? ................................... 262
- Usar el comando nmblookup ................................................................................ 262
- Usar el comando smbclient................................................................................... 263
Tema 5: Usar Samba como un controlador de dominio .............................................. 265
- ¿Que es un controlador de dominio‟ ..................................................................... 265
- Configurar /etc/samba/smb.conf ........................................................................... 265
- Crear cuentas para estaciones de trabajo ............................................................ 266
Tema 6: Integrar Samba en un dominio Windows ...................................................... 267
Tema 7: Configurar Samba como un servidor de impresión. ...................................... 268
- Pre procesar en el servidor samba. ...................................................................... 268
- Pre procesar en el cliente Windows. ..................................................................... 270

Ing. Ricardo Ruiz


7
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Introducción
En este curso, se impartirán los conocimientos necesarios que les permitirán a los
estudiantes presentar un examen de certificación Novell CLP, sin detrimento de los
nuevas tecnologías que esta distribución de Linux ofrece día a día.

Novell CLP consta de tres cursos bases: SLES Fundamentals, SLES Administration y
SLES Advanced Administration.

Este curso sin ser uno dedicado a SLES específicamente tratará la mayor parte de sus
temas en esta distribución de Linux.

-Objetivos del Curso


Este curso consta de dos partes, el objetivo de dividir el curso en dos es en esencia no
saturar de conocimientos a usuarios noveles, y básicamente la primera parte enseña los
siguientes conceptos y habilidades fundamentales en Linux:

 Entender la historia de Linux


 Instalar una distribución de Linux
 Usar el escritorio de Linux
 Administrar las configuraciones de Red
 Administrar los paquetes de software
 Ubicar y usar los recursos de ayuda
 Administrar Archivos y Carpetas
 Trabajar en la Línea de Comandos
 Usar editores de texto de Linux
 Administrar usuarios, grupos y permisos

Estos son requisitos básicos fundamentales antes de entrar en la segunda parte del curso
cuyos objetivos son.

 Administrar el Sistema de Archivos de Linux


 Administrar accesos de usuarios y su seguridad
 Configurar manualmente la red
 Administrar los procesos y servicios en Linux
 Monitorear un Servidor Linux
 Configurar el sistema de Inicio
 Administrar el software en Linux
 Administrar el Respaldo y la Restauración
 Configurar el acceso remoto

Las tareas que se cumplen siguiendo estos objetivos, son elementos rutinarios en un
ambiente corporativo con infraestructura basada en Linux.

Ing. Ricardo Ruiz


1
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Audiencia
La primera parte de este curso está dirigida a administradores de servidores que estén
interesados en Linux, candidatos a certificaciones Linux con experiencia en otros sistemas
operativos y estudiantes de Ingeniería en Sistemas, Ingeniería en Computación,
Licenciatura en Computación y público en general con conocimientos básicos de sistemas
operativos.

La segunda parte de este curso tendrá como audiencia todo aquel que tenga el
conocimiento impartido en la primera parte de este curso.

-Certificación y Pre-requisitos
Este curso ayudará al estudiante a prepararse para el examen práctico de certificación
Novell CLP. Este examen está basado en escenarios reales en los que se aplica el
conocimiento adquirido durante este curso, en el cual demostraran que saben qué hacer y
cómo hacer durante un problema real.

El esquema oficial de cursos a realizar para esta certificación es la siguiente:

Nuevo Administrador de
Sistemas Linux

SLES Fundamentals
Usuarios Noveles en Linux
(Primera Parte de este curso)

SLES Administration
(Segunda Parte de este curso)

SLES Advanced Administration Actual Novel CLP


(No lo contempla este curso)

Novell Practicum Actualización a Novell CPL


Examen Practico de Novell (No lo contempla este curso)

Novell Certified Linux


Professional

Ing. Ricardo Ruiz


2
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Agenda

TEMA Tiempo
Introducción 00:30
Historia de Linux 01:30
Instalación 02:00
Escritorio de Linux 02:00
Usar un Editor de Texto 02:00
Administración de la Plataforma 02:00
Administración de Archivos 06:00
Shells 02:00
Usuarios, Grupos y Permisos Administrar el Sistema de Archivos 06:00
Administrar Accesos de Usuarios Configuración de Red, Manual 08:00
Administración de Servicios
Monitorear Sistema Linux Configurar el Sistema de Inicio 08:00
Administración de Software 04:00
Respaldos de Seguridad 04:00
Configuración de Acceso Remoto 02:00
Servicio de Impresión CUPS 02:00
Servidor de Archivos con SAMBA 08:00
Servicio de Nombres de Dominio (No contenido en este manual) 04:00
Servicio Web (No contenido en este manual) 08:00
Servicio de Correo Electronico (No contenido en este manual) 06:00
EXAMEN DE CURSO 02:00
TOTAL DE HORAS DEL CURSO 80:00:00

-Escenario
El estudiante deberá tener en cuenta el escenario siguiente durante todo este curso:

Usted es el Administrador de Sistemas de la Organización de Educación Superior de las


Américas en Nicaragua (oesa.edu.ni). El Director está considerando la migración de
algunos servicios de red a servidores Linux.

Como administrador de sistemas, usted decide realizar las siguientes tareas.

 Instalar SLES en una estación de trabajo.


 Familiarizarse con la interface gráfica de usuario y la interface de línea de comandos.
 Aprender cómo integrar su SLES en la red existente.
 Aprender a brindar soporte a todos los posibles problemas que pueda tener.
 Aprender a administrar el software con la herramienta de configuración YaST2.

Ing. Ricardo Ruiz


3
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Aprender como editar archivos de configuración con un editor grafico o el editor de


línea de comandos „vi‟.
 Entender la estructura del sistema de archivos y los comandos básicos del Shell, para
trabajar en el sistema de archivos (ejemplos: copiar y mover).
 Aprender cómo administrar usuarios, grupos y permisos para asegurar un sistema de
seguridad básico a los archivos.

Una vez completado este entrenamiento, usted podrá ser capaz de instalar un SLES y
configurar un sistema para futuras pruebas.

-Estándares de este documento


Mientras estemos trabajando en este curso, se podrán apreciar algunos textos que
cambian su estilo, esto puede deberse a que se necesita información adicional para
completar un ejercicio o comprender el tema en general.

Los siguientes ejemplos describen las causas más comunes:

 Texto itálico/negrita. Hace referencia a una situación específica, tal como el nombre
de host de su servidor. Por ejemplo, si su servidor tiene como nombre de host LI90, y
en el texto de este documento aparece: hostname.oesa.edu.ni usted deberá ingresar
LI90.oesa.edu.ni
 10.0.0.xx. esta es la dirección IP que esta asignada a su servidor SLES. Por ejemplo,
si su IP es 10.0.0.90, y en el texto de este documento aparece 10.0.0.xx, entonces
usted deberá de introducir 10.0.0.90

Cualquier duda, el instructor/capacitador debe de estar capacitado para aclarar las que
este instructivo no logre explicar.

Ing. Ricardo Ruiz


4
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 1: Historia de Linux


Este capítulo proveerá de información adicional acerca de Linux y servirá como una guía
para la instalación de una distribución de Linux.

Objetivos

 Comprender la historia de Linux


 Entender el entorno multiusuario
 Optimizar una instalación simple de Linux.

Tema 1: Comprender la historia de Linux


Linux está estrechamente ligado al sistema operativo UNIX. Para entender la historia de
este sistema operativo se debe conocer lo siguiente:

 El desarrollo histórico de UNIX


 El desarrollo de Linux
 Las diferencias de software entre las distribuciones para usuarios y las distribuciones
para servidores.

-El desarrollo histórico de UNIX

Al final de los años 60, muchos sistemas operativos estaban diseñados para operaciones
‘batch’. Si se requería correr un programa, se insertaba una pila de tarjetas perforadas o
un rollo de cinta perforada en un dispositivo de lectura y esperar a que el resultado fuera
enviado a la impresora.

Si ocurría un error en el programa o si el resultado no era el esperado, se necesitaba


reescribir el rollo de cinta perforada o reemplazar una de las muchas tarjetas perforadas,
hacer que el dispositivo volviera a „leer‟ la pila y nuevamente esperar el resultado.

Este procedimiento fue por largo tiempo el método por el cual los desarrolladores
trabajaron, obviamente es ineficiente, y los desarrolladores necesitaban encontrar una vía
para permitir que un número mayor de usuarios accedieran al sistema y así aprovechar
todos los recursos que este podía brindarles.

MULTICS fue uno de los primeros programas creados para suplir esta demanda. Permitía
trabajar en una „caja de dialogo‟ con la computadora, pero esta fue muy influenciada por
las operaciones „batch‟, y su uso era extremadamente difícil.

En 1969, uno de los desarrolladores de MULTICS, Ken Thompson, inicio la creación de


un sistema operativo que, aparte de tener una „caja de dialogo‟ con el sistema, incluía una
alta funcionalidad y una simplicidad estructural.

La primera versión de UNIX fue escrita en Ensamblador, un lenguaje de programación


muy ligado al lenguaje de maquina (nivel de máquina, binario). Para ser independiente de
la maquina, la siguiente versión de UNIX debió de ser reescrito en 1971, se uso para esta
versión el lenguaje de programación „C‟, desarrollado por Dennis Ritchie.

Ing. Ricardo Ruiz


5
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Debido a que Laboratiorios BELL (una compañía subsidiaria de AT&T) preveía a las
universidades documentación y el texto fuente de UNIX a un bajo costo, este sistema fue
adoptado con relativa rapidez.

La operación sencilla del sistema, la posibilidad de copiar ilimitadamente las fuentes, y su


relativa portabilidad, motivo a muchos usuarios y compañías participar activamente en el
desarrollo de nuevas funcionalidades, estas se agregaron con rapidez a UNIX y este
alcanzo rápidamente un nivel de madurez muy alto.

Al mismo tiempo, una serie de derivados comerciales de UNIX fueron naciendo,


compañías como IBM, DEC y HP lanzaron sus sistemas operativos UNIX, así como una
versión desarrollada por la Universidad de California en Berkeley (BSD UNIX, 1978).

En 1983, AT&T inicia el mercadeo de UNIX System V, usando para esto una compañía
hermana (USL) y proclamando que System V era „el‟ UNIX Estándar.

Como consecuencia de esto el licenciamiento de UNIX cambió considerablemente,


iniciándose una larga batalla legal contra los desarrolladores de BSD. Esto no evito que
se desarrollara simultáneamente una versión estándar genuina durante ese periodo de
lucha sin cuartel entre las dos versiones de UNIX.

Los sistemas operativos UNIX actuales están separados unos más de System V y otros
más de BSD, pero no son sistemas completamente „puros‟ de uno u otro tipo.

Linux trata de combinar lo mejor de ambos mundos de UNIX.

Como Linux fue escrito en „C‟, este está disponible para una gran cantidad de plataformas
diferentes, estas incluyen:

 Intel / AMD: 32 bits


 Intel / AMD: 64 bits
 Power PC (Macintosh, RS/6000)
 SPARC (Sun / Oracle)
 IBM pSeries
 IBM zSeries (S/390)
 Otros
-El desarrollo de Linux

En 1991, el estudiante Linus Benedict Torvalds inicio el desarrollo de un sistema operativo


„UNIX-like‟ para su computadora personal.

Unos meses después ya había logrado desarrollar un „kernel‟ rudimentario, entonces


publico vía Internet el código fuente a otros que estuvieran interesados a ayudarlo a
desarrollar este nuevo sistema operativo, el mensaje fue el siguiente:

Ing. Ricardo Ruiz


6
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)

Newsgroups: comp.os.minix

Subject: What would you like to see most in minix?

Summary: small poll for my new operating system

Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>

Date: 25 Aug 91 20:57:08 GMT

Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This
has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as
my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical
within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I
won't promise I'll implement them :-)

Linus (torvalds@kruuna.helsinki.fi) PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable
(uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

Linus Torvalds hizo que el código fuente de su kernel Linux estuviese disponible con GPL
(GNU General Public License). GLP permite leer y editar el código fuente, también
requiere que cualquier edición del código fuente esté disponible al público en general.

Esto le permitió a Torvalds que muchas personas se unieran al desarrollo de su proyecto,


pero el desarrollo del núcleo del sistema (kernel de Linux) es coordinado por él mismo.
Todas las modificaciones al kernel son integradas por el mismo Torvalds.

Las funciones del kernel incluyen los controles de entrada y salida, dispositivos de control,
administración de procesos, y administración de archivos. Otros componentes del sistema
(utilidades de Shell, programas de red, e implementaciones de kernel en procesadores
diferentes de Intel) son integradas después por otras personas o grupos de personas.

-Las diferencias de software entre las distribuciones para usuarios y las distribuciones para
servidores

Tomaremos para este tema el desarrollo de las versiones SUSE de Linux.

Por ejemplo, SLES 10 está basado en la distribución para usuarios SUSE Linux 10.1. El
tiempo entre las liberaciones de estas distribuciones de usuarios y las liberaciones de las
de SLES son utilizadas para pruebas intensivas y aplicación de parches de seguridad y
para estabilizar el sistema.

Adicionalmente, SLES contiene algunas funciones que permiten desarrollar futuras


distribuciones de SUSE Linux.

Ing. Ricardo Ruiz


7
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

10.

10

10.

10.

9.3

SUSE LINUX
Open Open SUSE ENTERPRISE
Source LINUX SERVER

La ilustración anterior refleja el proceso anteriormente descrito.

Los paquetes de software que posee uno y otro también son importantes diferencias,
mientras que Open SUSE posee alrededor de 1000 paquetes, SLES posee alrededor de
3500, la mayor parte de los paquetes eliminados son aplicaciones de escritorio.

Tema 2: Entender el Entorno Multiusuario


Una de las propiedades de UNIX por la que logro un éxito sobre otros sistemas
operativos, fue el hecho de que permitía la conexión de múltiples usuarios de manera
simultánea (tenía capacidad multiusuario).

Debido a que muchos usuarios necesitaban ejecutar muchos programas de manera


simultánea, se desarrollo dentro de su kernel mecanismos para ejecutarlos de manera
simultánea (capacidad multitarea).

La implementación de capacidades multiusuario y multitarea en un solo procesador fue en


su tiempo un elemento novedoso, porque hasta ese momento estas capacidades solo se
lograban con sistemas de múltiples procesadores.

Correr estas capacidades sobre un mismo procesador requería que los procesos
esperaran para poder usar las entradas y salidas del procesador, esto mientras otros
procesos estuvieran utilizando el procesador.

UNIX implemento multitarea por división de tiempo, en este sistema cada proceso se le
permitía el uso del procesador por un tiempo máximo predeterminado por el sistema.
Cuando este tiempo expira, el sistema operativo suspende las tareas del proceso,
almacena su estado y sus variables y lo hace esperar mientras otros procesos pasan a
utilizar el procesador hasta volver a tener el turno cerrando un circuito de espera del
proceso.

Ing. Ricardo Ruiz


8
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Otros sistemas operativos (como las versiones anteriores al MAC OS X) no intervienen en


este ciclo de procesos. Esto puede hacer que un proceso tome el control del procesador y
no lo libere, bloqueando el sistema completamente mientras el proceso este
ejecutándose.

Los sistemas operativos deben de coordinar la disponibilidad de los recursos del sistema
(disco duro, cintas de respaldo, interfaces, etc.). Si existe competencia de parte de un
proceso por un recurso, por ejemplo, la unidad de cinta de respaldo, solamente uno de los
procesos tendrá garantizado el acceso a este recurso. Los otros serán rechazados.

Las tareas de coordinación son muy complejas y no hay sistema operativo que logre
implementar una solución definitiva. El problema clásico envuelve situaciones en la que
dos o más procesos necesitan acceso exclusivo a un mismo recurso o conjunto de
recursos, tal como se ilustra en la imagen siguiente:

PROCESO A PROCESO B

Acceso Acceso
Solicitud

Recurso 1 Recurso 2

Este problema se denomina „Bloqueo Mutuo‟1.

El Multithreading es una extensión de la multitarea a la vez que ayuda a solventar este


problema. Con Multithreading, un número de recursos independientes los unos de los
otros pueden ser creados (producidos) sin necesidad de un proceso específico.
Multithreading incrementa el nivel de procesos en paralelo, ya que con cada „hilo‟ de
ejecución el proceso que lo utiliza debe ser administrado por el sistema operativo,
haciendo el uso de sistemas multiprocesadores aun más rentables.

Por el momento se han mencionado las palabras „programa‟ y „proceso‟ y aun no se


diferencia claramente ambos términos. La diferencia más obvia es una regla: un programa
es único en el sistema, pero este (el sistema) puede crear muchos procesos para mejorar
el desempeño del mismo programa.

Si un número de usuarios activos usando el sistema, estos pueden coexistir utilizando


programas y procesos independientes los unos de los otros, aun utilizando el mismo
programa.

1
Andrew S. Tanenbaum,
Sistemas Operativos Modernos
Tercera edición,
Capitulo 6,
Página 433

Ing. Ricardo Ruiz


9
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Optimizar una instalación simple de Linux


El proceso de instalación de una distribución de Linux puede dividirse en los siguientes
pasos:

 Requerimientos previos a la instalación


 Opciones de Instalación
 Instalación Básica
 Configuración

-Requerimientos previos a la Instalación

Los siguientes son los requerimientos básicos para la instalación de Linux:

 Requerimientos Mínimos:
o 256 Mb en RAM
o 500 Mb de Disco Duro Libre para aplicaciones
o 500 Mb de Disco Duro Libre para datos del usuario
 Requerimientos Mínimos Recomendados:
o 512 Mb a 3 Gb en RAM
o 4 Gb de espacio en Disco Duro
o Interface de Red

Antes de instalar cualquier distribución de Linux, algunos sistemas deben de ser


modificados para poder realizar dicha instalación de manera exitosa.

Para estar completamente seguros de que estamos preparados para la instalación de una
distribución de Linux, se necesita considerar lo siguiente:

 Compatibilidad de Hardware. Algunas distribuciones (SLES) soportan la mayoría del


hardware para servidores. También soporta el hardware para PC. Algunas Laptops
también tienen hardware compatible pero en estas hay que tener especial precaución
debido a que algunas partes de sus componentes aun no superan las pruebas de
compatibilidad con Linux.
Para evitar cualquier inconveniente se debe visitar la página de recursos compatibles
que su distribución de Linux tenga colgada en el WEB.2
 Tipos de Sistemas de Archivos. Linux soporta muchos tipos de sistemas de
archivos. Asegúrese que su distribución seleccionada soporte el tipo de sistema de
archivo con el que trabaja. El sistema de archivos por defecto es „REISER‟, si no está
seguro del sistema de archivos, mas adelante durante este curso se hablara más
sobre este tema.
 Esquema de Particiones de Disco. Asegúrese que su plan de distribución de
espacio de particiones sea apropiado y que tenga el tamaño adecuado para los
propósitos que usted tiene.
Modificar los tamaños de las particiones después de la instalación puede ser imposible
o muy difícil de lograr.

2
En el caso de SLES es: http://www.novell.com/partnerguide/section/481.html

Ing. Ricardo Ruiz


10
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Selección del Software a instalar. Se puede instalar la paquetería después de la


instalación del sistema operativo, pero es más sencillo realizar esta labor si ya se tiene
decidido que paquete de software será utilizado en el sistema operativo a instalar3.
-Opciones de Instalación

Cuando se arranca el computador desde el


DVD de instalación, la pantalla de
bienvenida que aparece es la Siguiente:

Si en 20 segundos no se ha seleccionado
ninguna opción del menú, la primera opción
de la lista (Iniciar desde el Disco Duro) será
seleccionada automáticamente. Para
detener este proceso de selecciona
automática, simplemente presione una
tecla cualquiera (excepto ENTER).

Las siguientes son las opciones más importantes de esta pantalla de bienvenida:

 Iniciar desde el Disco Duro: Inicia el sistema operativo que tenga instalado el Disco
Duro.
 Instalar: Inicia el proceso normal de instalación.
 Instalar – APIC Local Deshabilitada: Los sistemas basados en APIC (Advanced
Programmable Interrupt Controller), cada CPU es de un solo núcleo y tiene un APIC
local. La APIC es responsable de las configuraciones de las interrupciones específicas
de la CPU. En este tipo de instalación, se deshabilitan los elementos de APIC que trae
esta distribución de Linux en particular.
 Instalar – Modo Seguro: Algunos computadores viejos no tienen ningún tipo de
administración de energía o aceleración de disco duro. Si se tiene problemas con la
instalación, se recomienda probar con esta instalación.
 Sistema de Rescate: Es un sistema Linux mínimo (sin la interfaz gráfica) que se inicia
desde el DVD y le permitirá reparar la instalación de Linux que se encuentre en su
Disco Duro.
 Test de Memoria: Revisa la memoria RAM física en busca de errores.

Cuando seleccione una de las opciones,


presione ENTER, el programa de instalación
iniciará automáticamente (en SLES es
YaST).

Si presiona la tecla „F1‟ una ventana con


información sobre las posibles opciones de
inicio aparecerá. Se usan las teclas de
direcciones y ENTER para navegar sobre el
texto de esta ventana, la tecla „Esc‟ sirve
para cerrarla.

3
Para incrementar la seguridad de su sistema, asegúrese de instalar solamente el software que su
sistema usará.

Ing. Ricardo Ruiz


11
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Las opciones de inicio pueden ser ingresadas en el campo „Opciones de Inicio‟.

Para cambiar el lenguaje de la Instalación


se usa la tecla „F2‟.

Para cambiar la resolución de la pantalla


durante el proceso de instalación, se usa
„F3‟.

Para ingresar un CD con controladores


adicionales durante el proceso de
instalación, se presiona „F5‟.

-Instalación Básica

Como primera tarea de instalación YaST


preguntara al usuario si desea verificar el
medio de instalación de Linux (SLES)4

El usuario puede o no comprobar el medio


de instalación, se recomienda siempre
verificarlo ya que puede ser que este
dañado algún archivo y la comprobación
ahorra tiempo de troubleshooting5.

La siguiente pantalla generalmente es la que muestra el acuerdo de licenciamiento y uso


del software distribuido con Linux, este acuerdo debe ser leído cuidadosamente.

Una vez leído y aceptado el acuerdo de


licencia, se debe seleccionar la opción
„Acepto el Acuerdo de Licencia‟ y presionar
el botón „Siguiente‟.

En el siguiente procedimiento, YaST


pregunta que es lo que se desea realizar, si
una „Instalación Nueva‟ o una
„Actualización‟

4
Si seleccionó el lenguaje usando la tecla „F2‟, esta tarea será omitida por YaST
5
Búsqueda y solución de problemas.

Ing. Ricardo Ruiz


12
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si se selecciona „Otros‟ se tienen las


siguientes posibilidades:

 Reparar un sistema ya instalado.


 Iniciar un sistema ya instalado.

En nuestro caso, seleccionaremos


„Instalación Nueva‟ y presionaremos
„Siguiente‟.

YaST solicitará que se defina la zona


horaria en la que Linux será instalado, esto
configura el reloj físico del sistema.

En nuestro caso debemos seleccionar en


Region „America Central y del Sur‟, y en
Zona Horaria „Managua‟, en “Reloj de
Hardware definido para” debemos colocar
„Hora Local‟, esto nos pondrá el reloj del
sistema en nuestro uso horario.

Una vez seleccionado la zona horaria, se presiona „Siguiente‟.

YaST solicitará al usuario que defina cual


escritorio grafico desea instalar, para
efectos de este manual y de este curso en
particular, usaremos GNOME.

Con esta información básica, YaST muestra un resumen de las tareas y configuraciones a
realizar durante el proceso de instalación, definiendo:

 Distribución de Lenguaje del Teclado.


 Particiones del Disco Duro.
 Aplicaciones a Instalar.
 Lenguaje.

Ing. Ricardo Ruiz


13
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La pestaña „Experto‟ muestra además de las anteriores las siguientes:

 Sistema.
 Productos Add-On.
 Proceso de Inicio.
 Zona Horaria.
 Lenguaje.
 Modo de Inicio por defecto.

Generalmente no se necesita modificar las


recomendaciones propuestas por YaST,
pero si usted requiere configuraciones
especificas, todas las configuraciones
descritas anteriormente se pueden
personalizar y optimizar para sus
propósitos.

Una vez configurado y personalizado (si se


requiere), las opciones anteriores se debe
presionar „Acepto‟ esto desplegará una
ventana que solicitará que usted „Confirme‟
el proceso de instalación a iniciar.

Una vez que comience el proceso de instalación la primera tarea que realiza YaST es
formatear las particiones en las que el sistema será instalado.
-Configuración

Durante la fase de instalación del nuevo sistema operativo, se deberán configurar los
siguientes elementos:

 Contraseña del usuario „root‟.


 El FQDN del equipo.
 Dispositivos de Red.
 Usuarios.
 Hardware.

Ing. Ricardo Ruiz


14
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Contraseña del usuario ‘root’

Si el proceso de instalación finaliza sin


problemas, el computador se reiniciará,
pero YaST nuevamente será lanzado, esto
debido a que se necesita completar algunas
tareas adicionales para el buen
funcionamiento del sistema.

La primera tarea es configurar una


contraseña al usuario „root‟, si la contraseña
es corta o muy simple, una advertencia
aparecerá en la pantalla.

FQDN

Luego de configurar la contraseña del


usuario „root‟, la siguiente tarea es asignar
„nombre de dominio completamente
calificado‟ (FQDN) del equipo. Aparecerá
una ventana con dos cuadros de texto, en el
primero se escribe el nombre del host, a
como lo tiene (o tendrá) identificado el DNS
de la red, y en el segundo se escribe el
nombre del dominio (ejemplo:
masaya.com.ni, monimbo.com.ni,
uml.edu.ni, mhcp.gob.ni, etc…).

La opción „Cambiar Nombre via DHCP‟ se puede activar si se tiene un DHCP Server en la
red, y este a su vez ya tiene configurado la asignación de IP a la MAC de la NIC del
servidor donde está siendo instalado Linux.

Ing. Ricardo Ruiz


15
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Dispositivos de red

Después de especificar el FQDN aparecerá


una pantalla con el resumen de los
dispositivos de comunicación con la red que
tiene el sistema. Estos pueden ser:

 Modo de Red
 Muro de Fuego
 Interfaces de Red
 Conexiones DSL
 Adaptadores ISDN
 Modems (Dial-UP)
 Administración Remota VNC
 Proxy

Por defecto, las NIC son configuradas con


DHCP, es en esta oportunidad cuando se
pueden cambiar las configuraciones por
defecto de la(s) NIC(s).

Una vez configurada la NIC del sistema,


aparecerá una ventana en la que se puede
probar la conexión del sistema al Internet,
se puede omitir este paso. Si se prueba la
conexión YaST buscará actualizaciones
para el sistema, si los encuentra le
consultará si desea actualizar el sistema
con los últimos parches de seguridad.

Usuarios

Después de configurar los servicios, YaST


preguntará como se autenticaran los
usuarios, las opciones son:

 Local (/etc/passwd). Los usuarios


serán administrados usando el archivo local
/etc/passwd. Se selecciona esta opción si
la computadora no tiene conexión a la red o
si se desea administrar localmente a los
usuarios.

 LDAP. Las cuentas de los usuarios son administradas de manera centralizada por un
Servidor LDAP. Todos los usuarios deben autenticarse via LDAP si el entorno de
trabajo de red tiene ambos, UNIX y Windows, como sistemas operativos clientes.

Ing. Ricardo Ruiz


16
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 NIS. Las cuentas de los usuarios son administradas de manera centralizada por un
servidor NIS. Esta opción solamente puede
ser utilizada en ambientes de red UNIX
puro.
 Dominio Windows. Las cuentas de
usuario son administradas de manera
centralizada por un servidor Windows o un
servidor SAMBA. SAMBA normalmente
permite la autenticación en ambientes
Windows.

En nuestro caso, y para efectos de este


manual, la opción a seleccionar es la
primera (LOCAL).

Una vez seleccionado el modo de autenticación aparecerá un cuadro de dialogo


solicitando la creación de un usuario.

Si se llenan las casillas correspondientes a „Nombre Completo del Usuario‟, „Nombre de


Usuario‟, „Contraseña‟, y se marcan (dependiendo del nivel de seguridad del servidor
instalado) „Recibir Correos del Sistema‟ y „Ingreso Automático‟, se creará la cuenta de
usuario. Si se deja vacio, una advertencia aparecerá, indicando que solo el usuario „root‟
existe en el sistema. En nuestro caso, no crearemos cuenta de usuario adicional desde
esta ventana. Luego de esta ventana aparecerá una ventana con las notas de la
distribución, estas notas son para que el usuario este al corriente de los desarrollos y las
ventajas de esta distribución de Linux.

Hardware

Como última tarea antes de tener completa


la instalación del sistema operativo, YaST
muestra un resumen de las propiedades del
hardware en que se está instalando Linux.
Estas son:

 Tarjeta Grafica
 Impresoras
 Sonido

YaST configura la tarjeta grafica y la tarjeta de sonido de manera automática, pero solo
puede detectar impresoras conectadas directamente en el sistema.

Una vez aceptada la configuración, aparecerá una ventana preguntando si desea clonar la
instalación, normalmente y para efectos de este documento quitaremos la selección de
esta opción.

Presionamos el botón „Finalizar‟ y a disfrutar de Linux!

Ing. Ricardo Ruiz


17
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 2: Instalación Avanzada de Linux


Como se pudo apreciar en el capitulo anterior la herramienta de SLES (YaST), le permite
al usuario configurar opciones de instalación simples de manera rápida.

En este capítulo repasaremos algunos temas vistos en el capitulo anterior y


profundizaremos en otras opciones de instalación, como lo es la selección de espacios de
particiones de disco, entre otros. También trataremos sobre las posibles errores de
instalación.

Objetivos

 Personalizar una instalación de Linux (SLES)


 Configurar la instalación de Linux.
 Corregir errores en el proceso de instalación.

Tema 1: Personalizar una instalación de Linux


Para poder instalar Linux, se debe tener en cuenta que existen diferentes modos de
instalación, fuentes de instalación, zonas horarias, software que necesitará el sistema,
etc. Debido a esta razón se debe de estar claro de todos estos datos, sobre todo de los
siguientes:

 El medio de Instalación (DVD, red, etc.)


 El lenguaje en el que se instalará el sistema.
 El modo en que se instalara el sistema.
 Conocer la zona horaria.
 Tener en cuenta las personalizaciones de la Instalación.
 Estar completamente claro con las particiones del disco.
 Conocer el software que se necesitará en el sistema.

Después de seleccionar las opciones de Instalación, seleccionar el lenguaje de la


instalación, seleccionar el modo de la instalación, seleccionar la zona horaria [ver
„Opciones de Instalación‟], llegamos al resumen de la instalación.

Como se explico anteriormente existen opciones en dos pestañas, la pestaña „Resumen‟ y


la pestaña „Experto‟.

Ing. Ricardo Ruiz


18
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Verificar Particiones

En muchos casos, YaST propone un esquema razonable de particiones en el disco, este


puede ser aceptado sin cambio, pero se puede necesitar modificar las particiones
manualmente sí;

 Se necesita optimizar el esquema de


particiones para un propósito especial del
Sistema Operativo.
 Se necesita configurar LVM (Logical
Volume Manager).
 Se tiene más de un disco duro y se
requiere configurar RAID (Redundant Array
of Independent Disk).
 Se necesita eliminar sistemas
operativos existentes con el propósito de
tener más espacio de disco duro para la
instalación de Linux.

Para realizar particiones de disco de manera manual, se necesita conocer lo siguiente:

 Particionamiento básico del Disco Duro.


 El esquema de particionamiento básico en Linux.
 Como cambiar la propuesta de particiones de YaST.
 Como usar el particionador de YaST en modo experto.
-Particionamiento básico del Disco Duro

Una partición, divide el espacio disponible del disco duro en porciones más pequeñas.
Esto permite instalar más de un sistema operativo en un mismo disco duro físico o usar
diferentes áreas de disco para programas y datos.

Cada disco duro (en la plataforma Intel) tiene una tabla de particiones con espacio para
cuatro entradas. Una entrada en la tabla de particiones puede corresponder a una
partición primaria o a una partición extendida, solamente una partición extendida puede
existir en la tabla de particiones.

Una partición primaria consiste en un rango contiguo de cilindros (áreas de disco físico)
asignado a un sistema de archivos en particular. Si se desea usar solamente particiones
primarias, entonces se está limitado a cuatro particiones por disco (debido a que la tabla
de pariciones solamente permite cuatro particiones primarias).

Este es el motivo por las que las particiones extendidas son utilizadas. Una partición
extendida es un rango contiguo de cilindros en el disco, pero pueden ser subdivididos en
particiones lógicas. Las particiones lógicas no requieren entradas en la tabla de
particiones. En otras palabras, una partición extendida es un contenedor para particiones
lógicas.

Ing. Ricardo Ruiz


19
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si se necesitan más de cuatro particiones, se debe crear una partición extendida en vez
de cuatro particiones primarias. La partición extendida puede contener el espacio libre
sobrante. Se pueden entonces crear múltiples particiones lógicas dentro de la partición
extendida. El número máximo de particiones lógicas es de 15 en discos SCSI y de 63 en
discos EIDE.

En Linux no es importante el tipo de particiones que se utilicen, particiones primarias y


lógicas trabajan bien en este sistema operativo.
-Esquema de particionamiento básico en Linux

El esquema de particionamiento para un servidor, depende mucho de los propósitos del


mismo.

Linux en si requiere como mínimo dos particiones:

 Partición de Intercambio (SWAP). Esta partición es usada por Linux para mover
datos no utilizados desde la memoria principal al disco duro, esto libera espacio de
memoria principal para que pueda ser utilizada por otros procesos.
 Partición Raiz (root). Esta es la partición de la que depende toda la estructura de
directorios de Linux, es llamada también „directorio root‟.

Sin importar que esquema de particiones se seleccione, siempre se necesitarán estas dos
(swap y root).

Las siguientes recomendaciones de espacio de la partición „root‟ se realizan en base a


algunas situaciones que pueden suceder con algunos computadores:

 800 Mb. Esto le permitirá una instalación mínima, sin interfaz grafica. Con este
espacio de disco para la partición root solamente se pueden usar aplicaciones para
consola.
 1300 Mb. Esto le permitirá una instalación con una interfaz grafica mínima. Incluye el
sistema X-Windows y algunas aplicaciones graficas.
 2 Gb. Esto le permitirá la instalación por defecto propuesta por YaST. Incluye un
escritorio moderno (KDE o GNOME), y provee espacio para muchas aplicaciones
adicionales.
 4 Gb. Esto le permitirá una instalación completa, incluyendo toda la paquetería
incluida con SLES.

Como se puede intuir por lo descrito en este capítulo, se puede dejar una partición por
cada „carpeta‟ del sistema. Si se realiza así la instalación, la partición para la carpeta „root‟
puede ser mucho más pequeña que lo descrito en párrafos anteriores.

Volveremos a tratar el tema de las particiones de disco en el capitulo llamado „Administrar


el Sistema de Archivos de Linux‟.

Ing. Ricardo Ruiz


20
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Como cambiar la propuesta de particiones de YaST

Para que YaST nos muestre las opciones de particiones, debemos dar click en
„Particionamiento‟, nos aparecerá el dialogo anteriormente mostrado.

En la parte superior, YaST nos muestra su propuesta de particiones. En la parte inferior


se provee las siguientes opciones.

 Aceptar Propuesta. Se usa para


aceptar la propuesta de particiones de
YaST.
 Configurar usando esta
Propuesta. Inicia el modo de
particionamiento experto de YaST, pero usa
la propuesta como modelo, en otras
palabras, la propuesta es la base del nuevo
esquema de particiones que se puedan
crear.
 Configuración Personalizada.
Despliega el siguiente dialogo:

Este dialogo tiene dos opciones:


o Un Disco duro: si selecciona esto, se abre un dialogo donde se seleccionará un disco
duro entero o una partición existente para la instalación de Linux.
o Particionamiento Personalizado: si selecciona esto, YaST abrirá el modo de
particionamiento experto, desplegando el esquema de particionamiento existente.
-Uso del Modo de Particionamiento Experto

La imagen siguiente muestra como YaST


despliega la información sobre las
particiones.
En dependencia de la selección anterior,
YaST desplegará un esquema basado en
su propuesta o la actual configuración del
disco duro.

Los botones de la parte inferior son usados


para crear, editar, borrar, y re-dimensionar
particiones, así como para administrar
LVM6, EVMS7, RAID8.

NOTA: Los cambios hechos en este modo, no se escriben en el disco duro de manera
inmediata, se pueden descartar usando el botón „Atrás‟, o volviendo a entrar desde la
ventana que muestra el resumen de la instalación.

6
Logical Volume Manager
7
Enterprise Volume Management System
8
Redundant Array of Independent Disks

Ing. Ricardo Ruiz


21
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Las siguientes entradas son desplegadas por cada disco duro del sistema:

 Una entrada para el disco duro en sí, esto corresponde


al nombre del dispositivo en el sistema (ejemplo: /dev/sda).

 Una entrada por cada partición en el disco duro, esto


corresponde al nombre del dispositivo y el número de partición
en el sistema (ejemplo: /dev/sda1).

Cada una de estas entradas incluye los siguientes datos informativos:

 Dispositivo. Despliega el nombre del dispositivo o del disco duro o de la partición.


 Tamaño. Despliega el tamaño del disco o partición.
 F. Cuando esta letra aparece, YaST nos informa que dicha partición o disco duro será
formateado durante el proceso de instalación del sistema.
 Tipo. Despliega el tipo de sistema de archivo que tendrá el disco duro o partición.
Depende del sistema operativo y de su arquitectura, las particiones pueden ser de
varios tipos: Nativos de Linux (ext, ext3, etc.), Linux Swap, FAT32, NTFS, etc.
 Punto de Montaje. Despliega el punto de montaje de la partición. Para la partición
swap, su punto de montaje es „swap‟.
 Montaje para. Indica cómo será montado el sistema de archivo. K – Kernel Name, L –
Label, U – UUID, I – Device ID, y P – Device Path.
 Inicio. Despliega el número del cilindro donde inicia un disco duro o partición. Para un
disco duro completo el valor será siempre 0.
 Fin. Despliega el número del cilindro donde finanliza un disco duro o partición.
 Usado Por. Esta columna nos brinda información acerca del sistema que usa esta
partición, tal como LVM-system.
 Etiqueta, Id del Dispositivo, Ruta del Dispositivo. Muestran la respectiva información
del disco duro o partición.

Los botones en la parte inferior le permiten al usuario:

 Crear nuevas particiones.


 Editar particiones existentes.
 Borrar particiones existentes.
 Re-dimensionar particiones existentes.

Administrar Volumenes LVM y Software RAID serán cubiertos con mas detalles en
„Administrar el Sistema de Archivos de Linux‟. EVMS9 y Particiones Cifradas, no son
cubiertos por este curso.

9
http://evms.sourceforge.net/

Ing. Ricardo Ruiz


22
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Crear nuevas particiones

Crear nuevas particiones abrirá un cuadro de dialogo, la información que solicite este
dependerá de la configuración del disco duro.

 Si se tiene más de un disco duro físico en el sistema, YaST pedirá que seleccione el
disco donde se creará la nueva partición.

 Si no se tiene una partición


extendida, YaST preguntará si desea crear
una.
 Si ya tiene una partición extendida y
tiene espacio disponible en el disco fuera
de esta, YaST preguntará si lo que desea
crear es una partición primaria o una
partición lógica.
 Si ya tiene tres particiones primarias
y una extendida, solamente se podrán
crear particiones lógicas.

La imagen muestra el cuadro de dialogo de creación de particiones.


-Editar particiones existentes

Para editar una partición existente, se debe seleccionar primero la partición luego dar click
en el botón „Editar‟. Se puede editar solamente particiones primarias y lógicas en el modo
experto. No se pueden editar las particiones extendidas o la información física del disco.

Si se desea editar una partición lógica o primaria, la imagen mostrada anteriormente se


desplegara, solicitándole la información de la partición.
-Borrar particiones existentes

Para eliminar una partición, únicamente se debe seleccionar la partición a eliminar y dar
click en el botón „Borrar Partición‟.

Si se selecciona la partición del disco duro, se eliminaran todas las particiones del mismo.
-Re-dimensionar particiones existentes

Para re-dimensionar una partición, se debe primero seleccionar y luego dar click en el
botón „Re-dimensionar‟.

Ing. Ricardo Ruiz


23
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El cuadro de dialogo muestra lo siguiente:

 Dos barras representando la


partición antes del proceso de re
dimensionamiento.
o Ahora. El espacio utilizado
se simboliza por el azul oscuro y el espacio
disponible por el azul claro. Si hay espacio
no asignado en el disco duro, este se
representa con el color blanco.
o Después.
 Una barra de desplazamiento para cambiar el tamaño de la partición.
 Dos campos de texto que despliegan el valor del espacio disponible de la partición a
redimensionar y el espacio disponible para nuevas particiones después del proceso de
redimensionamiento.
 El botón „No Redimensionar‟ se usa para cancelar el proceso y dejar la partición con el
tamaño original.
Tareas para expertos

Cuando se selecciona „Experto‟, las opciones siguientes se ponen a disposición:

 Re-leer la tabla de partición. Restaura la lista de particiones y muestra la configuración


actual del disco. Todas las modificaciones o cambios se pierden.
 Importar puntos de montaje desde un archivo /etc/fstab existente. Busca el archivo
/etc/fstab en el disco duro. Se puede cargar el archivo y configurar los puntos de
montaje de acuerdo a su contenido.
 Borrar la tabla de particiones y la etiqueta del disco. Borra la tabla de particiones y la
etiqueta del disco duro seleccionado. Todos los datos del disco se perderán.

Cuando se finalizan las labores de particionamiento en el modo experto, se retorna al


resumen de la instalación.
-Seleccionar el Software

Linux contiene un repositorio de


aplicaciones para diferentes propósitos,
para los efectos de instalación de SLES, se
pueden seleccionar las aplicaciones una a
una o en grupo de aplicaciones
dependiendo de la categoría de la misma.

YaST realiza una propuesta de instalación


de paquetes en dependencia del espacio
disponible en el disco.

Para acceder a la selección de aplicaciones debemos seleccionar la opción „Software‟ que


se encuentra en el resumen de la instalación.

Ing. Ricardo Ruiz


24
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Una ventana con opciones aparecerá.

La figura muestra la selección que realiza YaST como propuesta de instalación de


software. Si selecciona una categoría, una breve descripción aparecerá al lado derecho
de esta ventana de dialogo.

Si desea saber que software se instalaran


por categoría se debe presionar la tecla
„Detalles‟, aparecerá el siguiente dialogo:

Seleccionando uno de los conjuntos de


software a la izquierda, se mostraran a la
derecha todas las aplicaciones que
pertenecen a este conjunto. La selección
de aplicaciones se realiza poniendo o
quitando los „check‟.

Un paquete contiene generalmente una aplicación y todos los archivos adicionales


requeridos por el software. Algunas veces, las aplicaciones grandes pueden estar
divididas en muchos paquetes que contienen a su vez muchas aplicaciones.

En algunas ocasiones, los paquetes de software necesitan otros para poder ejecutarse.
La información de estas dependencias esta almacenada en los paquetes RPM. YaST
puede seleccionar la paquetería que otros paquetes requieren para ejecutarse
correctamente.
-Iniciar el proceso de Instalación

Después de personalizar nuestra instalación, y presionando la tecla „Aceptar‟, un cuadro


de dialogo aparecerá una solicitando su confirmación para poder proceder a la instalación
de Linux.

Automáticamente se procede a escribir la configuración del disco duro.

Dependiendo de la selección de software y el desempeño de su sistema, el proceso de


instalación durará aproximadamente de 15 a 45 minutos.

Ing. Ricardo Ruiz


25
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 2: Configurar la instalación de Linux.


Después de que la paquetería se instale, YaST reinicia la computadora y solicitará del
usuario el FQDN, la contraseña del usuario „root‟, la configuración del entorno de red, etc.
[ver Configuración].

En este tema nos detendremos un poco en las configuraciones del entorno de red.

En esta se muestran las opciones


siguientes:

 Omitir Configuración.
 Usar la siguiente Configuración.
 Modo de Red.
 Muro de Fuego.
 Interfaces de Red.
 Conexiones DSL.
 Adaptadores ISDN.
 Modems.
 Administración Remota VNC.
 Proxy.

-Interfaces de Red

Seleccionamos „Interfaces de Red‟ y nos


aparecerá el siguiente dialogo:

En este YaST muestra la configuración de


la interface de red. Y la lista de las
interfaces mismas (si hay más de una).

La parte superior del dialogo muestra la


lista de las interfaces directamente
conectadas, y la parte inferior muestra un
resumen de su configuración.

En este punto se pueden elegir dos opciones:

 Agregar tarjetas de red manualmente.


 Editar una tarjeta de red existente.

Ing. Ricardo Ruiz


26
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Agregar una tarjeta de red manualmente

Esta opción se usa para agregar una tarjeta


de red si esta no la reconoce
automáticamente YaST.

El dialogo para agregar tarjeta de red es la


siguiente:

Este dialogo tiene las siguientes opciones:

 Configuración de Red. Especifica el


tipo de dispositivo a instalar (Ethernet,
Bluetooth, Wireless, etc.) y un numero para
el dispositivo.
 Modulo del kernel. Si la tarjeta de red es una PCMCIA o USB, se debe seleccionar
correctamente en las opciones.
o Si se selecciona un dispositivo Wireless, cuando presione „Siguiente‟ el cuadro
de dialogo que aparecerá será el de configuración de la WLAN.
 Si presiona „Seleccionar de una Lista‟, YaST automáticamente carga una lista de
drivers apropiados para el tipo de dispositivo que se selecciono anteriormente.

Una vez aceptados los cambios, el asistente retornará al cuadro de dialogo donde se
muestra la lista de dispositivos de red.

Editar una tarjeta de red existente

Si la tarjeta de red que está instalada en el sistema es reconocida por YaST, podemos
editar sus propiedades seleccionándola y presionando el botón „Editar‟.

Esto desplegará el siguiente dialogo:

En la pestaña „Dirección‟ se pueden configurar las siguientes opciones:

 Configuración de Dirección
Automática (DHCP). Si en la red existe un
servidor DHCP, se puede dejar esta
configuración. También se puede usar esta
opción si se está usando una conexión DSL
sin direccionamiento estático. Si se decide
usar DHCP, se necesitara configurar los
detalles seleccionando „Opciones DHCP‟,
en las opciones „Avanzadas‟
 Configuración de Dirección Estática.
Esta opción es para la configuración de
direcciones IP de manera estática, se
deben ingresar la dirección y mascara de
red.

Ing. Ricardo Ruiz


27
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Nombre de host y DNS. En esta opción se configuran el nombre del equipo y el DNS
de la red, si usa direccionamiento estático, estas opciones deben configurarse
manualmente.
 Enrutamiento. En esta opción se configuran las rutas (puerta de enlace
predeterminada, etc.)

La pestaña „General‟ ofrece las siguientes opciones:

 Zona del Firewall. En esta se determina que interfaces pertenecerán a la zona Interna,
Externa, o DMZ, o si todo el tráfico será bloqueado (sin zona asignada).

 Activación del Dispositivo. En esta


opción se configura el modo de inicio de la
tarjeta de red: al momento de arranque del
sistema, cuando se conecte un cable, en
„caliente‟, manualmente, o nunca.
 Detalles de la configuración de la
interface de red. En esta opción se puede
especificar el MTU, esto en ocasiones
optimiza el desempeño de las conexiones
DSL. Para PPPoE (Poin-to-Point over
Ethernet) los valores están entre los 1400 y
1492, estos pueden variar dependiendo de
las configuraciones del ISP.

Una vez completadas las tareas de configuración de la NIC, se presiona „Siguiente‟ y


retornaremos al resumen de red.
Eliminar una configuración existente.

Para eliminar una configuración existente, selecciona la NIC y presiona el botón „Borrar‟

Una vez completadas las tareas de agregar, editar o borrar configuraciones de las NIC,
debes „Guardar‟ la configuración y retornar a la pantalla de resumen de configuración de
„Interfaces de Red‟.

Para finalizar las tareas de este dialogo se presiona el botón „Siguiente‟


-Probar conexión a Internet

Luego de aceptar las conexiones de red, YaST tratará de probar la conexión a Internet.
Este dialogo tiene las siguientes opciones:

 Si, Probar conexión a Internet. YaST probará la conexión a internet para comprobar el
estado de las actualizaciones y bajar las mismas.
 No, Omitir esta prueba. Omite la prueba de conexión a Internet. Si se omite esta
prueba, el sistema no se actualizará el sistema durante el proceso de instalación.

Se debe seleccionar una opción antes de presionar el botón „Siguiente‟.

Ing. Ricardo Ruiz


28
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El siguiente cuadro solicitará que se configure los Servicios de Red [ver Configuración], la
manera en que los usuarios se autenticaran sigue después de este dialogo.

Tema 3: Corregir errores en el proceso de instalación.


Linux se puede instalar y probar en muchas maquinas diferentes y en plataformas de
hardware diferentes. Aun así algunos problemas pueden surgir.

La siguiente tabla contiene un resumen de los problemas de instalación mas comunes,


posibles causas, y posibles soluciones:

Problema Causa Posible Solución


El sistema no está Se debe configurar el BIOS
configurado para iniciar y seleccionar el CD o DVD
para iniciar desde el CD o como primer medio de
DVD. arranque.

La unidad de CD o DVD no Tratar de instalar Linux en


lee el medio de instalación. otro sistema, si esto
El sistema no inicia desde el funciona, es posible que la
medio de instalación. unidad este dañada.

Tratar de instalar Linux con


otro CD o DVD de
instalación. Es posible que
el actual se encuentre
dañado.

El sistema no soporta o no Seleccione la opción de


reconoce dispositivos Instalación: ACPI
nuevos. Deshabilitada. Si esto no
soluciona el problema,
intente con la opción de
El programa de instalación
Instalación: Modo Seguro.
no inicia.
El sistema tiene menos de Instala más memoria RAM y
256 Mb de memoria prueba nuevamente.
principal.

El sistema no soporta o no Seleccione la opción de


reconoce dispositivos Instalación: ACPI
nuevos. Deshabilitada. Si esto no
soluciona el problema,
intente con la opción de
El proceso de instalación se
Instalación: Modo Seguro.
detiene.
El CD o DVD puede estar Si el proceso de instalación
dañado. se detiene en diferentes
sistemas, es posible que el
medio este dañado.

Ing. Ricardo Ruiz


29
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cámbialo

Seguramente se está Ingresar en modo consola


usando una configuración usando la opción „init 3‟.
X11 incorrecta. Iniciar sax2 desde la línea
No aparece la solicitud de
de comando y seleccione la
usuario y contraseña en
configuración correcta de
modo grafico después de
X11. Posterior a esto inicie
haber completado el
en modo grafico usando el
proceso de instalación.
comando „init 5‟ y probar la
consola grafica.

Con esto finalizamos las opciones de instalación.

Ing. Ricardo Ruiz


30
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 3: Uso del Escritorio de Linux


Este capítulo presenta un resumen de la interfaz grafica de usuario de Linux, también se
explica cómo acceder a la línea de comandos.

Objetivos

 Conocer el porqué del escritorio grafico de Linux


 Usar el escritorio grafico GNOME
 Accesar a la interface de línea de comandos desde el escritorio grafico

Introducción

Si instalas Windows, no podrás prescindir del entorno grafico de usuario (GUI). En Linux,
la GUI es una aplicación más, de la que se puede prescindir, o sea que podemos
instalarla o no.

La gran mayoría de los servicios en Linux se pueden configurar editando un archivo de


texto ASCII, así que si el sistema será dedicado a ser un servidor no se necesita instalar
GUI.

No instalar una GUI tiene las siguientes ventajas:

 Estabilidad. Cada aplicación contiene errores que pueden volver su sistema inestable.
Mientras menos programas se instalen, más estable será el sistema. Una GUI es un
programa grande que contiene un número igualmente grande de errores sin descubrir.
 Desempeño. Cada programa en ejecución necesita recursos del sistema. Mientras
menos programas se estén ejecutando, mas se incrementa el desempeño.

Tema 1: Conocer el porqué del escritorio grafico de Linux


La base de cualquier GUI es el Sistema X Windows (llamada simplemente X o X11). Esta
permite controlar las I/O de muchas aplicaciones diferentes en la interface grafica.

Se debe de distinguir entre aplicaciones graficas que corren en ventanas de ejecución y


las aplicaciones basadas en texto que corren en terminales.

X11 fue creado en 1984 por el MIT. La idea principal del desarrollo era correr aplicaciones
graficas en la red, independientemente del hardware.

X11 permite a las aplicaciones graficas desplegarse y operar en cualquier monitor


conectado al sistema.

La base para esto es la separación de los componentes de servidor (X Server), y la


aplicación en si (aplicación cliente). Ambos (el X-Server y el cliente) se comunican entre sí
utilizando diferentes canales.

Ing. Ricardo Ruiz


31
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 X Server. El Servidor X controla la grafica en pantalla. Administra los dispositivos I/O,


tales como el teclado y el mouse, y transmite sus acciones al Cliente X. Tenemos que
tener claros que el X-Server no tiene nada que ver con la apariencia del Escritorio y de
las ventanas de aplicaciones, eso es tarea de otra aplicación llamada Administrador
de Ventanas.
 Aplicación Cliente. La aplicación cliente es un programa grafico que usa los servicios
del X-Server para recibir del teclado, mouse y otros dispositivos I/O acciones que
tengan que ver con su operación de salida desplegada en la pantalla.

NOTA: la comunicación entre X-Server y la Aplicación Cliente, usa los protocolos de red
TCP/IP aun si ambos se encuentran en el mismo sistema.

Los administradores de ventanas son aplicaciones cliente especializados. Esta puede


trabajar junto con X-Server y proveer funcionalidades adicionales.

El administrador de ventana:

 Provee elementos de control


 Administra escritorios virtuales
 Provee funcionalidades a los recuadros de las ventanas (ejemplo; minimizar)

El sistema X-Windows no está vinculado a ningún administrador de ventanas específico,


ni estos están vinculados a X-Windows.

Algunas distribuciones de Linux se desarrollan para ser compatibles con muchos


administradores de ventanas, por ejemplo SLES incluye Metacity (el administrador de
ventanas de GNOME) y twm (Tab Window Manager).

El entorno de Escritorio, su visualización y comportamiento, depende mucho del


administrador de ventanas en ejecución, GNOME es el escritorio grafico por defecto o
estándar de SLES, pero esto no significa que no podemos usar otro, por ejemplo KDE.

La figura muestra un ejemplo de comunicación entre el X-Server y las Aplicaciones


Cliente.

Ing. Ricardo Ruiz


32
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En este ejemplo X-Server corre en la maquina da5, mientras que en da1 y da2 se están
ejecutando aplicaciones cliente (X-Client). Todas las maquinas tienen instalado un
sistema operativo diferente, y las aplicaciones X-Client son controlados por el X-Server de
la maquina da5.

Tema 2: Usar el escritorio grafico GNOME


GNOME es el entorno grafico estándar de muchos sistemas Linux, es un entorno robusto
y uno de los primeros entorno grafico nacido en este sistema operativo. Muchas
aplicaciones se diseñan específicamente para este entorno gráfico.

Para usar este entorno, se necesita conocer lo siguiente:

 Iniciar Sesión
 Cerrar Sesión y Apagar el Sistema
 Identificar componentes del Escritorio GNOME
 Administrar Iconos en GNOME
 Usar el Administrador de Archivos de GNOME (Nautilus)
-Iniciar Sesión

Si la computadora tiene un sistema


operativo con capacidades multiusuario,
los usuarios deberán identificarse antes de
acceder a cualquier aplicación del sistema.
Para eso se necesita:

 Una cadena de caracteres llamado „username‟ (Nombre de Usuario)


 Una cadena de caracteres llamado „password‟ (Contraseña), esta cadena de
caracteres generalmente es asignado por el Administrador del Sistema al momento de
crearse al usuario.

En la ventana de bienvenida (en la que el sistema operativo solicita usuario y contraseña),


se disponen de cuatro opciones ubicados en la esquina inferior izquierda:

 Lenguaje. Se selecciona el lenguaje del entorno de escritorio.


 Sesión. Se puede seleccionar un administrador de ventanas, diferentes al GNOME. En
este manual de estudio solamente se cubre el escritorio GNOME.
 Reiniciar. Reinicia el Sistema.
 Apagar. Apaga el sistema (init 0).

Ing. Ricardo Ruiz


33
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cerrar Sesión y Apagar el Sistema

Después de realizar las labores que se necesiten, el


usuario puede „Cerrar Sesión‟ o „Apagar el Sistema‟
completamente, estas opciones están en el menú
principal, en el panel inferior.

En el lado derecho del menú, se debe seleccionar la


opción correspondiente.

Si seleccionamos „Cerrar
Sesión‟ una ventana de
confirmación aparecerá.

Se puede seleccionar entre salir completamente de la sesión de usuario o suspender la


ejecución de la sesión. Esta opción no detendrá la ejecución de las aplicaciones del
usuario, pero permitirá el acceso de otro usuario al sistema.

-Identificar componentes del Escritorio GNOME

El entorno GNOME incluye un panel en la parte inferior de la pantalla.

A lado izquierdo aparece un menú (Sistema), llamado „Menú Principal‟.

El espacio vacío en el centro, incluye el Administrador de Tareas. Todas las ventanas


abiertas en la pantalla serán listadas en este espacio.

A la derecha del panel contiene algunos ítems adicionales. Estos iconos aparecerán en
dependencia del hardware del sistema.

 Globe. Busca actualizaciones en Internet.


 Speaker. Control del Volumen.
 Reloj. Muestra la fecha y la hora.
 Desktop. Minimiza todas las ventanas abiertas y las restaura nuevamente.

Similar a Windows, se pueden ejecutar aplicaciones desde el escritorio, dando doble click
sobre el icono que las representa, y también en el ícono que se encuentre ubicado en el
menú principal.

En la parte superior del menú principal esta un menú desplegable de las que se puede
seleccionar tres filtros diferentes:

Ing. Ricardo Ruiz


34
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Aplicaciones Favoritas
 Aplicaciones Usadas Recientemente
 Documentos Recientes

También se puede seleccionar el botón


„Mas Aplicaciones‟, con esto se ejecuta una
aplicación que agrupa según sus funciones
las diferentes aplicaciones que el sistema
tiene instalado.

Esta ventana también tiene un buscador (para buscar directamente la aplicación a


ejecutar).

En el extremo derecho del menú principal [ver: Cerrar Sesión y Apagar Sistema], se
tienen disponibles cinco opciones de sistema:

 Ayuda.
 Centro de Control. Inicia el Centro de Control de GNOME, con el que se puede
configurar el escritorio GNOME.
 Instalar Aplicaciones.
 Bloquear Pantalla.
 Cerrar Sesión.
 Apagar Sistema.

En la parte inferior derecha, se puede tener acceso al estado del disco duro y a los
dispositivos en red.
-Administrar Iconos en GNOME

Se puede administrar los iconos del escritorio de muchas maneras diferentes. Para
simplicidad, describiremos los métodos más importantes.

Los iconos pueden estar ubicados en las áreas siguientes:

 Escritorio
 Panel
 Menú Principal

Escritorio

Para crear el icono de una aplicación en el escritorio, seleccione el ítem en el menú de


aplicaciones, se arrastra hacia un área libre del escritorio y se libera el botón del mouse.

Ing. Ricardo Ruiz


35
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Esta es la manera más sencilla de creación de iconos.

Para crear un icono nuevo, con el botón secundario del


mouse, se da click en un área vacía del escritorio y se
desplegará un dialogo.

En la parte superior existen tres entradas para creación de


elementos nuevos en el escritorio:

 Crear Directorio. Similar a Windows.


 Crear Lanzador. Este crea un nuevo icono que nos
permitirá ejecutar una aplicación. Aparecerá un dialogo
solicitando información, en este dialogo se deben ingresar
la siguiente información:
o Nombre.
o Nombre Generico.
o Comentario.
o Comando. En este cuadro de
texto se debe definir el comando que se
ejecutará cuando se de doble click al icono.
o Tipo. Se puede crear iconos
para diferentes propósitos (aplicaciones,
directorios, enlace, dispositivos, etc.)
o Icono. Se puede personalizar
la imagen del icono.
o Ejecutar en Terminal. Esta opción es para ejecutar aplicaciones que no corren
en modo grafico.
 Crear Documento.

Panel

Se puede agregar nuevos programas al panel, con solo dar click con el botón secundario
del mouse sobre un área libre del mismo, y seleccionando la opción „Añadir al Panel‟.

Desde este dialogo se selecciona la aplicación a añadir al panel.

Si lo que se desea es eliminarlo del panel, simplemente se da click con el botón


secundario del mouse sobre el elemento a eliminar y se selecciona la opción „Eliminar del
Panel‟.

Menú Principal

Solamente el usuario „root‟ tiene privilegios de agregar nuevas entradas al menú principal,
los usuarios normales solo las pueden declarar dentro de „Aplicaciones Favoritas‟. Para
realizar esto se debe hacer:

1. Abrir el menú principal.


2. Seleccionar „Mas Aplicaciones‟
3. Seleccionar una aplicación con el botón secundario del mouse.
4. Seleccionar „Agregar a Favoritos

Ing. Ricardo Ruiz


36
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Usar el Administrador de Archivos de GNOME (Nautilus)

GNOME provee su propio administrador de


archivos (llamado Nautilus)

Para ejecutar Nautilus, solamente basta


lanzar la aplicación desde el icono
username’s Home ubicado en el escritorio,
o seleccionando la aplicación Nautilus
desde el menú principal.

Generalmente el directorio con el que


Nautilus inicia es el Home del usuario.

En la parte derecha se muestra el contenido del directorio, encima de estos, se muestra la


ruta del directorio con los nombres de los mismos ubicados en botones, se puede saltar a
un directorio de nivel superior de manera directa usando estos botones.

El recuadro izquierdo se denomina Panel de Desplazamiento.

En la parte superior del recuadro encontramos un menú de selección que contiene:

 Ubicaciones. Muestra los directorios más importantes y los dispositivos que


almacenan archivos.
 Información. Muestra información sobre el directorio actual.
 Árbol. Muestra el sistema de archivos en modo „árbol‟ y el árbol del directorio Home.
 Hitorial. Muestra el histórico de visitas a otros directorios.
 Notas. Muestra las notas sobre el directorio actual.
 Emblemas. Muestra la lista de emblemas.

Tema 3: Accesar a la interface de línea de comandos desde el


escritorio grafico
Un entorno clásico multiusuario puede usar múltiples entradas de terminal (estaciones
tontas) – monitor y teclado – en la entrada serial de un computador.

También se puede conectar muchas terminales a la interface en serie de un sistema


Linux. En ocasiones una misma persona puede necesitar utilizar más de una terminal, se
creó en Linux lo que se nombra „terminales virtuales‟.

Con las terminales virtuales se puede tener acceso a muchas terminales


simultáneamente.

Linux tiene hasta seis terminales ejecutándose en el sistema (F1-F6). Para acceder a
ellas basta presionar Ctrl+Alt+Fx, con esta combinación de teclas se puede conmutar
entre terminales, si se desea retornar a la terminal grafica basta con presionar
Ctrl+Alt+F7.

Se puede determinar cual terminal virtual se está usando gracias a su número de tty
(teletype), tty es otra manera de nombrar a las terminales virtuales.

Ing. Ricardo Ruiz


37
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cuando se accede a una terminal, una solicitud de autenticación es la bienvenida.

Welcome to SLES (i386) – Kernel x.x.x.x-x-default (tty1).

hostname login:

Se necesita ingresar correctamente un nombre de usuario y su contraseña para poder


acceder a la terminal.

Para salir de la terminal el comando es „exit‟.

Otra manera de acceder a las terminales es utilizando la emulación que ofrece GNOME.
La aplicación „GNOME Terminal‟ ofrece esta alternativa, con esta la terminal se ejecuta en
una ventana dentro del entorno grafico que entre otras cosas nos permite copiar y pegar
dentro de la ventana de la terminal y modificar su apariencia, como su fuente y color de
fondo.

Ing. Ricardo Ruiz


38
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 4: Administración de la plataforma de Linux


YaST es una herramienta poderosa con la que se puede configurar SLES. Existen
muchos módulos para configuraciones importantes, pero en esta sección solamente
veremos los módulos de configuración de red y el modulo de aplicaciones.

Objetivos

 Conocer YaST
 Entender los roles de SuSEconfig
 Administrar la información de configuración de red desde YaST}
 Instalar los paquetes de aplicaciones
 Administrar las fuentes de instalación

Tema 1: Conocer YaST


YaST se entiende como „Yet Another Setup Tool‟.se puede usar YaST para completar
muchas tareas de configuración en SLES.

Se puede ejecutar esta aplicación de dos maneras diferentes.

 ncurses. Modo Texto.


 QT. Modo Grafico completo.

La apariencia de la interface de usuario depende de cual comando se usa para ejecutar


YaST. La tabla siguiente se muestra el modo de ejecución:

Comando Terminal X-Windows Línea de Comando


yast2 QT ncurses
yast ncurses ncurses

En la interface grafica, se puede controlar


YaST con el mouse. Al iniciar YaST desde
el menú principal. YaST solicita que se
ingrese la contraseña del usuario „root‟.

La siguiente imagen muestra la ventana de


YaST en modo grafico.

Se puede controlar el entorno „ncurses‟ con


el teclado.

Ing. Ricardo Ruiz


39
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La siguiente imagen muestra la aplicación corriendo en una ventana terminal.

Para entrar a YaST desde la terminal se


debe cambiar al usuario y convertirse en el
usuario „root‟ (se usa „su – root‟).

Presionando la tecla „Tab‟ se puede


cambiar entre cuadros. Se usan las teclas
direccionales para seleccionar ítems en la
caja de texto, presionando „Enter‟ se
accesa a la opción seleccionada.

Tema 2: Entender los roles de SuSEconfig


Algunas veces YaST escribe los cambios de información directamente en el archivo de
configuración final. En otros casos hace un paso adicional, cuando la información se
escribe en el directorio „/etc/sysconfig/‟ y luego se escriben en el archivo final.

En este proceso entra en función SuSEconfig, esta aplicación sirve para configurar el
sistema acorde a las variables que son el conjunto de varios archivos en la carpeta
„/etc/sysconfig/‟ y sus subdirectorios.

Tema 3: Administrar la información de configuración de red desde


YaST

El modulo de configuración de tarjetas de


red y conexiones a red puede ser accesado
desde el Centro de Control de YaST.

Para ejecutar el modulo de configuración,


se selecciona Dispositivos de Red >
Tarjeta de Red.

Se abre la ventana de configuración de


tarjetas de red. En la primera pestaña
YaST solicitará información sobre el
método de configuración. Las opciones
son:

Ing. Ricardo Ruiz


40
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Usuario Controlado con el Administrador de Red. Usa un applet escritorio que


administra las conexiones para todas las interfaces de red.
 Método Tradicional usando ifup. El método tradicional usa el comando ifup. (Se
recomienda este método de configuración). El método tradicional mostrará el siguiente
dialogo, en el se muestran las tarjetas de red detectadas.

En la segunda pestaña (Vista Completa) se


selecciona la tarjeta que se necesita
configurar y se presiona „Editar.

Usualmente a las tarjetas auto detectada


por YaST se les asocia el modulo del
kernel correcto.

Si la tarjeta no es reconocida por YaST, el


modulo requerido debe ser seleccionado
manualmente en YaST. Para esta tarea se
selecciona „Agregar‟. Un asistente de
configuración manual se mostrará.

En este dialogo se debe especificar lo elementos de configuración de la red. Tales como


„Tipo de Dispositivo de Red‟ y el „Nombre de la Configuración‟. En modulo del kernel, se
carga el nombre del modulo correspondiente a la tarjeta de red.

Después de definir los parámetros el siguiente dialogo aparece:

En este dialogo se definen las


configuraciones para integrar el dispositivo
de red a la red existente.

 Configuración de Direcciones
Automática (DHCP).
 Configurar Direcciones Estáticas.
 Mascara de Red.
 Nombre de Host y Nombre de
Servidor.

Ing. Ricardo Ruiz


41
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 4: Instalar los paquetes de aplicaciones

Después de optimizar la instalación de


Linux, puede ser que se necesite instalar
aplicaciones adicionales. Para realizar esta
labor se debe iniciar el modulo
Aplicaciones > Administrador de
Aplicaciones. Los paquetes instalados y
los paquetes disponibles en el medio de
instalación son analizados y las
dependencias de estas analizadas y
verificadas.

Después de verificarlas, el dialogo


siguiente aparecerá, sirve para buscar
aplicaciones:

Para ayudar en la búsqueda de las aplicaciones que se pueden instalar, se pueden


seleccionar desde diferentes filtros, estos se listan „Ver Paquetes‟. Los siguientes filtros
que están disponibles son:

 Como lista plana.


 En categorías
 En conjuntos
 Por lenguajes

En este dialogo también se encuentra el cuadro de texto „Buscar‟, que sirve para buscar
paquetes mediante su nombre o algún texto similar al nombre del paquete.

Tema 5: Administrar las fuentes de instalación

El dialogo anterior muestra únicamente los


paquetes que están en el medio de
instalación actual de Linux.

Si se desea agregar fuentes de instalación se


debe seleccionar Software > Repositorios de
Software. El dialogo siguiente aparecerá:

Para agregar nuevas fuentes de instalación,


se presiona „Agregar‟. En dependencia del
tipo de fuente YaST solicitará información
adicional sobre la misma.

Ing. Ricardo Ruiz


42
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 5: Administrar archivos y directorios


En esta sección, se aprenderá sobre la estructura del sistema de archivos de Linux, y las
operaciones sobre archivos más importantes para trabajar en la línea de comandos.

Objetivos

 Entender la Jerarquía Estándar del Sistema de Archivos (FHS).


 Identificar los tipos de archivos en el sistema Linux.
 Cambiar de directorios y listar su contenido.
 Crear y visualizar archivos.
 Trabajar con archivos y directorios.
 Buscar archivos en Linux.
 Buscar contenido en los Archivos

Tema 1: Entender la Jerarquía Estándar del Sistema de Archivos.


El concepto de sistema de archivo en Linux (y en general, de todos los sistemas UNIX),
es considerablemente diferente de los otros sistemas de archivos.

Un nombre de archivo en Linux, puede ser hasta de 255 caracteres de longitud. Puede
contener cualquier numero de caracteres especiales.

Ciertos caracteres especiales ($, „ „, “ „ “) tienen significados especiales. Se usan con la


asociación especial del carácter „\‟.

Linux diferencia entre caracteres en MAYUSCULA y caracteres en minúsculas. Por


ejemplo, Invoice, invoice e INVOICE identifican diferentes archivos.

Para poder comprender este tema especifico revisaremos los siguientes temas:

 La Estructura Jerárquica del Sistema de Archivos.


 FHS
 Directorio root (/)
 Binarios esenciales para el uso de todos los usuarios (/bin)
 Directorio boot (/boot)
 Otras particiones (/data)
 Archivos de dispositivo
 Archivos de configuración (/etc)
 Directorio de usuario (/home)
 Librerias (/lib)
 Punto de montaje para medios removibles (/media)
 Directorio de Aplicaciones (/opt)
 Directorio del usuario root (/root)
 Binarios del sistema (/sbin)
 Directorio de datos para los servicios (/srv)
 Directorio temporal (/tmp)
 La jerarquía bajo /usr
 Archivos de variables (/var)

Ing. Ricardo Ruiz


43
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Partición de ventanas (/windows)


 Archivos de procesos (/proc)
 Directorio de información del sistema (/sys)
 Punto de montaje para los sistemas de archivos montados temporalmente (/mnt)
 Directorio de montaje para otros sistemas de archivos.
-La Estructura Jerárquica del Sistema de Archivos.

El concepto del sistema de archivos de Linux envuelve una jerarquía de archivos que
pueden ser descritas como una estructura de árbol.

Este árbol no está limitado a una partición local. se distribuye a través de muchas
particiones, y a través de las conexiones de red de muchas computadoras. Todo
comienza en la raíz („/‟), desde donde el administrador del sistema comienza.

La siguiente imagen es un ejemplo de un sistema de archivos:

/bin
/boot
/dataX
/dev
/etc
/home /home/geeko/
/lib /home/tux/
/mnt
/media /media/cdrom/
/opt /media/usbdisk/
/
/proc /media/dvd/
/root
/sbin
/srv
/subdomain
/sys
/tmp
/usr
/var
/windows

Un archivo en el árbol de directorios es únicamente referenciado por su ruta (path). Un


path se refiere a los nombres de los directorios que lo componen.

El carácter de separación entre directorios individuales se llama „slash‟ (“/”). El path puede
ser definido de dos maneras:

 Como una „ruta relativa‟ que inicia en el directorio actual.


 Como una „ruta absoluta‟ que inicia en la raíz del sistema de archivos entero („/‟)

Ing. Ricardo Ruiz


44
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La ruta absoluta siempre inicia con slash („/‟), que es el símbolo para el directorio raíz.

etc home

httpd postfix geeko tux

En esta figura la posición actual en el sistema de archivos es el directorio home del


usuario „geeko‟. La ruta absoluta es /home/geeko/, si deseamos cambiarnos al directorio
/etc/httpd/ se debe utilizar el siguiente comando:

 Usando ruta absoluta: cd /etc/httpd


 Usando ruta relativa: cd ../../etc/httpd

NOTA: cd es el comando que se usa para entrar y salir de directorios.

La longitud de la ruta no debe excederse de 4096 caracteres, incluyendo los slashes.


10
-FHS (Filesystem Hierarchy Standar)

La estructura del sistema de archivos es descrito en el FHS. Aquí, se especifica cual


directorio se localiza en el primer nivel después del directorio raíz y cuál es su contenido.

El FHS no especifica todos los detalles. El FHS define dos niveles de jerarquía.

 Los directorios en el nivel superior (ubicados directamente en „/‟).


 Como segundo nivel los directorios debajo de los directorios mencionados
anteriormente.
-Directorio root (/)

El directorio raíz se refiere al nivel superior del sistema de archivos. Normalmente


solamente directorios son ubicados en este nivel. Cuando el sistema es iniciado la
partición definida para este directorio se monta primero.

Debido al kernel no se encarga de todas las tareas del sistema operativo, los programas
que inician deben de estar en esta partición.

Los siguientes directorios siempre deberán estar en la misma partición en la que se


ubique el directorio raíz: /bin, /dev, /etc, /lib, y /sbin.

10
http://www.pathname.com/fhs/

Ing. Ricardo Ruiz


45
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Binarios esenciales para el uso de todos los usuarios (/bin)

El directorio /bin contiene programas ejecutables importantes que se requieren cuando


otros sistemas de archivos son montados.

Esto incluye varios „shells‟, los comandos mas importantes para trabajar con archivos y
muchos comandos para el análisis y configuración del sistema.

La siguiente tabla provee un resumen del contenido del directorio /bin:

Archivo Descripción
/bin/bash El Shell bash
/bin/cat Despliega el contenido de un archivo
/bin/cp Copia archivos
/bin/dd Copia archivos en modo binario
/bin/gzip Comprime archivos
/bin/mount Monta sistemas de archivos
/bin/rm Borra archivos
/bin/vi Editor „vi‟

-Directorio boot (/boot)

El directorio /boot contiene archivos estaticos que permiten al gestor de arranque del
sistema GRUB11. Estos archivos son necesarios para el proceso de arranque.

El respaldo de la información del MBR12 y el mapa del sistema de archivos también son
almacenados aquí. Este ultimo contiene información sobre donde exactamente se ubica el
kernel en la partición. Adicionalmente este directorio contiene el kernel llamado vmlinuz.
-Otras particiones (/data)

Si YaST encuentra otras particiones (no Windows) u otros discos duros durante el
proceso de instalación, procede a crear puntos de montaje para cada una de las
particiones etiquetándolas como: /data1, /data2, /data3, etc…
-Archivos de dispositivo (/dev)

Cada componente de hardware existente en el sistema es representado como un archivo


en el directorio /dev.

Los componentes de hardware son direccionados por estos archivos para leer o escribir
sobre estos mediante estos archivos. Dos tipos de archivos son definidos para los
dispositivos:

 Archivos para dispositivos orientados a caracteres (impresoras, mouse o tape drive)


 Archivos para dispositivos orientados a bloques (floppy y discos duros)

11
GRand Unified Bootloader
12
Master Boot Record

Ing. Ricardo Ruiz


46
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La conexión a drivers para dispositivos en el kernel es simplemente mediante canales


numerados, cada uno corresponde al número del dispositivo en cuestión.

El dispositivo „null‟ (/dev/null) también es ubicado en este directorio. Cualquier dato que se
envíe a este dispositivo, será purgado del sistema.

Archivo Archivo de Descripción


Dispositivo
Terminales /dev/console La consola del sistema
/dev/tty1 Primera consola virtual, disponible presionando
[Ctrl]+[Alt]+[F1]
Puerto serial /dev/ttyS0 Primer puerto serial
/dev/ttyS*
Puerto paralelo /dev/lp0 Primer puerto paralelo
/dev/lp*
Floppy /dev/fd0 Primer dispositivo floppy.
/dev/fd*
DD - IDE /dev/hda Primer disco duro IDE en el primer controlador IDE
/dev/hdc Primer disco duro IDE en el segundo controlador IDE
/dev/hd* El * se refiere al número consecutivo de las
particiones encontradas en el disco duro.
CDROM - IDE /dev/hd* Este dispositivo se nombra usando la nomenclatura
de discos duros IDE, eso significa que si el CDROM
está ubicado en /dev/hdd, será el segundo dispositivo
conectado al segundo controlador IDE del sistema.
DD - SCSI /dev/sda Primer disco duro SCSI.
/dev/sda* Misma lógica de numeración de particiones que los
dispositivos IDE usan.
CDROM - SCSI /dev/scd0 Primero dispositivo CDROM del tipo SCSI
/dev/scd*

-Archivos de configuración (/etc)

Este directorio y sus subdirectorios contienen archivos de configuración del sistema. La


mayoría de estos archivos son archivos de texto ASCII, y pueden ser editados por
cualquier procesador de archivos de texto.

Usuarios normales pueden leer todos estos archivos, pero no podrán editar ninguno de
ellos. De acuerdo a las normas FHS, programas NO-EJECUTABLES pueden ser
ubicados aquí.

De todas maneras, los subdirectorios contienen muchos scripts de Shell. A continuación


una lista de archivos de configuración importantes:

Archivo Descripción
/etc/SuSE-release Número de versión del sistema SUSE instalado
/etc/inittab Archivo de configuración para el proceso de arranque del sistema
/etc/init.d/* Almacena los script para iniciar servicios
/etc/modprobe.conf Archivos de configuración de los módulos del kernel

Ing. Ricardo Ruiz


47
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

/etc/DIR_COLORS Especifica los colores para el comando „ls‟


/etc/X11/XF86config Archivo de configuración para el sistema X-Windows
/etc/fstab Tabla de sistemas de archivos que se montaran automáticamente
al iniciar el sistema.
/etc/profile Script para la autenticación vía Shell.
/etc/passwd Base de datos de los usuarios del sistema
/etc/shadow Base de datos de contraseñas (encriptadas)
/etc/group Base de datos de grupos de usuarios
/etc/cups/* Archivos de configuración para el sistema de impresión CUPS
/etc/hosts Archivo que almacena nombres de host y su dirección IP
/etc/motd Mensaje de bienvenida al sistema (mensaje del día)
/etc/issue Mensaje de bienvenida de Linux.
/etc/sysconfig/* Archivos de configuraciones principales para el sistema.

Cada servicio instalado en Linux tiene un archivo de configuración ubicado en esta


carpeta o en uno de sus subdirectorios.
-Directorio de usuario (/home)

Cada usuario de un sistema Linux tiene su propio espacio de trabajo, en este puede crear,
editar y eliminar directorios y archivos. Este espacio es llamado directorio „home‟ del
usuario. Cada vez que un usuario ingresa al sistema, este se „abre‟ en su directorio
„home‟.

Archivos de configuración individuales pueden ser encontrados en el home de cada


usuario. Estos archivos están ocultos al usuario, por lo tanto el comando „ls‟ no los
mostrará, todos ellos tienen nombres que comienzan con „.‟.

Archivo Descripción
.profile Script para el proceso de ingreso, personalizado para este
usuario
.bashrc Archivo de configuración para el Shell bash
.bash_history Lista de comandos previamente utilizados con el Shell bash

Si no se define alguna configuración, el directorio home de los usuarios estará ubicado en


el directorio /home/ del árbol de directorios. En algunos casos el directorio home de los
usuarios no se encuentra en /home/, esto lo veremos con mas detalles cuando veamos
los temas de administración de usuarios.
-Librerias (/lib)

Muchos programas usan funciones específicas que también son usadas por otros
programas. Estas funciones estándar son removidas del programa y almacenadas en el
sistema, y solamente son llamadas cuando el programa las necesita. A estas funciones se
les llama „librerías compartidas‟.

Este directorio contiene las librerías que son usadas por los programas que están
ubicados en /bin y /sbin. Los módulos del kernel son ubicados en el directorio
/lib/modules/. También se pueden encontrar más librerías en el directorio /usr.

Ing. Ricardo Ruiz


48
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Punto de montaje para medios removibles (/media)

SUSE Linux crea directorios en el directorio /media/ con el objetivo de montar dispositivos
de uso temporal como por ejemplo:

 /media/floppy/
 /media/cdrom/
 /media/cdrecorder/
 /media/dvd/
 /media/usbdisk/
 /media/media_name/
-Directorio de Aplicaciones (/opt)

Los programas que se instalen en el sistema pueden almacenar sus archivos estaticos en
el directorio /opt. Dentro de este directorio deben de ubicarse las carpetas con los
nombres de los programas instalados.
-Directorio del usuario root (/root)

El directorio home del usuario root, no se encuentra en el directorio por defecto para todos
los usuarios (/home/), esto se debe a que el usuario root no es un usuario común. Este
usuario es el administrador y super-usuario de los sistemas „like-UNIX‟, tiene todos los
privilegios de acceso y permisos de lectura y escritura en todo el árbol de directorios.
Tener un home diferente le garantiza a este usuario el ingreso sin tener que apropiarse
directamente del directorio raíz del árbol de directorios („/‟).
-Binarios del sistema (/sbin)

Este directorio contiene programas importantes para la administración del sistema. Estos
programas pueden ser ejecutados por usuarios normales tal como los programas
ubicados en /bin. A pesar de poder ser ejecutados por usuarios normales, estos no
pueden modificar los archivos de configuración de estas aplicaciones, esta labor solo
puede ser ejecutada por el usuario root.

La siguiente lista es un resumen de los directorios y archivos más importantes ubicados


en /sbin:

Archivo Descripción
/sbin/SuSEconfig Inicia el modulo SuSEconfig en el directorio /sbin/conf.d/
/sbin/conf.d/* Contiene los scripts para la familia SuSEconfig que son llamadas
por /sbin/SuSEconfig
Estos son usados para configurar el sistema, evaluar entradas en
los archivos de configuración en el directorio /sbin/sysconfig/, y
escribir futuros archivos de configuración.
/sbin/yast Herramienta de administración para SUSE
/sbin/fdisk Modifica particiones
/sbin/fsck* Verifica los sistemas de archivo (file system check)
/sbin/init Inicializa el sistema
/sbin/mkfs* Crea un sistema de archivos (formateando)
/sbin/shutdown Apaga el sistema

Ing. Ricardo Ruiz


49
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Directorio de datos para los servicios (/srv)

Este directorio contiene subdirectorios designados para contener datos de varios


servicios. Por ejemplo, los archivos del servidor web Apache están ubicados en el
directorio /srv/www/ y los archivos del servidor FTP están ubicados en el directorio
/srv/ftp/.
-Directorio temporal (/tmp)

Muchos programas crean directorios y archivos temporales que son almacenados en


/tmp/, estos archivos y directorios serán eliminados posteriormente.
-La jerarquía bajo /usr

El directorio /usr en concordancia con FHS, representa un segundo nivel de jerarquía.

/usr significa Unix Specific Resources o Unix System Resources.

Esta es la ubicación estándar para todas las aplicaciones, archivos de la interfaz grafica,
librerías adicionales, programas instalados localmente, y comúnmente directorios
compartidos que contienen documentos.

En este directorio se incluyen:

Archivo Descripción
/usr/X11R6/ Archivos para el sistema X-Windows
/usr/bin/ Contiene en teoría todos los programas ejecutables
/usr/lib/ Librerías.
/usr/local/ Programas instalados localmente, actualmente con frecuencia se
encuentran también en el directorio /opt/
/usr/sbin/ Programas para administración del sistema
/usr/share/doc/ Documentación
/usr/share/man/ Manuales, descripciones de los comandos
/usr/src/ Archivos fuentes de todos los programas y del kernel

-Archivos de variables (/var)

Este directorio y sus subdirectorios contienen archivos que pueden ser modificados
mientras el sistema este en ejecución.

Archivo Descripción
/var/lib/ Librerías de variables (tales como las bases de datos para los
comandos de ubicación y rpm)
/var/log/ Archivos de log de muchos servicios
/var/run/ Archivos con información de los procesos en ejecución
/var/spool/ Directorio para las colas (colas de impresión o de correo)
/var/lock/ Archivos bloqueados para proteger dispositivos.

Ing. Ricardo Ruiz


50
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Partición de ventanas (/windows)

Si YaST encuentra cualquier partición con un sistema de archivos Microsoft, este crea un
directorio /Windows automáticamente. Dentro de este directorio existen subdirectorios
etiquetados con los caracteres de discos tipo Windows (ejemplo C, D, etc…).
-Archivos de procesos (/proc)

Linux toma información sobre los procesos en ejecución, esta información está disponible
en los archivos de este directorio. Este directorio en realidad no contiene ningún archivo
real y por lo tanto no utiliza espacio de disco, los archivos son generados
automáticamente cuando se manda a listar el contenido del directorio (ls /proc/)

A continuación se muestran los archivos más importantes:

Archivo Descripción
/proc/cpuinfo Información sobre el procesador
/proc/dma Uso de los puertos DMA
/proc/interrupts Uso de las interrupciones
/proc/ioports Uso de los puertos I/O intrasystem
/proc/filesystems Formatos de sistema de archivos que el kernel entiende
/proc/modules Módulos activos
/proc/mounts Sistemas de archivos montados
/proc/net/* Información sobre las especificaciones de red y estadísticas en
formato humano.
/proc/partitions Particiones existentes
/proc/bus/pci Dispositivos PCI existentes
/proc/bus/scsi/ Dispositivos SCSI existentes
/proc/sys/* Información del sistema y del kernel
/proc/versión Versión del kernel

-Directorio de información del sistema (/sys)

Este directorio provee información en una estructura de árbol de varios buses de


hardware.
-Punto de montaje para los sistemas de archivos montados temporalmente (/mnt)

El directorio estándar para la integración de sistemas de archivos es /mnt. Este solamente


es usado para propósitos temporales. Para montar permanentemente un sistema de
archivos, se debe crear y nombrar apropiadamente un directorio.

Como ejemplo, el dispositivo /dev/hda7 es montado en el directorio /mnt usando el


comando „mount‟

mount /dev/hda7 /mnt

Todos los archivos de este dispositivo ahora están disponibles a través del directorio /mnt.
Para desmontar el dispositivo se usa el comando „umount‟

umount /mnt

Ing. Ricardo Ruiz


51
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si no se incluye opciones con el comando mount, el programa intenta encontrar


automáticamente el sistema de archivos correcto del nuevo dispositivo a montar. Si es
necesario especificar un sistema de archivos se usa la opción „-t‟.

Si el sistema de archivos no está soportado en el kernel, el comando se aborta y se recibe


un mensaje de error. En este caso se debe compilar un nuevo kernel que soporte el
formato del sistema de archivos a montar.
-Directorio de montaje para otros sistemas de archivos.

Oros sistemas de archivos, como otras particiones de disco, directorios de otras


computadoras compartidos en red, o dispositivos removibles pueden montarse en el
sistema de archivos como cualquier otro.

Para montar estos tipos de sistemas de archivos, primero debemos crear un directorio
para el mismo. Este directorio sirve para referenciar estos sistemas de archivos con los
puntos de montaje.

Generalmente solo el usuario root puede montar y desmontar directorios. Medios


removibles pueden ser montados por usuarios normales.

Se puede montar cualquier sistema de archivos en directorios ya usados, pero el


contenido de este directorio no puede ser accesado hasta que el sistema de archivos sea
desmontado.

Los siguientes directorios pueden ser compartidos y montados en otros sistemas:

Directorio Descripción
/home Directorio home de los usuarios
/opt Directorio de las Aplicaciones
/usr Unix Specific Resources

Los siguientes directorios no pueden ser compartidos y montados en otros sistemas,


estos deben ser siempre locales en cada computador:

Directorio Descripción
/bin Programas importantes
/boot Archivos de arranque y del kernel
/dev Archivos de dispositivos
/etc Archivos de configuración
/lib Librerías
/sbin Programas importantes para la administración del sistema

Ing. Ricardo Ruiz


52
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 2: Identificar los tipos de archivos en el sistema Linux.


El sistema de archivos de Linux es distinto de los sistemas de archivos de otros sistemas
operativos debido a los diferentes tipos de archivos.

Los tipos de archivos en Linux que son „normales‟ y „directorios‟ son también conocidos
por otros sistemas operativos, pero aparte de estos existen los siguientes:

 Archivos de Dispositivos
 Enlaces
 Sockets
 FIFOs
-Archivos Normales

Los archivos normales se refieren a los archivos que son reconocidos también por otros
sistemas operativos, estos son un conjunto de datos contiguos con un nombre. Esto
incluye todos los archivos normalmente escrito bajo estos términos (archivos de texto,
programas ejecutables, archivos gráficos, etc…). Estos archivos no necesitan asociar el
tipo con una extensión de su nombre (archivo.txt), Linux no necesita esta separación para
operar sobre estos archivos. La extensión en estos archivos es necesaria para asociar al
archivo mismo a una aplicación específica, ya sea un editor de texto o un compilador.
-Directorios

Los directorios tienen dos entradas con la que la estructura jerárquica del sistema de
archivos se implementa. Una de esas entradas (“.”) define al directorio en sí. La otra
entrada (“..”) define al directorio „padre‟ del mismo, o sea define al directorio de nivel
superior al directorio actual.
-Archivos de Dispositivos

Cada pieza de hardware en un sistema de Linux es representada por un archivo de


dispositivo. Este archivo representa enlaces entre los componentes de hardware o de los
controladores de dispositivos en el kernel y las aplicaciones. Cada programa que necesite
accesar al hardware puede hacerlo mediante el archivo de dispositivo correspondiente.
Los programas escriben y leen datos mediante este archivo. El kernel entonces se
asegura que los datos sean enviados al hardware o que puedan ser leídas desde el
archivo.
-Enlaces

Los archivos de tipo enlace referencian ubicaciones de otros archivos del sistema. El
mantenimiento de los datos es simplificado mediante el uso de este tipo de archivo. Los
cambios solamente se realizan en el archivo original. El cambio realizado inmediatamente
se actualiza en todos los enlaces del archivo.
-Sockets

Un archivo de tipo socket, es un archivo especial cuando los datos son comunicados entre
dos procesos ejecutándose localmente, esto puede ser implementado entre archivos del
sistema.

Ing. Ricardo Ruiz


53
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-FIFOs

FIFO13 también llamado tubería, es un término usado para los archivos de intercambio de
datos entre procesos. Estos archivos pueden enviar datos solamente en una dirección.

Tema 3: Cambiar de directorios y listar su contenido.


El prompt de una terminal contiene el directorio actual (geeko@da51:~>). La tilde “~”
indica que se encuentra en el directorio home del usuario.

Se pueden usar los siguientes comandos para cambiar el directorio activo y listar el
contenido de un directorio:

 cd
 ls
 pwd

NOTA: Recordemos que Linux es “case sensitive”, los comandos están diseñados para
ser invocados con minúsculas.

-cd

Se puede usar el comando „cd‟14 para navegar o moverse entre directorios. Como ejemplo
de uso de este comando tenemos:

Comando Significado (Entrar, cambiarse, moverse)


cd plan Al subdirectorio llamado „plan‟
cd /etc Directamente al directorio /etc (ruta absoluta)
cd Directamente al directorio home del usuario
cd .. Al directorio de nivel superior
cd ../.. Dos directorios de niveles superiores
cd - Al último directorio accedido

-ls

El comando „ls‟15, lista los archivos específicos. Si un directorio es incluido con „ls‟, el
contenido del directorio será desplegado. Si no se ingresa opciones, „ls‟ listara el
contenido del directorio actual.

La siguiente tabla muestra las opciones más importantes de „ls‟:

Opción Significado (Entrar, cambiarse, moverse)


Despliega el nombre de los archivos y subdirectorios contenidos
en el directorio actual, en formato de columnas.
-a También despliega los archivos ocultos
-F Después del nombre, un carácter indica el tipo de archivo. (“/”

13
First In First Out
14
Change directory
15
List

Ing. Ricardo Ruiz


54
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

para directorios, “*” para archivos ejecutables, “|” para archivos


FIFO, “@” para enlaces simbólicos)
-l Muestra un detalle de los archivos listados. Por cada nombre de
archivo o subdirectorio también muestra información sobre
permisos, fecha de modificación, y tamaño, entre otros.
-t Ordena la lista por fecha de modificación, si se combina con „-r‟
se obtiene una lista con el orden invertido
-R La lista incluye el contenido de los subdirectorios
-u Ordenado por fecha de ultimo acceso

La siguiente imagen muestra la salida del comando „ls‟:

-pwd

Se puede usar el comando „pwd‟16 para desplegar la ruta del directorio actual. Combinado
con la opción „-P‟, este comando imprime el directorio físico obviando los enlaces
simbólicos.

Tema 4: Crear y visualizar archivos.


Para crear y visualizar el contenido de un archivo, debemos estudiar los siguientes temas:

 Crear un archivo nuevo usando „touch‟


 Visualizar contenido de un archivo usando „cat‟
 Visualizar contenido de un archivo usando „less‟
 Visualizar contenido de un archivo usando „tail‟

16
Print working directory

Ing. Ricardo Ruiz


55
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Crear un archivo nuevo usando ‘touch’

Se utiliza el comando „touch‟ para cambiar la fecha de modificación de un archivo o para


crear uno nuevo completamente vacío (0 bytes en disco). Las siguiente tabla muestra las
opciones mas importantes de este comando:
Opción Descripción
-a Cambia solamente la hora de ultimo acceso del archivo
-m Cambia solamente la hora de la ultima modificación del archivo
-r archivo Configura la fecha de „archivo‟ y le ingresa la fecha actual
-t hora Configura el formato de fecha y hora

geeko@da51:~> ls
bin Desktop Documents public_html
geeko@da51:~> touch example.html
bin Desktop Documents example.html public_html
geeko@da51:~>

-Visualizar contenido de un archivo usando ‘cat’

Se puede usar el comando „cat‟ para visualizar el contenido de un archivo. Este comando
debe de tener como parámetro el nombre del archivo del que se desea visualizar el
contenido. Observemos el ejemplo:

geeko@da51:~> cat /etc/HOSTNAME


da51.oesa.edu.ni
geeko@da51:~>

-Visualizar contenido de un archivo usando ‘less’

Se puede usar el comando „less‟ para visualizar el contenido de un archivo pagina a


pagina. Archivos comprimidos (.gz o .bz2) también pueden ser visualizados. Para su uso
debemos conocer las teclas de navegación de este comando:

Tecla Descripción
Barra Espaciadora Mueve el contenido una pantalla hacia abajo.
b Mueve el contenido una pantalla hacia arriba.
Flecha Abajo Mueve el contenido una línea hacia abajo.
Flecha Arriba Mueve el contenido una línea hacia arriba.
?palabra Busca „palabra‟ en el archivo de manera descendente.
n Mover hacia la siguiente coincidencia de búsqueda
N Mover hacia la coincidencia de búsqueda previa
q Salir

-Visualizar contenido de un archivo usando ‘tail’

Con el comando „head‟, se puede visualizar solamente las primeras líneas de un archivo.
Con el comando „tail‟ se puede visualizar las últimas líneas de un archivo. El estándar de
este comando es mostrar solamente las 10 últimas líneas. Para cambiar esto se debe
agregar la opción –number.

Ing. Ricardo Ruiz


56
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cuando este comando se usa con la opción –f se despliega en tiempo real las
actualizaciones de las últimas líneas del archivo. Si una se agrega una línea al final del
archivo mientras el comando „tal –f‟ esta en ejecución, la línea en cuestión se despliega
en la pantalla. Para salir del comando „tail –f‟ se debe presionar la combinación [Ctrl]+[c].

Este es un ejemplo del comando head:

geeko@da51:~> head example.html


<H1>HOLA MUNDO</H1>
geeko@da51:~>

Tema 5: Trabajar con archivos y directorios.


En este ítem aprenderemos como trabajar con archivos y directorios, para lograr este
objetivo necesitamos estudiar los siguientes temas:

 Copiar y Mover archivos y directorios


 Crear directorios
 Borrar archivos y directorios
 Archivos de Enlace
-Copiar y Mover archivos y directorios

Para copiar y mover archivos y directorios, debemos conocer los comandos para realizar
esta acción:

 Se mueve archivos con el comando „mv‟


 Se copia archivos con el comando „cp‟
Mover archivos

Se puede usar el comando „mv‟ para mover un archivo de un directorio a otro. Por ejemplo
para mover todos los archivos con extensión „txt‟ al directorio /tmp se ingresa el comando:

mv *.txt /tmp

También se puede usar este comando para renombrar el archivo o directorio:

mv example.html index.html

Las siguientes opciones se pueden usar con este comando:

Opción Descripción
-i Consulta y pide confirmación antes de mover o renombrar un
archivo. Esto previene que archivos existentes no se sobre
escriban.
-u Mueve solamente los archivos mas recientes al destino. Esto es
útil cuando el destino ya contiene archivos y se planea mover
archivos con nombres ya existentes en ese directorio.

Copiar archivos

Ing. Ricardo Ruiz


57
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede usar el comando „cp‟ para copiar archivos y directorios (usando la opción –r). La
sintaxis de este comando es la siguiente:

cp origen destino

Cuando se usa este comando se debe tener en cuenta lo siguiente:

 Los archivos se sobre escriben sin pedir confirmación.


 Si se requiere confirmación se debe usar la opción –i.
 Si se requiere copiar todos los archivos de un directorio incluyendo al directorio, se
debe realizar en un directorio del mismo nivel o superior del directorio copiado.

Por ejemplo, para copiar el directorio /tmp/quarterly-1/ al directorio /tmp/expenses/ (que


debe existir para poder realizar la acción) se debe usar la siguiente línea de comando:

cp –R /tmp/quarterly-1 tmp/expenses

El resultado es un directorio tmp/expenses/quarterly-1/

La siguiente tabla muestra las opciones mas comunes del comando „cp‟

Opción Descripción
-a, --archive Copia un directorio y subdirectorios, los enlaces simbólicos,
permisos de archivos, propietarios, y fechar de los
archivos/directorios no son modificados.
--help Despliega la ayuda del comando cp
-i, --interactive Pregunta antes de sobre escribir
-R. –r, --recursive Copia directorios de manera recursiva (el directorio con sus
subdirectorios)
-s, --symbolic-link Crea enlaces simbólicos en vez de copias.
-u, --update Copia un archivo únicamente si el origen es mas reciente que el
destino o cuando el archivo destino no existe.

-Crear directorios

Para crear directorios se utiliza el comando „mkdir‟. Si se combina con la opción –p se


crea la ruta completa al directorio, por ejemplo:

mkdir –p /home/geeko/dir1/dir2/dir3

Con esto el comando creara dentro de la carpeta /home/geeko/ un directorio llamado dir1
y dentro de este otro llamado dir2 y dentro de dir2 otro directorio llamado dir3.
-Borrar archivos y directorios

En esta sección aprenderemos el uso de dos comandos diferentes:

 „rmdir‟ que sirve para eliminar directorios vacíos.


 „rm‟ que sirve para eliminar el árbol del directorio completo.

Ing. Ricardo Ruiz


58
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Borrar directorios con el comando ‘rmdir’

Se puede usar el comando „rmdir‟ para eliminar directorios que se encuentre


completamente vacíos, si el directorio contiene algún elemento, el comando se abortará y
se enviara un mensaje de error al usuario. La sintaxis de este comando es:

rmdir nombre_del_directorio

Borrar directorios con el comando ‘rm’

Se puede utilizar el comando „rm‟ para borrar archivos. La sintaxis de este comando es:

rm nombre.*

Este ejemplo elimina todos los archivos llamados „nombre.‟, cuando elimina archivos el
comando no pide confirmación, otro detalle es que este comando „purga‟ los archivos
eliminados, o sea, los archivos eliminados con este comando no podrán ser restaurados.

Las siguientes opciones son las mas utilizadas en conjunto con este comando:

Opción Descripción
-i Solicita la confirmación de eliminación de archivo
-r Esta opción le permite a este comando eliminar el árbol de directorios.
-f Combinando –r con –f el comando elimina sin mostrar mensajes de error o
solicitud de confirmación.

-Archivos de Enlace

El formato del sistema de archivos de Linux, maneja los datos y la administración de


manera separada. El como los datos son organizados, difiere de un sistema de archivo a
otro.

Cada archivo es descrito por un „inodo17‟. Para listar los números de los inodos con el
comando „ls‟ se debe de agregar la opción „-i‟: ls –i.

Los inodos tienen un tamaño de 128bytes y contienen toda la información sobre el archivo
aparte del nombre del archivo. Esto incluye información tal como su propietario, privilegios
de acceso, tamaño, diferentes fechas, y los enlaces a los bloques de datos del archivo.

El comando „ln‟ crea enlaces. Un enlace es una referencia a un archivo. Con un enlace, se
puede acceder a un archivo desde cualquier parte del sistema de archivos usando
diferentes nombres. Esto significa que el archivo en si no esta duplicado, pero puede ser
encontrado mediante diferentes nombres.

En Linux se reconocen dos tipos de enlaces:

 Enlaces Duros18
 Enlaces Simbólicos19

17
Index Node, o, Information Node
18
Hard Links

Ing. Ricardo Ruiz


59
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para crear un enlace duro se usa simplemente el comando „ln‟ con la siguiente sintaxis:

ln archivo_viejo enlace_duro_de_archivo_viejo

De esta manera el archivo podrá ser accedido utilizando cualquiera de los dos nombres.
El hecho que ambos archivos tengan el mismo inodo, hace prácticamente imposible el
discernir cual de los dos nombres es el original y cual fue creado después mediante este
comando.

Estos enlaces solo pueden ser utilizados si ambos archivos se encuentran en el mismo
sistema de archivos, esto debido a que los inodos son entradas únicas en cada uno de los
sistemas de archivos.

Para crear un enlace simbólico se le debe agregar al comando la opción „-s‟. Un enlace
simbólico tiene asignado su propio inodo por tanto podemos tener información diferente
tanto del archivo original como de su enlace simbólico. La sintaxis del comando es:

ln –s archivo_viejo enlace_duro_de_archivo_viejo

La desventaja de este tipo de enlace es que se puede quedar huérfano, es decir, si


eliminamos el archivo original, el enlace simbólico creado apuntará a un archivo
inexistente.

La ventaja de este tipo de enlace es que se puede crear enlaces a directorios y en otros
sistemas de archivos.

Tema 6: Buscar archivos en Linux.


En este tema aprenderemos como buscar archivos y directorios en el sistema de archivos
de Linux.

Si no se conoce el nombre completo del archivo, se pueden usar dos tipos de


„comodines‟: “?” y “*”, estos sirven para identificar un solo carácter y varios caracteres
respectivamente.

Para comprender el tema, supongamos que los siguientes archivos existen y están
repartidos por todo el árbol de directorios:

File, file, File1, File1a, File1b, File2, File2a, MyFile

La siguiente tabla mostrara los resultados de diferentes formas de búsqueda en las cuales
se combinan los comodines antes mencionados:

Cadena de Búsqueda Archivos Encontrados


File? File1
File2
File* File
File1

19
Symbolic Links

Ing. Ricardo Ruiz


60
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

File1a
File1b
File2
File2a
¿ile* File
file
File1
File1a
File1b
File2
File2a

Para los efectos de este tema estudiaremos:

 Herramientas de Búsqueda Grafica


 Comando find
 Comando locate
 Comando whereis
 Comando which
 Comando type
-Herramientas de Búsqueda Grafica

En muchas ocasiones, necesitamos encontrar un archivo para editarlo, pero no sabemos


en qué parte del árbol de directorios esta. Y comenzamos a buscarlo de carpeta en
carpeta, sabemos que tiene un nombre pero solo recordamos una parte del mismo.
Ciertamente esto nos complica la existencia y nos pone al borde de la desesperación, y si
el sistema operativo no tuviese herramientas para encontrar estos archivos, casi que
llegaríamos al extremo de nuestra psiquis.

En Linux las búsquedas dentro del Escritorio gráfico (GNOME), tenemos dos
herramientas para ejecutar estas búsquedas:

 Nautilus. Como anteriormente


estudiamos, Nautilus es el Administrador
de Archivos de GNOME, y este se puede
usar para realizar búsquedas dentro del
sistema de archivos de Linux.
 Herramienta de búsqueda de
GNOME. Esta herramienta permite la
búsqueda de archivos mediante su
información, tamaño, fechas o propietario.

Una vez ejecutada la herramienta de búsqueda de GNOME el dialogo superior aparecerá.

Para proceder con la búsqueda, basta con seleccionar el directorio donde se ejecutará la
búsqueda y colocar un texto en el cuadro de dialogo „Nombre contiene:‟ y presionar el
botón „Buscar‟

Ing. Ricardo Ruiz


61
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Comando find

Para buscar archivos desde la línea de comandos, se usa el comando „find‟, la sintaxis de
este comando es la siguiente:

find ruta opciones acción

La ruta define la sección del árbol de directorios en la que se originara la búsqueda, si no


se define, el comando inicia la búsqueda en el directorio actual.

Este comando tiene una multitud de opciones, para leer sobre ellas use el comando „man
find‟ para leer los manuales del comando.

La acción se refiere a las opciones que influencian las condiciones de búsqueda. Por
ejemplo „-print‟ y „-exec‟, este ultimo solicita un comando del Shell para ser ejecutado en
conjunto con „find‟.
-Comando locate

El comando „locate‟ es una alternativa de uso al „find‟, este debe ser instalado por
separado, no viene preinstalado en ninguna distribución de Linux. El comando find busca
el archivo o carpeta en dependencia de la ruta, y si esta se define como „/‟ el comando
sería muy lento.

En cambio, el comando locate realiza la búsqueda en una base de datos previamente


creada para este propósito, haciendo la búsqueda más rápida.

La base de datos es automáticamente creada y actualizada por el sistema. Pero los


cambios en el sistema de archivos que se realicen después de la actualización no serán
mostrados por el comando hasta la siguiente actualización, debido a esto se puede
actualizar manualmente la base de datos, usando el comando: „updatedb‟. La sintaxis de
este comando es:

locate file
locate umount

Para aprender más sobre este comando use ‟man locate‟.


-Comando whereis

Este comando retorna los binarios (-b), manuales (-m) y fuentes (-s) del comando
especificado.

Si no se agrega ninguna opción, toda la información se despliega. Este comando es


mucho más rápido que „find‟ pero es menos funcional.

Para más información sobre „whereis‟ use el comando ‟man whereis‟.

Ing. Ricardo Ruiz


62
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Comando which

El comando „which‟ realiza la búsqueda de comandos en las rutas definidas en la variable


PATH, y retorna la ruta completa. La variable PATH contiene los directorios mas
importantes donde el Shell busca los comandos y archivos ejecutables.

NOTA: Para listar el contenido de la variable PATH use el comando: „echo $PATH‟

-Comando type

Este comando puede ser usado para mostrar la ruta de los comandos y si es de Shell (un
comando que es esencial para el interprete de comandos) lo informará.

Tema 7: Buscar contenido en los archivos.


Supongamos que tenemos docenas de archivos de texto, y necesitamos encontrar todos
los que contengan una palabra en particular, o una frase, o ítem. Para revisar estos
archivos sin abrirlos con un editor, se necesita conocer lo siguiente:

 Comando grep
 Expresiones Regulares
-Comando grep

El comando „grep‟ y sus variantes son usados para buscar archivos con ciertos patrones,
su sintaxis es:

grep patrón archivo

El comando busca en „archivo‟ e imprime en pantalla, todos los textos que concuerden
con el patrón de búsqueda.

Se puede especificar muchos archivos, en cuyo caso la salida no solo muestra la línea de
texto que concuerda con el patrón de búsqueda, sino que también muestra el archivo que
contiene el patrón.

La siguiente tabla muestra las opciones más importantes de este comando:

Opción Descripción
-i Ignora mayúsculas – minúsculas.
-l Muestra solo los nombres de los archivos que contienen el
patrón de búsqueda
-r Busca en el árbol de directorios completo.
-v Muestra todas las líneas aunque no contengan el patrón de
búsqueda
-n Muestra el número de la línea
-h No muestra los nombres de los archivos

Ing. Ricardo Ruiz


63
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Expresiones Regulares

Las expresiones regulares son cadenas de caracteres que consisten en metacaracteres y


números (caracteres normales y números). En el contexto de expresiones regulares, los
meta caracteres son caracteres que no se representan a ellos mismos y que tienen
significados especiales.

Muchos comandos (incluyendo „grep‟) realmente usan expresiones regulares como


patrones en las búsquedas. Para mayores detalles pueden usar:

man 7 regex

La siguiente tabla muestra los más importantes metacaracteres y su significado:

Carácter Significado Ejemplo


^ Inicio de la línea ^The: The, será buscado al inicio de cada
línea.
$ Fin de la línea The$: the, será buscado al final de cada línea.
\< Inicio de la palabra \<thing\>: buscara la palabra completa thing
\> Fin de la palabra Ídem
[abc] Un carácter del conjunto [abc]: buscara uno de los caracteres
especificados
[0-9] Cualquiera del rango Ídem, pero para los números
especifico
[^xyz] Ninguno de los caracteres [^abc]: no tomara en cuenta los caracteres de
la lista
. Cualquier carácter File.: buscara File1 y File2 pero no mostrará
individual File10
+ Una o más de las [0-9]+: busca cualquier numero
expresiones regulares
* Cualquier número de file.*: buscara file, file1, file2 y file10
caracteres precedentes
| Expresiones antes o File | file; buscara file y File
después
(…) Alternativas cerradas para (F|f)ile: busca File y file
agrupar con otros
\? Cero o uno de las File1\?2: busca ambos: File2 y File12
precedentes
\ Carácter de escape para www\.novel\.com; busca www.novell.com
eliminar el significado del literalmente.
siguiente carácter

Ing. Ricardo Ruiz


64
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 6: Trabajar con los Shell de Linux y la línea de comandos


En este capítulo aprenderemos a trabajar con las opciones básicas del Shell bash.
Adicionalmente se presentaran algunos comandos importantes de administración.

Objetivos

 Que debemos saber sobre comandos de Shell


 Ejecutar comandos en la línea de comandos
 Que debemos saber sobre los comandos comunes y las tareas de la línea de
comandos
 Entender la sintaxis de los comandos y caracteres especiales
 Usar tuberías y redirección

Tema 1: Que debemos saber sobre comandos de Shell


En ningún sistema operativo el usuario se comunica directamente con el kernel del
mismo. Se necesita un programa que sirve como interface entre el usuario y el sistema
operativo.

En los sistemas operativos de la familia UNIX, este programa es llamado Shell.

El Shell acepta las entradas de los usuarios, las interpreta, convierte estas en llamadas al
sistema, y envía los mensajes del sistema de regreso al usuario, convirtiéndolo en un
intérprete de comandos.

Para entender los Shell necesitamos conocer lo siguiente:

 Tipos de Shell
 Archivos de configuración de bash
 Completar los comandos y nos nombres de archivos

-Tipos de Shell

UNIX tiene muchas series de Shell, muchos de estos son provistos por Linux en versiones
libres. A continuación ejemplos de los Shell más populares.

 El Shell Bourne (/bin/sh; enlace simbólico de /bin/bash)


 El Shell Bourne Nuevamente (Bourne Again Shell /bin/bash)
 El Shell Korn (/bin/ksh)
 El Shell C (/bin/csh; enlace simbólico de /bin/tcsh)
 El Shell TC (/bin/tcsh)

Todos estos Shell difieren en las funcionalidades que proveen.

Cada Shell puede ser iniciado como un programa y se pueden conmutar entre ellos
usando solamente sus archivos ejecutables.
-Archivos de configuración de bash

Ing. Ricardo Ruiz


65
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para personalizar para una sesión interactiva de bash, se necesita conocer los archivos
de configuración y el orden en que deben ser procesados.

Para lograr esto debemos conocer:

 Login Shell
Login Shell

Un „Login Shell‟ se inicia siempre que un usuario accede al sistema. Los Shell que son
cargados sin que exista un usuario en el sistema son llamados „non-login shell‟, los
siguientes archivos son leídos cuando un usuario accede al sistema:

1. /etc/profile. Este archivo se lee cada vez que se accede un usuario al sistema. Este
almacena las configuraciones globales de bash. También sirve como archivo de
configuración para otros shells. El archivo ~/.profile es una archivo creado para cada
usuario, cada usuario puede personalizar su propio archivo profile.
2. /etc/bash.bashrc. algunas de las configuraciones más completas están ahí por
ejemplo:
a. La apariencia del prompt
b. Colores para el comando ls
c. Aliases
-Completar los comandos y nos nombres de archivos

El Shell bash soporta la función de autocompletado de comandos y nombres de archivos.


Solamente se ingresa el primer carácter de un comando o nombre de archivo y se
presiona [Tab]. Bash tratará de completar el nombre del comando o de archivo.

Si existen más de una posibilidad, bash mostrará todas las posibilidades cuando se
presione [Tab] por segunda ocasión. Esta funcionalidad hace que entrar nombres de
archivos muy largos sea muy fácil.

Tema 2: Ejecutar comandos en la línea de comandos


Si no se tiene acceso a la interface grafica, debemos entender los siguientes procesos
para ayudarnos a administrar el sistema:

 Función „history‟
 Conmutar hacia el usuario „root‟
-Función ‘history’

El Shell bash almacena los comandos que se ingresan, así se tiene fácil acceso a ellos.
Por estándar, el histórico de los comandos se almacena en el archivo .bash_history en el
directorio home de cada usuario, y logra almacenar (por defecto) hasta 1000 entradas.

Ing. Ricardo Ruiz


66
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede desplegar el contenido del archivo usando el comando history. Se puede


desplegar los comandos almacenados en el histórico uno a la vez, usando la tecla
direccional Up y Down. Una vez encontrado el comando deseado se ejecuta simplemente
con presionar [Enter].
-Conmutar hacia el usuario ‘root’

Si un usuario normal trabaja desde la línea de comando, quizás se necesite lograr


acceder con un usuario con mayores privilegios, por ejemplo el usuario „root‟.

Antes de eso debemos asegurarnos de que somos o no „root‟, para eso usamos el
comando „id‟ o el comando „whoami‟, una vez comprobado que no somos el „root‟, nos
podemos conmutar usando el comando „su –‟ o el comando „su – root‟ y luego ingresando
la contraseña del „root‟.

Para salir de la sesión „root‟ basta con ingresar el comando „exit‟.

Tema 3: Que debemos saber sobre los comandos comunes y las


tareas de la línea de comandos
Dos elementos hacen que el Shell bash sea muy poderoso:

 Variables de entorno
 Aliases
-Variables de entorno

Con las variables de entorno, podemos habilitar y ajustar el entorno con sus propios
requerimientos.

La convención para escribir variables tales como PATH es escribir el nombre de la


variable en mayúsculas.

Las variables de entorno son usadas para controlar el entorno de los programas iniciados
desde el Shell. Las variables del Shell, por otro lado, son usadas para controlar el entorno
del Shell en sí.

 PATH. Cuando un programa es llamado, este se busca en la lista de directorios


especificados ahí. El orden en que se definen los directorios en esta variable es muy
importante.
 HOME. El directorio home del usuario.
 USER. El nombre del usuario actual.

Para desplegar el contenido de estas variables se usa el comando „echo‟, su sintaxis es:

echo $PATH
echo $HOME
echo $USER

Para crear una variable se usa la sintaxis: variable=valor por ejemplo:

Ing. Ricardo Ruiz


67
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

MYVAR=myvalue
echo $MYVAR

myvalue puede ser un numero, un carácter o una cadena. Si la cadena incluye espacios,
se debe escribir el valor entre comillas dobles, por ejemplo:

MYVAR=‛Ricardo Daniel Ruiz Caracas‛


-Aliases

Definir aliases nos permite crear accesos directos de comandos y sus opciones, o para
crear comandos con nombres completamente diferentes.

Los comandos Linux „ls‟ y „mkdir‟ tienen aliases definidos, estos son „dir‟ y „md‟
respectivamente.

Podemos ver si un comando es un aliases de otro usando el comando „alias‟, por ejemplo:

alias md
alias dir

Para crear un alias de un comando se usa la sintaxis:

alias aliasname=’comando opciones’


alias ps=’echo Hello’

NOTA: Los aliases son validos para el Shell en que se crea, pero no serán reconocidos
por sub-shell.

Para hacer que un alias sea persistente, se necesita almacenar la definición en uno de los
archivos de configuración del Shell. Podemos crear aliases personalizados por usuario,
editando el archivo ~/.alias.

Este archivo es leído por ~/.bashrc, cuando un comando es incluido para este efecto. Los
aliases no son relevantes para los scripts del Shell, pero pueden ser un ahorro de tiempo
significativo al momento de estar trabajando en el entorno de comandos.

Tema 4: Entender la sintaxis de los comandos y caracteres especiales


Se pueden usar caracteres específicos para proveer funcionalidad especial. Usarlas
puede ahorrar mucho tiempo y esfuerzo. Para lograr este objetivo se debe estudiar y
entender lo siguiente:

 Seleccionar la codificación de caracteres


 Expansión de nombres usando patrones de búsqueda
 Prevenir que el Shell de la interpretación de caracteres especiales

Ing. Ricardo Ruiz


68
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Seleccionar la codificación de caracteres

Recordemos que actualmente Linux se distribuye en muchos países, y por consiguiente


en muchos idiomas, esto hace necesario que sea adaptable a los estándares de estos
países.

Para conocer las variables que determinan la ubicación. Se debe usar el comando „locale‟
, esto mostrará las variables de ubicación.

geeko@da51:~> locale
LANG= es_ES.UTF-8
LC_CTYPE=es_ES.UTF-8
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC-COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=
geeko@da51:~>

La variable LANG especifica el lenguaje. En este ejemplo el lenguaje es español. La


codificación es UTF-820, que significa UNICODE21. UNICODE tiene la ventaja de usar todo
tipo de letras y no solamente letras latinas. En SLES todos los usuarios tienen esta
codificación, la excepción es el usuario „root‟

geeko@da51:~> locale
LANG=POSIX
LC_CTYPE=es_ES.UTF-8
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC-COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
geeko@da51:~>

Para „root‟ la variable LANG está configurada con „POSIX‟, que significa que la
codificación de caracteres es ASCII.
-Expansión de nombres usando patrones de búsqueda

A como se planteo en la sección de búsquedas, se pueden usar caracteres especiales


para operar los archivos.

20
UCS Transformation Format
21
Universal Character Set

Ing. Ricardo Ruiz


69
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Prevenir que el Shell de la interpretación de caracteres especiales

Recordemos que existen caracteres que tienen un significado especial para el Shell, para
evitar que este los interprete de manera errónea, se deben „enmascarar‟, por ejemplo:

geeko@da51:~> echo Home = $HOME


Home = /home/geeko
geeko@da51:~> mkdir directorio\ nuevo
geeko@da51:~> ls
directorio nuevo
geeko@da51:~> echo ‚Home = $HOME‛
Home = /home/geeko
geeko@da51:~> echo ‘Home = $HOME’
Home = /home/geeko
geeko@da51:~>

Observen que en el ejemplo el primer comando no está „enmascarado‟, por lo tanto el


resultado tiene eliminado los espacios dobles.

Tema 5: Usar tuberías y redirección


Linux tiene tres canales de datos estándar:

 Entrada estándar. El programa en ejecución lee la entrada estándar por este canal
(generalmente el teclado)
 Salida estándar. El programa en ejecución envía su salida por este canal
(generalmente el monitor)
 Error estándar. Los errores del sistema se envían por este canal (generalmente el
monitor)

Cada canal puede ser re direccionado por el Shell. Por ejemplo, las entradas, salidas y
errores pueden ser direccionadas a un archivo directamente. Los siguientes son
caracteres de re-dirección:

Carácter Descripción
< Redirige la entrada estándar
> Redirige la salida estándar
2> Redirige el error estándar

NOTA: > Sobre escribe un archivo existente. Si la salida debe ser agregada a un archivo
existente, se debe usar >> o 2>>

El uso de la tubería se define con el carácter „|‟22, este permite unir dos o más comandos
para ejecutar dos labores que de lo contrario seria necesario varios, por ejemplo:

tail –f /var/log/message | grep mail


cat /etc/passwd | grep geeko
cat /var/log/message | grep mail | grep ‘sept 15’

22
pipe

Ing. Ricardo Ruiz


70
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 7: Usar un Editor de texto de Linux

Un editor de texto es una de las herramientas más importantes para el administrador de


un sistema Linux. Trataremos de mostrar dos herramientas, una grafica y otra para línea
de comandos.

Objetivos

 Qué cosa es un editor de texto


 Usar el editor „vi‟ para editar archivos

Tema 1: Qué cosa es un editor de texto

Debido a que muchos servicios de un sistema Linux son configurados mediante archivos
de texto ASCII, se necesita un editor de texto. En Linux existen muchos editores de texto,
por ejemplo:

 vi
 emacs
 xemacs
 xedit
 gedit
 kwrite

Cada uno de ellos con sus ventajas y desventajas. Existen editores para la interfaz gráfica
y para la línea de comandos. La principal ventaja de los editores de línea de comandos es
que no se necesita cargar la interfaz gráfica para realizar la labor.

Los editores de texto son (normalmente)


fáciles de usar y no necesitan grandes
explicaciones. Un ejemplo de editor gráfico
es „gedit‟ que puede ser iniciado desde el
menú principal.

Se describirá con detalle el editor de línea


de comandos „vi‟ ya que este es el más
importante editor de texto distribuido en los
sistemas Linux.

Tema 2: Usar el editor ‘vi’ para editar archivos


La ventaja principal de editores de línea de comandos es que no se necesita cargar la
interfaz gráfica para ejecutarlos. Un gran número de editores de texto en línea de
comandos pueden ser instalados y ejecutados de manera simultánea, pero los más
usados son: „vi‟ y „emacs‟.

Ing. Ricardo Ruiz


71
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Muchos factores pueden influir en la selección de un editor en particular, pero la razón de


muchos administradores de seleccionar „vi‟ es debido a que este está disponible en todos
los ambientes UNIX/Linux. De ahí su importancia de estudio.

En SLES, vim23 desarrollado por Bram Moolenaar es el editor estándar. „vi‟ es un enlace
simbólico a este editor de texto.
-Iniciar vi

Se puede ejecutar „vi‟ simplemente ingresando en la línea de comandos: „vi‟ o „vim‟,


seguido de las opciones requeridas y el nombre del archivo a editar, por ejemplo:

vi exercise

El archivo „exercise‟ es creado si no existe en el directorio, si existe se desplegará su


contenido. Si no definimos el nombre del archivo, „vi‟ desplegará información adicional en
la pantalla.

El símbolo „~‟ indica que la línea no existe en el archivo. En este archivo el cursor se ubica
en la primera línea del editor.

23
Vi improved

Ing. Ricardo Ruiz


72
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Uso del editor vi

Se puede mover el cursor a través del archivo usando las teclas k24,j25,h26, y l27 o usando
las teclas direccionales.
-Aprender algunos modos de trabajo

En contraste con otros editores, „vi‟ es orientado a modo. Cuando se ejecuta, entra en
modo comando. Cualquier cosa que se ingrese estando en este modo, el programa lo
interpreta como un comando. Se debe conmutar al modo inserción para poder ingresar
datos al archivo, esto puede resultar muy frustrante para usuarios que no están
familiarizados con este editor. Adicionalmente para conmutar a otros modos, se debe
conocer las combinaciones de teclas para esto, aun así la cantidad de comandos
necesarios para trabajar con „vi‟ son relativamente pocos y se pueden aprender con
facilidad.

Para poder introducir texto en el archivo se debe conmutar al modo de inserción usando la
tecla „i‟, en la parte inferior del editor aparecerá el mensaje --INSERT--. Presionando la
tecla [Esc], salimos del modo de inserción y retornamos al modo comando. Estando en el
modo comando, la tecla [:] precede los comandos que se pueden ejecutar en „vi‟.

A continuación un resumen de los modos disponibles:

 Modo Comando: cuando se ejecuta el editor, este entra automáticamente en este


modo. En el modo comando se pueden ingresar comandos. El comando „i‟ conmuta al
modo inserción y con el comando „:‟ se conmuta al modo de línea de comandos.
 Modo Inserción: en este modo, el editor acepta todas las entradas de texto y las
inserta en el archivo. Para retornar al modo comando se debe presionar la tecla [Esc]
 Modo línea de Comando: en este modo, el editor acepta comandos, si se presiona la
tecla [Esc] se conmutara nuevamente al modo comando.

La siguiente tabla resume los comandos más comunes del modo comando:

Comando Resultado
i Conmuta al modo inserción.
x Borra el carácter en el que se encuentre ubicado el cursor.
dd Borra la línea completa en la que se encuentre ubicado el cursor.
D Borra el resto de la línea desde donde se encuentre ubicado el cursor.
yy Copia en el buffer de memoria la línea en la que se encuentre ubicado el
cursor.
u Deshace la última operación sobre el archivo
/patrón Busca el patrón en el archivo de la posición del cursor hacia adelante en
el archivo.
?patrón Busca el patrón en el archivo de la posición del cursor hacia atras en el
archivo.
Nón Repite la búsqueda en dirección opuesta o en la misma dirección.
24
Una línea arriba
25
Una línea abajo
26
A la izquierda
27
A la derecha

Ing. Ricardo Ruiz


73
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Póp Inserta el contenido del buffer en la línea anterior/posterior a la línea


donde se encuentre el cursor.
:w [archivo] Guarda los cambios en el archivo (si se coloca archivo almacenara los
cambios en un nuevo archivo, pero seguirá editando el archivo original,
no el nuevo creado con este comando)
:q Finaliza la ejecución del editor.
:wq Guarda los cambios y finaliza la ejecución del editor.

Para :w, :q, y :wq, se le puede agregar al final el símbolo „!‟ que le indicará a la aplicación
que realice las acciones de este comandos de manera „forzada‟.

Ing. Ricardo Ruiz


74
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 8: Administrar Usuarios, Grupos y Permisos


Linux es un sistema multiusuario, en otras palabras, muchos usuarios pueden trabajar en
el sistema al mismo tiempo, por esta razón el sistema debe poder identificar de manera
única a cada usuario. En este capítulo aprenderemos a administrar las cuentas de usuario
y sus privilegios.

Objetivos

 Administrar usuarios y grupos usando YaST


 Describir las características básicas de la seguridad de los usuarios
 Administrar usuarios y grupos usando la línea de comandos
 Administrar permisos y propietarios de archivos
 Entender la seguridad del sistema de archivos

Tema 1: Administrar usuarios y grupos usando YaST


Con YaST se puede administrar usuarios y grupos. Para entender esto necesitamos
conocer lo siguiente:

 Temas básicos sobre usuarios y grupos


 Administración de usuarios y grupos con YaST

-Temas básicos sobre usuarios y grupos

Una de las características principales de un sistema operativo Linux es la habilidad de


servir aplicaciones y archivos a muchos usuarios simultáneamente. Por esta razón el
sistema debe de identificar de manera única a los usuarios. Para lograr esto, cada usuario
debe acceder al sistema usando: un nombre de usuario único y una contraseña.

Debido a que el sistema puede tener un número alto de usuarios (con nombres de usuario
y contraseña), el sistema identifica a cada uno con un número único. Este número se
denomina UID28. Cada sistema Linux tiene un único usuario privilegiado, el usuario „root‟.
Este usuario siempre tendrá el UID „0‟. Este usuario también funge como administrador
del sistema.

Los usuarios pueden agruparse en base a las características compartidas o sus


actividades. Por ejemplo: los usuarios normales generalmente están en el grupo „users‟,
los usuarios que necesiten crear páginas web deben ser ubicados en el grupo „webedit‟.
Por supuesto, los privilegios de acceso a los archivos para este directorio, en caso de las
páginas web, la carpeta donde se ubican debe de tener permitido el acceso a ese grupo.

Así como los usuarios, cada grupo tiene asociado un número único en el sistema, este
número es llamado GID29, y puede ser de uno de estos tipos: grupos normales, grupos
usados por el sistema, el grupo root (GID=0).

28
User IDentifier
29
Group IDentifier

Ing. Ricardo Ruiz


75
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Administración de usuarios y grupos con YaST

La ventana de administración de usuarios, lista a los usuarios existentes. La información


mostrada es la siguiente:

 Nombre de usuario
 Nombre completo
 UID
 Grupo asociado.

Si se presiona el combo „Filtro‟, se puede


mostrar los usuarios según el patrón que
ahí se define.

 Usuarios Locales: cuentas de


usuario creados en el servidor local para el
acceso al mismo.
 Usuarios del Sistema: cuentas de
usuario creados por el sistema para el uso
con servicios y aplicaciones.
 Personalizado: una vista
personalizada de usuarios basados en los
ajusted configurados con „Filtro
Personalizado‟.
 Filtro Personalizado: esta opción se debe combinar con el filtro de vista de usuario.

Se puede crear una nueva cuenta de usuario o editar una cuenta existente con solo
presionar „Agregar‟ o „Editar‟.

Si presionamos „Agregar‟ el cuadro de dialogo de la izquierda se desplegará, en la


primera pestaña (Datos del Usuario) se define:

 Nombre completo del usuario


 Nombre de usuario
 Contraseña

NOTA: recordemos que Linux es „case


sensitive‟, así que lo que se define en
mayúsculas debe ser escrito en mayúsculas.
Las contraseñas pueden contener
caracteres que incluyen letras, dígitos,
espacios y #*,.;:_-+°$%&\|?{}[]()=.
Las contraseñas no deben contener
caracteres especiales como las vocales
acentuadas, esto debido a la distribución de
los teclados.

Ing. Ricardo Ruiz


76
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La pestaña „Detalles‟ define lo siguiente:

 Grupos: los grupos en los que el


usuario estará laborando dentro del sistema.
 UID: Número único del usuario en el
sistema.
 Directorio Home: definición de la
carpeta „home‟ del sistema.
 Privilegios de acceso al directorio
home.
 Encriptar el contenido del directorio
home.
 Shell del usuario.
 Grupo por defecto del usuario.

La pestaña „Ajustes de la Contraseña‟ muestra lo siguiente:

 Fecha del último cambio de contraseña del usuario.


 Aviso en días antes de expiración de la contraseña.
 Días que se puede acceder al sistema después de expirar la contraseña.
 Número máximo de días con la misma contraseña.
 Número mínimo de días con la misma contraseña.
 Fecha de expiración.

La ventana de administración de grupos es similar a la de Usuarios, y tiene similares


opciones.

Si presionamos el botón „Agregar‟, podemos


definir lo siguiente:

 Nombre del grupo.


 GID.
 Contraseña. Es opcional, requerirá a
los usuarios la contraseña cuando estos se
conmuten al grupo.
 Miembros del Grupo. Define que
usuarios pertenecerán al grupo en
definición.

Tema 2: Describir las características básicas de la seguridad de los


usuarios
Como se menciono en el tema anterior, Linux tiene la habilidad de permitir a muchos
usuarios acceder de manera simultánea al sistema, debido a esto, se necesita asegurar
los datos, para lograr este objetivo, debemos entender lo siguiente:

Ing. Ricardo Ruiz


77
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Componentes de la seguridad del sistema de archivos

Como cualquier otro sistema operativo, Linux controla el acceso a los archivos
implementando los siguientes componentes:

 Usuarios: cuentas individuales para los usuarios.


 Grupos: los grupos son agrupaciones de usuarios, estos se agregan a los grupos al
momento de su creación. Solamente el usuario „root‟ o el propietario de los archivos
puede cambiar el grupo de acceso a cada archivo o directorio.
 Propietario: los archivos que son creados por un usuario tienen como propietario dicho
usuario. Solamente el usuario „root‟ puede cambiar el propietario de un archivo o
directorio.
 Privilegios: permisos que tiene un usuario para acceder a un archivo o directorio.
-Usuarios y Grupos

Debido a que Linux es un sistema multiusuario, muchos usuarios pueden acceder al


sistema simultáneamente, por esta razón se identifica a todos los usuarios con un nombre
de usuario y contraseña, adicionalmente se provee de grupos de usuario, estos asocian a
los usuarios que necesiten accesos y privilegios similares a datos y aplicaciones. Para
administrar usuarios y grupos, se necesita conocer lo siguiente:

 Números ID de usuarios y grupos.


 Usuarios regulares y de sistema
 Cuentas de usuario y directorios home
 Archivos de configuración de usuarios y contraseñas

Números ID de usuarios y grupos.

Debido a la cantidad de usuarios que puede tener el sistema, Linux administra los
usuarios y grupos con números. El número asignado a los usuarios se denomina UID.
Cada sistema Linux tiene un único usuarios privilegiado (root) este usuario tiene un
UID=0. En SLES los usuarios normales tienen un UID que inicia en 1000.

Así como los usuarios los grupos tienen asociado un número único llamado GID. Los
usuarios normales se incluyen en el grupo „users‟. Otros grupos también son creados para
roles o tareas especiales. Se puede usar el comando „id‟ para obtener la información del
UID y GID de los usuarios.

geeko@da51:~> id
uid=1001(geeko) gid=100(users) grupos=16(dialout),33(video),100(users)
geeko@da51:~>

Para mostrar únicamente la información de grupos, debemos usar el comando: „groups


usuario‟, como el siguiente ejemplo

geeko@da51:~> groups geeko


geeko : dialout video users
geeko@da51:~>

Ing. Ricardo Ruiz


78
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede desplegar información adicional acerca de los usuarios usando el comando


„finger usuairo‟, como en el ejemplo siguiente:

geeko@da51:~> finger geeko


Login: geeko Name: Geeko Chameleon
Directory: /home/geeko Shell: /bin/bash
On since fri feb 10 12:50 (MST) on :0 (messages off)
On since fri feb 10 13:38 (MST) on pts/0 from :0.0
No Mail.
No Plan.
geeko@da51:~>

Usuarios regulares y de sistema

En un sistema operativo Linux, existen dos tipos de cuentas de usuario:

 Usuarios regulares. Estas son cuentas de usuario que se crean para acceder a un
ambiente Linux. Esto permite asegurar el entorno de acceso a datos y aplicaciones.
Estas cuentas de usuario son administradas por el administrador del sistema.
 Usuarios de sistema. Estas cuentas se crean al momento de la instalación del
sistema, y son usadas por los servicios, utilidades y otras aplicaciones que hacen que
el servidor funcione adecuadamente y eficientemente.

Las cuentas de usuario son almacenadas en el archivo /etc/passwd y las contraseñas en


el archivo /etc/shadow.
Cuentas de usuario y directorios home

Para tener una cuenta de usuario en Linux, se debe habilitar un área personal protegida
de las modificaciones o visualizaciones que puedan realizar otros usuarios. Cada usuario
puede configurar su propio entorno de trabajo. Como parte de esta seguridad, cada
usuario en el sistema tiene su propio directorio en el directorio /home/

La excepción a esta regla es la cuenta del root. Este tiene su propio directorio home en el
directorio /root/.

Los directorios home permiten que los usuarios almacenen datos y configuraciones que
son propios de estos usuarios y solo ellos tendrán acceso.
Archivos de configuración de usuarios y contraseñas

Los sistemas Linux almacenan la configuración de usuarios y grupos en los siguientes


archivos: /etc/passwd, /etc/shadow y /etc/group.

NOTA: de ser posible, estos archivos no deben ser modificados con editores de texto. En
vez de eso, se puede usar el modulo de „Usuarios y Seguridad‟ provisto en YaST o la
herramienta de línea de comandos descritas en el siguiente tema.
La modificación de estos archivos puede acarrear errores (especialmente en el
/etc/shadow), y provocar que los usuarios no logren acceder al sistema.

Ing. Ricardo Ruiz


79
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

/etc/passwd

Este archivo almacena información de cada usuario tal como su nombre de usuario, el
UID, el directorio home y el Shell. Este archivo solamente puede ser modificado por el
root.

En el pasado también contenía la contraseña encriptada. Actualmente la contraseña


encriptada se encuentra almacenada en el archivo /etc/shadow.

La estructura de este archivo es la siguiente:

#1 #2 #3 #4 $5 #6 #7
geeko : x : 1001 : 100 : Geeko Chamaleon : /home/geeko : /bin/bash

#1: Usuario del sistema


#2: Contraseña
#3: UID
#4: GID
#5: Comentario
#6: Directorio Home
#7: Shell

/etc/shadow

Este archivo almacena la contraseña encriptada y otras informaciones de la misma. Este


archivo solamente puede ser modificado por el root.

La estructura de este archivo es la siguiente:

#1 #2 #3 #4 $5 #6 #7 #8
geeko : $wer1234ASd1341!”#%”$% : 13181 : 0 : 99999 : 7 : -1 : :

#1: Usuario del sistema.


#2: Contraseña del usuario ya encriptada.
#3: Ultimo cambio. Fecha del último cambio de contraseña.
#4: Siguiente posible cambio. Tiempo mínimo de vigencia de la contraseña después del
cambio.
#5: Siguiente cambio obligatorio. Tiempo máximo que el usuario puede usar la misma
contraseña.
#6: Advertencia. Número de días en el que el sistema avisará al usuario la caducidad de
su contraseña.
#7: Limite. Número de días que el usuario puede seguir usando la cuenta después de
expirada esta.
#8: Bloqueado. Fecha en que la cuenta expira.

/etc/group

Este archivo almacena información del grupo. Cada línea representa un registro único
para el grupo, su estructura es la siguiente:

#1 #2 #3 #4
users : x : 100 :

Ing. Ricardo Ruiz


80
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

#1: Nombre del Grupo.


#2: Contraseña del Grupo.
#3: GID.
#4: Miembros del grupo.

Tema 3: Administrar usuarios y grupos usando la línea de comandos


Se puede usar la línea de comandos para administrar usuarios y grupos aparte de la
herramienta grafica de YaST. Para lograr este objetivo se necesita conocer como:

 Administrar cuentas de usuario desde la línea de comandos


 Administrar grupos de usuarios desde la línea de comandos
 Crear mensajes de texto para los usuarios que acceden al sistema

-Administrar cuentas de usuario desde la línea de comandos

useradd

El usuario root puede usar el comando „useradd‟ para realizar las mismas labores de
administración de usuarios que se realizan con YaST.

Si el comando no tiene opciones, la cuenta de usuario es creada sin una contraseña


valida ni un home valido. A continuación las opciones más comunes:

 -m. Esta opción genera automáticamente el directorio home para el usuario. El


directorio creado se encuentra en la carpeta /home/. El contenido de este directorio es
copiado del directorio /etc/skel/.
 -c. Cuando se crea un usuario, se necesita crear un comentario para identificar al
usuario y algún otro comentario adicional, para esto se usa esta opción.
 -u. Esta opción es utilizada para especificar un UID a la nueva cuenta, si no se
especifica, el sistema usa el siguiente UID disponible.
 -g. Esta opción define el grupo primario para el usuario. Se puede especificar el GID o
el nombre del grupo.
 -p. Esta opción le permite al administrador crear una contraseña para el nuevo
usuario. Por ejemplo:

useradd –m –p ‚ghvkuzfFGW6cw‛ geeko

NOTA: la opción –p debe especificarse con una contraseña encriptada, no debe colocarse
texto plano. La aplicación mkpasswd se usa para generar contraseñas encriptadas para
este propósito.

 -e. Esta opción le permite configurar una fecha de expiración para las cuentas de
usuario, el formato debe ser: YYYY-MM-DD, como en el siguiente ejemplo:

useradd –m –p ‚ghvkuzfFGW6cw‛ –e 2013-03-21 geeko

Si no se define una contraseña al momento de crear la cuenta, se debe usar el comando


„passwd usuario‟ para definirle una contraseña a la cuenta.

Ing. Ricardo Ruiz


81
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede personalizar la información de creación de cuenta de usuario editando el


archivo: /etc/default/useradd, este archivo contiene lo siguiente:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
GROUPS=video,dialout
CREATE_MAIL_SPOLL=no

Las variables significan:

 GROUP: será el grupo primario en el que el usuario se registrará al momento de


crearse.
 HOME: ruta absoluta del directorio contenedor del home del usuario.
 INACTIVE: número de días de inactividad después de que la cuenta expire.
 EXPIRE: fecha cuando la cuenta expira.
 SHELL: ruta absoluta del Shell.
 SKEL: ruta absoluta del directorio modelo del home del usuario.
 GROUPS: otros grupos a los que el usuario tiene acceso.
 CREATE_MAIL_SPOLL: especifica la creación del directorio para recepción de
correos.
userdel

Este comando le permite al administrador eliminar cuentas de usuario existentes. Este


comando tiene una sola opción „-r‟, con la que se elimina recursivamente los archivos del
usuario contenida en el directorio home del mismo.

Antes de eliminar una cuenta de usuario, es importante obtener su UID, esto debido a que
userdel solamente elimina los archivos contenidos en el home, pero puede ser que
existan archivos del usuario en otras ubicaciones del sistema de archivos por ejemplo
/var/spool/mail/. Para eliminar estos archivos se debe usar el comando:

find / -uid UID –exec rm {} \;


usermod

Este comando le permite al administrador modificar información de un usuario existente,


tal como su UID, Shell, home, y grupo primario.

Las opciones de usermod son básicamente las mismas del comando useradd, por
ejemplo:

Cambiar el home del usuario: usermod –m –d /data/geeko geeko


Cambiar el UID del usuario: usermod –u 1001 geeko

Ing. Ricardo Ruiz


82
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
passwd

Este comando le permite al administrador cambiar la contraseña de un usuario o a sí


mismo. Por ejemplo:

geeko@da51:~> grep geeko /etc/shadow


geeko:$2a$10$.lwwIJSp3YxGC.sYxn.oJug9sWgXCTagyWWgesUhBzXRekYaDx0ha:15658:0:99999:7:::
geeko@da51:~> passwd –l geeko
geeko:!$2a$10$.lwwIJSp3YxGC.sYxn.oJug9sWgXCTagyWWgesUhBzXRekYaDx0ha:15658:0:99999:7:::
geeko@da51:~>

En este ejemplo el comando passwd es acompañado con la opción „–l‟, lo que bloquea el
acceso al usuario „geeko‟ al cambiarle la contraseña.

NOTA: si estamos en el entorno de usuario normal, el comando passwd solo se puede


ejecutar en el usuario actual. En otras palabras, solamente el usuario root puede cambiar
las contraseñas de otros usuarios.

-Administrar grupos de usuarios desde la línea de comandos

Así como existen comandos para la administración de usuarios, también existen


comandos para la administración de grupos de usuarios, a continuación se describen los
mismos:
groupadd

Con este comando se pueden crear grupos, sus opciones son dos:

 -g: se usa para especificar un GID al grupo, por ejemplo: groupadd –g 200 grupo
 -p: se usa para especificar una contraseña encriptada para el grupo.
groupdel

Con este comando se elimina un grupo. Este comando no tiene opciones y solamente se
puede eliminar el grupo si no tiene asociado ningún usuario.
groupmod

Con este comando se modifican algunos ajustes del grupo, tales como el GID, nombre, y
usuarios. Veamos los ejemplos (asumiendo que el grupo wáter existe):

Cambiar el nombre: groupmod –n water sports


Cambiar el GID: groupmod –g 201 sports
Agregar un usuario: groupmod –A geeko sports

Ing. Ricardo Ruiz


83
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
gpasswd

Con este comando podemos definir o cambiar la contraseña de un grupo de usuarios.


Solamente el root puede realizar esta acción. La opción „-r‟ elimina la contraseña del
grupo.
newgrp

Con este comando podemos cambiar el grupo efectivo del usuario a otro en que este
registrado, por ejemplo:

geeko@da51:~> id
uid=1001(geeko) gid=100(users) grupos=16(dialout),33(video),100(users)
geeko@da51:~> newgrp video
geeko@da51:~> id
uid=1001(geeko) gid=33(video) grupos=16(dialout),33(video),100(users)
geeko@da51:~> exit
geeko@da51:~> id
uid=1001(geeko) gid=100(users) grupos=16(dialout),33(video),100(users)
geeko@da51:~>

Como se notará el grupo primario cambio después del comando newgrp, y retorno a su
posición original con el comando exit.

Si el grupo definido por newgrp tiene configurado una contraseña, esta será solicitada, si
el usuario no está agregado al grupo y conoce la contraseña este será agregado
automáticamente al mismo.
-Crear mensajes de texto para los usuarios que acceden al sistema

Crear estos mensajes es importante, ya que despliega información cuando los usuarios
accesan al modo comando en un ambiente Linux.

Se puede modificar el siguiente archivo para definir estos mensajes:

 /etc/issue. Este es el archivo para configurar el mensaje inicial para los usuarios que
acceden al sistema localmente.
 /etc/issue.net. Este es el archivo para configurar el mensaje inicial para los usuarios
que acceden al sistema vía red.
 /etc/motd. Editar este archivo configura el mensaje del día.

Nos debemos asegurar de dejar uno o dos espacios después del mensaje para identificar
bien el promtp del sistema.

Tema 4: Administrar permisos y propietarios de archivos


Administrar los privilegios de acceso a archivos y directorios es una labor realmente
sencilla, para poder comprender los pasos necesarios para gestionar correctamente los
privilegios de accesos debemos comprender lo siguiente:

 Los permisos de archivo


 Cambiar los permisos de archivos con chmod
 Cambiar los propietarios de archivos con chown y chgrp

Ing. Ricardo Ruiz


84
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Modificar los permisos de acceso estándar


 Configurar permisos especiales
-Los permisos de archivo

Como estudiamos ya el comando „ls –l‟ despliega el contenido del directorio actual y
muestra los privilegios de acceso asignados a los archivos y directorios dentro del
directorio. Por ejemplo:

geeko@da51:~> ls -l
-rw-r--r-- 1 geeko users 0 2012-11-16 19:10 my_file
geeko@da51:~>

Se observa que los primeros caracteres son los siguientes: „-rw-r--r--'. Estos caracteres son
los que definen los privilegios de acceso al archivo my_file.

El primer carácter indica el tipo de archivo:

 -. Archivo Normal
 d. Directorio
 l. Enlace

Los restantes nueve caracteres muestran los permisos de archivo. Estos son:

 Lectura (r). Este permiso permite el acceso a la lectura del contenido del archivo.
 Escritura (w). Este permiso permite el acceso de escritura al archivo.
 Ejecución (x). Este permiso permite la ejecución del archivo.

Si no se configuran los privilegios en el archivo, el carácter que se muestra es el guion.


Los privilegios están agrupados de la siguiente manera: „rwx rwx rwx' esto se puede explicar
de la siguiente manera:

 Los primeros tres caracteres representan los privilegios del propietario del archivo.
 Los siguientes tres caracteres representan los privilegios del grupo al que pertenece el
propietario del archivo.
 Los últimos tres caracteres representan los privilegios de todos los demás usuarios del
sistema.

Los privilegios también pueden ser representados por la representación en decimal de sus
binarios correspondientes:

Binario Decimal Representación Significado


000 0 --- Sin acceso
001 1 --x Solo Ejecución
010 2 -w- Solo Escritura
011 3 -wx Escritura y Ejecución
100 4 r-- Solo Lectura
101 5 r-x Lectura y Ejecución
110 6 rw- Lectura y Escritura
111 7 rwx Todos los privilegios

Ing. Ricardo Ruiz


85
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-Cambiar los permisos de archivos con chmod

Para modificar los privilegios de acceso a los archivos se usa el comando „chmod‟.
Existen dos maneras de realizar esta acción, la primera es usando la representación con
caracteres y la segunda usando la representación decimal del privilegio a configurar.
chmod usando código de caracteres

Para usar el código de caracteres para agregar privilegios se usa el símbolo „+‟ y para
eliminar privilegios „-„, a este símbolo se le agrega las opciones „u‟ para el propietario, „g‟
para el grupo, „o‟ para los otros usuarios y „a‟ para todos los privilegios. A continuación
mostramos ejemplos usando chmod:

Ejemplo Resultado
chmod u+x El propietario obtiene privilegios de ejecución.
chmod g=rw Todos los miembros del grupo podrán leer y escribir.
chmod u=rwx El propietario obtiene todos los permisos.
chmod u=rwx,g=rw,o=r Todos los permisos al propietario, lectura y escritura a los
miembros del grupo y solo lectura a los otros usuarios.
chmod +x Todos los usuarios (propietario, miembros del grupo y otros)
reciben permisos de ejecución.
chmod a+x Ídem del anterior.

El siguiente ejemplo muestra el resultado de la ejecución del comando chmod:

geeko@da51:~> ls –la my_file


-rw-r--r-- 1 geeko users 0 2012-11-16 19:10 my_file
geeko@da51:~> chmod g+w my_file
geeko@da51:~> ls –la my_file
-rw-rw-r-- 1 geeko users 0 2012-11-16 19:10 my_file
geeko@da51:~>

Con la opción –R, chmod puede cambiar los privilegios de un directorio y su contenido.
chmod usando código decimal

Recordando la tabla de referencia antes mencionada, se puede cambiar los privilegios de


los archivos usando en vez de caracteres un número en decimal. La diferencia radica en
que con este método se sobre escriben todos los privilegios, por tanto se deben tener bien
definidos los privilegios a escribir en el archivo.

Tomemos como ejemplo el siguiente archivo y sus privilegios:

geeko@da51:~> ls –la my_file


-rw-r--r-- 1 geeko users 0 2012-11-16 19:10 my_file
geeko@da51:~>

Teniendo en cuenta los privilegios de este archivo, vamos a operar los mismos ejemplos
de la tabla anteriormente vista:

Ing. Ricardo Ruiz


86
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Ejemplo Resultado
chmod 744 my_file El propietario agrega privilegios de ejecución.
chmod 664 my_file A todos los miembros del grupo se les agrega poder leer y
escribir.
chmod 744 my_file El propietario obtiene todos los permisos.
chmod 764 my_file Todos los permisos al propietario, lectura y escritura a los
miembros del grupo y solo lectura a los otros usuarios.
chmod 755 my_file Todos los usuarios (propietario, miembros del grupo y otros)
reciben permisos de ejecución.

En estos ejemplos, tratamos de mantener la estructura de privilegios para el propietario,


los miembros del grupo y los otros usuarios.
-Cambiar los propietarios de archivos con chown y chgrp

El root puede usar el comando chown y cambiar el propietario y grupo de un archivo. La


sintaxis de este comando es:

chown usuario.grupo archivo

Si solo se desea cambiar el propietario, solamente basta con omitir „.grupo‟ y se realizara
el cambio. De igual manera si solo se desea cambiar el grupo se elimina „usuario‟ y el
cambio del grupo será realizado (esta variante la puede usar un usuario normal). El
comando „chgrp‟ realiza también este último cambio, su sintaxis es:

chgrp grupo archivo

Un usuario puede cambiar el grupo al que pertenece un archivo si y solo si:

1. Es propietario del archivo.


2. Forma parte del grupo en el que registrará al archivo.

Claro está que el root y el propietario seguirán teniendo acceso al archivo.


-Modificar los permisos de acceso estándar

En los ajustes originales de acceso, los archivos al momento de crearse toman los
siguientes privilegios 666 y los directorios 777.

Para modificar (restringir) estos accesos por defecto se puede usar el comando „umask‟.
Se debe usar este comando con tres dígitos numéricos tales como 022. Los permisos
definidos con el comando, son removidos de los permisos por defectos. Por ejemplo,
ingresamos umask 022 se tiene el siguiente resultado:

Directorios Archivos
rwx rwx rwx rw- rw- rw-
Permisos Estándar
7 7 7 6 6 6
--- -w- -w- --- -w- -w-
umask
0 2 2 0 2 2
rwx r-x r-x rw- r-- r--
Resultado
7 5 5 6 4 4

Ing. Ricardo Ruiz


87
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En el ejemplo veremos el efecto de la aplicación de umask en diferentes momentos:

da51:~/Desktop # touch ejemplo1


da51:~/Desktop # mkdir ejemplodir1
da51:~/Desktop # umask 000
da51:~/Desktop # ls -la | grep ejem
-rw-r--r-- 1 root root 0 Nov 18 22:02 ejemplo1
drwxr-xr-x 2 root root 4096 Nov 18 22:02 ejemplodir1
da51:~/Desktop # touch ejemplo2
da51:~/Desktop # mkdir ejemplodir2
da51:~/Desktop # umask 022
da51:~/Desktop # ls -la | grep ejem
-rw-r--r-- 1 root root 0 Nov 18 22:02 ejemplo1
-rw-rw-rw- 1 root root 0 Nov 18 22:03 ejemplo2
drwxr-xr-x 2 root root 4096 Nov 18 22:02 ejemplodir1
drwxrwxrwx 2 root root 4096 Nov 18 22:04 ejemplodir2
da51:~/Desktop # touch ejemplo3
da51:~/Desktop # mkdir ejemplodir3
da51:~/Desktop # ls -la | grep ejem
-rw-r--r-- 1 root root 0 Nov 18 22:02 ejemplo1
-rw-rw-rw- 1 root root 0 Nov 18 22:03 ejemplo2
-rw-r--r-- 1 root root 0 Nov 18 22:04 ejemplo3
drwxr-xr-x 2 root root 4096 Nov 18 22:02 ejemplodir1
drwxrwxrwx 2 root root 4096 Nov 18 22:04 ejemplodir2
drwxr-xr-x 2 root root 4096 Nov 18 22:04 ejemplodir3
da51:~/Desktop #

-Configurar permisos especiales

Los siguientes tres atributos son usados para circunstancias especiales:

Letra Numero Nombre Archivos Directorios


t 1 Sticky bit N/A Los usuarios pueden
eliminar solamente si son
los propietarios o root.
Es aplicado usualmente en
el directorio /tmp/.
s 2 Set GID Cuando una aplicación esta Los archivos creados en
en ejecución, configura el este directorio se les
GID a los procesos para configura el grupo del
que accedan a los archivos directorio y no el grupo al
o directorios. que pertenece el usuario.
s 4 Set UID Configura el UID en los N/A
procesos y archivos en los
que el usuario es
propietario cuando el
programa está en
ejecución.

Tema 5: Entender la seguridad del sistema de archivos


Después de que un usuario ingresa al sistema, que se le permite hacer y que no es
determinado por los ajustes de seguridad del sistema de archivo.

En Linux, la seguridad del sistema de archivo es especialmente importante debido a que


cada recurso del sistema está representado por un archivo.

Ing. Ricardo Ruiz


88
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Por ejemplo, cuando un usuario intenta acceder a la tarjeta de sonido para reproducir
sonidos, el acceso al dispositivo es determinado por los ajustes de los privilegios en el
archivo de dispositivo ubicado en el directorio /dev/.

Para asegurar una seguridad básica del sistema de archivo, se necesita conocer lo
siguiente:

 Reglas básicas para definir usuarios con acceso de escritura.


 Reglas básicas para definir usuarios con acceso de lectura.
-Reglas básicas para definir usuarios con acceso de escritura.

El sistema de archivos usado en Linux es estructuralmente un sistema de archivos UNIX.


Ambos soportan los mismos permisos de acceso a los archivos (leer, escribir, ejecutar,
sticky bit, SUID, SGID, etc.). Aparte de esto, para agregar funciones estándares
adicionales, tales como los „time stamp‟, los permisos de acceso pueden ser
administrados de manera separada por cada propietario, usuarios de grupos, y el resto
del mundo (grupo de usuarios „otros‟).

Como regla general, un usuario normal solo tiene acceso de escritura en los siguientes
directorios: el directorio home del usuario y el directorio /tmp para el almacenamiento de
archivos temporales.

Dependiendo de los propósitos de un sistema, otros directorios pueden permitir el acceso


de escritura a los usuarios, por ejemplo, si se instala SAMBA Server, un directorio
compartido con privilegios de escritura puede ser accedido por usuarios que lo mapeen en
la red.

Algunos dispositivos pueden tener acceso de escritura (por ejemplo los las unidades
ópticas R/W), que necesitan enviar datos por dicho dispositivo.
-Reglas básicas para definir usuarios con acceso de lectura.

Algunos archivos en el sistema pueden estar protegidos para que los usuarios no accedan
a leer sus datos. Esto es muy importante para los archivos que almacenan contraseñas.

Los usuarios normales no deben tener acceso al contenido de estos archivos. Por tanto
cuando la contraseña en un archivo esta encriptada, los archivos deben de estar
protegidos de cualquier acceso no autorizado.

La siguiente lista muestra algunos archivos que almacenan contraseñas en Linux:

 /etc/shadow. Este archivo contiene las contraseñas en formato encriptado. Si se usa


LDAP para la autenticación de los usuarios, en este archivo se almacena la
contraseña del root.
 /etc/samba/smbpasswd. Este archivo contiene las contraseñas de los usuarios de
samba, el privilegio por defecto es 600.
 Archivos con contraseñas de Apache. Las ubicaciones de estos archivos, dependen
de la configuración. Estos archivos contienen las contraseñas para acceder al servidor
web.

Ing. Ricardo Ruiz


89
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 /etc/openldap/slapd.conf. Este archivo contiene la contraseña del usuario root del


servidor LDAP.
 /boot/grup/menu.lst. Este archivo puede contener la contraseña del motor de arranque
GRUB. El privilegio estándar está configurado en 600.

NOTA: esta lista no es una lista completa. En su sistema pueden existir mas archivos
conteniendo contraseñas, eso depende de la configuración del mismo y de las
aplicaciones instaladas.

Algunas contraseñas pueden ser leídas por usuarios que no son root. Esto normalmente
ocurre cuando el usuario tiene un UID de un demonio en ejecución. Por ejemplo, el
servidor web Apache se ejecuta bajo el UID del usuario wwwrun. Por esta razón, los
archivos de contraseña pueden ser leídos por el usuario wwwrun. En este caso, se debe
de estar seguro que solamente la cuenta del demonio tiene permitido el acceso de lectura
al archivo y lo los otros usuarios.

Ing. Ricardo Ruiz


90
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 9: Administrar el Sistema de Archivos de Linux


En esta sección, aprenderemos como administrar el sistema de archivos SLES para la
implementación de particiones, crear sistemas de archivos, verificar los errores en los
sistemas de archivos, configurar LVM y aplicaciones RAID, y configurar cuotas.

Objetivos

 Seleccionar un sistema de archivos de Linux.


 Configurar particiones de sistemas de archivos de Linux.
 Administrar sistemas de archivos de Linux.
 Configurar LVM30 y aplicaciones RAID
 Definir y configurar cuotas de discos.

Tema 1: Seleccionar un sistema de archivos de Linux.


Una de los roles principales de un sistema operativo Linux es proveer servicios de
almacenamiento a través de la creación y administración de sistemas de archivos.

Para seleccionar exitosamente un sistema de archivos que se ajuste a los requerimientos


de su servidor, se necesita entender lo siguiente:

 El sistema de archivos de Linux


 Conmutación a sistemas de archivos virtuales
 El sistema de archivos interno de Linux
 El FSJ31
 Documentación adicional sobre los sistemas de archivos.

Es muy importante tener en mente que no existe un sistema de archivos que sea lo mejor
para todos los tipos de aplicaciones. Cada sistema de archivos tiene sus propias
fortalezas y debilidades, que afectan las cuentas de usuario creadas en el sistema
operativo. También debemos siempre tener en cuenta que un sistema de archivos
sofisticados JAMAS sustituirá una estrategia razonable de respaldos de la información.
-El sistema de archivos de Linux

Los tipos de archivos que se seleccionen dependerán de muchos factores. Este tema
describirá los sistemas de archivos y sus formatos que están disponibles en Linux.

Todos los tipos sistemas de archivos son incluidos en el kernel de Linux 2.6. Para ver los
sistemas de archivos soportados por el kernel de su sistema operativo Linux lea el archivo
/proc/filesystems.

30
Logical Volume Manager
31
File System Journaling

Ing. Ricardo Ruiz


91
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Sistema de Archivo Tradicional

El sistema de archivos tradicional soportado por Linux y no maneja datos adicionales de


los archivos tales como, permisos, tamaños, fechas, etc. En esta categoría se encuentran
los siguientes sistemas de archivos:

 Ext2: el sistema de archivos „ext2‟ está basado en inodos, diseñado para ser rápido,
es eficiente y no fragmenta la información con facilidad. Debido a estas propiedades,
este sistema de archivos es usado por muchos administradores, aun cuando no
provee datos adicionales. Este sistema de archivos se puede actualizar al formato
„ext3‟ con suma facilidad.
 MS-DOS/VFAT32: FAT es el primer sistema de archivos para usuarios para Microsoft
Windows® estuvo disponible hasta la versión „Me‟ de ese sistema operativo. VFAT es
una versión de 32 bits de FAT que incluye soporte para nombres de archivos largos.
 Minix: el sistema de archivos minix es viejo y muy limitado, pero en ocasiones es
usados por discos flexibles o RAM disks.
Sistema de Archivo ‘Journaling’

Un sistema de archivos „journaling‟ es un sistema de archivos que almacena los cambios


en los archivos para manejar datos históricos de los mismos. Dependiendo del sistema de
archivos montado, este almacenara metadatos, o también los datos en sí. Los siguientes
sistemas de archivos están disponibles en Linux:

 Ext3: esta es una actualización del sistema de archivos ext2.


 ReiserFS: originalmente diseñado por Hans Reiser, este sistema de archivos trata la
partición completa del disco como si fuese una tabla única de una base de datos,
almacenando no solamente los metadatos del archivo si no también al archivo en sí.
Directorios, archivos y los metadatos de los archivos son organizados en una
estructura de datos eficiente, llamada „árbol balanceado‟, con esto ofrece velocidades
significativas para muchas aplicaciones especialmente aquellas que usan muchos
archivos pequeños.
 XFS: este es un sistema de archivos de alto rendimiento para SGI. Provee rápida
recuperación después de un crash, transacciones rápidas, alta escalabilidad y
excelente ancho de banda. XFS combina tecnologías de „journaling‟ avanzadas con
direcciones de 64 bits completas y algoritmos y estructuras escalables.
 NTFS: este es un sistema de archivos usado por Windows NT (Windows NT 6.0 hasta
Windows 8). Actualmente el soporte de este sistema de archivos es solamente de solo
lectura. El soporte para creación, cambios y eliminación de archivos esta en etapas
experimentales.
-Conmutación a sistemas de archivos virtuales

Para un usuario o programa, no es importante que formato de sistema de archivos es


usado. La interface para los datos será siempre la misma. Esto es implementado por el
VFS33 de Linux.

32
File Allocation Table
33
Virtual file System

Ing. Ricardo Ruiz


92
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este es un nivel de abstracción que provee el kernel que tiene definido estas interfaces
para los procesos. Incluye funciones como abrir archivos, escribir en un archivo, y leer un
archivo.

Un programa no debe preocuparse de detalles técnicos para acceder a un archivo. El VFS


envía estas solicitudes al controlador correspondiente según el formato del sistema de
archivos. La ilustración siguiente muestra el proceso:

PROCESO PROCESO PROCESO PROCESO


A B C D

VFS

EXT2 EXT3 REISER XFS FAT/VFAT

Una de las características del VFS es desplegar características del archivo para el usuario
de cómo son conocidos por los sistemas de archivos UNIX. Esto incluye permisos de
acceso, eso cuando existen.
-El sistema de archivos interno de Linux

Los sistemas de archivos en Linux están caracterizados por el factor de que los datos y la
administración de su información están separados. Cada archivo es descrito por un inodo.
Cada inodo tiene un tamaño de 128 bytes y contiene toda la información sobre el archivo,
excepto el nombre. Esto incluye detalles tales como: propietario, permisos de acceso,
tamaño, timestamps y los enlaces a los bloques de datos del archivo. Como se
almacenan los datos difieren entre los diferentes sistemas de archivos. Se explicara lo
básico de la organización de los datos en cuatro sistemas de archivos de Linux.
Formato del sistema de archivos ext2fs

Este formato es, en muchos sentidos, idéntico al formato de sistema de archivos


tradicional de UNIX. El concepto de inodo, bloques y directorios son los mismos.

Cuando un sistema de archivos es creado (esto es el equivalente a dar formato a la


partición en otros sistemas operativos), el número máximo de archivos que pueden ser
creados es especificado. La densidad del inodo (a la par de la capacidad de la partición)
determina cuantos inodos podrán ser creados. Se debe recordar que no será posible
generar inodos adicionales posteriormente. Se debe especificar la densidad de inodos
cuando se está creando el sistema de archivos.

Ing. Ricardo Ruiz


93
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Debe de existir un inodo por cada archivo o directorio en la partición. El número de inodos
también determina el número máximo posible de archivos. Normalmente un inodo
representa 4096 bytes de espacio en disco. En promedio cada archivo debe de ser de
4Kb de tamaño para que la partición se utilice de manera óptima. Si existen un gran
número de archivos menores a 4Kb, mas inodos serán utilizados, disminuyendo la
capacidad total del sistema de archivos.

El espacio de una partición se divide en „bloques‟. Estos bloques son definidos con un
tamaño de 1024, 2048 ó 4096 bytes. Esto debe ser especificado cuando el sistema de
archivos es creado, no se puede modificar posteriormente. El tamaño del bloque
determina cuanto espacio es reservado para un archivo.

En el formato del sistema de archivos clásico, los datos son almacenados en un arreglo
lineal de bloques del mismo tamaño. Un número específico de bloques es agrupado para
formar un grupo de bloques, y cada grupo de bloques consiste de 32768 bloques.

GRUPO DE GRUPO DE GRUPO DE


... ... ... ...
BLOQUES P BLOQUES X BLOQUES N

Descriptor Mapa de Bit Mapa de bit Tabla de Bloques de


Super Bloque
del Grupo del Bloque de inodos inodos Datos

El sector de arranque es ubicado al inicio del sistema de archivos y contiene información


estática sobre el mismo, incluyendo la ubicación en el que el kernel debe cargar al
sistema

Cada grupo de bloques contiene los siguientes componentes:

 Súper bloque. Este es leído cuando el sistema de archivos se monta y contiene la


siguiente información del sistema de archivos:
o El número de bloques e inodos libres y utilizados.
o El número de bloques e inodos por cada bloque.
o Información sobre el uso del sistema de archivos.
o Un bit valido, se configura en 0 cuando el sistema de archivos es montado y se
retorna a 1 cuando se desmonta.
 Descriptor del Grupo. Se almacena la información de la ubicación de las otras areas
del grupo de bloques.
 Mapa de Bit del Bloque. La información almacenada aquí nos indica cuales bloques de
este grupo están libres u ocupados.
 Mapa de Bit de inodos. Cuales inodos están libres u ocupados.
 Tabla de inodos. La información almacenada aquí incluye. Propietarios, permisos de
acceso, timestamps, y enlaces a los bloques de datos en la que cada dato está
almacenado.
 Bloque de datos. Es donde la información de la ubicación de los datos actuales.

Ing. Ricardo Ruiz


94
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El sistema de archivos ext2 puede procesar nombres de archivos con longitudes de hasta
255 caracteres. Con la ruta completa el nombre puede llegar a tener un máximo de 4096
caracteres. El tamaño máximo del archivo es de 2Tb (con bloques de 1024 bytes) ó 16Tb
(con bloques de 4096 bytes).

NOTA: Por razones de seguridad, se almacena una copia del súper bloque.

Formato ReiserFS

En el sistema de archivos ext2 un bloque puede ser de 1024 bytes, un archivo de 8195
bytes usa 8 bloques completamente y un noveno con 3 bytes, aunque solo se usan 3
bytes, este bloque ya no está disponible para el uso por otro archivo. Esto significa que el
11% de espacio está en desuso. Si el archivo es de 1025 bytes, dos bloques serán
necesarios para almacenarlo, uno completamente y el otro con 1 byte, esto es el 50% de
espacio sin uso. Un caso aun peor ocurre cuando el archivo es realmente pequeño,
supongamos 50 bytes, esto significa que el 95% del bloque se desperdicia.

Una solución a este problema la proporciona el formato ReiserFS, organizando la


información de una manera diferente. Este formato de sistema de archivos está formado
por bloques de 4096 bytes. Aun así los archivos pequeños son almacenados más
eficientemente. Los archivos pequeños o los finales de otros archivos son almacenados
contiguamente en el mismo bloque. Los inodos requeridos no son generados cuando el
sistema de archivos se crea, solamente se crean cuando son creados. Este permite una
solución más flexible para los requerimientos de almacenamiento, incrementa la eficiencia
en el uso del espacio del disco duro.

Otra ventaja de ReiserFS es el acceso rápido a los archivos. Esto se debe a el uso de
árboles binarios balanceados en la organización de los bloques de datos. Esto requiere
más poder de procesamiento debido a que cada vez que se escribe un archivo el árbol
debe ser re balanceado

La versión actual de ReiserFS (3.6) contenido en la versión del kernel 2.4.x permite una
partición de 16Tb y el mismo tamaño máximo de un archivo. La misma limitación existe en
el ext2.
Directorios

Los inodos contienen toda la información administrativa de un archivo, pero no el nombre


del mismo. El nombre es almacenado en el directorio. Como un catalogo, los directorios
contienen la información de otros archivos. Esta información incluye el número de los
inodos para el archivo y sus nombres. Los directorios son como una tabla en la que cada
número de inodo son asignados línea a línea a los nombres de archivos. Se puede ver los
inodos asignado a los archivos usando el comando „ls –i‟:

da51:~/Desktop # ls –i /
2 . 103002 cdrom 80045 floppy 104081 mnt 103782 sbin
2 .. 99068 dev 95657 home 81652 opt 80044 tmp
104005 bin 104004 dvd 102562 lib 1 proc 4 usr
2 boot 95722 etc 95718 media 81598 root 80046 var
da51:~/Desktop #

Ing. Ricardo Ruiz


95
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cada nombre de archivos es precedido por el número del inodo. Como los inodos son
únicos para cada sistema de archivos, puede haber dos inodos iguales debido a que
están en sistemas de archivos distintos.
Formato del sistema de archivos de red

Adicional a lo ya mencionado en los formatos de sistemas de archivos en la maquina


local, Linux también entiende varios formatos de sistema de archivos en red. El más
significativo de estos es NFS34, esto es el estándar del mundo UNIX. Con NFS, no importa
cuál es el sistema de archivos es usado localmente. Si una computadora es funcionando
como un servidor NFS, este provee el sistema de archivos en formato NFS que los
clientes pueden acceder. Este incluye SMB35, este formato es usado en Windows y NCP 36
de Novell.
-El FSJ

Los sistemas de archivos son básicamente bases de datos que almacenan archivos y
usan información de archivos tales como los nombres de archivos y timestamp (llamadas
metadatos) para organizar y ubicar los archivos en disco.

Cuando se modifica un archivo, el FS realiza las siguientes transacciones:

 Actualiza el archivos (los datos)


 Actualiza el metadato del archivo.

Debido a que son dos operaciones distintas, la corrupción de datos puede ocurrir cuando
una de las operaciones se realiza y la otra no, esto resulta en una diferencia entre los
datos y los metadatos.

Esto puede ser causados, por ejemplo por un alto voltaje. Puede ser necesario escribir los
datos nuevamente, pero los metadatos no será necesario actualizarlos nuevamente.

Cuando hay una diferencia entre los datos y los metadatos, el estado del sistema del
archivos es incoherente y requiere una revisión del sistema de archivos y posiblemente su
reparación. Para ext2, esto incluye una revisión del sistema del archivos entero que
consumiría mucho tiempo en los discos duros actuales que tienen centenares de GB de
capacidad.

En un FSJ, el sistema guarda un registro de todas las transacciones actuales, y pone al


día la bitácora cuando una transacción se completa. Verificar el sistema de archivos, por
ejemplo después de un fallo de energía, consiste principalmente en reiniciar el Journal y
es mucho más rápido que verificar el sistema de archivos entero. Por ejemplo cuando se
copia un archivo ubicado en la red a la estación de trabajo, el Journaled realiza una
entrada al Journal indicando que un archivo nuevo esta creándose.

Después de que los datos del archivo y su metadato se copian, el Journaled realiza una
entrada al Journal indicando que el archivo se creó de manera exitosa.

34
Network File System
35
Server Message Block
36
Netware Core Protocol

Ing. Ricardo Ruiz


96
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Documentación adicional sobre los sistemas de archivos.

Cada sistema de archivos de Linux tiene su propio sitio web en el que se puede encontrar
listas de correo, documentación técnica, y FAQ‟s. Los sistemas de archivos que
estudiamos incluyen estos sitios:

Sistema de Archivos URL


Ext2 http://e2fsprogs.sourceforge.net/
ReiserFS y Reiser4 http://www.namesys.com/
SGI’s XFS http://oss.sgi.com/projects/xfs/

Un tutorial bastante comprensible sobre los sistemas de archivos de Linux puede ser
encontrado en IBM developerWorks en el URL siguiente:

http://www-106-ibm.com/developerworks/library/l-fs.html

Si necesitamos conocer las limitantes de los sistemas de archivos de SLES visite:


http://www.novell.com/products/linuxenterpriseserver/kernel_limits.html

La jerarquía estándar del Sistema de Archivos de Linux (FHS) puede ser encontrada en:
http://www.pathname.com/fhs/

Tema 2: Configurar particiones de sistemas de archivos de Linux.


Una tarea básica de todos los administradores es el mantenimiento de los esquemas del
sistema de archivos.

NOTA: asegurar primero un respaldo de la data ANTES de usar herramientas que


modifiquen la tabla de particiones o los sistemas de archivos.

En muchos casos, YaST propone un esquema de particiones razonable durante la


instalación del sistema, esta puede ser aceptada sin realizar cambios. Aun así YaST
puede ser usado para personalizar las particiones después de la instalación.

En línea de comandos, se debe usar primero el comando fdisk para la administración de


las particiones y luego mkfs para crear el sistema de archivos.

Para realizar estas labores estudiaremos los siguientes temas:

 Dispositivos Linux y nombres de las particiones


 Diseñar estrategias para la implementación de particiones
 Administrar particiones con YaST
 Administrar particiones con fdisk
-Dispositivos Linux y nombres de las particiones

La siguiente tabla muestra los nombres de los dispositivos Linux usados para discos
duros:

Ing. Ricardo Ruiz


97
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Dispositivo Nombre en Linux


DD Primario Maestro IDE /dev/hda
DD Primario Esclavo IDE /dev/hdb
DD Secundario Maestro IDE /dev/hdc
DD Secundario Esclavo IDE /dev/hdd
Primer DD SCSI /dev/sda
Segundo DD SCSI /dev/sdb

Las particiones siguen la convención de nombres obteniendo el mismo del nombre del
dispositivo y el número de la partición del mismo. Por ejemplo, la primera partición en el
primer DD IDE será /dev/hda1 (/dev/hda + 1 que es la primer partición). La primera
partición lógica definida en un DD IDE siempre será la número 5.

Veamos los siguientes ejemplos:

Dispositivo Nombre en Linux


Primera partición del primer DD IDE /dev/hda1
Segunda partición del primer DD IDE /dev/hda2
Primera partición del tercer DD ICSI /dev/sdc1
Primera partición lógica del primer DD IDE /dev/hda5
Segunda partición lógica del primer DD IDE /dev/hda6

Como ejemplo supondremos que vamos a instalar un Linux en un sistema que tiene dos
discos duros IDE, en el primero definiremos las particiones swap y /, y en el segundo se
colocaran los logs, mail, y directorios home. También asumiremos que el CD-ROM es
esclavo en el primer controlador IDE.

Partición Nombre en Linux


Swap /dev/hda1
/ /dev/hda2
Partición extendida en el segundo disco /dev/hdc1
/var /dev/hdc5
/home /dev/hdc6
/app1 /dev/hdc7

NOTA: en instalaciones antiguas se encuentra también una pequeña partición llamada


/boot. La razón es porque en esa partición se almacena el sistema de arranque (LILO), y
este necesitaba estar en los primeros 1024 cylindros del disco duro para poder arrancar la
maquina.

-Diseñar estrategias para la implementación de particiones

Normalmente YaST propone un esquema de particiones razonables con suficiente


espacio de disco. Generalmente con una partición swap que usa entre 256 y 512 Mb, y el
resto para la partición /. Si se necesita definir un esquema diferente se debe tomar en
cuenta las siguientes recomendaciones:

La distribución del espacio en disco. Dependiendo del espacio total en el disco duro de su
sistema, y del espacio total a utilizar (estimado):

Ing. Ricardo Ruiz


98
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Hasta 4 Gb. Se debe crear una partición swap y una partición para /. En este caso
todo la partición / contendrá todos los directorios del árbol.
 Mas de 4 Gb. Se debe crear una partición swap de 1Gb, y una partición para cada
directorio:
o /boot/. Depende del hardware, puede ser necesario crear una partición boot,
para contener los mecanismos de arranque del kernel de Linux. Esta partición
será ubicada en el inicio del disco en el cilindro 1. Generalmente esta partición
tiene un tamaño de 100 Mb. Generalmente YaST propone la creación o no de
esta partición, pero si no se está seguro de si el hardware necesita o no esta
partición, es mejor crearla.
o /opt/. Muchas aplicaciones instalan sus datos en esta partición. En este caso,
se debe crear esta partición por separado cuyo tamaño va desde los 4Gb a
más, en dependencia de los aplicativos a instalar. Por ejemplo KDE y GNOME
son instalados en /opt/.
o /usr/. Apartando los directorios contenedores de datos de los usuarios, esta
carpeta es la más grande del sistema. Colocarla en una partición separada
permite opciones especiales de montaje, como montarla de solo lectura para
evitar cambios en los programas. La actualización de las aplicaciones requerirá
un re-montaje del sistema para permitir la lectura y escritura.
o /var/. Si la computadora es usada como un servidor de correos, puede ser una
gran idea colocar esta carpeta en una partición separada. Esto debido a que
mientras más buzones y mensajes almacena el sistema, este se puede volver
inestable. Por separado, se puede llenar la partición /var/ pero no la partición /,
esto permitirá al administrador reparar las fallas del sistema.
o /srv/. En esta carpeta (partición) se almacenan los datos de los usuarios o las
páginas web, si la computadora es usada como servidor web o ftp.
o /home/. Poner esta carpeta en una partición separada previene a que los
usuarios usen todo el espacio de disco y facilita las actualizaciones. Y si fuera
necesario reinstalar el sistema se puede preservar los datos de los usuarios
manteniendo esta partición sin cambios.
o /tmp/. Si se coloca esta carpeta en una partición separada nos permitirá el
montaje con opciones especiales, tales como „no ejecutable‟, y previene que
los procesos llenen el sistema de archivos con archivos temporales.
o Particiones adicionales. Si el particionamiento se realiza con YaST u otras
particiones son detectadas por este, estas particiones son agregadas en el
archivo /etc/fstab para habilitar fácil acceso a los datos.
-Administrar particiones con YaST

Se puede usar YaST Expert Partitioner durante la instalación del sistema para
personalizar la configuración de particiones existentes.

La interface de esta aplicación después de la instalación no difiere del utilizado durante el


proceso de instalación.

Para entrar a esta aplicación, se debe ejecutar YaST como usuario root, seleccionar
„Sistema‟ y „Particionador‟. Este le permitirá modificar las particiones existentes en el
disco. Se puede crear, editar, borrar y dimensionar particiones existentes.

Los discos duros se listan sin números (/dev/hda, /dev/hdb, /dev/sda, /dev/sdb). Las
particiones en los mismos se listan como partes de estos dispositivos.

Ing. Ricardo Ruiz


99
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Administrar particiones con fdisk

El comando fdisk se utiliza para particionar discos duros desde la línea de comandos.
Para ver el esquema actual se usa la opción ‘-l’, para cambiar el esquema de particiones
se debe ingresar el nombre del dispositivo como un parámetro del comando: ‘fdisk
/dev/sda’ luego de esto solicitara una acción que se define usando uno de las siguientes
teclas:

Carácter Acción
d Borra una partición.
m Muestra un resumen corto de los comandos de fdisk
n Crea una nueva partición
p Muestra una lista de particiones que se encuentren disponibles en el disco
duro especificado
q Finaliza fdisk sin almacenar cambios
t Cambia el system id de una partición
w Guarda los cambios hechos en el disco duro y finaliza la ejecución del
comando.

Veamos la ejecución del comando:

da51:~/Desktop # fdisk /dev/hdb

Disk /dev/hdb: 32 heads, 63 sectors, 528 cylinders


Units = cylinders of 2016 * 512 bytes

Device Boot Start End Blocks Id system

Command (m for help): n


Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-528): 1
Last cylinder or +size or +sizeM or +sizeK (1-528, default 528): +128M

Command (m for help): p

Disk /dev/hdb: 32 heads, 63 sectors, 528 cylinders


Units = cylinders of 2016 * 512 bytes

Device Boot Start End Blocks Id system


/dev/hdb1 1 131 132016+ 83 Linux

Command (m for help): n


Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (132-528): 132
Last cylinder or +size or +sizeM or +sizeK (1-528, default 528): 528

Command (m for help):

Ing. Ricardo Ruiz


100
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Command (m for help): p

Disk /dev/hdb: 32 heads, 63 sectors, 528 cylinders


Units = cylinders of 2016 * 512 bytes

Device Boot Start End Blocks Id system


/dev/hdb1 1 131 132016+ 83 Linux
/dev/hdb2 132 528 400176 5 Extended

Command (m for help): n


Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (132-528): 132
Last cylinder or +size or +sizeM or +sizeK (1-528, default 528): +128M

Command (m for help): p

Disk /dev/hdb: 32 heads, 63 sectors, 528 cylinders


Units = cylinders of 2016 * 512 bytes

Device Boot Start End Blocks Id system


/dev/hdb1 1 131 132016+ 83 Linux
/dev/hdb2 132 528 400176 5 Extended
/dev/hdb5 132 262 132016+ 83 Linux

Command (m for help): t


Partition number (1-5): 5
Hex code (type L to list codes). 82
Changed system type of partition 5 to 82 (Linux swap)

Command (m for help): p

Disk /dev/hdb: 32 heads, 63 sectors, 528 cylinders


Units = cylinders of 2016 * 512 bytes

Device Boot Start End Blocks Id system


/dev/hdb1 1 131 132016+ 83 Linux
/dev/hdb2 132 528 400176 5 Extended
/dev/hdb5 132 262 132016+ 82 Swap

Command (m for help): w


The partition table has been altered!

Calling ioctl () to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disk.

da51:~/Desktop #

NOTA: cuando la nueva tabla de particiones es escrita, no espere confirmación de la


acción.

Como dice la salida de fdisk, no se puede usar directamente las nuevas particiones. Se
debe reiniciar el sistema como se sugiere, pero se puede usar el comando partprobe para
que el kernel pueda usar la nueva tabla de particiones.

Ing. Ricardo Ruiz


101
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Administrar sistemas de archivos de Linux.


Como vimos anteriormente se puede crear particiones tanto con YaST como desde la
línea de comandos, esto es „Administrar particiones‟, crear, modificar, borrar las
particiones no crea los sistemas de archivos. En este tema se expondrá las herramientas
necesarias para la administración de archivos.
-Crear un sistema de archivos usando YaST.

Se puede usar YaST para crear un sistema de archivos (ext3, ReiserFS, etc.) en una
partición. Esto se realiza con la herramienta YaST Expert Partitioner. Una vez en la
herramienta se selecciona la partición en la que se creara el nuevo sistema de archivos y
seleccionar „EDITAR‟, para dar formato a la partición y crearle un sistema de archivos se
debe seleccionar „Formato‟. En el combo Sistema de Archivos se debe seleccionar el
sistema de archivos que deseamos crear.
-Crear un sistema de archivos usando las herramientas de línea de comandos.

Existen varios comandos para crear sistemas de archivos, estos incluyen mke2fs,
mkfs.ext3 y mkreiserfs para crear los sistemas de archivos que soporta el Linux que se
tenga instalado.

La alternativa de uso es el comando mkfs, este es un comando para unir los antes
mencionados. Cuando se usa este comando, la opción –t sirve para la creación de los
sistemas de archivos.

Crear un sistema de archivos ext2 ó ext3

Cuando se crean sistemas de archivos ext2 ó ext3 con el comando mkfs, se deben usar
las siguientes opciones:

Opción Descripción
-b blocksize Se puede usar esta opción para indicar el tamaño de los
bloques de datos en el sistema de archivos. Los valores 1024,
2048, … , 16384 están disponible para estos sistemas de
archivos.
-i bytes_per_inode Se puede usar esta opción para indicar cuantos inodos serán
creados en el sistema de archivos.
-j Se puede usar esta opción para crear un Journal en el sistema
de archivos ext3.

Si no se incluyen las opciones –b y –i, mkfs define estos valores en dependencia del
tamaño de la partición.

El siguiente ejemplo muestra la creación de un sistema de archivos ext3 en una partición.


Notese que el comando no solicita confirmación de la operación. El sistema de archivos
es creado directamente después de presionar [ENTER].

Ing. Ricardo Ruiz


102
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

da51:~/Desktop # mkfs -t ext3 /dev/sda6


mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
62248 inodes, 248976 blocks
12448 blocks (5.00%) reserved for the super user
First data block=1
31 block groups
8192 blocks per group, 8192 fragments per group 2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185

Writing inode tables: done


Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes
first. Use tune2fs -c or -i to override.

da51:~/Desktop #

Este ejemplo crea un sistema de archivos ext3 en una partición con los siguientes valores:

 Block size: 1024 (log=0). El tamaño del bloque es de 1Kb.


 62248 inodes, 248076 blocks. El número máximo de archivos y directorios es 62248.
El número de bloques totales 248076.
 12448 blocks (5.00%) reserved for the super user. 5% del espacio total es reservado
para el administrador del sistema. Si el disco duro esta 95% lleno, entonces un usuario
normal no podrá usar más espacio de disco.
Crear un sistema de archivos Reiser

Se puede crear un sistema de archivos Reiser usando el comando mkreiserfs ó mkfs –t


reiserfs

da51:~/Desktop # mkfs -t reiserfs /dev/sda6


mkfs.reiserfs 3.6.19 (2003 www.namesys.com)
A pair of credits: Yury Umanets (aka Umka) developed libreiser4, userspace plugins, ...

Guessing about desired format.. Kernel 2.6.16.14-6-smp is running.


Format 3.6 with standard journal
Count of blocks on the device: 62240
Number of blocks consumed by mkreiserfs formatting process: 8213
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 73abdf80-2b72-4844-9967-74e99813d056
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
ALL DATA WILL BE LOST ON '/dev/sda6'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
ReiserFS is successfully created on /dev/sda6.

da51:~/Desktop #

Ing. Ricardo Ruiz


103
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
-Montar sistema de archivos.

En sistemas Windows, son letras de disco las que representan las diferentes particiones.
Linux no usa letras para designar las diferentes particiones, se montan las particiones en
directorios del sistema de archivos. Los directorios usados para montar las particiones son
llamados puntos de montaje.

Por ejemplo, para agregar un nuevo disco duro en un sistema Linux, primero se debe dar
formato a la partición, entonces se puede usar un directorio (ejemplo /data/) del sistema
de archivos y montar el sistema de archivos en dicho directorio usando el comando
mount. Para desmontar el sistema de archivos el comando a usar es umount.

NOTA: se puede montar y desmontar sistemas de archivos remotos compartidos que


usen NFS en directorios locales.

El directorio /mnt/ es usado para montar temporalmente sistemas de archivos remotos y


locales, los dispositivos removibles son montados en el directorio /media/, por ejemplo:

 La unidad CD-ROM en /dev/cdrom es montado normalmente en /media/cdrom


 Un disquete en /dev/floppy es montado normalmente en /media/floppy

Archivo de configuración para el montaje de sistemas de archivos.

Todos los sistemas de archivos y el directorio (punto de montaje) asociado a ellos, se


encuentra configurado en el archivo /etc/fstab. Este archivo contiene una línea con seis
campos para cada sistema de archivo montado en el sistema, el contenido de este
archivo es similar a lo siguiente:

Campo 1 Campo 2 Campo 3 Campo 4 Campo 5 Campo 6


/dev/hda2 / reiserfs acl,user_xattr 1 1
/dev/hda1 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/fd0 /media/floppy auto noauto,user,sync 0 0

Cada campo provee la siguiente información sobre el sistema de archivo montado:

 Campo 1: este es el nombre del archivo de dispositivo en el sistema, o la etiqueta del


sistema de archivos, o la UUID37. El uso de LABEL=label o UUID=uuid tiene la ventaja
de que la partición se monta correctamente aun cuando el archivo de dispositivo sufra
cambios, por ejemplo un cambio disco duro en el controlador IDE.
 Campo 2: muestra el punto de montaje. El directorio mostrado debe existir y se puede
acceder a los datos contenidos en el medio simplemente accediendo a dicho
directorio.

37
Universally Unique Identifier

Ing. Ricardo Ruiz


104
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Campo 3: muestra el sistema de archivos que posee la partición.


 Campo 4: muestra las opciones de montaje. Opciones de montaje múltiples son
mostrados con separación por comas.
 Campo 5: indica si la utilidad de respaldos „dump‟ tiene configurado realizar respaldos
del sistema de archivos. 0 indica que no se realiza respaldos.
 Campo 6: indica la secuencia de revisión del sistema de archivos (comando fsck)
cuando el sistema es iniciado.
o 0: el sistema de archivos no es revisado.
o 1: solamente el directorio /.
o 2: todos los sistemas de archivos modificables; sistemas de archivos en
diferentes dispositivos son revisados paralelamente.

Mientras /etc/fstab lista los sistemas de archivos y ellos son montados en el árbol de
directorios durante el arranque del sistema, en el archivo /etc/mtab, se muestran
exactamente los sistemas de archivos montados en el momento. El uso del comando
mount y del comando umount, afecta el contenido de este archivo.

El kernel también obtiene información del archivo /proc/mounts, que lista todas las
particiones actualmente montadas.
Visualización de los sistemas de archivos actualmente montados.

Para visualizar los sistemas de archivos montados actualmente se debe usar el comando
mount.

da51:~/Desktop # mount
/dev/sda2 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
securityfs on /sys/kernel/security type securityfs (rw)

da51:~/Desktop #

Montar un sistema de archivos.

Se puede usar el comando mount para montar manualmente un sistema de archivos. La


sintaxis del comando es la siguiente:

mount [-t file_sistem_type] [-o mount_options] device mount_point

Por ejemplo, necesitamos montar el dispositivo /dev/hda9 en la carpeta /space/:

mount /dev/hda9 /space

Si no se especifica el sistema de archivos, el comando mount tratará de reconocer el


formato del sistema de archivos del dispositivo a montar.

Ing. Ricardo Ruiz


105
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La tabla siguiente muestra algunas opciones que se pueden usar al momento de montar
un sistema de archivos usando este comando, o editando directamente el archivo
/etc/fstab:

Opción Descripción
remount Esta opción hace que el sistema de archivos recién montado, se
monte nuevamente.
rw, ro Esta opción indica que el sistema de archivos tiene permisos de
escritura (rw) o de solo lectura (ro).
sync, async Esta opción configura las operaciones I/O del sistema de
archivos a que sean síncronas o asíncronas. Si no se define el
comando monta el sistema de archivo en modo asíncrono.
atime, noatime Esta opción define si se almacena o no la etiqueta de fecha en
la que se accesa a los archivos en los inodos de los mismos. La
opción „noatime‟ optimiza el desempeño, pero se pierde la
bitácora.
nodev, dev La opción „nodev‟ previene que el archivo de dispositivo (/dev/)
sea interpretado como tal en el sistema de archivos.
noexec, exec Se puede prohibir la ejecución de programas en un sistema de
archivos usando la opción „noexec‟
nosuid, suid La opción „nosuid‟ asegura que el suid y sgid se ignore en el
sistema de archivos.

Algunas opciones solamente son configurables en el archivo /etc/fstab. Estas opciones


incluyen las siguientes:

Opción Descripción
auto, noauto Los sistemas de archivos que se configuran con la opción
„noauto‟ en este archivo, no son montados cuando el sistema de
archivos es arrancado.
user, nouser Esta opción permite a los usuarios montar y desmontar el
sistema de archivos. Normalmente este privilegio solo lo tiene el
usuario root.
defaults Esta opción hace que las opciones normales puedan ser usadas
(rw, suid, dev, exec, auto, nouser y async).

Las opciones „noauto‟ y „user‟ normalmente son usadas para el montaje de medios
removibles, tales como cdrom y floppy.
Desmontar un sistema de archivos.

Una vez un sistema de archivos es montado, se puede usar el comando umount para
desmontar un sistema de archivos. Este comando toma como parámetro el archivo de
dispositivo o el punto de montaje, por ejemplo se puede desmontar la unidad de CD
usando el comando de la siguiente manera.

 umount /media/cdrecorder
o
 umount /dev/hdb

Ing. Ricardo Ruiz


106
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Al momento de tratar de desmontar un sistema de archivos, ninguna aplicación o usuario


debe de estar usando el mismo, de lo contrario, Linux tendrá el sistema de archivos en
estado „busy‟ y rechazara el intento de desmontar el sistema de archivos.

Para asegurarnos que el sistema de archivos no está en estado „busy‟ es salir de todos
los sistemas de archivos con el comando „cd /‟ con el que nos aseguramos estar en la
raíz del árbol de directorios.

Si aun así el sistema de archivos se mantiene en estado busy, y realmente se necesita


desmontar el mismo, se puede usar la opción „-f‟ que fuerza el desmontaje. Esta es la
última opción, se debe tener en cuenta que existe una razón para que el kernel tenga a un
sistema de archivos en estado busy.
-Monitorear y revisar sistemas de archivos

Una vez que tenemos configurados nuestros sistemas de archivos Linux, podemos
monitorear el estado y salud de los sistemas, en este apartado aprenderemos algunos
comandos para garantizar esta tarea.

Revisión de particiones y archivos (df y du)

La siguiente tabla nos muestra el uso de los comandos df y du, cuya utilidad es
monitorear el tamaño en uso de carpetas y archivos en las particiones.

Comando Descripción
df Este comando provee información de punto de montaje y del porcentaje de
uso de los discos duros y sus diferentes particiones y de otros dispositivos
de almacenamiento.

Si solo de ingresa el comando sin parámetros, el espacio disponible en


todos los sistemas de archivos montados será desplegado. Si se provee un
nombre de archivo, df despliega el espacio disponible del sistema de
archivos en la que dicho archivo está alojado.

Algunas de sus opciones incluye „-h‟ para que el formato sea de fácil lectura
para los humanos, „-i‟ lista la información del uso de los inodos.

du Este comando provee información del espacio ocupado por archivos y


directorios.

Algunas de sus opciones incluyen „-c‟ que despliega el gran total, „-h‟ para
mostrar el resultado en formato humano, y --exclude=pattern que excluye
los archivos que coincidan con „pattern‟. Por ejemplo, para desplegar la
información de archivos en formato humano y que se excluyan los archivos
que terminen en „.o‟ se debe escribir el comando asi:

du –h --exclude=’*.o’

Ing. Ricardo Ruiz


107
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Revisar archivos abiertos (lsof)

Este comando lista los archivos abiertos en el sistema de archivos. Si el comando se


ingresa sin parámetros, este mostrara todos los archivos que se encuentren abiertos por
todos los procesos activos del sistema.Los archivos pueden ser regulares, directorios, de
dispositivos, librerías, un stream, o un archivo en red.

Algunas de sus opciones incluyen „-c x‟ que lista archivos que inician con „x‟; „-s‟ despliega
el tamaño de los archivos; y „-u x‟ que lista los archivos abiertos por el usuario „x‟. por
ejemplo para listar los archivos abiertos por los usuarios root y geeko y que incluyan los
tamaños de los archivos se debe ingresar el comando:

lsof –s –u root,geeko
Identificar procesos usando archivos (fuser)

El comando fuser despliega los PID‟s de los procesos usando archivos específicos o
sistema de archivos.

En el despliegue normal, cada archivo es seguido por una letra que describe el tipo de
acceso:

Carácter Descripción
C Directorio actual
E Ejecutable actual
F Archivo abierto
R Directorio root
M Archivo de memoria mapeada o librería compartida

Algunas de sus opciones incluyen „-a‟ que retorna información de todos los archivos aun
cuando estos no sean accesados por algún proceso; „-v‟ para el modo detallado; „-u‟ que
muestra el propietario del proceso; „-m‟ muestra la memoria mapeada o librería
compartida.
Revisarlost+found (solamente ext2 y ext3)

El directorio lost+found es una propiedad especial de estos sistemas de archivos. Para


entender su utilidad se debe saber que después de un crash del sistema, debido a un
corte de energía o un apagado abrupto, los sistemas UNIX/Linux automáticamente
revisan la integridad de sus sistemas de archivos de manera completa y exhaustiva. Los
archivos o fragmentos de archivos cuyos nombres no se pueden alojar, no son eliminados
del sistema de archivos, por el contrario son almacenados dentro de esta carpeta. Esto se
realiza con el objetivo de que se pueda reconstruir el archivo con su nombre original y que
realice la función o propósito por el cual fue creado originalmente.
Revisar y reparar sistemas de archivos (fsck)

El comando fsck permite revisar y opcionalmente reparar uno o más sistemas de archivos
Linux. Normalmente, fsck intenta ejecutarse en sistemas de archivos ubicados en
diferentes discos físicos de manera simultánea, esto reduce el tiempo total utilizado para
revisar todos los sistemas de archivos.

Ing. Ricardo Ruiz


108
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si no se especifica un sistema de archivos y no se especifica la opción „-A‟, entonces fsck


revisa los sistemas de archivos especificados en el archivo /etc/fstab de manera serial. De
otra manera se puede usar la sintaxis: fsck /dev/dispositivo, por ejemplo, para revisar el
sistema de archivos del dispositivo /dev/hda2, la sintaxis es: fsck /dev/hda2.
Revisar y reparar sistemas de archivos ext2/ext3 yReiserFS (e2fsck yreiserfsck)

En caso que el sistema se apague sin desmontar correctamente los sistemas de archivos,
puede ser que estos tengan errores al momento de encender nuevamente nuestro
sistema. Como se expreso anteriormente, el sistema detectara que ocurrió un apagado de
manera abrupta y procederá a una revisión exhaustiva de sus sistemas de archivos, si se
encuentra algún error el sistema tratara de repararlo, de lo contrario el sistema no iniciara
apropiadamente y se necesitara entrar la contraseña del root, en todo caso si el daño al
sistema de archivos es extenso, se debe evaluar la posibilidad de restaurar el sistema en
vez de reparar el mismo.

En dependencia del sistema de archivos, se puede usar /sbin/e2fsck o /sbin/reiserfsck.


Estas herramientas revisan el sistema de archivos desde el super-block (el bloque en el
inicio de la partición que contiene información sobre la estructura del sistema de archivos),
hasta las fallas en los bloques de datos. Un posible problema en los sistemas de archivos
ext2 y ext3 es el daño en el super-block. Para tratar de corregir este problema se debe
visualizar la ubicación de todas las copias del archivo de super-block usando el comando
dumpe2fs. Luego se usa esa información para actualizar apropiadamente el super-block
del sistema de archivos, de la siguiente manera: /sbin/e2fsck –f –b 32768 /dev/hda1. En
este ejemplo, el superblockesta ubicado en el bloque de datos 32768, con un sistema de
archivos ext2, en la partición hda1. Esta información será utilizada para actualizar
apropiadamente el superblock de dicho sistema de archivos.

NOTA: para sistemas de archivos con bloques de datos de 4k, una copia de seguridad del
superblock se almacena cada 32768 bloques.

Para el sistema de archivos reiser, la herramienta es reiserfsck, esta herramienta somete


al sistema de archivos a una revisión exhaustiva de consistencia. Se revisa el journal para
saber si existen transacciones que deban ser reparadas, la opción --fix-fixable, reparara
los errores de tamaños de archivos al momento que repara el sistema de archivos. Si
existe un error en el árbol binario, será necesario recargar totalmente el sistema de
archivos, esto se realiza con la sintaxis: reiserfsck --rebuild-tree.

Tema 4: Configurar LVM y aplicaciones RAID


El LVM provee un nivel de vista superior de los discos de almacenamiento en un sistema,
normalmente se aprecia esto solamente observando los discos y las particiones en ellos.
El LVM ofrece mucha más flexibilidad en la ubicación de los espacios de almacenamiento
para las aplicaciones y usuarios.

Después de crear un volumen lógico usando LVM, se puede hacer (con cierto límite)
redimensionar y mover volúmenes lógicos mientras estén montados y en ejecución.

También podemos usar LVM para administrar volúmenes lógicos por sus nombres (tales
como “desarrollo” y “ventas”) en vez de nombres de dispositivos físicos como “sda” y
“sdb”.

Ing. Ricardo Ruiz


109
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

- Como usar componentes VM

Básicamente las particiones convencionales en los sistemas Linux son inflexibles. Cuando
una partición se llena, se necesita mover datos a otro medio antes de redimensionar la
partición, crear un nuevo sistema de archivos, y restaurar los datos nuevamente.

Normalmente, estos cambios no pueden llevarse a cabo sino se cambia las particiones
adyacentes, cuyos datos también necesitan ser respaldados en otros medios de
almacenamiento y restaurados después del redimensionamiento.

Debido a la dificultad de modificar las particiones en un sistema en producción se


desarrollo LVM. Este provee un grupo de espacios de memoria virtual (llamado grupo de
volumenes) en el que se pueden generar volúmenes lógicos si fueran necesarios. El
sistema operativo accede a estos volúmenes lógicos tal como accede a las particiones
físicas convencionales.

Esto permite redimensionar el medio físico mientras el sistema está en funciones sin
afectar el estado de las aplicaciones.

Una estructura básica de LVM incluye los siguientes componentes:

/usr /var

Volúmenes lógicos

Grupo de Volumen

Volúmenes Físicos

hda hdb sda hdc

 Volumen Físico: un volumen físico puede ser una partición o un disco duro completo.
 Grupo de volumen: este consiste en uno o muchos volúmenes físicos agrupados. Las
particiones físicas pueden representar diferentes tipos de discos duros. Se puede
agregar discos duros o particiones al grupo de volumen cuantas veces sea necesario.
Este también puede reducirse de tamaño si se eliminan discos duros o particiones.
 Volumen lógico: un volumen lógico es una parte del grupo de volumen. Este puede ser
formateado y montado como si fuera una partición física estándar.

Se puede generar la asociación siguiente: el grupo de volumen puede verse como el disco
duro físico completo y los volúmenes lógicos como las particiones de dicho disco duro.
- Como usar características VM

Ing. Ricardo Ruiz


110
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

LVM se puede utilizar en cualquier computador por su flexibilidad para adaptarse a las
necesidades de cambios en los espacios de almacenamiento. A continuación se
mencionan algunas de sus características que ayudan a implementar soluciones de
almacenamiento:

 Se puede combinar muchos discos duros o particiones en un volumen de grupo


grande.
 Provee una configuración conveniente, se puede agrandar un volumen lógico cuando
el espacio libre se esté llenando. Redimensionar volúmenes lógicos es más fácil que
el redimensionar particiones físicas.
 Se puede crear volúmenes lógicos sumamente grandes (Terabytes).
 Se puede agregar discos duros al GV en un sistema corriente, siempre que estos y el
sistema estén diseñados para modificaciones en caliente.
 Se puede agregar volúmenes lógicos en un sistema activo, estos volúmenes deben
ser provistos por el GV y su espacio libre.
 Se pueden usar muchos discos duros en RAID 0 para mejorar el desempeño del
sistema.
 No hay ningún límite para la cantidad de volúmenes logicos (el límite de LVM versión 1
era 256).
 La característica „Instantánea‟ habilita backups consistentes del sistema.
- Como configurar volúmenes lógicos usando YaST

Los siguientes pasos son básicos para configurar LVM con YaST:
Definir la partición LVM (volúmenes físicos) en el disco duro.

Durante (o después) de la instalación de SLES, se necesita configurar la partición LVM en


el disco duro. Se puede usar YaST o fdisk para realizar esta tarea, tal como se describe
en „configuración de particiones con sistema de archivos Linux‟. En el ID del sistema de
archivos, seleccionar 0x8E Linux LVM. No se debe crear un sistema de archivos en dicha
partición.
Crear un GV y volúmenes lógicos.

En el particionador experto de YaST, se debe


seleccionar LVM. El cuadro de dialogo de la siguiente
página aparecerá, se puede usar este para crear un
nuevo LVG ingresando la siguiente información:

 Nombre. En este campo se debe colocar el


nombre del LVG.
 Tamaño físico extendido. En este campo se
define el tamaño de la unidad más pequeña de un
LVG.

En la versión 1 del LVM, este campo también define el tamaño máximo de volúmenes
lógicos. El valor en 4 Mb, se permite configurar volúmenes lógicos de 256 Gb. Con la
versión 2 de LVM, esta limitante ya no existe.

Ing. Ricardo Ruiz


111
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si no se está seguro que valor colocar, siempre se puede usar los valores estándares.

Una vez ingresados los valores en el cuadro anterior, aparecerá el siguiente dialogo:

En este cuadro de dialogo se configuran los volúmenes lógicos.


 Grupo de volúmenes. Permite seleccionar el VG de una lista en la que aparecen los
grupos a los que se agregaran particiones.
 Tamaño. Despliega el tamaño actual del LVG seleccionado.
 Borrar grupo. Borra los VG seleccionados. Se puede eliminar solamente grupos
vacios.
 Añadir grupo. Agrega un LVG.
 Lista de particiones. Permite seleccionar la partición que se necesita agregar al VG.
 Añadir volumen. Añade la partición seleccionada al VG.
 Borrar volumen. Elimina la partición seleccionada del VG.

Añadir volúmenes físicos (usualmente particiones en un disco duro) al VG, y seleccionar


„Siguiente‟ para continuar. Entonces aparecerá el siguiente cuadro de dialogo:

Ing. Ricardo Ruiz


112
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede usar lo siguiente para crear volúmenes lógicos en el VG:

 Grupo de volúmenes. Permite


seleccionar el VG en el que se creará
particiones.
 Barra de espacio Usado/Disponible.
Despliega el espacio disponible en el VG
seleccionado.
 Lista de volúmenes. Despliega las
particiones físicas y volúmenes lógicos en
el sistema.
 Ver todos los puntos de montaje, no
solamente el grupo de volúmenes actual.
Cuando se selecciona esta opción, todas
las particiones y volúmenes que están
registrados en el archivo /etc/fstab se
mostraran. De lo contrario solamente los
volúmenes en el VG seleccionado se
mostraran.

 Añadir. Añadir un nuevo volumen lógico al VG. Cuando se selecciona esta opción el
siguiente dialogo aparece:

Ing. Ricardo Ruiz


113
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este dialogo permite configurar un volumen lógico usando las mismas opciones utilizadas
para crear un sistema de archivos.

Adicionalmente, se puede agregar un nombre al volumen lógico, colocar el tamaño


máximo disponible (presionando el botón „max‟), el numero de listas (igual o menor al
número de discos), y el tamaño de la lista (solo si se configura más de uno en las listas).

 Editar. Permite cambiar los parámetros en el volumen seleccionado. Este dialogo es el


mismo que el que permite crear volúmenes lógicos.
 Eliminar. Elimina un volumen seleccionado.

Una vez finalizadas las configuraciones de volúmenes lógicos, se presiona „Siguiente‟


para guardar los ajustes y retornar al particionamiento experto.
Acceso al moduloYaSTlvm_config.

Para administrar y configurar un LVM existente, se accesa (como root) a la configuración


LVM de YaST directamente con yast2 lvm_config. Esto combina las opciones de
configuración para LVM en un solo cuadro de diálogos:

Las opciones de configuración son las


mismas ya conocidas y estudiadas con el
particionador experto de YaST.

- Como configurar LVM con las herramientas de línea de comandos

Configurar LVM desde la línea de comandos conlleva ejecutar varios pasos, cada uno con
una herramienta especifica.

 Herramientas para administrar volúmenes físicos.


 Herramientas para administrar grupos de volúmenes.
 Herramientas para administrar volúmenes lógicos.

No se cubrirán todas las herramientas LVM. Para ver las herramientas LVM instaladas en
el sistema se usa el comando rpm –ql lvm2 | less en línea de comandos, luego usar las
páginas de manuales (man) de cada herramienta.

Ing. Ricardo Ruiz


114
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Herramientas para administrar volúmenes físicos.

Las particiones o discos duros enteros pueden servir como volúmenes físicos para las
LVM.

El ID de una partición usada como parte de una LVM puede ser ‘Linux LVM, 0x8e’. Aun
con el ID ‘0x83, Linux’, el sistema trabaja bien.

Para usar el disco duro completo como un volumen físico, este no debe contener una
tabla de particiones. Para sobrescribir cualquier tabla de particiones existente se usa ‘dd’:

da51:~ # dd if=/dev/zero of=/dev/hddbs=512 count=1

da51:~ #

El siguiente paso es inicializar la partición para LVM. La herramienta a usar es pvcreate:

da51:~ # pvcreate /dev/hda9


Physical volume ‚/dev/hda9‛ successfully created

da51:~ #

Para mostrar el volumen físico y el uso del mismo se usa pvscan:

da51:~ # pvscan
PV /dev/hda9 lvm2 [242,95 MB]
Total: 1 [242,95 MB] / in use: 0 [0 ] / in no VG: 1 [242,95 MB]

da51:~ #

La herramienta pvmove es usada para mover datos de un volumen físico a otro, esto se
usa antes de eliminar un volumen físico de las LVM.
Herramientas para administrar grupos de volúmenes.

La herramienta vgcreate es usada para crear un nuevo VG. Para crear el grupo de
volúmenes de sistema, y agregar el volumen físico /dev/hda9 al mismo:

da51:~ # vgcreatelvm_unl /dev/hda9


Volume group ‚lvm_oesa‛ successfully created
da51:~ #pvscan
PV /dev/hda9 VG lvm_oesa lvm2 [240,00 MB / 240,00 MB free]
Total: 1 [240,00 MB] / in use: 1 [240,00 MB] / in no VG: 0 [0 ]

da51:~ #

En el ejemplo anterior se usa pvscan para visualizar los cambios en el volumen físico.

Ing. Ricardo Ruiz


115
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para agregar más volúmenes físicos al grupo, se usa la herramienta ‘vgexpand’. Para
eliminar volúmenes físicos sin uso, se usa la herramienta ‘vgreduce’, se debe recordar
mover los datos usando la herramienta ‘pvmove’ antes de remover el volumen físico con
la herramienta anterior, para eliminar un grupo de volúmenes se usa ‘vgremove’, se debe
recordar que no se puede eliminar un VG que tiene volúmenes lógicos.
Herramientas para administrar volúmenes lógicos.

Para crear un volumen lógico, se usa la herramienta ‘lvcreate’, se debe especificar el


tamaño, nombre del volumen lógico y el VG

da51:~ # lvcreate –L 100M –n data lvm_oesa


Logical volume ‚data‛ created

da51:~ #

El siguiente paso es crear un sistema de archivos en el volumen lógico y montarlo:

da51:~ # lvscan
ACTIVE ‘/dev/system/data’ [100,00 MB] inherit
da51:~ # mkreiserfs /dev/system/data
mkreiserfs 3.6.19 (2003 www.namesys.com)

ReiserFSissuccessfullycreatedon /dev/system/data.
da51:~ # mount /dev/system/data /data

Como se puede observar ‘lvscan’ se usa para visualizar volúmenes lógicos. Este muestra
el dispositivo que se puede usar para formatear y montar.

Para incrementar el tamaño del volumen lógico se usa ‘lvextend’. Inmediatamente


después de incrementar el espacio del volumen lógico se puede comenzar a usar.

Antes de reducir el espacio de un volumen lógico con el comando ‘lvreduce’, se debe


reducir el tamaño del sistema de archivos, solo entonces se puede reducir el tamaño del
volumen lógico. Si no se realiza de esta manera, se puede perder datos.
- Administrar aplicaciones RAID

Para administrar aplicaciones RAID38, se debe seleccionar RAID en el particionador


experto de YaST.

El propósito de RAID es combinar muchas particiones de discos duros en un gran disco


duro virtual con el propósito de optimizar el desempeño y proveer seguridad a los datos.
Existen dos tipos de RAID:

 Hardware RAID: los discos duros se conectan a un controlador RAID separado. El


sistema operativo ve la combinación de discos como un solo dispositivo. No se
necesita configuración adicional RAID en el sistema operativo.

38
RedundantArray of Independent (orInexpensive) Disks

Ing. Ricardo Ruiz


116
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Software RAID: los discos duros son combinados por el sistema operativo, este ve
cada uno de los discos como dispositivos separados y necesita configurarse para
poder usarlos como un sistema RAID.

En el pasado el hardware proveía mejor desempeño y seguridad de los datos que el


software. Actualmente, con software más maduro en el kernel, este provee desempeños y
seguridad de datos similares al hardware.

Se puede combinar discos duros con RAID en diferentes niveles:

 RAID 0. Este nivel provee mejor desempeños de acceso a los datos, la debilidad de
este tipo de configuración es que no provee seguridad para los datos. Si uno de los
discos duros falla, todos los datos se perderán.
 RAID 1. Este nivel provee seguridad reforzada para los datos debido a que estos son
copiados en uno de los muchos discos duros. Esto se conoce como „disco duro
espejo‟. Si uno de los discos duros se destruye, una copia de su contenido esta
siempre disponible en otro disco. El mínimo número de discos para realizar esta
configuración es dos.
 RAID 5. Esta es una optimización entre RAID 0 y RAID 1 en términos de desempeño y
redundancia. Datos y „checksum‟ son distribuidos en todos los discos. El número
mínimo de discos (o particiones) requeridos para RAID 5 es tres. Si uno de los discos
falla, este debe ser reemplazado a la brevedad posible para evitar el riesgo de pérdida
de datos. Los datos contenidos en el disco duro dañado será reconstruido en el disco
nuevo mediante los datos y „checksum‟ contenidos en los otros discos. Si más de un
disco duro falla al mismo tiempo, los datos se perderán.
 RAID 6. Este nivel es comparable con RAID 5, la diferencia es que dos discos duros
pueden fallar y no perder datos. La cantidad de discos duros mínima para usar esta
configuración es cuatro.

YaST puede configurar RAID 0, RAID 1, y RAID 5 (los niveles 2, 3, y 4 no están


disponibles aun vía software). Para crear una configuración RAID con YaST debemos
realizar lo siguiente:

 Crear particiones en el disco. Para RAID 0 y RAID 1 se necesitan al menos dos


particiones en diferentes discos. Para RAID 5 se requiere tres.

NOTA IMPORTANTE: Se recomienda que los discos duros o las particiones a utilizar en
la configuración de cualquier nivel RAID, sean del mismo tamaño. Esto es para optimizar
el desempeño y evitar pérdidas de datos.

 Configurar RAID. Seleccionar RAID en el particionador experto de YaST para abrir el


dialogo que permite seleccionar el nivel RAID y agregar las particiones al nuevo RAID.

Se selecciona un sistema de archivos y un punto de montaje para la configuración RAID.


Esto puede realizarse como se realiza la configuración de particiones anteriormente
estudiada. Después de finalizar la configuración, la partición RAID aparecerá en la lista de
particiones del particionador experto.

Ing. Ricardo Ruiz


117
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

NOTA: para propósitos de prueba, las particiones pueden residir en el mismo disco duro.
Esto no proporcionara ninguna mejora en el desempeño o seguridad de los datos.
NOTA: un RAID no es un sustituto de los respaldos de datos. Una configuración RAID,
por ejemplo, no protege contra eliminaciones accidentales de archivos.

Tema 5: Definir y configurar cuotas de discos.


Como todos sabemos el espacio en disco sigue siendo un problema para los
administradores, si no se imponen limites los usuarios fácilmente llenan los discos con
cualquier tipo de datos. Linux incluye un sistema de cuotas (quota) que permite
especificar qué cantidad de espacio de disco tiene cada usuario o grupo de usuarios.

El siguiente esquema muestra la arquitectura de las cuotas en Linux:

/ /export /var

/aquota.user
/export/aquota.user

Sin cuota

Cuota para Cuota para


usuario usuario

Se puede implementar cuotas de usuario en las particiones con sistemas de archivos


ext2, ext3 y Reiser.

La configuración del servicio de cuotas de disco en el servidor incluye la instalación del


paquete de cuota y las siguientes tareas:

 Preparar el sistema de archivos.


 Inicializar el sistema de cuotas.
 Iniciar y activar el servicio de cuotas.
 Configurar y administrar cuotas de usuarios y grupos.

Ing. Ricardo Ruiz


118
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Preparar el sistema de archivos.

Cuando el sistema es iniciado, las cuotas para el sistema de archivos deben ser
activados. Se puede indicar para cada sistema de archivos las activaciones de las cuotas
configuradas en el archivo /etc/fstab.

En el ejemplo siguiente, se muestra la modificación de dicho archivo:

da51:~ # vi /etc/fstab
/dev/hda2 / reiserfs acl,user_xattr,usrquota,grpquota 1 1
/dev/hda1 swap swap defaults 0 0
proc /proc proc defaults 0 0

da51:~ #

En este ejemplo, las cuotas son configurados en el sistema de archivos „/‟ (root). Las
cuotas son siempre definidos para los sistemas de archivos (particiones de disco).

Si ya se han realizado las modificaciones en el archivo /etc/fstab sin reiniciar el sistema, y


no se quiere realizar esta acción, entonces se debe re-montar los sistemas de archivos
para que las cuotas definidas se apliquen a estos sistemas de archivos. En el caso de que
las cuotas se necesite cargar en la partición „/‟ la opción del comando „mount‟ a usar es: „-
o remount‟ tal como el siguiente ejemplo:

da51:~ # mount –o remount /

da51:~ #

- Inicializar el sistema de cuotas.

Después de re-montar los sistemas de archivos, se necesita inicializar el sistema de


cuotas. Se debe usar el comando quotacheck. Este comando revisa las particiones con
cuotas configuradas en el /etc/fstab para determinar los espacios de bloques de datos e
inodos almacenados en el disco y comparar esto con los valores en los archivos
aquota.user (para cuotas de usuarios) y aquota.group (para cuotas de grupos).

NOTA: en las versiones de kernel superiores a la 2.4, estos archivos se llaman quota.user
y quota.group, y son creados después de que el comando quotacheck es ejecutado.

El comando quotacheck –avug realiza las siguientes acciones: (-a) revisa todos los
bloques de datos e inodos que están siendo ocupados por los usuarios (-u) y grupos (-g),
visualizando los detalles de la revisión (-v). Cuando se revisan los sistemas montados, se
debe usar la opción –m para forzar la revisión. Asumiendo que las entradas de cuotas
existen para /, después de ejecutar quotacheck los siguientes archivos son creados:

da51:~ # ls /aquota* /export/aquota*


/aquota.group /aquota.user

da51:~ #

Ing. Ricardo Ruiz


119
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Iniciar y activar el servicio de cuotas.

Para que las cuotas sean inicializadas cuando el sistema es arrancado, los enlaces
apropiados deben ser hechos en los directorios de niveles de ejecución (runlevels)
ejecutando el comando insserv boot.quota (insserv quotad para NFS). Para iniciarlizar
el sistema de cuotas el comando a ejecutar es: /etc/init.d/boot.quota start. Se puede
iniciar o detener los sistemas de cuotas ejecutando uno de los siguientes comandos:

/sbin/quotaon filesystem
/sbin/quotaoff filesystem

Se puede usar la opción –a para activar y desactivar las cuotas en todos los sistemas de
archivos montados (excepto para NFS).
- Configurar y administrar cuotas de usuarios y grupos.

La configuración de cuotas para usuarios y grupos, se necesita conocer como realizar las
siguientes acciones:
Configurar límites suaves y duros para bloques e inodos.

Con el comando edquota y las siguientes opciones, se pueden editar los ajustes actuales
de las cuotas para usuarios y grupos.

edquota –u username: se usa para ajustar la cuota para los usuarios.


edquota –g groupname: se usa para ajustar la cuota para los grupos. Todos los
miembros del grupo compartirán la misma cuota.

Los ajustes son desplegados mediante el editor vi cuando ejecuta el comando edquota,
de modo tal que se pueden editar los limites suaves y duros. Los valores bajo bloques e
inodos muestran los bloques e inodos usuados actualmente, esta información es
mostrada solamente para visualizarla, los cambios que se efectúen en ella no surtirán
efectos. Para ejemplo, configuraremos las cuotas para el usuario geeko:

edquota –u geeko

Esto desplegara la siguiente información en la plataforma „vi‟

Disk quotas for user geeko (uid 1001):


Filesystem blocks soft hard inodes soft hard
/dev/sda2 7820 10000 20000 145 0 0

A continuación se describen algunos campos:

 Blocks. Muestra el uso actual en disco, con referencia a los límites suaves y duros.
Los bloques tienen un tamaño de 1Kb, independientemente del tamaño de bloque del
sistema de archivos. Por ejemplo, el valor 7820 en el ítem blocks, indica que el usuario
geeko está usando cerca de 8Mb de espacio en disco.

Ing. Ricardo Ruiz


120
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Inodes. Indica cuantos archivos ha creado el usuario en el sistema de archivos. Debe


notarse que los limites suaves y duros están definidos para este usuario en 0, lo que
significa que este puede crear un número ilimitado de archivos.

El límite suave, indica la cuota del usuario que no puede ser excedida permanentemente.
El límite duro, indica la cuota máxima de espacio o inodos que pueden ser usados.

Si el usuario se acerca al límite suave, se activa un tiempo de gracia para liberar espacio
borrando archivos o bloques de datos. Si este excede el periodo de gracia, no podrá crear
nuevos archivos hasta eliminar archivos y estar por debajo del limite suave.
Configurar periodos de gracia para bloques e inodos.

Para editar el periodo de gracia para bloques e inodos se debe de ejecutar edquota –t.

Grace period before enforcing soft limits for users:


Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda2 7days 7days

Se puede configurar el periodo de gracia en días, horas, minutos, o segundos en un


sistema de archivos. Se puede especificar un periodo de gracia a usuarios o grupos.
Copiar cuotas de usuario.

Se puede copiar las cuotas de usuario de un usuario a otro ejecutando edquota –p.

Por ejemplo, ejecutando edquota –p tux geeko, se puede copiar las cuotas del usuario
tux al usuario geeko.
Generar un reporte de cuota.

Los archivos del sistema de cuotas contienen información, en formato binario, sobre el
espacio ocupado por usuarios y grupos, y cuales cuotas están configuradas. Se puede
desplegar esta información ejecutando el comando repquota. Por ejemplo, ejecutando el
comando repquota –aug se despliega un reporte similar al siguiente de todos los
usuarios y grupos:

*** Report for user quotas on device /dev/sda2


Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace

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

root -- 2646650 0 0 140161 0 0


geeko +- 20000 10000 20000 7days 146 0 0

Ing. Ricardo Ruiz


121
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 10: Administrar el Acceso de Usuarios y Seguridad


Este capítulo proveerá del conocimiento básico sobre las tareas de administración de
usuarios y grupos que provee SLES.

Objetivos

 Configurar la autenticación de usuarios PAM.


 Administrar y asegurar el ambiente de usuario en Linux.
 Usar ACL39 para control de acceso avanzado.

Tema 1: Configurar la autenticación de usuarios PAM.


La autenticación de los usuarios juega un papel central en la seguridad IT. Linux usa
PAM40 en el proceso de autenticación como un nivel entre los usuarios y las aplicaciones.
Un administrador de sistemas Linux puede usar estos módulos para configurar la manera
en que los usuarios se autentican en las aplicaciones.

Para proveer acceso a las aplicaciones a través de los módulos de autenticación, la


autenticación no debe ser parte de las aplicaciones, PAM se encarga de estas tareas para
las aplicaciones.

Por ejemplo, cuando un usuario ingresa a un sistema Linux en una terminal virtual, un
programa llamado login se encarga de la autenticación.

Login requerirá del usuario su „nombre de usuario‟ y „contraseña‟, la contraseña se


encripta y se compara con la contraseña encriptada almacenada en la base de datos de
autenticación. Si las contraseñas (la ingresada por el usuario y la que está en la base de
datos), son idénticas, login concede acceso al usuario al sistema para que pueda utilizar
su propio „shell‟.

Antes que PAM se integrara al kernel de Linux, todos las aplicaciones que requerían
autenticación, tal como login, FTP, o SSH debían tener su propio soporte de
autenticación en el sistema. PAM hace que todas las aplicaciones que requieran
autenticación tengan el mismo método y por lo tango más sencillo de administrar. PAM
crea un nivel de software con interfaces claramente definidas entre las aplicaciones (tal
como login) y el mecanismo de autenticación actual. En vez de modificar cada programa,
se genera un nuevo modulo PAM para la autenticación.

La siguiente ilustración muestra una grafica del papel que juega PAM en la autenticación
de los usuarios en un sistema Linux.

39
Access Control Lists
40
Pluggable Autentication Modules

Ing. Ricardo Ruiz


122
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Aplicaciones que requieren autenticación

login SSH FTP …

PAM

passwd LDAP SmartCard …


Mecanismos de Autenticación

Vendedores pueden proveer otros módulos PAM para habilitar autenticación específica
para sus productos, tal como el modulo PAM para habilitar la autenticación LUM41 con
eDirectory.

- Ubicación y propósito de los archivos de configuración de PAM.

PAM provee una variedad de módulos, cada uno de ellos para propósitos diferentes. Por
ejemplo, un modulo revisa la contraseña, otros verifican la ubicación desde donde se está
accediendo al sistema, mientras que otro puede leer los ajustes de usuario específicos.
Cada aplicación que requiere un modulo PAM tiene su propio archivo de configuración en
/etc/pam.d/aplicación. Por ejemplo, el archivo de configuración para el programa
„passwd‟ se llama: /etc/pam.d/passwd.

Hay una configuración especial en el archivo con el nombre other. Este archivo contiene
la configuración estándar para las aplicaciones que requieren PAM pero que no tengan un
modulo especifico.

Adicionalmente, los archivos de configuración global para muchos módulos PAM están en
/etc/security/, que definen la conducta de cada modulo. Estos archivos incluyen
pam_env.conf, pam_pwcheck.conf, pam_unix2.conf y time.conf.

Cada aplicación que usa módulos PAM invoca un conjunto de funciones de PAM. Estas
funciones son implementadas en módulos que mejoran los procesos de autenticación de
acuerdo a la información contenida en los archivos de configuración y retorna el resultado
a la aplicación que los invoco.

- Configuración de PAM.

Cada línea en un archivo de configuración PAM contiene tres columnas de argumentos


opcionales:

41
Linux User Management

Ing. Ricardo Ruiz


123
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tipo de Modulo Bandera de Control Modulo Argumentos

auth required debug


Solicitud de Autenticación Debe procesarse con éxito Información adicional para
syslog

Account requisite no warn


Controla varios aspectos de Ídem, pero finaliza Sin mensajes de advertencia
las cuentas inmediatamente en caso de
error

session optional use first pass


Provee funciones durante la Como su nombre indica Usar contraseña para
sesión de usuario módulos previos

password sufficient try first pass


Verifica la contraseña Como su nombre indica Ídem, si falla, la contraseña se
solicita nuevamente.

A continuación se describen los propósitos de cada columna:

 Tipo de modulo. Hay cuatro tipos de módulos PAM:


o auth. Estos módulos proveen dos tipos de autenticación para el usuario.
Primero, se establece que el usuario es quien clama ser instruyendo a la
aplicación que solicite al usuario su nombre de usuario y su contraseña, en
otras palabras, su identificación en el sistema. Segundo, el modulo puede
garantizar privilegios a los miembros del grupo según sus propiedades de
acceso.
o account. Estos módulos proveen administración de cuentas no basadas en
autenticación. Esto es típicamente usado para restringir o permitir el acceso a
servicios basados en horario del día, permitir accesos a recursos disponibles, o
en la ubicación de la aplicación del usuario (por ejemplo limitar las sesiones de
root via consola).
o session. Estos son módulos asociados con el desempeño de las tareas
necesarias que realizan los usuarios antes de brindarle acceso a los servicios,
o después de que un servicio es provisto a estos. Esto incluye información de
eventos concernientes al usuario, montaje de directorios y la apertura y cierre
de algunos intercambios de datos con otro usuario.
o password. Este tipo de modulo se requiere para actualizar el token de
autenticación asociado con el usuario. Típicamente este es uno de los módulos
para cada tipo de modulo de autenticación basado en „solicitud y respuesta‟.
 Bandera de control. La bandera de control indica como PAM reaccionara al éxito o
falla del modulo asociado. Los módulos pueden ser apilados (se ejecutan en serie,
uno detrás del otro), las banderas de control determinan la importancia relativa de
cada modulo. Las librerías PAM de Linux interpretan estas banderas de la siguiente
manera:
o required. Un modulo con esta bandera puede ser procesada con éxito antes
de proceder con la autenticación. Después del fallo de un modulo con la
bandera requerida, todos los módulos con la misma bandera son procesados
antes de que el usuario reciba un mensaje de fallo en el intento de
autenticación. Esto proviene que el usuario conozca el estado de su intento de
autenticación.

Ing. Ricardo Ruiz


124
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

o requisite. Un modulo con esta bandera también puede procesarse con éxito.
En caso de éxito, otros módulos son procesadas en consecuencia, tal como los
módulos con la bandera requerida. En caso de fallo el modulo retoma
inmediatamente su posición anterior para el usuario y futuros procesos no son
procesados. Se puede usar la bandera „requisite‟ como un filtro básico,
revisando la existencia de ciertas condiciones que son esenciales para una
correcta autenticación.
o optional. El fallo o éxito de un modulo con esta bandera no tiene
consecuencias directas. Los módulos con esta bandera se usan para enviar
mensajes a los usuarios sin solicitar ninguna acción.
o sufficient. Después que un modulo con esta bandera es procesado con éxito,
la aplicación solicitante recibe un mensaje inmediatamente sobre el éxito y no
se procesan mas módulos. La falla de un modulo con esta bandera no tiene
consecuencias directas, en otras palabras, los módulos adicionales son
procesados en su respectivo orden.
o include. Este realmente no es una bandera de control, pero indica que el
„keyword‟ en la siguiente columna será interpretado como un archivo con
nombre relativo a /etc/pam.d/ este debe ser incluido en esta ubicación. El
archivo incluido tiene que tener la misma estructura como cualquier otro
archivo de configuración PAM. El propósito de „include‟ es simplificar cambios
en muchas aplicaciones.
 Modulo. Los módulos PAM son ubicados en el directorio /lib/security/. Cada archivo
de un modulo inicia con el prefijo „pam_‟. No se necesita agregar la ruta completa,
todos los módulos son ubicados en el directorio estándar /lib/security/. Algunos
módulos PAM pueden ser usados en muchos tipos de módulos.
 Argumentos (Opciones). Se pueden agregar opciones en esta columna para un
modulo, tal como „debug42‟ o „nullok43‟.
- Ejemplos de archivos de configuración de PAM.

A continuación se muestra la configuración estándar para el archivo PAM del programa de


autenticación „login‟:

da51:~ # more /etc/pam.d/login


#%PAM-1.0
auth requisite pam_nologin.so
auth [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad]
pam_securetty.so
auth include common-auth
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session required pam_lastlog.so nowtmp
session required pam_resmgr.so
session optional pam_mail.so standard
session optional pam_ck_connector.so

da51:~ #

42
Habilita registros de eventos.
43
Habilita el uso de contraseñas vacias.

Ing. Ricardo Ruiz


125
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Como un ejemplo de estos archivos se muestra la configuración del archivo


/etc/pam.d/common-auth:

da51:~ # more /etc/pam.d/common-auth


#%PAM-1.0
#
# This file is autogenerated by pam-config. All changes
# will be overwritten.
#
# Authentication-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth required pam_env.so
auth required pam_unix2.so

da51:~ #

Estos módulos realizan las siguientes tareas (no se incluyen todas las configuraciones):

 auth required pam_securetty.so


Este modulo verifica el archivo /etc/securetty para determinar mediante una lista las
terminales de acceso validas. Si una terminal no está listada en dicho archivo, se
deniega el acceso desde dicha terminal. Esto le concierne solamente al root.
 auth required pam_env.so
Este modulo se usa para configurar entornos de variables adicionales. Estas variables
son configuradas en el archivo /etc/security/pam_env.conf.
 auth required pam_unix2.so nullok
El modulo pam_unix2.so es usado durante los procesos de autenticación para validar
al usuario y su contraseña.
 auth required pam_nologin.so
Este modulo verifica la existencia del archivo /etc/nologin. Si dicho archivo está
presente, su contenido se despliega cuando un usuario trata de acceder al sistema. El
acceso se niega a todos menos al usuario root.
 auth required pam_unix2.so
En este caso se usa este modulo para verificar si la contraseña del usuario es válida o
si se necesita crear una contraseña nueva.
 password required pam_pwcheck.so nullok
Esta es una entrada para un modulo tipo contraseña. Esta se utiliza cuando un usuario
intenta cambiar la contraseña. En este caso, el modulo se usa para verificar si la
nueva contraseña es segura o no. El argumento nullok permite al usuario cambiar
una contraseña vacía, de lo contrario, el sistema interpretaría las cuentas de usuario
con contraseñas vacías como cuentas en estado „bloqueado‟.
 password required pam_unix2.so nullok use_first_pass use_authtok
Este modulo es necesario cuando se cambia la contraseña. Este encripta la nueva
contaseña, y escribe la misma en la base de datos de autenticación.
El argumento nullok tiene el mismo significado descrito anteriormente.
Con el argumento use_first_pass, usa la contraseña de un modulo previo, por
ejemplo pam_pwcheck.so, y aborta con un error si no existe un token de autenticación
previo.

Ing. Ricardo Ruiz


126
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El argumento use_authtok es usado para forzar este modulo a configurar una


contraseña nueva a la provista previamente
 session required pam_unix2.so
Aquí se usa el componente de sesión del modulo pam_unix2.so, sin argumentos este
modulo no tiene efectos, con el argumento trace el modulo usa el demonio syslog
para registrar los eventos de acceso del usuario.
 session required pam_limits.so
Ajusta los limites para los usuarios, estos están configurados en el archivo
/etc/security/limits.conf.
 session required pam_mail.so
Este modulo despliega un mensaje si un nuevo correo esta en el buzón del usuario.
- Guías para contraseñas seguras.

Aun la mejor configuración de seguridad puede ser vulnerada si los usuarios seleccionan
contraseñas fáciles de deducir. Hoy en día, el poder de procesamiento de las
computadoras nos permite romper una contraseña sencilla en cuestión de minutos. Estos
ataques, también llamados „ataques de acceso‟, se realizan con un programa simple que
prueba una contraseña tras otra contenidas todas en un diccionario de contraseñas, y
agrega a las palabras del diccionario algunas variables simples y en muchos casos
comunes. Por lo tanto, una contraseña jamás debe ser una palabra que pueda estar
contenida en un diccionario. Una contraseña segura, debe contener números y caracteres
en minúsculas y mayúsculas.

Para verificar que la contraseña del usuario llena estos requerimientos, se puede habilitar
un modulo especial de PAM para comprobar la contraseña antes de que el usuario la
almacene en la base de datos de autenticación. Este modulo se llama pam_pwcheck.so y
usa la librería „cracklib‟ para comprobar la seguridad de la contraseña.

Este modulo ya está habilitado de fabrica en la distribución SLES 10 en adelante.

Si un usuario trata de configurar una contraseña no segura el siguiente mensaje se


desplegara:

Bad password: too simple

Y se le requerirá al usuario que ingrese una contraseña diferente.


- Recursos de documentación PAM.

La siguiente documentación sobre PAM, está disponible en el directorio


/usr/share/doc/packages/pam/:

 READMEs. En el nivel superior de este directorio, se encuentran algunos archivos


README de propósito general. El subdirectorio „modules/‟ contiene archivos README
sobre los módulos de PAM.
 Guia para administradores PAM en sistemas Linux. Este documento incluye todo
lo que un administrador necesita saber sobre PAM. El documento expone tópicos tales
como la sintaxis usada en los archivos de configuración. Este documento está
disponible en HTML, PDF y TXT.

Ing. Ricardo Ruiz


127
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Manual para programadores de módulos PAM. Este documento resume los tópicos
que un programador necesita saber, con la información sobre cómo escribir y compilar
módulos PAM.
 Guia de desarrollo de aplicaciones PAM para Linux. Este documento incluye todo
lo necesario para que un desarrollador de aplicaciones pueda usar las librerías PAM.

Tema 2: Administrar y asegurar el ambiente de usuario en Linux.


Además de la administración de cuentas de usuario, se necesita realizar algunas tareas
adicionales para administrar y asegurar un entorno Linux.

- Ejecutar tareas administrativas como 'root'

A todos los administradores de sistema se le aconseja acceder al sistema mediante el un


usuario distinto al usuario root y solamente conmutarse a ese usuario para ejecutar tareas
que solo el root tiene privilegios de ejecutar.

Para conmutarse de un usuario normal al super usuario para ejecutar tareas


administrativas se puede realizar de las siguientes maneras:
Conmutarse a otro usuario usando ‘su’

Se puede usar el comando su44 para tomar el UID del usuario root o de otro usuario.

La sintaxis es la siguiente: su [opciones] … [-] [usuario[argumento]]

Por ejemplo, para cambiarse al usuario geeko, el comando es: su geeko. Para cambiar al
usuario root: su root o su (sin un nombre de usuario). Si se necesita cargar el Shell del
usuario al que se desea conmutar se debe acompañar el comando „su‟ con „-„, por
ejemplo: su – geeko, su – root o su –.

NOTA: el usuario root puede conmutarse a cualquier usuario sin necesidad de conocer la
contraseña de dicho usuario.

Para retornar a la sesión de usuario anterior, el comando a ingresar es: exit.

Para cambiar al usuario root y ejecutar un comando sencillo, se debe de usar la opción -c:

rruiz@da51:~> su - -c ‚grep rruiz /etc/passwd‛


rruiz:x:1000:100:Ricardo Daniel Ruiz Caracas:/home/rruiz:/bin/bash

da51:~ #

44
Switch User

Ing. Ricardo Ruiz


128
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Conmutarse a otro grupo usando ‘newgroup’

Un usuario puede ser miembro de muchos grupos diferentes, pero solamente un GID es
su grupo efectivo (actual) en un momento del tiempo. Normalmente este se denomina
„grupo primario‟, y se especifica en el archivo /etc/passwd. Si un usuario crea directorios o
archivos, estos pertenecerán al usuario y al grupo efectivo en el que el usuario se
encuentre en ese momento.

Se puede cambiar el GID del grupo efectivo con en comando „newgrp‟ o „sg‟.

Solo usuarios miembros de un grupo determinado puede conmutarse a dicho grupo, en


caso de haberse definido una contraseña en el grupo, el usuario deberá conocer la
contraseña para poder cambiarse.
Ejecutar aplicaciones como otro usuario desde GNOME

En el escritorio Gnome se puede ejecutar cualquier aplicación con un UID diferente (se
debe conocer la contraseña) usando el comando „gnomesu‟.

Desde la línea de comandos del escritorio Gnome45, ejecutar „gnomesu‟. En ese momento
se le solicitara la contraseña del root, después de esto una ventana de terminal se abrirá.
Nótese que la ruta que aparece en la terminal es el directorio home del usuario. Si se
desea acceder al entorno del usuario root se debe ingresar el comando „su -‟ en dicha
ventana terminal.

Se puede definir un usuario diferente al root, la


línea de comandos a ingresar entonces es:
gnomesu –u [usuario] [comando]. Si el
comando no existe en las rutas
predeterminadas, este deberá ser escrito
completo: gnomesu /sbin/yast2, esto ejecutara
yast2 despues de ingresar la contraseña del
root.

NOTA: algunas aplicaciones no necesitan ser ejecutadas con el comando „gnomesu‟, por
ejemplo yast2, el estándar de esta aplicación es ser ejecutada solamente por el root.

- Delegar tareas administrativas con 'sudo'

Algunas veces es necesario permitir a un usuario el acceso a comandos usualmente


reservados para root. Por ejemplo, se necesita que un colega realice la tarea de apagado
del sistema y crear usuarios mientras el administrador está de vacaciones, y no se desea
compartir la contraseña del root (en teoría de conocimiento único del administrador). La
configuración estándar de „sudo‟ en Linux requiere conocer la contraseña del root. Si se
conoce la contraseña del root, no se necesitara usar el comando „sudo‟ para realizar
tareas administrativas. Su uso tiene la ventaja de que el comando ejecutado será
almacenado en los logs del sistema (/var/log/messages) y no se necesita reingresar la
contraseña del root por cada comando, debido a que es capturada por „sudo‟ por algunos
minutos.

45
Alt + F2

Ing. Ricardo Ruiz


129
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

rruiz@da51:~> sudo /sbin/shutdown –h now

We trust you have received the usual lecture from the local System Administrator.
It usually boils down to these three things:

#1) Respect the privacy of others.


#2) Think before you type.
#3) With great power comes great responsibility.

root's password:

da51:~ #

Se puede cambiar la configuración de „sudo‟ para que solicite la contraseña del usuario en
vez de la contraseña del root. Para realizar esto se debe comentar las dos líneas en
/etc/sudoers usando el comando „visudo‟:

# In the default (unconfigured) configuration, sudo asks for the root


# password. This allows use of an ordinary user account for administration
# of a freshly installed system. When configuring sudo, delete the two
# following lines:

Defaults targetpw # ask for the password of the target user i.e. root
ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults
# targetpw'!

Usando „visudo‟, se puede especificar que comando el usuario puede o no puede ejecutar
configurando el archivo /etc/sudoers. La sintaxis general de una entrada de configuración
en dicho archivos es: user/group host = comando1, comando2, …. Por ejemplo: geeko
ALL = /sbin/shutdown. En este ejemplo, el usuario geeko tendrá acceso al comando
/sbin/shutdown con los privilegios del root en todos los computadores (ALL). En
/etc/sudoers se especifica el permiso para copiar el mismo archivo en diferentes
computadoras sin tener que permitir los mismos privilegios en todas las computadoras
involucradas. El siguiente ejemplo es más complejo e ilustra la flexibilidad de „sudo‟:

User_Alias ADMINS = tux, geeko


User_Alias WEBMASTER = john
User_Alias SUBSTITUTE = olli, klaas

# Especificacion de alias de commandos

Cmnd_Alias PRINTING = /usr/sbin/ipc, /usr/bin/lprm


Cmnd_Alias SHUTDOWN = /sbin/shutdown
Cmnd_Alias APACHE = /etc/init.d/apache

# Especificacion de privilegios de usuario

root ALL = (ALL) ALL

ADMINS ALL = NOPASSWD !/usr/bin/passwd, /usr/bin/passwd [A-z]*,


!/usr/bin/passwd root
WEBMASTER ALL = APACHE
SUBSTITUTE ALL = SHUTDOWN, PRINTING

Las líneas del 1 al 9 definen aliases. De la línea 15 a la 17, dichos aliases son usados por
las reglas de „sudo‟

Ing. Ricardo Ruiz


130
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Configuración estándar para cuentas de usuario nuevas

El comando useradd sirve también para crear un esquema estándar para las nuevas
cuentas de usuario con la opción --save-defaults:

da51:~ # useradd --save-defaults -d /export/home


da51:~ # useradd --show-defaults
GROUP=100
HOME=/export/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
GROUPS=video,dialout
CREATE_MAIL_SPOOL=no
da51:~ #

En este ejemplo se modificó la carpeta home estándar por /export/home.


- Configurar ajustes de seguridad

YaST provee un modulo de seguridad local que permite configurar los ajustes locales para
un servidor Linux en los siguientes ítems:

 Ajustes de la contraseña.
 Configuración de arranque.
 Ajustes de ingreso.
 Ajustes para la creación de usuarios.
 Permisos de acceso.

Desde la ejecución de comandos ingresar el comando: yast2 security.

Ing. Ricardo Ruiz


131
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Usar ACL46 para control de acceso avanzado.


Para usar ACL y configurar privilegios de acceso avanzado a archivos se necesita
conocer algunos temas:
- Conceptos básicos

Tradicionalmente, tres conjuntos de permisos son definidos por cada archivo en un


sistema Linux. Estos conjuntos incluyen permisos de lectura, escritura y ejecución para
los tres tipos de usuarios: propietario, grupo y otros usuarios. Estos conceptos son
adecuados para la mayoría de los casos.

Las ACL‟s proveen una extensión de este concepto tradicional de privilegios de acceso.
Estas permiten asignar privilegios de acceso a usuarios individuales o grupos incluso si
estos no corresponden a propietario o grupo original.

Las ACL forma parte del kernel de Linux y los sistemas de archivos ReiserFS, Ext2, Ext3,
JSF y XFS, brindan soporte a las mismas. Usando ACL se puede crear escenarios
complejos sin implementar complejos modelos de permisos en el nivel de aplicación, por
ejemplo: Samba soporta las ACL para otorgar privilegios de acceso a los usuarios.
- Comandos básicos

Existen dos comandos básicos para las ACL: setfacl (set file ACL) para configurar las
ACL en los archivos y getfacl (get file ACL) para visualizar las ACL de un archivo o
directorio.

Para permitir que un usuario tenga acceso de escritura en un archivo, sin que el usuario
sea el propietario, en el escenario estándar, se debe crear un nuevo grupo, agregar al
propietario y al usuario que tendrá acceso al archivo y asignar el nuevo grupo al archivo,
con sus respectivos privilegios.

Con el modelo de ACL, se realiza la misma acción, con la diferencia que no se necesita
crear grupos, cambiar los propietarios y asignar privilegios al grupo.

rruiz@da51:~> touch file


rruiz@da51:~> ls –l file
-rw-r--r-- 1 rruiz users 0 2012-12-23 09:02 file
rruiz@da51:~> setfacl –m u:tux:rw file
rruiz@da51:~> ls –l file
-rw-r--r--+ 1 rruiz users 0 2012-12-23 09:02 file
rruiz@da51:~> getfacl file
# file: file
# owner: rruiz
# group: users
user::rw-
user:tux:rw-
group::r--
mask::rw-
other::r--
rruiz@da51:~>

46
Access Control Lists

Ing. Ricardo Ruiz


132
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Otra ventaja de las ACL es que el administrador del sistema no está envuelto en la
creación del esquema, creando grupos y asignando privilegios. Todo lo decide el usuario.

Note que la salida del comando „ls‟ cambia cuando una ACL es definida. El símbolo „+‟ se
agrega al segmento dedicado a los privilegios, los privilegios entonces obtienen un
significado diferente.
- Términos importantes

La siguiente tabla define términos concernientes a las ACL

Termino Definición
user class Este es el concepto convencional de privilegios en POSIX, usa tres
clases de usuarios para asignar privilegios en el sistema: propietario,
grupo y otros.
Tres privilegios pueden ser asignados por cada tipo de usuario, siendo
estos: lectura (r), escritura (w), y ejecución (x).
access ACL Determina los privilegios de acceso de usuarios y grupos para todo
tipo de objetos en el sistema (archivos y directorios).
default ACL Estas ACL pueden ser aplicadas únicamente a los directorios. Estos
determinan los privilegios heredables de los objetos contenidos en el
directorio al momento de ser creados.
ACL entry Cada ACL consiste de un conjunto de entradas ACL. Una entrada
contiene un „tipo‟, un calificador para usuario o grupo a la que la
entrada se refiere, y un conjunto de permisos. Para algunos tipos de
entrada, el calificador de usuarios o grupos es indefinido.

- Tipos

Existen dos clases básicas de ACL:

 ACL minima. Corresponde a los privilegios convencionales de archivos y directorios.


 ACL extendida. Como su nombre indica los privilegios escritos en esta son
extendidos, contiene una entrada enmascarada y puede contener muchas entradas
para usuarios y grupos.

Las ACL permiten cambiar los paradigmas de privilegios de Linux al definir los siguientes
tipos de privilegios:

 named user. Con este tipo se puede asignar privilegios a usuarios individuales.
 named group. Con este tipo se puede asignar privilegios a grupos individuales.
 mask. Con este tipo, se puede limitar los privilegios anteriores.

La siguiente tabla es un resumen de todos los posibles tipos de ACL:

Tipo Formato
owner user::rwx
named user user:nombre:rwx
owning group group::rwx
named group group:nombre:rwx

Ing. Ricardo Ruiz


133
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

mask mask::rwx
other other::rwx

Los privilegios definidos en „owner‟ y „other‟ son siempre efectivos. Exceptuando para la
entrada „mask‟, todas las otras entradas pueden ser efectivas o enmascaradas. Si los
privilegios existentes en „named user‟, „owner user‟ o „named group‟, son las mismas que
las definidas en la máscara, estas son efectivas (operador „y‟ lógico). Los privilegios
contenidos solamente en la entrada „mask‟ o solamente en una de las entradas, no son
efectivas.

Para ilustrar esto, el siguiente ejemplo determina los privilegios para el usuario „jane‟:

Tipo de Entrada Formato Privilegios


named user user:jane:r-x r-x
mask mask::rw- rw
Privilegios efectivos: r--

Esta ACL contiene dos entradas, una para el usuario „jane‟ y una para la entrada „mask‟.
Jane tiene privilegios de lectura y ejecución en el archivo, pero „mask‟ solo contiene
privilegios de lectura y escritura. Debido a que los privilegios de acceso se obtienen
usando el operador lógico „y‟ (AND) se obtiene como privilegio efectivo solamente el
acceso a lectura.
- Como las ACL define privilegios de acceso

Cuando se asigna una ACL a un archivo o directorio, el conjunto de privilegios de la ACL


es mapeado a los privilegios de acceso estándar de UNIX.

La tabla siguiente ilustra el mapeo de una ACL mínima:

Entrada Formato POSIX Clase de Usuario


owner user::rw-  rw- Clase propietario
group group::r--  r-- Clase grupo
other other::---  --- Clase otros usuarios

La tabla siguiente ilustra el mapeo de una ACL extendida:

Entrada Formato POSIX Clase de Usuario


owner user::rw-  rw- Clase propietario
named user user:jane:rw-
owning group group::r--
mask mask::rw-  r-- Clase grupo
other other::---  --- Clase otros usuarios

En ambos casos (ACL mínima y extendida), los privilegios de la clase propietario son
mapeados de la entrada „owner‟ de la ACL. Los privilegios de la clase „other‟ son
mapeados de las entradas respectivas de la ACL. Mapear los privilegios de la clase del
grupo es diferente en el segundo caso.

Ing. Ricardo Ruiz


134
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En caso de una ACL sin mascara, los privilegios de la clase grupo son mapeados de la
ACL de la entrada „owning group‟. En el caso de una ACL extendida con mascara, los
privilegios de la clase grupo son mapeados de la ACL de la entrada „mask‟.

El mapeo asegura la interacción de las aplicaciones con el usuario, esto sin necesidad de
que la aplicación soporte o no ACL.
- Como usar las herramientas de línea de comandos de ACL

Como se explico anteriormente, solo existen dos comandos para la definición y ajustes de
las ACL en Linux:

 getfacl
 setfacl

En la siguiente tabla se describen las opciones más importantes del comando „setfacl‟:

Opción Descripción
-m Agrega o modifica una entrada ACL
-x Elimina una entrada ACL
-d Configura una ACL estándar
-b Elimina todas las entradas de una ACL extendida

Las opciones –m y –x esperan la definición de una ACL. Los siguientes ejemplos aclaran
las definiciones de las ACL:

rruiz@da51:~> touch myfile


rruiz@da51:~> setfacl –m u:tux:rx myfile
rruiz@da51:~> setfacl –m g:accounting:rw myfile
rruiz@da51:~> setfacl –m m:rx
rruiz@da51:~>

En el primer comando, se define que el usuario „tux‟ tendrá privilegios de lectura y


ejecución del archivo myfile. En el segundo comando, se define que los miembros del
grupo „accounting‟ tendrán privilegios de lectura y escritura en el archivo myfile. En el
tercer comando, se define la máscara de lectura y ejecución.
- Como configurar el acceso a un directorio con una ACL

Para configurar el acceso a un directorio con una ACL, se debe realizar lo siguiente:

1.- Definir la máscara de privilegios estándar con el comando „umask‟.


2.- Crear el directorio y verificar que la máscara de privilegios se aplico correctamente.
3.- Revisar el estado inicial de las ACL con el comando „getfacl‟.
4.- Definir la ACL con el comando „setfacl‟.
5.- Verificar los privilegios POSIX efectivos del directorio.

Veremos estas tareas a continuación:

Ing. Ricardo Ruiz


135
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

rruiz@da51:~> umask 027


rruiz@da51:~> mkdir mydir
rruiz@da51:~> ls –ld mydir
drwxr-x--- … rruiz users … mydir
rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: users
user::rwx
group::r-x
other::---
rruiz@da51:~> setfacl –m u:jane:rwx,g:jungle:rwx mydir
rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: users
user::rwx
user:jane:rwx
group::r-x
group:jungle:rwx
mask::rwx
other::---
rruiz@da51:~> ls –ld mydir
drwxrwx---+ … rruiz users … mydir
rruiz@da51:~> chmod g-w mydir
rruiz@da51:~> ls –ld mydir
drwxr-x---+ … rruiz users … mydir
rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: users
user::rwx
user:jane:rwx #efective: r-x
group::r-x
group:jungle:rwx #efective: r-x
mask::rwx
other::---
rruiz@da51:~> chmod g+w mydir
rruiz@da51:~> ls –ld mydir
drwxrwx---+ … rruiz users … mydir
rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: users
user::rwx
user:jane:rwx
group::r-x
group:jungle:rwx
mask::rwx
other::---
rruiz@da51:~> setfacl –m m::rx mydir
rruiz@da51:~> ls –ld mydir
drwxr-x---+ … rruiz users … mydir
rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: users
user::rwx
user:jane:rwx #efective: r-x
group::r-x
group:jungle:rwx #efective: r-x
mask::r-x
other::---
rruiz@da51:~>

Ing. Ricardo Ruiz


136
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Como configurar el acceso a un directorio con una ACL estándar

Los directorios pueden configurarse con ACL estándar, este tipo especial de ACL define
los privilegios de acceso a objetos dentro del directorio cuando estos son creados. Este
tipo de ACL afecta los archivos y directorios bajo el árbol de directorios donde fue
declarado. Existen dos formas de que una ACL se replique en los objetos dentro del
directorio en el que se aplica:

 Un subdirectorio hereda la configuración de permisos de la ACL de su directorio


padre.
 Un archivo hereda la configuración de permisos de la ACL de su directorio padre.

Todas las funciones del sistema involucrados en creación de objetos del sistema de
archivo usan un parámetro que define los permisos de acceso para el nuevo objeto
creado. Si el directorio padre no tiene asociado una ACL, entonces los privilegios del
nuevo objeto estarán definidos por la mascara (umask). En caso de tener una ACL
asociada, los privilegios asignados al nuevo objeto serán el traslape entre la máscara y la
ACL asignada.

A continuación tres ejemplos que muestran las operaciones principales para directorios y
ACL estándar.

 Definir una ACL estándar al directorio mydir (ver ejemplos anteriores): setfacl –d –m
g:jungle:r-x mydir

La opción „-d‟ ordena a setfacl que ejecute las acciones definidas al comando (-m) y
en la definición de la ACL estándar.

rruiz@da51:~> setfacl –d –m g:jungle:r-x mydir


rruiz@da51:~> getfacl mydir
# file: mydir
# owner: rruiz
# group: project3
user::rwx
user:jane:rwx
group::r-x
group:jungle:rwx
mask::rwx
other::---
default:user::rwx
default:group::r-x
default:group:jungle:r-x
default:mask::r-x
default:other::---
rruiz@da51:~>

Note que getfacl retorna ambas ACL definidas hasta este momento en ese directorio
(ACL de acceso y ACL estándar). La ACL estándar está claramente definida por la
palabra „defaul‟ al inicio de cada línea.

Se debe recordar que este tipo de ACL no tiene efecto inmediato en el esquema de
privilegios de acceso, esta comienza a reflejarse al momento que se van creando
nuevos objetos en el sistema de archivos.

Ing. Ricardo Ruiz


137
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Crear un directorio dentro de mydir, llamado mysubdir, este heredara los privilegios de
acceso y la definición de ACL de mydir.

rruiz@da51:~> mkdir mydir/mysubdir


rruiz@da51:~> getfacl mydir/mysubdir
# file: mydir/mysubdir
# owner: rruiz
# group: project3
user::rwx
group::r-x
group:jungle:r-x
mask::r-x
other::---
default:user::rwx
default:group::r-x
default:group:jungle:r-x
default:mask::r-x
default:other::---
rruiz@da51:~>

Nótese que el directorio creado „mysubdir‟ tiene privilegios de acceso que se derivan
de la ACL estándar del directorio padre. La ACL de acceso de este objeto es un reflejo
exacto de la ACL estándar de mydir.

 Crear un archivo dentro del directorio mydir, llamado myfile, y otro en el directorio
mydir/mysubdir, llamado myfile2, estos heredaran los privilegios de acceso y la
definición de ACL de mydir.

rruiz@da51:~> touch mydir/myfile


rruiz@da51:~> touch mydir/mysubdir/myfile2
rruiz@da51:~> ls –l mydir/myfile
-rw-r-----+ … rruiz project3 … mydir/myfile
rruiz@da51:~> getfacl mydir/myfile
# file: mydir/myfile
# owner: rruiz
# group: project3
user::rw
group::r-x
group:jungle:r-x
mask::r--
other::---
rruiz@da51:~>

El comando touch crea los archivos con el modo 0666, lo que significa que todos los
tipos de usuarios tienen privilegios de lectura y escritura sin las restricciones
impuestas por „umask‟. Esto significa que todos los privilegios de acceso no
contenidos en el modo son removidos por la entrada de la ACL que le corresponda.
- Opciones adicionales de setfacl

Las entradas de usuario son eliminadas con la opción „-x‟: setfacl –x g:jungle mydir
La opción „-b‟ se usa para eliminar todas las entradas de ACL.
Para realizar un respaldo de una ACL se usa getfacl y se envía a un archivo (usando
„pipes‟), luego se usa „setfacl‟ con la opción –M:

Ing. Ricardo Ruiz


138
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

rruiz@da10:~> touch fileA fileB


rruiz@da10:~> setfacl -m u:tux:rw fileA
rruiz@da10:~> getfacl fileA > ACL-backup
rruiz@da10:~> setfacl -M ACL-backup fileB
rruiz@da10:~> getfacl fileB
# file: fileB
# owner: rruiz
# group: project3
user::rw-
user:tux:rw-
group::r--
mask::rw-
other::r--
rruiz@da51:~>

- Como las aplicaciones manejan las ACL

Como se describe en la sección precedente, se puede usar las ACL para implementar
escenarios complejos de privilegios de acceso o para que se cumplan los requerimientos
de algunas aplicaciones.

Los comandos básicos (cp, mv, ls y otros más) soportan ACL, pero muchos editores y
administradores de archivos no (konkeror o Nautilus), por ejemplo cuando se copia
archivos o directorios con uno de esos dos administradores de archivos, la configuración
de ACL se pierde. En ocasiones (depende del editor) cuando se modifica un archivo con
algún editor, la configuración de ACL se preserva y en otras ocasiones no.

Ing. Ricardo Ruiz


139
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 11: Configurar la Red de forma Manual


La configuración de la interface de red se puede realizar usando YaST, y generalmente se
necesita de un evento en la red para que esto sea nuevamente configurado. Pero en
algunos escenarios es necesario reconfigurar la interface para realizar pruebas y
solucionar problemas, en estos casos es más fácil y rápido cambiar la configuración de la
red mediante la línea de comandos.

Esa es la intención de este capítulo, aprender a usar las herramientas de línea de


comandos que configuran las interfaces de red.

Tema 1: Términos de redes en Linux.


Antes de comenzar a configurar manualmente la red, se necesita entender los siguientes
términos de networking utilizados en Linux:

 Dispositivo. Adaptador de red instalado físicamente en el sistema.


 Interface. Se usa este término para referirse a un dispositivo físico en el sistema, un
componente de software crea una „interface‟ para el dispositivo. Esta interface puede
ser usada por otras aplicaciones. El componente de software que crean las interfaces
se denominan „controladores de red‟. En Linux, las interfaces de red usan un esquema
de nombres estándar. Las interfaces de los adaptadores Ethernet siguen el esquema
de nombres „eth0‟, „eth1‟, „eth2‟, etc. Para cada adaptador en el sistema se crea una
interface cuando el controlador correspondiente se cargue adecuadamente. Los
comandos de Shell para la configuración de la red usan el término „dispositivo‟ cuando
se refieren a las interfaces. El termino dispositivo es usado en este capítulo sin
distinción y refiriéndose a los dispositivos y a las interfaces.
 Enlace. Los comandos de Shell usan el término „enlace‟ para referirse a la conexión
de un dispositivo a la red.
 Dirección. La dirección IP asignado a un dispositivo. La dirección puede ser una
dirección IPv4 o una IPv6. Para usar un dispositivo en la red, se debe asignar una
dirección al mismo. Se puede asignar más de una dirección a un dispositivo.
 Broadcast. Es la dirección de broadcast del segmento de red en el que se encuentre
la dirección del dispositivo. Cuando se envía un paquete a esta dirección, este
paquete le llega a todos los dispositivos con una dirección dentro del segmento de red,
esta dirección debe ser configurada al momento de la asignación de la dirección del
dispositivo.
 Ruta. Es el camino que toma un paquete desde el origen hasta el destino del mismo.
El término „route‟ se refiere a la entrada en la tabla de enrutamiento en el kernel de
Linux.

Tema 2: Configurar las interfaces de red con la herramienta ip.


Se puede configurar una NIC con YaST47 durante o después de la instalación de Linux.
También se puede usar la herramienta „ip‟ para modificar la configuración de la NIC
rápidamente desde la línea de comandos.

47
Solamente en la distribución SUSE de Linux.

Ing. Ricardo Ruiz


140
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cambiar la configuración de una NIC es especialmente útil, especialmente para


propósitos de prueba; pero si se requiere que esta configuración sea permanente, se
debe guardar la configuración en el archivo correspondiente. Este archivo de
configuración de la NIC, se crea automáticamente cuando se configura la NIC con YaST.
- Desplegar la configuración de red actual.

Con la herramienta „ip‟ se puede desplegar la siguiente información:


Configuración de la dirección IP

Para desplegar la configuración de todas las interfaces el comando es: ip address show.
Dependiendo de la configuración del sistema, la información será similar a lo siguiente:

da51:~ # ip address show


1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:30:05:4b:98:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0
inet6 fe80::230:5ff:fe4b:9885/64 scope link
valid_lft forever preferred_lft forever
3: sit0: <NOARP> mtu 1480 qdisc noqueue
link/sit 0.0.0.0 brd 0.0.0.0
da51:~ #

La información es agrupada por interfaces. Cada entrada inicia con un digito, llamado
„índice de la interface‟, con el nombre de la interface desplegada después del índice de la
interface.

En este ejemplo, existen tres interfaces:

 lo. Es el dispositivo loopback. Este está presente en cada sistema Linux, aun cuando
no se tenga ninguna interface instalada. Con este dispositivo virtual, las aplicaciones
pueden usar la red para comunicarse con otras aplicaciones. Por ejemplo se puede
usar la dirección IP de la loopback para visualizar la pagina web en un servidor web,
solo basta colocar la URL „http://127.0.0.1‟ y el navegador buscara la pagina web
localmente.
 eth0. Este es el primer adaptador Ethernet en el sistema (y en el ejemplo). Si
existieran mas adaptadores Ethernet se numerarían asi: eth0, eth1, eth2, etc.
 sit0. Este es un dispositivo virtual especial, se usa para encapsular paquetes IPv4 en
paquetes IPv6. Normalmente no se usa en redes IPv4.

Si se habilita el soporte para IPv6, siempre se tendrán las interface „loopback‟ y „sit‟ y
dependiendo de la configuración del sistema, se tendrán más de una interface Ethernet.
Veamos la información de la interface eth0 del ejemplo anterior:

2: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc pfifo_fast qlen 1000


link/ether 00:30:05:4b:98:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0
inet6 fe80::230:5ff:fe4b:9885/64 scope link valid_lft forever preferred_lft forever

Ing. Ricardo Ruiz


141
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La línea: „link/ether 00:30:05:4b:98:85 brd ff:ff:ff:ff:ff:ff‟ nos muestra la dirección MAC de la


NIC (00:30:05:4b:98:85).

La línea: „inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0‟ nos muestra la dirección IPv4,
su máscara y la dirección de broadcast de la red, seguido del nombre de la interfaz.

La última línea muestra la configuración IPv6 de la NIC.


Atributos del dispositivo

Si solamente interesa las propiedades de los dispositivos y no su configuración IP,


entonces el comando a ejecutar es: ip link show

da51:~ # ip link show


1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:30:05:4b:98:85 brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noqueue
link/sit 0.0.0.0 brd 0.0.0.0
da51:~ #

Nótese que en la salida de este comando no se refleja la configuración de direcciones IP


de las interfaces mostradas.

Se describen a continuación los posibles atributos y su significado:

 UP. El dispositivo esta activo. En otras palabras, en este estado puede enviar y recibir
paquetes desde el sistema a la red y viceversa.
 LOOPBACK. Determina si el dispositivo es de tipo loopback.
 BROADCAST. El dispositivo puede enviar paquetes a todos los host dentro del
segmento de red.
 POINTOPOINT. El dispositivo solo se puede conectar a otro dispositivo directamente.
 MULTICAST. El dispositivo puede enviar paquetes a un grupo de otros sistemas al
mismo tiempo.
 PROMISC. El dispositivo escucha todos los paquetes de la red, no solamente los que
son enviados a su MAC. Esto se usa normalmente en los monitores de red.
Estadísticas del dispositivo

Para desplegar información estadística del dispositivo se debe agregar la opción „-s‟ al
comando „ip‟, este lucirá así: ip –s link show eth0

da51:~ # ip –s link show eth0


2: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:30:05:4b:98:85 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
849172787 9304150 0 0 0 0
TX: bytes packets errors dropped carrier collsns
875278145 1125639 0 0 0 0
da51:~ #

Ing. Ricardo Ruiz


142
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Dos secciones adicionales se despliegan por cada dispositivo. Cada una de las secciones
describe la información mostrada.

La sección que inicia con RX despliega información sobre los paquetes recibidos, y la
sección que inicia con TX despliega información sobre los paquetes enviados.

A continuación una breve descripción de la información mostrada:

 Bytes. Es el total de bytes recibidos o transmitidos por el dispositivo.


 Packets. Es el número total de paquetes enviados o recibidos por el dispositivo.
 Errors. Es el número total de paquetes enviados o recibidos con errores.
 Dropped. Es el número total de paquetes desechados por falta de recursos.
 Overrun. Total de desbordamientos recibidos, resultando en paquetes desechados.
Normalmente si un dispositivo es desbordado significa que hay problemas serios en el
kernel de Linux o que el sistema es muy lento para el dispositivo.
 Mcast. Total de paquetes multicast recibidos. Esta opción es soportada por pocos
dispositivos.
 Carrier. Número total de fallos en el medio de enlace, debido a la pérdida de la
portadora.
 Collsns. Es el total de eventos de colisiones en el medio.
 Compressed. Es el total de paquetes comprimidos.
- Cambiar la configuración de red actual.

Para comprender completamente este ítem debemos repasar los siguientes temas:

Asignar una dirección IP a un dispositivo.

Para asignar una dirección IP a un dispositivo, el comando a ejecutar debe ser similar al
siguiente48:

da51:~ # ip address add 10.10.10.2/24 brd + dev eth0

En este ejemplo, se le asigna la dirección IP 10.10.10.2 al dispositivo eth0. La máscara de


red es de 24 bits (definida por /24). La dirección de broadcast se determina
automáticamente gracias a la opción „brd +‟.

El comando ip address show dev eth0, nos mostrara la configuración IP asignada a la


interface eth0.

Se puede asignar más de una dirección IP a la interface.


Borrar una dirección IP de un dispositivo.

Para borrar una dirección IP de una interface use el comando siguiente:

da51:~ # ip address del 10.10.10.2 dev eth0

48
Depende de la configuración del sistema.

Ing. Ricardo Ruiz


143
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Cambiar atributos a un dispositivo.

También se pueden cambiar los atributos de los dispositivos, el comando básico es: ip
link set [dispositivo] [atributo]. Los posibles atributos ya fueron descritos anteriormente
(ver Atributos del Dispositivo). Los atributos más importantes son „up‟ y „down‟, estos
habilitan y deshabilitan la interface respectivamente.

Para habilitar la interface (por ejemplo la eth0):

da51:~ # ip link set eth0 up

Para deshabilitar esta interface:

da51:~ # ip link set eth0 down


- Guardar los ajustes del dispositivo a un archivo de configuración.

Todos estos cambios se perderán en el siguiente reinicio del sistema. Para que estos
cambios sean permanentes estos deben ser almacenados en los archivos de
configuración de las interfaces de red. Estos archivos están ubicados en
/etc/sysconfig/network. Si los dispositivos fueron instalados con YaST, un archivo de
configuración por cada uno se creó en dicho directorio.

Para dispositivos Ethernet, los nombres de estos archivos se nombrarían asi: ifcfg-eth-id-
y su dirección MAC, por ejemplo nuestra interface (ver ejemplos anteriores) tiene la MAC:
00:30:05:4b:98:85, por lo tanto el archivo tendrá por nombre:
„ifcfg-eth-id- 00:30:05:4b:98:85‟.

NOTA: como recomendación, se debe instalar y realizar los cambios en la interface en el


momento correspondiente de la instalación del sistema. Instalar una NIC posteriormente
sin hacer uso de la herramienta YaST puede ser una labor compleja, ya que el controlador
debe ser configurado manualmente también.

Si se tiene más de una interfaz de red instalada, puede ser difícil encontrar el archivo de
configuración correspondiente a cada NIC, para esto se debe hacer uso del comando ip
link show, comentado anteriormente, con el fin de identificar la interface correcta.

El contenido de los archivos de configuración depende de la configuración del dispositivo.


Configurar un dispositivo con dirección IP estática.

El archivo de configuración consta de muchas líneas. Cada línea tiene una opción y un
valor asignado a esta opción, se tratara de explicar cada una de ellas:

 BOOTPROTO=’static’. Esta opción determina la manera en que la interface puede


ser configurada. Existen dos posibles variables:
o Static. Determina que el dispositivo tendrá asignada una dirección IP estática.
o DHCP. Determina que la dirección IP se configura automáticamente mediante
un servidor DHCP.
 REMOTE_IPADDR=’’. Se necesita definir esta opción solamente si se configura una
conexión punto a punto (point-to-point).

Ing. Ricardo Ruiz


144
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 STARTMODE=’onboot’. Esta opción determina como es iniciado el dispositivo.


Puede tener uno de los siguientes valores:
o Auto. El dispositivo se habilita automáticamente cuando el sistema se
enciende.
o Manual. El dispositivo debe ser habilitado manualmente con ifup.
o Ifplugd. La interface es controlada por ifplugd. Si se necesita usar interfaces
mutuamente exclusivas también se debe configurar IFPLUGD_PRIORITY.
 UNIQUE=’rBUF.+xOL8ZCSAQC’. Esta línea contiene opciones agregadas por YaST
cuando el dispositivo fue configurado. No afecta la configuración de la red en sí.
 _nm_name=’bus-pci-0000:00:0b.0’. Esta línea contiene opciones agregadas por
YaST cuando el dispositivo fue configurado. No afecta la configuración de la red en sí.
 BROADCAST=’’. Determina la dirección de broadcast de la red. Si está vacía, la
dirección de broadcast se determina mediante la dirección IP y la máscara de red.
 IPADDR=’10.10.10.2’. Es la dirección IP del dispositivo.
 NETMASK=’255.255.255.0’. Es la máscara de red.
 NETWORK=’’. Es la dirección de la red en sí.
 MTU=’’. Se puede usar esta opción para especificar el valor de la MTU49. Si no se
especifica valor alguno, se usa el valor estándar. Para dispositivos Ethernet este valor
es de 1500 bytes.
 ETHTOOL_OPTIONS=’’. Esta opción es usada para ajustar dispositivos Ethernet y
modificar su comportamiento, por ejemplo su velocidad y el modo half/full dúplex. Si
no contiene opciones, ethtool no es ejecutado.

El contenido de un archivo de configuración configurado con dirección IP estática es


similar a la siguiente:

BOOTPROTO='static'
REMOTE_IPADDR=''
STARTMODE='auto'
UNIQUE='rBUF.+xOL8ZCSAQC'
_nm_name='bus-pci-0000:00:0b.0'
BROADCAST=''
IPADDR='10.0.0.2'
NETMASK='255.255.255.0'
NETWORK=''
MTU=''
ETHTOOL_OPTIONS=''

Configurar un dispositivo con dirección IP dinámica, usando DHCP.

Para configurar un dispositivo para que tome una dirección IP de manera dinámica,
usando el protocolo DHCP, basta con colocarle el valor DHCP a la opción BOOTPROTO.
Las demás opciones no son necesarias, ya que estas son reescritas por las
configuraciones enviadas por el servidor DHCP.
Arrancar y Detener interfaces.

Para aplicara los cambios realizados en los archivos de configuración, se debe detener y
arrancar las interfaces correspondientes. Esto se realiza con los comandos ifdown e ifup
más la interface correspondiente. Ejemplo: ifdown eth0 e ifup eth0.

49
Maximum Transmission Unit

Ing. Ricardo Ruiz


145
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Configurar enrutamiento con la herramienta ip.


Se puede usar el comando „ip‟ para configurar la tabla de rutas del kernel Linux. Esta tabla
determina el camino que tomaran los paquetes IP para lograr alcanzar su destino.

NOTA: los temas de enrutamiento son tópicos de otros cursos, en este ítem se tocaran los
escenarios de enrutamiento más comunes.

- Visualizar la tabla de enrutamiento.

Para visualizar la tabla de rutas, el comando es: ip route show. Para muchos sistemas, la
salida será similar a lo siguiente:

da51:~ # ip route show


10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2
169.254.0.0/16 dev eth0 scope link
127.0.0.0/8 dev lo scope link
default via 10.0.0.254 dev eth0
da51:~ #

Cada línea representa una entrada en la tabla de enrutamiento, que a continuación se


explica:

10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2

Esta línea representa la ruta hacia la red local. Todos los paquetes del sistema dirigidos
hacia un nodo dentro del mismo segmento de red son enviados directamente por el
dispositivo eth0.

169.254.0.0/16 dev eth0 scope link

Esta línea muestra la ruta para la red 169.254.0.0. Los host usan esta red cuando se auto
configuran (cuando no encuentran un servidor DHCP). La ruta a esta red siempre está
presente, especialmente cuando el sistema en si no tiene una IP asignada.

127.0.0.0/8 dev lo scope link

Esta es la ruta para el dispositivo loopback.

default via 10.0.0.254 dev eth0

Esta línea es la entrada para la ruta estándar. Todos los paquetes que no puedan ser
enviados mediante las rutas anteriormente configuradas, serán enviadas al „default
gateway‟ definido en esta línea.

Dependiendo de la configuración de la maquina, el contenido de la tabla de enrutamiento


varia. En muchos de los casos, se tienen dos entradas en la tabla de rutas:

 Una ruta para la red local al que el sistema este directamente conectado.
 Una ruta para el „default gateway‟ para todos los otros paquetes.

Ing. Ricardo Ruiz


146
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Agregar rutas a la tabla de enrutamiento.

Este ítem se divide en varias tareas que nos permitirán comprender la estructura de la
tabla de enrutamiento del kernel de Linux:
Definir una ruta para la red local.

El comando que se debe ingresar para definir una ruta hacia nuestra red local (la red a la
que el sistema está directamente conectada) es:

da51:~ # ip route add 10.10.10.0/24 dev eth0


da51:~ #

El sistema en este ejemplo está en la red 10.10.10.0. La máscara de red es de 24 bits


(255.255.255.0). Todos los paquetes dirigidos hacia esta red son enviados a través del
dispositivo eth0.
Definir una ruta hacia una red diferente.

El comando que se debe ingresar para definir una ruta hacia otra red es:

da51:~ # ip route add 192.168.1.0/24 via 10.0.0.100


da51:~ #

Todos los paquetes hacia la red 192.168.1.0 son enviados a través del Gateway
10.0.0.100
Definir un ‘default gateway’

El siguiente comando define un „default gateway‟

da51:~ # ip route add default via 10.10.10.254


da51:~ #

Los paquetes que no se pueden enviar mediante la configuración previa, o mediante las
configuraciones de la tabla de enrutamiento, serán enviados al „default gateway‟
10.10.10.254.
- Borrar rutas de la tabla de enrutamiento.

Para borrar una entrada de la tabla de enrutamiento, se usa un comando similar al


siguiente:

da51:~ # ip route delete 192.168.1.0/24 dev eth0


da51:~ #

Este comando elimina la ruta a la red 192.168.1.0 asignada al dispositivo eth0.

Ing. Ricardo Ruiz


147
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Salvar la configuración de rutas en un archivo de configuración.

Como se ha mencionado anteriormente, las configuraciones hechas mediante el comando


„ip‟ son temporales y se pierden una vez que el sistema sea reiniciado. Para que estas
configuraciones sean permanentes deben ser escritos y almacenados en archivos de
configuración, tal como los ejemplos anteriores.

Las rutas a la red que está directamente conectada al dispositivo, es automáticamente


configurada cuando el dispositivo es iniciado. Las otras rutas son almacenadas en el
archivo de configuración /etc/sysconfig/network/routes.

A continuación un extracto de un típico archivo de configuración:

da51:~ # cat /etc/sysconfig/network/routes


192.168.1.0 10.0.0.100 255.255.255.0 eth-id-00:30:05:4b:98:85
default 10.10.10.254 - -
da51:~ #

Cada línea en este archivo representa una entrada en la tabla de enrutamiento.

192.168.1.0 10.0.0.100 255.255.255.0 eth-id-00:30:05:4b:98:85

Todos los paquetes enviados a la red 192.168.1.0 con mascara 255.255.255.0, son
enviados a través del Gateway 10.0.0.100 conectado en la interface eth-id-
00:30:05:4b:98:85.

default 10.0.0.254 - -

Esta entrada representa la ruta estándar.

Para aplicar los cambios definidos en el archivo de configuración, se necesita reiniciar los
dispositivos de red afectados, usando los comandos ifdown e ifup.

Tema 4: Probar las conexiones de red con comandos de Shell.


Después de configurar la red, se debe probar la conexión a la misma, estudiaremos dos
comandos que nos permiten realizar esta acción: ping y traceroute.
- Probar la conexión a la red con ping.

La herramienta „ping‟ nos permite verificar la conexión entre dos hosts. Si la información
devuelta por ping es de éxito, significa que ambos adaptadores (uno por host) están
configurados correctamente. Este comando usa paquetes ICMP, esto permite enviar
paquetes al destino y esperar una respuesta del mismo.

da51:~ # ping 10.0.0.10


PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
64 bytes from 10.0.0.10: icmp_seq=1 ttl=60 time=2.95 ms
64 bytes from 10.0.0.10: icmp_seq=2 ttl=60 time=2.16 ms
64 bytes from 10.0.0.10: icmp_seq=3 ttl=60 time=2.18 ms
da51:~ #

Ing. Ricardo Ruiz


148
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cada línea representa un paquete de datos enviado por ping. El comando seguirá
realizando esta acción hasta que el usuario presione Ctrl + c.

La salida exitosa, despliega la siguiente información:

 El tamaño del datagrama ICMP (64 bytes)


 La dirección IP objetivo (from 10.0.0.10)
 El numero del datagrama enviado (seq=1)
 El TTL del datagrama (ttl=60)
 El tiempo de respuesta (tiempo transcurrido entre el envío del paquete y la recepción
de la respuesta al mismo) (time=2.95 ms). También es llamado RTT50

Si no existe una respuesta exitosa del comando ping, debemos asegurarnos que la
configuración de las interfaces de red y el enrutamiento estén correctamente
configurados.

A continuación una tabla describiendo algunas opciones del comando ping que pueden
ser utilizados para troubleshooting:

Opción Descripción
-c cantidad Define la cantidad de paquetes a enviar. Después de enviar la cantidad
definida ping detiene su ejecución.
-I interface (i mayúscula) Especifica la interface de red a usar, esto es útil en
sistemas con muyas interfaces.
-i segundos Especifica el tiempo (en segundos) de espera entre envíos de paquetes.
El estándar es de 1 segundo.
-f Los paquetes son enviados uno tras otro en la medida que sus
respuestas llegan. Solamente root puede usar esta opción, el estándar
para los otros usuarios es de 200 milisegundos.
-l preload (L minúscula) Sirve para enviar paquetes sin esperar la respuesta del
mismo.
-n Salida numérica de la dirección IP. No se usa la resolución de nombres.
-t TTL Especifica el TTL en los paquetes a enviar.
-w segundos Especifica una interrupción en segundos, parando ping sin tener en
cuenta cuantos paquetes se enviaron o recibieron.
-b Envía paquetes a la dirección de broadcast de la red.

- Mostrar la ruta que siguen los paquetes usando traceroute.

La herramienta de diagnostico traceroute se usa principalmente para verificar la ruta


entre diferentes redes. Para lograr esta tarea, traceroute envía tres paquetes con valores
TTL en incremento al host de destino.

Traceroute usa paquetes UDP, que también son llamados datagramas.

Primero, se envían al host de destino tres datagramas con un TTL=1, luego otros tres con
un TTL=2, y sucesivamente. Este TTL se reduce en 1 cada vez que el datagrama pasa
por un enrutador.

50
Round Trip Time

Ing. Ricardo Ruiz


149
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cuando el TTL llega a cero, el datagrama es descartado y un mensaje se retorna al


emisor. Debido a que el TTL se incrementa en uno cada tres paquetes, traceroute puede
recolectar información sobre cada enrutador en el camino hacia el host destino.

Normalmente se coloca el nombre del host después del comando: traceroute


pluton.ejemplo.com, aunque también funciona si se coloca la IP destino: traceroute
200.62.75.1.

La salida del comando luce similar a la siguiente:

da51:~ # traceroute pluton.ejemplo.com


traceroute to pluton.ejemplo.com (192.168.2.1), 30 hops max, 40 byte packets
1 da1.digitalairlines.com (10.0.0.254) 0 ms 0 ms 0 ms
2 antares.ejemplo.com (192.168.1.254) 14 ms 18 ms 14 ms
3 pluton.ejemplo.com (192.168.2.1) 19 ms * 26 ms
da51:~ #

La primera línea refleja la información general sobre el comando. Cada línea enumerada
representa un enrutador encontrado en el camino (ruta) hacia el host destino.cada línea
de enrutador refleja su nombre y dirección IP.

El comando también refleja el RTT de los tres datagramas retornados por cada enrutador.
El asterisco reflejado en vez de un dato de tiempo representa que el enrutador no
respondió dicho datagrama. La última línea representa la respuesta a cada datagrama por
parte del host destino.

Tema 5: Configurar el nombre de host y la resolución de nombres.


El nombre del host y la resolución de nombres se puede configurar manualmente:

- Configurar el nombre de host y dominio.

El nombre del host se encuentra almacenado en el archivo /etc/HOSTNAME. El contenido


del archivo es similar a lo siguiente:

da51:~ # cat /etc/HOSTNAME


da51.digitalairlines.com
da51:~ #

En este caso, el archivo contiene el FQDN51 del sistema.


- Configurar resolución de nombres.

La resolución de nombres se encuentra almacenada en el archivo de configuración


/etc/resolv.conf. el contenido de este archivo es similar a lo siguiente:

51
Fully Qualified Domain Name

Ing. Ricardo Ruiz


150
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

da51:~ # cat /etc/resolv.conf


search digitalairlines.com
nameserver 10.0.0.254
nameserver 10.10.0.1
nameserver 10.0.10.1
da51:~ #

Este archivo contiene dos tipos de entradas:

 Search. El nombre de dominio de esta opción se usa para completar nombres de host
incompletos. Por ejemplo, si se realiza un nslookup al host da50, el nombre es
completado automáticamente a su FQDN quedando asi: da50.digitalairlines.com.
 Nameserver. Cada entrada iniciada con „nameserver‟ es seguida de una dirección IP,
esta debe ser la dirección IP de un servidor DNS, se pueden configurar hasta 3 DNS,
si el primero falla, el siguiente en la lista es usado.

Ing. Ricardo Ruiz


151
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 12: Administrar Procesos y Servicios de Linux


En esta sección estudiaremos como visualizar y administrar procesos y como programar
tareas en Linux.

Tema 1: Visualizar y administrar procesos.


Debemos estudiar varios temas antes de pode decir que comprendemos el proceso de
administración de procesos en Linux.
- Definición de procesos

Los siguientes términos son usados para describir procesos en Linux:

 Programa. Un conjunto de comandos estructurados y almacenados en un archivo


ejecutable en el sistema de archivos de Linux. Un programa puede ser ejecutado para
crear un proceso.
 Proceso. Es un programa que está cargado en la memoria y está siendo ejecutado
por el CPU.
 Proceso de usuario. Es un proceso lanzado por un usuario desde la terminal o desde
el entorno grafico.
 Servicio (demonio). Es un proceso de sistema que no está asociado a una terminal o
entorno grafico. Es un proceso o grupo de procesos que espera un evento para activar
una acción por parte de un programa. En servicios basados en red, este evento es
una conexión de red. Otros servicios, como „cron‟ o „atd‟, son basados en tiempo y
ejecutan ciertas tareas en determinados ciclos de tiempo.

El siguiente esquema muestra la relación entre los procesos demonio y los procesos de
usuario.

En este ejemplo, durante el arranque del sistema Linux, el proceso „init‟ ejecuta muchos
demonios (servicios) incluyendo un demonio llamado „user login‟. Después que el usuario
se autentica en una consola de texto, un Shell le permite iniciar procesos manualmente
(procesos de usuario).

Ing. Ricardo Ruiz


152
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 ID del proceso (PID). Es un identificador único asignado a cada proceso cuando este
es iniciado.
 Proceso hijo. Es un proceso que es iniciado por otro (este se denomina proceso
padre).
 Proceso padre. Es un proceso que ejecuta otros procesos (ver definición anterior).
 ID del proceso padre. Es el PID del proceso padre que ejecuto el proceso actual.

El siguiente esquema muestra la relación entre los procesos padre e hijos y sus PID.

En este ejemplo, el Proceso #1 tiene asignado un PID igual a 134. Este proceso ejecuta al
Proceso #2 que tiene asignado el PID 291 y al Proceso #3 que tiene asignado el PID 348.
Debido a que el Proceso #1, ejecuta al Proceso #2 y #3, estos son considerados procesos
hijos del Proceso #1, por tanto el PPID de estos es el mismo PID del Proceso #1.
- Tareas y procesos

En Linux se usa un identificador de tareas (normalmente llamado job ID) para referirse a
los procesos que son ejecutados desde la línea de comandos. El job ID es un valor
numérico asociado a un Shell, que identifica a un programa cuando este es ejecutado por
un Shell.

Independiente del Shell, cada proceso es identificado usando un PID, que es único en
todo el sistema. Todos las tareas tienen un PID, pero no todos los procesos tienen un job
ID asociado.

El PID=1 siempre es asociado al proceso de inicio. Este es el primer proceso iniciado en


el sistema y crea a otros procesos, estos a su vez pueden generar otros procesos
adicionales.

Ing. Ricardo Ruiz


153
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si el valor máximo para los PID es asignado a un proceso (PID=17494), el siguiente


proceso tendrá asociado un valor PID inferior a este. Esto se debe a que los procesos se
ejecutan en tiempos diferentes y el PID lo asigna el sistema de manera incremental, pero
cada vez que un proceso termina su ejecución deja su PID disponible para ser asignado a
otros procesos.

Cuando se realizan tareas como cambiar el nivel de prioridad a un programa en ejecución,


se usa el PID en vez de su job ID.

Cuando se requiere cambiar un proceso de segundo plano al primer plano, se usa el job
ID.
- Administrar procesos en primer y segundo plano

El entorno de Shell permite ejecutar procesos en primer o segundo plano.

Cuando se ejecuta un proceso en primer plano desde una terminal, este se ejecuta hasta
completarse, en otras palabras, no retornamos al prompt hasta que la ejecución del
proceso se finalice. Un proceso se ejecuta en segundo plano cuando se ejecuta el
proceso y se regresa al prompt sin que el proceso finalice su ejecución.

Existen procesos que pueden cambiarse del primer al segundo plano (y viceversa) bajo
las siguientes circunstancias:

 El proceso debe ser ejecutado en una ventana terminal o consola Shell.


 El proceso no requiere ningún tipo de entrada desde la ventana terminal o consola
Shell.

Si el proceso cumple estas condiciones, se puede ejecutar en segundo plano.

NOTA: los procesos que requieren algún tipo de entrada, también pueden ser movidos al
segundo plano, pero cuando este necesite de dicha entrada, su ejecución se suspenderá
hasta ser movido a primer plano y así proveerle de la entrada necesaria.

Por ejemplo, si se ejecuta el programa xeyes, este se ejecuta en primer plano. Si


presionamos Ctrl + z el programa se detendrá (sin finalizar), esto nos permitirá retornar al
prompt. Si ahora ejecutamos el programa bg entonces xeyes reinicia su ejecución en
segundo plano:

da51:~ # xeyes
[1]+ Stopped xeyes
da51:~ # bg
[1]+ xeyes &
da51:~ #

El símbolo „&‟ que aparece al final del nombre del proceso después de ejecutar „bg‟, nos
indica que dicho proceso ya está siendo ejecutado en segundo plano.

Si lo que necesitamos es ejecutar el programa directamente en segundo plano, sin hacer


uso del camino anteriormente mencionado, debemos agregar un „&‟ al programa al
momento de ser ejecutado en el Shell:

Ing. Ricardo Ruiz


154
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

da51:~ # xeyes &


[2] 4351
da51:~ #

En este ejemplo, se visualizan tanto el job ID ([2]) como el PID (4351) del proceso que se
envió al segundo plano.

Cada proceso iniciado desde el Shell tendrá asociado un job ID para el control de tareas
del propio Shell. El comando jobs mostrara la lista de tareas en ejecución:

da51:~ # jobs
[1]+ Stopped xeyes
[2] Running xeyes &
[4]- Running sleep 99 &
da51:~ #

En este ejemplo el proceso con el job ID 3 a finalizado. El proceso 2 y 4 están en


ejecución y en segundo plano, y el proceso 1 está detenido.

El siguiente proceso que se ejecute en el Shell tendrá el job ID en 5 y así sucesivamente.

Un proceso detenido no solamente puede seguir su ejecución en segundo plano usando


el comando bg, también puede llamarse al primer plano usando el comando fg job_ID, tal
como se muestra en el ejemplo:

da51:~ # fg 1
xeyes
[4]- Done sleep 99

Al mismo tiempo Shell informa la finalización de un proceso ejecutándose en segundo


plano. En este ejemplo Shell informa que sleep 99 finalizo correctamente (Done), si en
vez de este mensaje aparece Terminated significara que al proceso se le ha pedido
finalizar, si aparece Killed nos indicara que se forzó la finalización del proceso.
- Visualizar y priorizar procesos

Adicionalmente a las tareas en ejecución en primer y segundo plano, se pueden visualizar


información sobre los procesos y asignarles prioridades, usando los comandos: ps,
pstree, nice, renice, top.
Comando ‘ps’

Con este comando se pueden visualizar procesos en ejecución. Este comando tiene una
serie de opciones de las cuales se describirán las más usadas:

Opción Descripción
a Muestra todos los procesos.
x Muestra los procesos ejecutados desde la terminal y también lo que no se
ejecutaron en una terminal.

Ing. Ricardo Ruiz


155
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

-w, w Provee detalles a lo ancho de la terminal


u Despliega en formato orientado al usuario
f Lista los procesos de manera jerarquica.
-l, l (L minúscula) Formato largo

A continuación algunos ejemplos de „ps‟

da51:~ # ps
PID TTY TIME CMD
3103 pts/0 00:00:00 bash
3129 pts/0 00:00:00 sleep
3130 pts/0 00:00:00 ps
da51:~ # ps axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
...
0 1013 4170 4169 15 0 3840 1760 wait4 Ss pts/0 0:00 -bash
0 1013 4332 4170 15 0 4452 1812 finish T pts/0 0:00 xeyes
0 1013 4351 4170 15 0 4452 1812 schedu S pts/0 0:01 xeyes
0 1013 4356 4170 17 0 2156 652 - R+ pts/0 0:00 ps axl
da51:~ # ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
geeko 4170 0.0 0.3 3840 1760 pts/0 Ss 12:10 0:00 -bash
geeko 4332 0.0 0.3 4452 1812 pts/0 T 12:59 0:00 xeyes
geeko 4351 0.3 0.3 4452 1812 pts/0 S 13:01 0:03 xeyes
geeko 4375 0.0 0.1 2156 680 pts/0 R+ 13:19 0:00 ps aux
da51:~ #

En este ejemplo se pueden observar tres formas de visualizar información con el comado
„ps‟ y algunas opciones.

A continuación una breve descripción de las columnas mostradas por este comando:

Columna Descripción
UID ID del Usuario
PID ID del Proceso
PPID ID del Proceso Padre
TTY Numero de terminal
PRI Prioridad
NI Influencia la prioridad dinámica
STAT Estado de proceso actual
TIME Tiempo de uso en CPU
COMMAND Nombre del comando

Estos y otros campos son explicados con mas detalles en los manuales de „ps‟. El campo
STAT puede tener uno de los siguientes códigos:

Código Descripción
R El proceso está en ejecución
S El proceso está esperando un evento externo
D El proceso no puede ser terminado por el momento
T El proceso está suspendido
X El proceso esta „muerto‟
Z El proceso finalizo, pero está retornando valores que reinician el proceso

Ing. Ricardo Ruiz


156
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se puede formatear la salida del comando:

da51:~ # ps ax --format 'cputime %C, nice %n, name %c'


cputime %CPU, nice NI, name COMMAND
cputime 0.0, nice 0, name bash
cputime 0.0, nice 0, name xeyes
cputime 0.3, nice 0, name xeyes
cputime 0.0, nice 0, name ps
da51:~ #

Comando ‘pstree’

Con el comando „pstree‟, se puede visualizar la lista de procesos en una estructura de


árbol. Esto ofrece un panorama de la jerarquía de procesos.

Para finalizar una serie de procesos, se debe encontrar el proceso padre apropiado y
finalizarlo. La opción –p despliega el PID de los procesos y la opción –u despliega el UID
de los mismos.

Debido a que la lista de procesos es extremadamente larga, se debe ejecutar el comando


asi: pstree –up | less, con esto se visualizara parte por parte el árbol de procesos.
Comandos ‘nice’ y ‘renice’

Linux siempre intenta distribuir el tiempo uso del CPU de manera equilibrada. Aun así se
puede asignar a los procesos más o menos tiempo de cómputo. Para esta labor existe el
comando nice:

da51:~ # nice –n +5 sleep 99


da51:~ #

Este comando asigna a un proceso un valor nice específico que afecta la prioridad del
proceso (debido al incremento o decremento). Si no se ingresa un valor nice, el proceso
es iniciado con el valor +10.

La columna NI (ver ejemplo de ps), contiene el valor nice de cada proceso. El valor
estándar 0 determina que el proceso es neutral.

Se puede asignar valores nice en el rango [-20,19]. A menor valor mayor la prioridad, por
ejemplo, un proceso con valor nice -20, se ejecuta con mayor prioridad que otro con valor
nice 19 (más baja prioridad).

El nivel nice es usado por el organizador de tareas para determinar con cuanta frecuencia
un proceso es atendido por el CPU.

Solamente al root se le permite iniciar procesos con un valor negativo (nice –n -3 sleep
99), si un usuario normal trata de hacer esta acción, un mensaje de error se desplegará.

También se puede cambiar la prioridad a los procesos que están en ejecución, esto se
hace con el comando renice: „renice 5 1712‟

Ing. Ricardo Ruiz


157
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En el ejemplo anterior, el comando asigna al proceso con PID 1712 un nuevo valor nice
(5).

Solamente el root puede decrementar los valores nice de procesos en ejecución, los otros
usuarios solo pueden incrementarlos.
Comando ‘top’

El comando top permite visualizar procesos de manera continua, en una lista que se
actualiza en un periodo corto de tiempo. Esto provee una vista en tiempo real de los
procesos ejecutándose en el sistema, este comando también puede ser utilizado para
asignar nuevos valores nice a los procesos o para finalizarlos.

La información mostrada por top puede ser filtrada por usuario u ordenada por medio de
un campo específico. La prioridad de un proceso se modifica ingresando „r‟ durante la
ejecución de top. Mismas restricciones del comando renice.

La lista desplegada es ordenada por el tiempo de cómputo y se actualiza cada 3


segundos. Para terminar el comando se usa „q‟.

La siguiente tabla explica los campos estándar de este comando:

Columna Descripción
PID ID del Proceso
USER Nombre del Usuario
PR Prioridad
NI Valor nice
VIRT Imagen Virtual (Kb)
RES Espacio Residente (Kb)
SHR Espacio de Memoria Compartida (Kb)
S Estado del Proceso
%CPU % de uso del CPU
%MEM % de uso de Memoria
TIME+ Tiempo en CPU
COMMAND Nombre del comando

Para obtener una lista completa de los comandos disponibles una vez se está ejecutando
el comando „top‟, se usa el símbolo „?‟ o „h‟, la tabla siguiente muestra los comandos de
top más comunes:

Comando Descripción
r Asigna un nuevo valor nice a un proceso en ejecución.
k Envía a un proceso en ejecución la señal de finalización.
N Ordena por PID
P Ordena por uso de CPU
i Muestra únicamente los procesos non-idle

Las opciones se usan para modificar el comportamiento de top, por ejemplo top –d 5
modifica la espera de actualización (el estándar es 3), en este caso, se esperará 5
segundos antes de la actualización.

Ing. Ricardo Ruiz


158
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El comando top –b es muy útil si se necesita almacenar la salida de top en un archivo o


pasarla como parámetro a otro proceso.

El comando top –n 3 provoca que top detenga su ejecución en la 3ra actualización. Esta
opción es especialmente útil en combinación con la opción „-b‟, por ejemplo top –b –n 1.
- Fin de un proceso

Los procesos normalmente finalizan su ejecución cuando finalizan las tareas que tienen
programadas de manera exitosa. En algunos casos, algunos procesos, se comportan de
manera inesperada consumiendo recursos y haciendo que todo el sistema se comporte
de manera errada. Es para estos casos que existen en Linux procesos que permiten
detener y finalizar otros procesos, aparte por supuesto de la orden „k‟ dentro de la
ejecución del comando „top‟
Los comandos ‘kill’ y ‘killall’

Se puede usar los comandos kill y killall para terminar un proceso. El comando killall
„mata‟ todos los procesos que tengan el mismo nombre del indicado, el comando kill
„mata‟ solamente un proceso, que debe ser pasado como parámetro del comando.

El comando kill usa como parámetro el PID del proceso a detener, en cambio killall usa
como parámetro el nombre del comando.

Por ejemplo, si el comando xeyes es ejecutado y está siendo ejecutado con el PID 18734
y se necesita detener el proceso (por cualquier motivo), se necesitara el comando kill
18734 o el comando killall xeyes con cualquier variante el comando xeyes detendrá su
ejecución.

Un proceso puede realizar una de las siguientes acciones cuando recibe la señal de
finalización por parte de estos comandos:

 Capturar la señal y reaccionar a la misma. Por ejemplo, un editor puede cerrar un


archivo apropiadamente antes de finalizarse.
 Ignorar la señal si la función de la misma no existe.

En todo caso, los procesos no tienen control sobre las siguientes dos formas de
detenerlos (las señales siguientes forman parte del kernel):

 „kill –SIGKILL PID‟ o „kill -9 PID‟


 „kill –STOP PID‟ o „kill -19 PID‟

Estas señales provocan que los procesos finalicen inmediatamente (SIGKILL) o se


detengan (STOP52).

Se debe usar la señal SIGKILL con precaución, debido a que el sistema operativo cierra
todos los archivos que estén abiertos sin salvar cambios, los datos en el buffer no son
procesados. Esto significa que algunos procesos serán cerrados en un estado indefinido y
su reinicio puede ser algo complicado de realizar.

52
Para una lista completa de las señales, use el comando kill –l o man 7 signal.

Ing. Ricardo Ruiz


159
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En la tabla siguiente se muestran las señales más comúnmente utilizadas:

Número Nombre Descripción


1 SIGHUP Recargar el archivo de configuración.
2 SIGINT Interrupción desde el teclado (Ctrl + c).
9 SIGKILL Eliminar el proceso
15 SIGTERM Finalizar el proceso inmediatamente (terminar el proceso de
manera controlada y limpia de ser posible)
18 SIGCONT Continuar el proceso detenido con STOP
19 STOP Detener el proceso

El estándar de estos comandos (si no se coloca la señal de finalización) es SIGTERM.

La manera más apropiada para finalizar un proceso es la siguiente:

1. Enviar al proceso la señal SIGTERM, mediante el comando kill PID. Esto es el


equivalente a kill –SIGTERM PID o kill -15 PID. También se puede usar el comando
killall nombre_proceso.
2. Esperar un momento para que el proceso sea terminado apropiadamente.
3. Si el proceso aun esta activo enviarle la señal SIGKILL con el comando
a. kill –SIGKILL PID o el comando
b. kill -9 PID
- Servicios (demonios)

Es un proceso de sistema que no está asociado a una terminal o entorno grafico. Es un


proceso o grupo de procesos que espera un evento para activar una acción por parte de
un programa. En servicios basados en red, este evento es una conexión de red. Otros
servicios, como „cron‟ o „atd‟, son basados en tiempo y ejecutan ciertas tareas en
determinados ciclos de tiempo.

Estos servicios basados en red, crean un listener en un puerto TCP o UDP donde ellos
fueron iniciados, usualmente durante el inicio del sistema. Este listener espera que
aparezca tráfico de red en el puerto asignado, y cuando se detecta tráfico, el programa lo
procesa como entradas, generando salidas que son enviadas al emisor.

Por ejemplo, cuando un navegador web conecta al servidor web, este envía una solicitud
al servidor web, el servidor web procesa la solicitud y devuelve una respuesta. La
respuesta entonces es tomada por el navegador y la convierte en una página legible por
humanos.

Muchos servicios basados en red trabajan de manera similar, pero los datos no siempre
viajan en texto plano como en el ejemplo anterior.
- Administrar servicios

Los demonios se ejecutan en segundo plano y son iniciados generalmente cuando el


sistema arranca. Estos hacen posible que muchos servicios estén disponibles al usuario
cuando el sistema termina de ejecutar los procesos de arranque.

Ing. Ricardo Ruiz


160
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Esta es la razón por la que los demonios sean independientes de una terminal (símbolo „?‟
en la columna TTY del comando „ps x‟).

En muchos casos se puede reconocer un proceso demonio ya que al final del nombre
llevan una „d‟, por ejemplo: sshd, syslogd, named, httpd, etc. También existen otros
demonios en la que esta regla no se aplica, por ejemplo: cron y portmap.

Existen dos tipos de demonios:

 Demonios controlados por señal. Estos se activan cuando existe una tarea que le
corresponda (por ejemplo cupsd).
 Demonios controlados por intervalo. Estos siempre se activan en ciertos intervalos
(por ejemplo cron o atd).

Los demonios tienen sus scripts almacenados en /etc/init.d/. Cada script puede ser
controlado y ejecutado con los siguientes parámetros:

Parámetro Descripción
start Inicia el servicio
stop Detiene el servicio
reload Vuelve a cargar los archivos de configuración del servicio, o detiene el
(restart) servicio y vuelve a iniciarlo.

Se puede iniciar los servicios ingresando la ruta completa (/etc/init.d/sshd start), o si existe
un enlace en /usr/sbin/ o en /sbin/ (en estos directorios se encuentran los programas
ejecutables de estos demonios) se puede usar rcsshd start.

Los archivos de configuración pueden encontrarse en el directorio /etc/ o en un


subdirectorio de este.

Algunos demonios importantes son:

 Cron. Inicia otros procesos a una hora específica.


 Cupsd. El demonio del servicio de impresión.
 Httpd. El demonio del servidor web apache2.
 Sshd. Habilita comunicación segura en una red insegura (secure Shell).
 Syslog-ng. Envía los eventos del sistema al directorio /var/log/.

Tema 2: Programar tareas.


Muchos administradores y usuarios de entornos Linux, encuentran necesario ejecutar
ciertas tareas regularmente, por ejemplo, actualización o sincronización de bases de
datos, realizar respaldos de seguridad, limpiar la cache de la memoria, etc.
- Programar una tarea con ‘cron’

Se puede programar la ejecución de tareas de tal manera que se ejecuten regularmente,


este es el objetivo del servicio „cron‟ (/usr/sbin/cron).

Ing. Ricardo Ruiz


161
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este servicio verifica a cada minuto con el fin de ejecutar las tareas definidas para ese
momento.
Tareas del sistema.

Se puede controlar las tareas del sistema desde el archivo /etc/crontab. Después de la
instalación solo hay una tarea que corre los script contenidos en los siguientes directorios
en los intervalos correspondientes:

Directorio Intervalo
/etc/cron.hourly Tareas que se ejecutan a cada hora.
/etc/cron.daily Tareas que se ejecutan diariamente.
/etc/cron.weekly Tareas que se ejecutan semanalmente.
/etc/cron.monthly Tareas que se ejecutan mensualmente.

Se pueden agregar líneas a este archivo, pero no se debe eliminar las líneas creadas
durante la instalación.

Cuando llamados un script desde el archivo /etc/crontab, no solamente nos aseguramos


que es ejecutado en los intervalos específicos, sino que también se ejecuta
posteriormente en caso que no se ejecutara en el intervalo indicado.

Por ejemplo, si un script no se ejecuta en un intervalo definido, debido a que la


computadora estuvo apagada toda la noche, el script se ejecuta automáticamente usando
las configuraciones y ajustes almacenados en el archivo /etc/crontab. Esto es válido para
tareas definidas en los directorios antes señalados.

En una instalación estándar, solamente el directorio /etc/cron.daily/ contiene scripts,


veamos una salida de „ls‟ para ver estos:

da51:~ # ls -l /etc/cron*
-rw------- 1 root root 11 2006-05-08 20:47 /etc/cron.deny
-rw-r--r-- 1 root root 255 2006-05-08 20:47 /etc/crontab

/etc/cron.d:
insgesamt 0

/etc/cron.daily:
insgesamt 32
-rwxr-xr-x 1 root root 393 ... logrotate
-rwxr--r-- 1 root root 948 ... suse-clean_catman
-rwxr-xr-x 1 root root 1875 ... suse.de-backup-rc.config
-rwxr-xr-x 1 root root 2059 ... suse.de-backup-rpmdb
-rwxr-xr-x 1 root root 1320 ... suse.de-clean-tmp
-rwxr-xr-x 1 root root 371 ... suse.de-cron-local
-rwxr--r-- 1 root root 1196 ... suse-do_mandb

/etc/cron.hourly:
insgesamt 0

/etc/cron.monthly:
insgesamt 0

/etc/cron.weekly:
insgesamt 0

da51:~ #

Ing. Ricardo Ruiz


162
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Esta salida varia en dependencia de la distribución de Linux instalada en el sistema, en


este ejemplo tenemos instalada una distribución SUSE de Linux.

Estos scripts como podrá notarse son propios del sistema operativo, y cambiaran
(sobrescribirán) al momento de una actualización del mismo.

Otros archivos que ejecutan tareas de sistema están almacenados en /etc/cron.d/.


Aunque tienen el mismo formato que /etc/crontab, las tareas definidas en /etc/cron.d/ no
se ejecutaran automáticamente en caso de no haberse ejecutado en el tiempo
especificado.

Se puede especificar a los usuarios que pueden crear tareas con cron usando el archivo
/var/spool/cron/allow y a los que no se tiene permitido crear /var/spool/cron/deny, y estos
se evalúan en este orden. Si estos archivos no existen, solamente el root podrá definir
trabajos con cron.
Tareas de usuario.

Las tareas de los usuarios están almacenadas en el directorio /var/spool/cron/tabs/, en


archivos que hacen match con el nombre del usuario. Estos archivos son propiedad del
root, aunque sea que los usuarios no root los creen.

Para crear tareas programadas se usa el comando crontab.

La siguiente tabla describe las opciones de este comando:

Opción Descripción
-e Crear o editar tareas, se emplea el editor „vi‟.
file El archivo especificado contiene una lista de tareas con el formato apropiado y
reemplaza cualquier archivo crontab existente para el usuario.
-l Despliega las tareas programadas actuales.
-r Elimina todas las tareas.

Cada línea del archivo contiene 6 campos que definen la tarea programada. Los primeros
5 campos definen el tiempo en el que se ejecutara la tarea, y el ultimo campo define a la
tarea en sí, que puede ser un comando o script. Una vez que se programa la tarea, la
interacción con el usuario no es posible.

Campo Rango
Minutos 0 - 59
Horas 0 - 23
Día del Mes 1 - 31
Mes 0 - 12
Día de la Semana 0-7

La siguiente lista es una pequeña guía para configurar estos campos:

 Si se necesita ejecutar una tarea en cada momento, se debe ingresar un asterisco (*)
en el campo que le corresponda.

Ing. Ricardo Ruiz


163
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Se pueden configurar múltiples entradas en un mismo campo, simplemente se separa


con una coma (,).
 Se puede especificar un rango definiendo el inicio y el fin separado por un guion (-).
 Se pueden especificar saltos de tiempo agregando „/n‟ donde „n‟ es el tamaño salto.
 Se puede especificar los meses y los días de la semana por las primeras tres letras de
su nombre, pero cuando se usan las letras no se pueden definir las listas antes
comentadas.
 Los números que representan los días de la semana, inician en 0 para los domingos y
recorren la lista uno a uno, llegando al 7 que representa al domingo también, por
ejemplo el número 3 representa al Miércoles y el 6 representa al sábado.

La siguiente línea de un crontab es un ejemplo de la guía anterior:

Campo Campo Campo Campo Campo Campo #6


#1 #2 #3 #4 #5
*/10 8-17 * * 1-5 fetchmail mailserver

En el crontab se refleja así:

*/10 8-17 * * 1-5 fetchmail mailserver

En este ejemplo, de lunes a viernes (1-5) cada 10 minutos (*/10) entre las 8:00 y las 17:00
horas (8-17), se debe ejecutar el comando fetchmail que buscan o solicita los nuevos
correos entrantes del servidor de correos mailserver.

Ing. Ricardo Ruiz


164
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 13: Monitorear un Servidor Linux


En este capítulo estudiaremos como monitorear un sistema Linux, como configurar los
eventos del sistema y como monitorear logins.

Tema 1: Monitorear un sistema Linux.


Todo administrador de sistema tiene preguntas similares a las siguientes:

 ¿El sistema arranco normalmente?


 ¿Cuál es la versión del kernel?
 ¿Qué servicios están ejecutándose?

En este tema se presentaran herramientas que ayudan a descubrir información sobre el


hardware y el sistema Linux instalado.
- Información del log de arranque.

Cuando Linux arranca, muchas líneas de código pasan en la pantalla, estas están
diseñadas para una lectura rápida, si ocurre algún error en el inicio del sistema, es muy
posible que no se pueda visualizar o leer. Estos mensajes son almacenados en el buffer
del kernel, y como la capacidad del buffer es limitada, las entradas más viejas son
eliminadas al momento de que nuevas entradas son añadidas. Con el objetivo de
mantener una bitácora de estos mensajes, estos se almacenan en /var/log/boot.msg.
Pero a diferencia de los mensajes en pantalla durante el proceso de arranque a cada
línea en pantalla se agregan muchas en este archivo (más detalles). El comando para
visualizar el buffer del kernel es dmesg y su salida es similar a lo siguiente:

da51:~ # dmesg | less


Linux version 2.6.16.14-6-smp (geeko@buildhost) (gcc version 4.1.0 (SUSE Linux)) #1 SMP Tue May
9 12:09:06 UTC 2006
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000001fffd000 (usable)
BIOS-e820: 000000001fffd000 - 000000001ffff000 (ACPI data)
BIOS-e820: 000000001ffff000 - 0000000020000000 (ACPI NVS)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
511MB LOWMEM available.
found SMP MP-table at 000f6e60
On node 0 totalpages: 131069
DMA zone: 4096 pages, LIFO batch:0
DMA32 zone: 0 pages, LIFO batch:0
Normal zone: 126973 pages, LIFO batch:31
HighMem zone: 0 pages, LIFO batch:0
DMI 2.0 present.
Using APIC driver default
ASUS P2B-DS detected: force use of acpi=ht
lines 1-22

da51:~ #

Ing. Ricardo Ruiz


165
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La salida de dmesg muestra los mensajes generados durante el proceso de inicio del
hardware por el kernel o por los módulos del kernel.

El archivo /var/log/boot.msg contiene información adicional a la que se puede desplegar


con el comando dmesg. Esta información incluye datos como los mensajes de varios
scripts generados en tiempo de ejecución y sus códigos de salida, tal como sigue:

...
System Boot Control: The system has been set up
Skipped features: boot.cycle
System Boot Control: Running /etc/init.d/boot.local
done<notice>killproc: kill(874,3)
INIT: Entering runlevel: 5
Boot logging started on /dev/tty1(/dev/console) at Wed May 24 10:31:51
2006
Master Resource Control: previous runlevel: N, switching to runlevel: 5
Loading AppArmor profiles - AppArmor already loaded with profiles. Not
loading profiles. warning
Initializing random number generatordone
<notice>startproc: execve (/usr/bin/dbus-daemon) [ /usr/bin/dbus-daemon
--system ], [ CONSOLE=/dev/console ROOTFS_FSTYPE=reiserfs TERM=linux
SHELL=/bin/sh ROOTFS_FSCK=0 LC_ALL=POSIX INIT_VERSION=sysvinit-2.86
REDIRECT=/dev/tty1 COLUMNS=123 PATH=/bin:/usr/bin:/sbin:/usr/sbin
vga=0x317 RUNLEVEL=5 PWD=/
SPLASHCFG=/etc/bootsplash/themes/SuSE-SLES/config/bootsplash-1024x768.cfg
PREVLEVEL=N LINES=44 SHLVL=2 HOME=/ splash=silent SPLASH=yes
ROOTFS_BLKDEV=/dev/sda2 _=/sbin/startproc DAEMON=/usr/bin/dbus-daemon ]
acpid: no ACPI support in kernelskipped
Starting D-BUS daemondone
...

Estos mensajes adicionales pueden ser útiles para troubleshooting.

Se puede usar YaST para visualizar el contenido del archivo: YaST > Misceláneos >
Visualizar Start-Up Log. O iniciar el modulo directamente desde una consola (solo root):
yast2 view_anymsg.
- Información del hardware (/proc/).

Este directorio contiene mucha información del sistema en ejecución, incluyendo


información de hardware almacenado en el espacio de memoria del kernel. Por ejemplo,
si ejecutamos el comando: cat /proc/cpuinfo, la salida generada nos mostrara
información como el modelo de CPU y su tamaño de cache.

Se puede visualizar información disponible usando comandos tales como: „cat‟, „more‟, o
„less‟ agregando el nombre del archivo (ejemplo: cat /proc/cpuinfo).

A continuación una tabla en la que se describen los archivos que son consultados con
mayor frecuencia:

Archivo Descripción
/proc/devices Visualiza los dispositivos usados en la instalación actual de
Linux.
/proc/cpuinfo Visualiza información del procesador.
/proc/ioports Visualiza los puertos I/O de su equipo. Los puertos I/O son las

Ing. Ricardo Ruiz


166
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

direcciones de varios dispositivos de hardware.


/proc/interrupts Visualiza los IRQ asignados al sistema Linux en ejecución.
/proc/dma Visualiza los canales DMA53 usados en el sistema.
/proc/bus/pci/devices Visualiza la información de los PCI54
/proc/scsi/scsi Visualiza un resumen de la información SCSI55

- Información del hardware (herramientas de la línea de comandos).

A continuación se detallan algunas utilidades que se pueden usar desde el Shell del
sistema:

 Comando hwinfo. Este comando genera y despliega una lista de información


específica sobre los dispositivos instalados en el sistema. Para una mejor
comprensión se puede combinar con el comando „less‟ usando „|‟: hwinfo | less.
 Comando hdparm. Este comando (con la opción correcta), permite visualizar
información sobre el disco duro. Para una lista de opciones disponibles ejecute el
comando con la opción „-h‟.
 Comando fdisk. Este comando es usado principalmente para administrar la tabla de
particiones de un sistema Linux. Pero con la opción „-l‟ se puede visualizar la lista de
particiones, con la opción „-s‟ se visualiza el tamaño de la partición.
 Comando iostat. Este comando despliega estadísticas de CPU y de los dispositivos
I/O. Este programa es parte del paquete sysstat. Este comando genera reportes que
pueden ser utilizados para modificar la configuración del sistema para un mejor
balance de los dispositivos I/O o balancear los discos físicos.
 Comando lspci. Este comando despliega información sobre los buses PCI.
 Comando siga56. Este comando recolecta información varia y genera la salida en
formato HTML o texto ASCII.
 Comando sitar. Prepara la información del sistema usando Perl, leyendo el sistema
de archivos /proc. La salida es escrita en HTML, LaTeX, y doc-book-xml simplificado.
- Información del sistema y procesos (herramientas de la línea de comandos).

Aparte de „ps‟ y „top‟, cubiertos en el capitulo “Administrar procesos y servicios”, existen


otros comandos que se usan para visualizar información de sistema.
Comando uptime

El comando „top‟ nos muestra información de sistema en el encabezado, muchas veces


solo necesitamos información específica sin requerir ejecutar esta aplicación.

Por ejemplo, el comando uptime nos permite visualizar la hora actual, la cantidad de
tiempo que el sistema a estado activo, la cantidad de usuarios en el sistema, el porcentaje
de tareas en la cola de ejecución durante los últimos 1, 5 y 15 minutos

53
Direct Memory Access
54
Peripheral Component Interconnect
55
Small Computer System Interface
56
System Information GAthering

Ing. Ricardo Ruiz


167
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

.
da51:~ # uptime
1:13pm up 2:42, 1 user, load average: 0.02, 0.12, 0.09
da51:~ #

Comando netstat

Mientras el comando „ps‟ provee información a nivel de procesos, se puede usar netstat
para visualizar la salida en los puertos de red que estén ofreciendo algún servicio y cuya
conexión este en estado „establecido‟ tal como se muestra en el ejemplo:

da51:~ # netstat -patune


Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 149.44.87.34:427 0.0.0.0:* LISTEN 0 6812 2723/slpd
tcp 0 0 127.0.0.1:427 0.0.0.0:* LISTEN 0 6811 2723/slpd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 6774 2689/portmap
tcp 0 0 127.0.0.1:2544 0.0.0.0:* LISTEN 0 6862 2714/zmd
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 0 8614 2858/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 7529 3055/master
...
da51:~ #

Las opciones siguientes sirven para optimizar la salida de este comando:

Opción Descripción
-p Muestra los procesos (solo la puede usar root)
-a Muestra todas las conexiones (listening y no listening)
-t Muestra información TCP
-u Muestra información UDP
-n No resuelve nombres de host
-e Despliega información adicional
-r Despliega información de enrutamiento

Comando uname

Este comando sirve para visualizar la versión actual del kernel de Linux:

da51:~ # uname -a
Linux da51 2.6.16.14-6-smp #1 SMP Tue May 9 12:09:06 UTC 2006 i686 i686 i386 GNU/Linux
da51:~ #

Comando xosview

Desde el escritorio grafico, se puede ejecutar la utilidad xosview para desplegar el estado
de muchos parámetros del sistema, tal como uso del CPU, promedio de carga, uso de la
memoria, espacio swap usado, uso de la red, interrupciones y estados de los puertos en
serie.

Para ejecutar esta utilidad, desde la ventana terminal ejecutar xosview &.

Ing. Ricardo Ruiz


168
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cada parámetro es desplegado en una barra horizontal separada por regiones con código
de color, cada región representa el porcentaje de uso de este recurso.
- Monitor de espacio de disco.

Los comandos „df‟ y „du‟ que ya hemos estudiado nos proporcionan información de las
particiones.

El equivalente de „df‟ en el escritorio grafico lo encontramos en: Computadora > Mas


Aplicaciones > Sistema, activando la pestaña „Dispositivos‟.

Tema 2: Usar el servicio de eventos del sistema.


En un sistema Linux, existen muchos logs que sirven para monitorear varios aspectos de
la operación de un sistema. Muchos servicios crean sus propios archivos de bitácora, y el
nivel del detalle pueden ser ajustados en base de los requerimientos de cada servicio.
Aun asi la mayor parte de los eventos son almacenados en archivos en la carpeta
/var/log/.

Estas bitácoras de eventos se usan generalmente para troubleshooting y para propósitos


de seguridad del sistema.
- El demonio syslog (syslog-ng)

Este demonio es usado por muchos servicios para administrar las bitácoras del sistema.
La ventaja de usar un servicio único es que todas las bitácoras pueden ser administradas
desde un archivo de configuración único.

El demonio syslog-ng tiene la ventaja (sobre syslogd) de filtrar los mensajes basándose
no solamente en los medios y prioridades si no también en el contenido de cada mensaje.

Este demonio acepta mensajes provenientes de los servicios del sistema, y dependiendo
de su configuración, de otros hosts y servicios definidos en los archivos de configuración
/etc/sysconfig/syslog y /etc/syslog-ng/syslog-ng.conf. Este último es creado por YaST
durante la instalación del sistema.
/etc/sysconfig/syslog

Este archivo contiene los parámetros generales de manera similar al demonio syslogd.

El conjunto de parámetros en este archivo incluye conmutación entre syslogd y syslog-ng,


niveles de bitácoras del kernel, parámetros para klogd y cual demonio syslog se debe
usar.

El conjunto de parámetros en este archivo, son evaluados en el inicio del sistema por el
script /etc/init.d/syslog. Además, en la distribución SUSE, SuSEconfig usa este erchivo
para agregar canales al archivo /etc/syslog-ng/syslog-ng.conf cuando se genera desde
/etc/syslog-ng/syslog-ng.conf.in.

Ing. Ricardo Ruiz


169
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

A continuación un extracto de este archivo:

...
## Type: string
## Default: ""
## Config: ""
## ServiceRestart: syslog
#
# if not empty: parameters for syslogd
# for example SYSLOGD_PARAMS="-r -s my.dom.ain"
#
SYSLOGD_PARAMS=""
## Type: string
## Default -x
## Config: ""
## ServiceRestart: syslog
#
# if not empty: parameters for klogd
# for example KLOGD_PARAMS="-x" to avoid (duplicate) symbol resolution
#
KLOGD_PARAMS="-x"
## Type: list(syslogd,syslog-ng)
## Default: syslogd
## Config: syslog-ng
## Command: /sbin/rcsyslog restart
## PreSaveCommand: /sbin/rcsyslog status && /sbin/rcsyslog stop
#
# The name of the syslog daemon used as
# syslog service: "syslogd", "syslog-ng"
#
SYSLOG_DAEMON="syslog-ng"
...

/etc/syslog-ng/syslog-ng.conf.in

Este archivo es una plantilla que se usa para crear el archivo /etc/syslog-ng/syslog-
ng.conf que es el que usa el demonio syslog para cargar sus configuraciones. Ambos
archivos tienen la misma sintaxis.

Esto significa que cada vez que se ejecute SuSEconfig, el archivo /etc/syslog-ng/syslog-
ng.conf será reescrito y todos las modificaciones manuales realizadas se perderan.
/etc/syslog-ng/syslog-ng.conf

Los demonios syslogd y syslog-ng comparten dos conceptos que se deben comprender
antes de proceder a configurarlos:

 Medios
 Prioridades

Además la configuración de syslog-ng consisten en muchas partes adicionales que


combinadas forman la configuración que deberá ser almacenada en las bitácoras. Esta
información adicional consiste en:

 Origen
 Filtro
 Destino
 Ruta de bitácora

Ing. Ricardo Ruiz


170
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Medios

Este concepto se refiere al subsistema que provee el mensaje correspondiente. Cada


programa que usa syslog para administrar sus bitácoras se identifica en el demonio como
un „medio‟.

La siguiente tabla describe algunos medios:

Medio Descripción
authpriv Usado por todos los servicios que usan el sistema de seguridad o
autorización, todos los mensajes PAM usan este medio.
El demonio SSH usa el medio „auth‟
cron Acepta mensajes de „cron‟ y „at‟
daemon Usado por varios demonios que no poseen su propio medio, tal como el
demonio „ppp‟
kern Acepta todos los mensajes de kernel.
lpr Acepta todos los mensajes del demonio de impresión.
mail Acepta todos los mensajes del demonio de correos. Esto es importante ya
que muchos mensajes pueden arribar simultáneamente.
news Acepta todos los mensajes del demonio de noticias. Y similar al medio
„mail‟ muchos mensajes pueden arribar de manera simultánea.
syslog Mensajes internos del demonio syslog.
user Es un medio general para mensajes a nivel de usaurio.
uucp Acepta todos los mensajes del demonio de uucp.
local0-local7 Estos 8 medios están disponibles para configuración del usuario. Todos las
categorías „local‟ pueden ser usadas por aplicaciones desarrolladas por los
usuarios.

Prioridades

La prioridad provee detalles sobre la urgencia de los mensajes. A continuación una lista
de las prioridades disponibles (ordenadas de menor a mayor relevancia):

Prioridad Descripción
Debug Usado solamente para propósitos de reporte de eventos.
Infor Usado solamente para propósitos informativos.
Notice Usado por mensajes que describen el estado del sistema que deben ser
escritos en bitácora.
Warning Usado por mensajes que describen situaciones anómalas del sistema.
Err Usado por mensajes que describen errores.
Crit Usado por mensajes que describen condiciones críticas de un programa.
Alert Usado por mensajes que informan al administrador que se necesita una
acción inmediata para que el sistema pueda seguir funcionando.
Emerg Usado por mensajes que previenen que el sistema puede dejar de
funcionar.

Ing. Ricardo Ruiz


171
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Orígenes

Es una colección de controladores origen, que recolectan mensajes usando un método


específico. La sintaxis general es:

source <identifier> { source-driver(params); source-driver(params); ... };

La sección respectiva en el archivo /etc/syslog-ng/syslog-ng.conf debe ser muy parecida a


la siguiente:

source src {
# include internal syslog-ng messages
# note: the internal() soure is required!

internal();

# the following line will be replaced by the


# socket list generated by SuSEconfig using
# variables from /etc/sysconfig/syslog:

unix-dgram("/dev/log");

# uncomment to process log messages from network:


#udp(ip("0.0.0.0") port(514));
};

En este ejemplo, un origen para mensajes internos del demonio syslog-ng y se define el
canal /dev/log.

Filtros

Los filtros son expresiones booleanas que son aplicadas a los mensajes y son evaluadas
como verdaderas o falsas. La sintaxis general es:

filter <identificador> { expresión; };

El <identificador> debe ser único y será usado posteriormente para configurar la bitácora
actual. A continuación un extracto de /etc/syslog-ng/syslog-ng.conf que muestra algunos
filtros usados en la distribución SUSE de Linux:

#
# Filter definitions
#
filter f_iptables { facility(kern) and match("IN=") and match("OUT="); };
filter f_console { level(warn) and facility(kern) and not
filter (f_iptables) or level(err) and not facility(authpriv); };
filter f_newsnotice { level(notice) and facility(news); };
filter f_newscrit { level(crit) and facility(news); };
filter f_newserr { level(err) and facility(news); };
filter f_news { level(news); };
...
filter f_messages { not facility(news, mail) and not filter (f_iptables); };
...

Como podrá notarse, medio y prioridad pueden ser usados dentro de los filtros.

Ing. Ricardo Ruiz


172
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Destinos

Define donde serán remitidos los mensajes. La sintaxis general es:

destination <identifier> {
destination-driver(params);
destination-driver(params); ... };

Los posibles destinos puede ser: archivos, fifos, canales, tty de ciertos usuarios,
programas, u otros hosts.

Un ejemplo dentro del archivo de configuración puede ser:

destination console { file("/dev/tty10" group(tty) perm(0620)); };


destination messages { file("/var/log/messages"); };

Ruta de bitácora

Las rutas son los puntos donde todo converge, ahí se almacenan los mensajes
dependiendo el origen, filtro y destino. La sintaxis general es:

log { source(s1); source(s2); ...


filter(f1); filter(f2); ...
destination(d1); destination(d2); ...
flags(flag1[, flag2...]); };

El siguiente ejemplo envía los mensajes al TTY10 y al archivo /var/log/messages:

log { source(src); filter(f_console); destination(console); };


log { source(src); filter(f_messages); destination(messages); };

En la primera línea, los mensajes del origen definido57 y son enviados al tty10 si pasan el
filtro f_console.

En la segunda línea, los mensajes son enviados al archivo /var/log/messages si pasan el


filtro f_messages.
- Archivos de bitácora

En muchos casos los mensajes son escritos en el archivo /var/log/messages. Se puede


encontrar en este archivo los mensajes sobre los servicios y los problemas por el cual un
servicio no funciona apropiadamente. Si los mensajes no están aquí, entonces se debería
echar un vistazo al archivo: /var/log/audit/audit.log que es un archivo de bitácoras para
AppArmor. La bitácora del firewall esta en: /var/log/firewall.

57
Ver ejemplos anteriores

Ing. Ricardo Ruiz


173
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La mejor manera de leer una bitácora almacenada en un archivo es usar el comando „tail‟
(tail /var/log/messages). Este despliega las últimas 10 entradas de la bitácora. Con la
opción „-n [líneas]‟ se puede definir la cantidad de líneas que se desea visualizar de la
bitácora (tail –n 30 /var/log/messages). Si lo que se necesita es que la entrada sea
visualizada inmediatamente se debe usar la opción interactiva „-f‟ (tail –f
/var/log/messages)

A continuación una lista de los archivos de bitácora más importantes almacenados en el


directorio /var/log:

Archivo Descripción
/var/log/audit/ Este directorio guarda la bitácora de Novell AppArmor (audit.log).
/var/log/cups/ Este directorio guarda la bitácora del sistema de impresión CUPS.
/var/log/news/ Este directorio guarda la bitácora del sistema de noticias.
/var/log/YaST2/ Este directorio guarda la bitácora de YaST.
/var/log/boot.msg Cuando el sistema inicia, todos los mensajes de los scripts de
arranque se despliegan en la primera consola virtual, estos pasan
rápidamente que en ocasiones no logramos leer todos los mensajes.
En este archivo se almacenan todos estos mensajes.
/var/log/mail Los mensajes del sistema de correos son escritos en este archivo.
Debido a que el sistema genera una gran cantidad de mensajes, se
generan archivos de bitácora adicionales:
 /var/log/mail.err
 /var/log/mail.info
 /var/log/mailwarn
/var/log/lastlog Este archivo contiene información sobre los usuarios que accedieron al
sistema, desde donde y cuanto tiempo. Este archivo está cifrado y solo
puede verse su contenido usando el comando lastlog.

- Administración de las bitácoras

Es muy importante, para todo administrador, que las particiones de disco no lleguen a
niveles de saturación, si este caso llega a ocurrir, el sistema deja de funcionar
apropiadamente hasta que se libere espacio en las particiones de disco.

También es importante que los archivos de bitácora no crezcan a tamaños muy grandes y
se vuelvan virtualmente inmanejables. Es por esa razón que los archivos de bitácora son
revisados constantemente por el demonio „logrotate‟. Este se ejecuta diariamente
mediante un cron. Este revisa todos los archivos de bitácora revisando sus propios
archivos de configuración y realizando las acciones requeridas en estos.

Se puede configurar los ajustes en los archivos que le indiquen a logrotate cuando un
archivo debe ser comprimido o borrado en intervalos regulares o cuando alcanza un
tamaño determinado.

También se puede configurar cuantos archivos comprimidos se tendrán disponibles, o


enviar por mail.

Ing. Ricardo Ruiz


174
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La configuración del demonio logrotate se encuentra en /etc/logrotate.conf, este contiene


las configuraciones generales del demonio y a continuación presentamos un segmento de
este archivo de configuración:

# see "man logrotate" for details


# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs


rotate 4

# create new (empty) log files after rotating old ones


create

# uncomment this if you want your log files compressed


#compress

# uncomment these to switch compression to bzip2


#compresscmd /usr/bin/bzip2
#uncompresscmd /usr/bin/bunzip2

# RPM packages drop log rotation information into this directory


include /etc/logrotate.d
...

A continuación una tabla que describe las opciones en el archivo:

Opción Descripción
weekly El archivo de bitácora es creado o reemplazado una vez a la semana.
rotate 4 Si no se define esta opción, el archivo rotado es eliminado (la vieja versión).
En este ejemplo, se configura en 4, significa que las ultimas 4 versiones se
mantienen en el disco.
create El archivo viejo se almacena con otro nombre y se crea un archivo nuevo
vacio.
compress Si esta opción es activada, la versión vieja se comprime.

Muchos paquetes RPM contienen archivos pre configurados para evaluación por
logrotate, estos están almacenados en /etc/logrotate.d/. Los archivos contenidos en este
directorio son leídos por logrotate si la siguiente línea esta activa en el archivo de
configuración /etc/logrotate.conf:

...
include /etc/logrotate.d/
...

Cualquier ajuste en los archivos de esta carpeta súper seden los ajustes generales de
logrotate.conf.

Ing. Ricardo Ruiz


175
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El siguiente ejemplo muestra el contenido de un archivo syslog en la carpeta


/etc/logrotate.d/:

...
#
# Please note, that changing of log file permissions in this
# file is not sufficient if syslog-ng is used as log daemon.
# It is required to specify the permissions in the syslog-ng
# configuration /etc/syslog-ng/syslog-ng.conf.in as well.
#
/var/log/warn /var/log/messages /var/log/allmessages
/var/log/localmessages /var/log/firewall {
compress
dateext
maxage 365
rotate 99
missingok
notifempty
size +4096k
create 640 root root
sharedscripts
postrotate
/etc/init.d/syslog reload
endscript
}
...
...

Los archivos syslog y syslog-ng en /etc/logrotate.d/ contiene ajustes para configuración de


cómo las bitácoras son escritos en los archivos.

La siguiente tabla describe las opciones en el archivo:

Opción Descripción
size +4096k Archivos que no serán rotados semanalmente, por el contrario se
rotaran cuando se alcance el tamaño máximo de 4096Kb.
rotate 99 99 versiones de los archivos rotados serán almacenados.
compress Los archivos rotados serán comprimidos.
maxage 365 El archivo que tenga una edad de 365 días será eliminado.
notifempty Si un archivo de bitácora esta vacio, no se realiza la rotación.
create 640 root root Los nuevos archivos de bitácora serán creados con este propietario
y estos permisos.
postrotate Estos son script ejecutados después de la rotación. Por ejemplo,
… algunos servicios tienen que ser reiniciados después de realizar el
endscript cambio.
En este ejemplo, el demonio syslog debe releer sus archivos de
configuración después de la rotación (/etc/init.d/syslog reload).

Ing. Ricardo Ruiz


176
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Monitorear actividad de logins


Una de las tareas críticas que el administrador tiene es asegurarse que cualquier
actividad sospechosa en el sistema, que puede indicar un brecha de seguridad es
notificado y que se actúe a tiempo.

El monitoreo de las tareas incluyen evaluar la actividad de logins en busca de brechas de


seguridad tales como múltiples fallos de acceso. Para monitorear esta actividad se
pueden usar los siguientes comandos:
- Comando ‘who’

Este comando muestra a los usuarios actuales dentro del sistema y la información del
tiempo desde que ingreso. La opción „-H‟ despliega la información con encabezados, la
opción „-r‟ despliega la información en base al nivel de ejecución actual, „-a‟ despliega
información con más detalles.

da51:~ # who -H
NAME LINE TIME COMMENT
root pts/0 2006-05-24 10:33 (da51.digitalairlines.com)
geeko :0 2006-05-24 13:54
geeko pts/1 2006-05-24 13:54
da51:~ #

- Comando ‘w’

Este comando despliega información sobre los usuarios actuales en el sistema y los
procesos que están ejecutando.

La primera línea incluye información, tal como el tiempo que el sistema ha estado en
ejecución, cuantos usuarios han ingresado al sistema, y los promedios de carga de los
pasados 1, 5 y 15 minutos.

Debajo de la primera línea, se muestra una línea por cada usuario en el sistema, con el
nombre de usuario, su tty asociada, el host remoto, tiempo en el sistema, tiempo ocioso,
JCPU58, PCPU59, y la línea de comando en ejecución.

Se puede usar la opción „-h‟ para no desplegar el encabezado, „-s‟ para no desplegar la
información de tiempos, y „-V‟ para desplegar la información de la versión.

da51:~ # w
15:06:45 up 4:35, 4 users, load average: 0.00, 0.00, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10:33 0.00s 0.73s 0.02s w
geeko :0 13:54 ?xdm? 1:15 0.58s /bin/sh
/opt/kde3/bin/startkde
...
da51:~ #

58
Es el tiempo que han usado todos los procesos vinculados al tty
59
Es el tiempo usado por el proceso actual definido en el campo „What‟.

Ing. Ricardo Ruiz


177
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Comando ‘finger’

Este comando despliega información sobre usuarios del sistema local y remoto.

Los campos desplegados por este comando incluyen:

 Nombre de usuario
 Nombre completo del usuario
 Nombre de la terminal asociada
 Tiempo ocioso
 Tiempo de acceso (y desde donde)

da51:~ # w
Login Name Tty Idle Login Time Where
geeko Geeko *:0 - Wed 13:54
geeko Geeko pts/1 1:13 Wed 13:54
geeko Geeko *pts/3 1:02 Wed 13:55
root root pts/0 - Wed 10:33 da51.digitalairlines.com
da51:~ #

- Comando ‘last’

Este comando despliega una lista de los últimos usuarios que accedieron al sistema.

Este comando lee de atrás para adelante el archivo /var/log/wtmp (o el archivo definido
por la opción „-f‟), y despliega una lista de todos los usuarios que entraron (y salieron)
desde que el archivo fue creado.

Se puede especificar nombres de usuarios y tty‟s para mostrar información con esta
entrada únicamente.

Las opciones más comunes son las siguientes:

Opción Descripción
-num Número de líneas a mostrar.
-a Despliega el nombre del host en la última columna
-x Despliega las entradas de apagado y los cambios de nivel de ejecución.

Por ejemplo la salida de last –ax retorna información similar a la siguiente:

da51:~ # last -ax


geeko pts/3 Wed May 24 13:55 still logged in
geeko pts/1 Wed May 24 13:54 still logged in
geeko :0 Wed May 24 13:54 still logged in
geeko :0 Wed May 24 13:45 - 13:53 (00:08)
root pts/0 Wed May 24 10:33 still logged in da51.digitalairlines.com
runlevel (to lvl 5) Wed May 24 10:31 - 15:09 (04:37) 2.6.16.14-6-smp
reboot system boot Wed May 24 10:31 (04:38) 2.6.16.14-6-smp
shutdown system down Tue May 23 17:30 - 15:09 (21:39) 2.6.16.14-6-smp
da51:~ #

Ing. Ricardo Ruiz


178
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Comando ‘lastlog’

Este comando formatea e imprime el contenido de los últimos accesos contenidos en el


archivo (/var/log/lastlog). El nombre de usuario, puerto y último acceso es desplegado.
Ejecutar el comando sin opciones despliega el contenido ordenándolo por el ID numérico.

La opción „-u‟ despliega la información de un usuario especifico, y la opción „-h‟ despliega


la ayuda del comando.

da51:~ # lastlog
Username Port Latest
at **Never logged in**
bin **Never logged in**
...
root pts/0 Wed May 24 10:33:36 +0200 2006
sshd **Never logged in**
suse-ncc **Never logged in**
uucp **Never logged in**
wwwrun **Never logged in**
geeko :0 Wed May 24 13:54:29 +0200 2006
...
da51:~ #

- Comando ‘faillog’

Este comando formatea e imprime el contenido de los fallos de acceso contenidos en


/var/log/faillog, y mantiene contadores y limites de fallos.

Esta funcionalidad puede ser habilitada agregándole el modulo pam_tally.so al respectivo


archivo en /etc/pam.d/, por ejemplo /etc/pam.d/login:

#%PAM-1.0
auth requiredpam_securetty.so
auth requiredpam_tally.so no_magic_root per_user
auth include common-auth
auth requiredpam_nologin.so
account requiredpam_tally.so no_magic_root
...

El resto del archivo no es necesario modificarlo.

Si se requiere que esta funcionalidad este en el escritorio grafico, se deben agregar las
líneas anteriores al archivo /etc/pam.d/xdm o al archivo /etc/pam.d/gdm, dependiendo
del administrador de acceso que se use.

Se puede usar las opciones „-u‟ para desplegar información de un usuario especifico, y „-p‟
para que la información se ordene por UID.

También podemos ajustar los intentos de acceso, por ejemplo, limitar a los usuarios a 3
intentos requerirá un comando similar al siguiente: faillog –m 3. Para asegurar que el
usuario root no se bloquee debemos definir intentos infinitos: faillog –u root –m 0. En
este caso el orden de las opciones si es relevante. Para garantizar acceso a un usuario
que fue bloqueado por muchos intentos el comando es: faillog –r [user].

Ing. Ricardo Ruiz


179
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 14: Configurar el Sistema de Inicio


En este capítulo estudiaremos el proceso de arranque de un sistema Linux y cómo
administrar los procesos configurados en los niveles de ejecución, los parámetros del
kernel, las opciones de carga y otras configuraciones del sistema.

Tema 1: Descripción del procedimiento de carga de Linux.


El siguiente diagrama representa los procedimientos básicos de inicio de un computador
con un sistema Linux instalado:

BIOS

GRUB (boot manager)

Carga en memoria

kernel initrd

Rutinas del BIOS

kernel

kernel

Se descomprime el mismo

Encuentra la RAM y HD
El inicio del sistema requiere los montajes initrd

Inicia el kernel
Initrd no existe => controladores para montar /

linuxrc
estan en el kernel

Carga linuxrc

Modulos
para montar /

Desmontaje del kernel

initrd

Inicia desde el HD

Inicia el sistema

init

Inicia init

Procesos, scripts

Ing. Ricardo Ruiz


180
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- BIOS y el administrador de arranque

Las tareas ejecutadas por el BIOS60 incluye la realización de una auto revisión de
encendido (POST61), conduce la detección inicial y la instalación del hardware, y el
acceso a dispositivos de arranque (tales como CD o Discos Duros [HD]).

Si el dispositivo de arranque es un HD, el BIOS también lee el MBR62. Usando el código


en el MBR, el BIOS inicia el administrador de arranque.

El administrador de arranque (como GRUB), carga el kernel y el initrd a la memoria e


inicia al kernel.
- Kernel

El kernel (/boot/vmlinuz, con un enlace a /boot/vmlinuz-kernelversion) se descomprime a


sí mismo y entonces organiza y toma el control de la continuidad del arranque del
sistema.

El kernel revisa y ajusta la consola (los registros del BIOS de tarjeta grafica y el formato
de salida en pantalla), lee los ajustes del BIOS e inicializa las interfaces de hardware
básicas, siguen los controladores, que son parte del kernel, buscan el hardware instalado
y se inicializan de acuerdo a estos.

El kernel controla el sistema completo, administra el acceso al hardware y asigna tiempo


de CPU y memoria a los programas.
- initramfs (Initial RAM File System)

Este es un archivo cpio que el kernel puede cargar en un disco RAM. Provee un entorno
Linux mínimo que habilita la ejecución de programas antes que el actual sistema de
archivos root (/) sea montado. initramfs siempre provee de un ejecutable llamado init que
puede ejecutar el programa de inicio instalado en / para que el proceso de arranque
proceda.

El kernel inicia el programa init contenido en el initramfs. Este es un script de Shell que,
entre otras cosas, carga los módulos del kernel necesarios para montar el / actual, montar
/ y finalmente iniciar /sbin/init desde el /.

Para poder visualizar el script init en initramfs, se debe desempaquetar el archivo cpio:

da51:~ # mkdir /tmp/initramfs ; cd /tmp/initramfs


da51:/tmp/initramfs # gunzip –c /boot/initrd-2.6.16.14-6-smp | cpio –i
12765 blocks
da51:/tmp/initramfs # ls
bin bootsplash dev etc init lib proc root sbin sys tmp
da51:/tmp/initramfs # less init

60
Basic Input Output System
61
Power-On Self Test
62
Master Boot Record

Ing. Ricardo Ruiz


181
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- init

Después de verificar las particiones y montar /, el programa init ubicado en initramfs


ejecuta /sbin/init, este es el que arranca el sistema con todos los programas y
configuraciones.

El proceso init siempre tendrá asociado el PID=1, y busca en el archivo /etc/inittab


información de configuraciones y como ejecutar los procesos de arranque del sistema.

Una vez que el proceso init arranca, este inicia accediendo el script /etc/init.d/boot, este
controla el inicio de los servicios, tales como „quota disk‟ y el monitoreo del sistema de
archivos local.

Después que este script completa su ejecución, init ejecuta el script /etc/init.d/rc, este se
usa para configurar los niveles de ejecución y arrancar los servicios y demonios.

Cada nivel de ejecución tiene su propio conjunto de servicios que son iniciados. Por
ejemplo el nivel de ejecución 5 incluye los componentes de X Windows que ejecutan el
escritorio grafico de Linux.

Tema 2: GRUB (Grand Unified Bootloader)


GRUB es uno de los administradores de arranque estándar de los sistemas Linux. Existen
otros e inclusive se puede usar FDISK que es el gestor de arranque estándar de los
sistemas Windows.
- Que es un administrador de arranque

Para iniciar un sistema, se necesita un programa que pueda cargar el sistema operativo
en memoria. Este programa llamado „boot loader‟, carga el kernel del sistema operativo,
es entonces que se carga el sistema.

Después de ejecutar el POST, el BIOS busca entre varios medios configurados en él un


cargador de arranque. Si se encuentra uno, se transfiere el control del proceso de
arranque al cargador de arranque.

El cargador se encarga entonces de localizar los archivos del sistema operativo y


ejecutarlo.

Un administrador de arranque no es solamente el cargador, el administrador nos permite


cargar varios sistemas operativos. Si existe más de un sistema operativo instalado en el
sistema, el administrador nos presentará un menú que permite seleccionar el sistema
operativo a cargar, que puede ser cualquier distribución de Linux, Unix o Microsoft
Windows®.

GRUB está diseñado con la siguiente arquitectura de dos fases:

 Fase 1: la primera fase de un cargador está instalada (normalmente) en el MBR del


disco duro. Como el espacio de la MBR es limitado a 446 bytes, este programa
contiene la información de carga de la siguiente fase. La primera fase puede ser
almacenada en el sector de arranque de una partición o en un floppy.

Ing. Ricardo Ruiz


182
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Fase 2: esta fase contiene al cargador actual. Los archivos de esta fase están
ubicados en el directorio /boot/.
- Administradores de arranque en SUSE Linux

La distribución de Linux en la que se desarrolla este documento (SUSE) provee dos


administradores de carga: GRUB y LILO63
Administrador de arranque GRUB

Este es el administrador de arranque estándar para SUSE, a continuación dos


características de GRUB:

 Soporte a sistemas de archivos. Las segunda fase incluye controladores para los
sistemas de archivos ReiserFS, ext2, ext3, Minix, JFS, XFS, FAT, y FFS (BSD). Por
esta razón, el cargador puede acceder archivos aun antes de que el sistema operativo
se cargue. Esto es útil cuando la configuración del administrador de arranque falla y
se necesita buscar y cargar manualmente el kernel.
 Control Interactivo. GRUB tiene su propio Shell que habilita controles interactivos
para el administrador de arranque.
Administrador de arranque LILO

Debido a que este administrador no es el estándar de la distribución en estudio, este será


cubierto brevemente.

El archivo de configuración de LILO se ubica en /etc/lilo.conf. Su estructura es similar a la


del archivo de configuración de GRUB.

Cuando se modifica el archivo /etc/lilo.conf se requiere que se ejecute el comando lilo


para que los cambios sean aplicados.

Tambien se necesita ejecutar este comando cuando se se mueve el kernel o el initrd en el


disco duro.
Archivos mapeados, GRUB y LILO

El principal obstáculo al cargar un sistema operativo es que el kernel es usualmente un


archivo ubicado en un sistema de archivos de una partición de disco. Este concepto es
desconocido por el BIOS. Para lograr engañar al BIOS, se introducen los conceptos de
mapas y archivos mapeados.

Estos mapas simplemente señalan al número del bloque en el disco que comprenden a
los archivos lógicos. Cuando un mapa es procesado, el BIOS carga todas las secuencias
de bloques físicos tal como el mapa lo define colocando el archivo lógico en memoria.

En contraste con LILO que confía completamente en los mapas, GRUB intenta ser
independiente de los mapas en un momento temprano del arranque del sistema. GRUB
logra esto por medio de los códigos del sistema operativo, que habilita acceso a archivos
usando especificaciones de la ruta conforme al número del bloque.

63
LInux LOader

Ing. Ricardo Ruiz


183
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Iniciar el Shell de GRUB

Debido a que GRUB tiene su propio Shell, se puede cargar el sistema manualmente si
este no se inicia automáticamente debido a un error en el administrador de arranque.
Iniciar el Shell de GRUB en el sistema en ejecución

Para iniciar el Shell de GRUB mientras el sistema está en ejecución, basta con ejecutar el
comando grub como root:

da51:~ # grub
GNU GRUB version 0.94 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible completions of a device/filename. ]
grub> find /boot/vmlinuz
(hd0.2)
grub> quit
da51:~ #

En el ejemplo, se ejecuta el comando „grub‟ desde el usuario root, y luego se ejecuta el


comando ‟find /boot/vmlinuz‟ que nos informará en que partición y en que disco se
encuentra el kernel del sistema operativo. El comando quit cierra la sesión de GRUB.
Iniciar el Shell de GRUB desde el prompt de inicio

Podemos iniciar este Shell haciendo lo siguiente:

 Desde el menú de selección grafica, presionar Esc. Un menú de texto aparecerá.


 Iniciar el Shell de GRUB digitando c (la distribución del teclado estará en Ingles US).
- Modificar el archivo de configuración de GRUB

Se puede configurar GRUB editando el archivo /boot/grub/menú.lst. A continuación la


estructura del archivo:

 Opciones Generales:
o color White/blue black/ligtt-gray. Colores del menú del administrador de
arranque.
o default 0. La primera entrada del menú (número 0) es la entrada de arranque
estándar e inicia automáticamente si no se selecciona otra entrada con el
teclado.
o timeout 8. La entrada estándar de arranque será iniciada automáticamente
después de 8 segundos.
o gfxmenu (hd0,0)/boot/message. Esto define donde está almacenado el menú
grafico.
 Después de las opciones generales, se colocan las opciones de los sistemas
operativos que puedan ser cargadas desde GRUB.
o title titulo. Cada entrada de sistema operativo inicia con un titulo.

Ing. Ricardo Ruiz


184
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

o root (hd0,0). Esta entrada es relativa a la partición del disco duro mostrado en
la sintaxis de GRUB, en este ejemplo es la primer partición del primer disco
duro. GRUB no distingue entre discos SCSI e IDE. El disco duro reconocido
por el BIOS como el primer disco se le asigna el nombre hd0, el segundo hd1,
y sucesivamente. La primera partición del disco hd0 se nombra hd0,0, a la
segunda partición hd0,1, y sucesivamente.
o kernel /boot/vmlinuz. Esta entrada describe la ubicación del kernel, relativa a
la partición especificada anteriormente. A esto le siguen los parámetros del
kernel por ejemplo: root=/dev/hda1, vga=normal.
o initrd /boot/initrd. Esta entrada configura la ubicación del ramdisk inicial
(initramfs), relativo al root (hd0,0) especificado anteriormente. Este contiene
controladores de hardware necesarios para que el kernel pueda acceder a los
discos duros (tales como controladores IDE o tarjetas SCSI).

A continuación un ejemplo de la configuración del archivo /boot/grub/menú.list:

# Modified by YaST2. Last modification on Mon Dec 15 08:38:29 UTC 2012

color white/blue black/light-gray


default 0
timeout 8
gfxmenu (hd0,1)/boot/message

###Don't change this comment - YaST2 identifier: Original name: linux###


title Distribucion Linux de Estudio OESA
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 vga=0x317 resume=/dev/sda1 splash=silent showopts
initrd /boot/initrd

###Don't change this comment - YaST2 identifier: Original name: floppy###


title Floppy
chainloader (fd0)+1

###Don't change this comment - YaST2 identifier: Original name:


failsafe###
title Modo a Prueba de Fallos -- Distribucion Linux de Estudio OESA
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 vga=normal showopts ide=nodma apm=off acpi=off noresume
nosmp noapic maxcpus=0 edd=off 3
initrd /boot/initrd

- Iniciar un sistema directamente en un Shell

La pantalla de inicio de GRUB permite pasar parámetros que modifican el kernel de Linux
antes que este sea iniciado.

En la parte inferior del menú en pantalla se encuentra un campo de texto. Para agregar
opciones al arranque, se debe seleccionar el sistema operativo y digitar las opciones
adicionales en este campo.

Una forma de acceder al sistema que no puede arrancar es configurando un programa


diferente para los procesos „init‟. Normalmente, el kernel de Linux trata de encontrar un
programa con el nombre „init‟ y ejecutar este como el primer proceso. Todos los otros
procesos son iniciados por „init‟.

Ing. Ricardo Ruiz


185
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Con el parámetro init=nuevo_programa_init se puede cambiar el primer programa


cargado por el kernel. Por ejemplo, entrando el parámetro init=/bin/bash, el sistema inicia
directamente en el Shell BASH, accede como root sin solicitar la contraseña del mismo.

Se puede usar esta opción para acceder a los sistemas de archivos y corregir alguna
configuración.

NOTA: los sistemas de archivos son montados con acceso de solo lectura. Para modificar
archivos de configuración se necesita remontar los sistemas de archivos con el comando:

mount -0 remount,rw,sync –t tipo dispositivo punto_de_montaje

Ejecutando exec /sbin/init desde el prompt de bash reemplaza el Shell por el programa
init y continua el proceso de arranque hasta que el novel de ejecución sea activado.

Si se requiere evitar el acceso al sistema descrito anteriormente, se debe cambiar la


configuración de arranque del mismo para que solicite una contraseña antes de que la
línea de comandos configure el kernel.

En el archivo /boot/grub/menú.lst, la línea password secret en las opciones generales,


nos asegurará que las opciones siguientes serán ejecutadas in modificaciones, el uso de
parámetros adicionales para el kernel requerirá que se introduzca la contraseña „secret‟.

GRUB también permite el uso de contraseñas encriptadas con MD5 que se pueden
generar de la siguiente manera:

da51:~ # grub-md5-crypt
Password:
Retype password:
$1$FtTeK1$qaV.tOrzbg3EYAgVfNup40

Esta cadena puede ser copiada al archivo /boot/grub/menú.lst con la siguiente sintaxis:
password --md5 $1$FtTeK1$qaV.tOrzbg3EYAgVfNup40. El parámetro „lock‟ dentro de
la sección titulo de un sistema operativo, puede ser usado para forzar la solicitud de una
contraseña cuando esta opción sea seleccionada.

title Floppy
lock
chainloader (fd0)+1

Ahora, seleccionar el inicio desde la unidad Floppy será posible solo si se introduce la
contraseña.

El parámetro „password‟ puede ser usado en entradas individuales de sistemas operativos


para definir una contraseña especial para esa entrada.

NOTA: definir contraseñas solo mejora un poco la seguridad, aun asi no puede prevenir el
arranque de la computadora desde otros medios, como un sistema de rescate por
ejemplo, y que se pueda acceder a los archivos del disco duro.

Ing. Ricardo Ruiz


186
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 3: Administrar los niveles de ejecución.


Administrar los niveles de ejecución es una parte esencial de la administración de un
sistema Linux. En este tema, estudiaremos que son los niveles de ejecución, los roles del
programa „init‟, y como configurar y cambiar los niveles de ejecución.
- El programa init y los niveles de ejecución de Linux.

Como se ha mencionado anteriormente, el sistema es inicializado por /sbin/init, este


proceso es el primero que ejecuta el kernel.

Este proceso, o uno de sus hijos, inicia todos los procesos adicionales, asimismo es el
último en ser cerrado en el sistema, debido a esto también se encarga que todos los
procesos sean cerrados de manera apropiada. Esto significa que init controla tanto el
encendido como el apagado del sistema.

Debido a esta posición de privilegios y prioridades, SIGKILL que cuando se envía a los
procesos estos deben terminarse, no tiene ningún efecto en init.

El archivo de configuración de init está ubicado en /etc/inittab. Varios scripts son


iniciados por init en dependencia de las entradas en este archivo. Estos script deben estar
ubicados en /etc/init.d/.

Parte de la configuración en /etc/inittab es sobre los niveles de ejecución del sistema al


momento de iniciarse.
64
Runlevels

Varios niveles de ejecución definen el estado del sistema en Linux. La siguiente tabla
muestra la totalidad de estos:

Runlevel Descripción
0 Apagar el sistema
S Usado para iniciar el sistema en modo mono usuario.
1 Modo mono usuario
2 Modo multiusuario sin servicios de redes
3 Modo multiusuario con servicios de redes
4 Reservado
5 Modo multiusuario con servicios de redes y X-Windows
6 Reiniciar el sistema

El comando runlevel despliega el nivel de ejecución en que se encuentra el sistema (este


es el segundo campo desplegado por el comando).

da51:~ # runlevel
N 3
da51:~ #

64
Niveles de Ejecución

Ing. Ricardo Ruiz


187
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Archivo de configuración de init (/etc/innittab)

Ahora veremos cómo se configura el programa init, este conocimiento lo veremos en dos
partes:

Sintaxis de inittab

La sintaxis de cada una de las entradas de inittab es la siguiente:

id:r1:acción:proceso

En el que:

 id. Es un nombre único para la entrada, este puede contener hasta 4 caracteres.
 r1. Se refiere a uno o más niveles de ejecución en que esta entrada será evaluada.
 acción. Describe que necesita hacer init.
 proceso. Es el proceso conectado a esta entrada.

Entradas estándar para inittab

La primera entrada valida en el archivo /etc/inittab contiene los siguientes parámetros:

id:5:initdefault:

El parámetro „initdefault‟ señala al proceso init, cual debe ser el runlevel en que el sistema
debe iniciar. El runlevel estándar, generalmente es el 3, y en algunos casos el 5.

La siguiente entrada debe lucir parecida a la siguiente:

si:bootwait:/etc/init.d/boot

El parámetro „bootwait‟ indica que el comando debe esperar a que el sistema este iniciado
para poder ser ejecutado.

Las siguientes entradas describen las acciones para los runlevels 0 al 6:

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
#l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

ls:S:wait:/etc/init.d/rc S
~~:S:respawn:/sbin/sulogin

Ing. Ricardo Ruiz


188
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El parámetro „wait‟ significa que cuando el sistema cambia al runlevel indicado. El


comando apropiado es ejecutado e init espera hasta que este se complete. El parámetro
también significa que las futuras entradas para el nivel son solamente ejecutadas después
que este proceso finalice.

El modo mono usuario (S), es un caso especial, debido a que este trabaja aun si el
archivo /etc/inittab no se encuentre. El comando „sulogin‟ se ejecuta y este permite
solamente acceso al administrador. El parámetro „respawn‟ indica a init que espere el fin
del proceso y entonces reiniciarlo.

El archivo /etc/inittab también define la combinación de teclas Ctrl+Alt+Del.

ca:ctrlaltdel:/sbin/shutdown –r –t 4 now

La acción „ctrlaltdel‟ es ejecutada por el proceso init solo si estas teclas se presionan. Si
no se requiere habilitar esta acción, se puede comentar o eliminar la línea.

Un largo bloque de entradas describen en que runlevels los procesos getty son iniciados:

1:2345:respawn:/sbin/mingetty --noclear 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

El proceso getty provee el prompt para autenticación y espera el nombre de usuario como
respuesta. Estos se inician en los runlevels 2,3 y 5, el 4 es ignorado porque la línea que
define este runlevel se encuentra como comentario.

Después de modificar el archivo /etc/inittab, se debe ejecutar el comando init q para


cargar la nueva configuración al programa init.

NOTA: se debe tener precaución al momento de editar este archivo, si este se


corrompe el sistema no arrancara correctamente.

Si ocurre un error, se debe tratar de ingresar en el modo mono usuario (S), si esto
no funciona, aun es posible acceder al sistema digitando init=/bin/bash en la línea
de opciones para el kernel, estando ahí se puede reparar el sistema de arranque
manualmente.

Ing. Ricardo Ruiz


189
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Scripts de init y los directorios de niveles de ejecución.

El archivo /etc/inittab define cual runlevel debe ejecutarse cuando el sistema termine de
cargarse. Los servicios que necesiten ser iniciados en algún runlevel no son definidos en
/etc/inittab. Estos tienen enlaces simbólicos en los directorios /etc/init.d/rcx.d/ y /etc/init.d/.
Script de init

El directorio /etc/init.d/ contiene los Shell script que son utilizados para ejecutar ciertas
tareas tales como iniciar y detener servicios en el sistema en ejecución. La siguiente
imagen muestra la salida del comando ls –al /etc/init.d/65:

da51:~ # ls –la /etc/init.d/


total 635
drwxr-xr-x 11 root root 3336 May 24 13:40 .
drwxr-xr-x 77 root root 6712 May 25 13:19 ..
-rw-r--r-- 1 root root 1393 May 24 13:40 .depend.boot
-rw-r--r-- 1 root root 3465 May 24 13:40 .depend.start
-rw-r--r-- 1 root root 3002 May 24 13:40 .depend.stop
-rw-r--r-- 1 root root 482 Aug 25 2004 Makefile
-rw-r--r-- 1 root root 7827 May 10 18:17 README
-rwxr-xr-x 1 root root 1257 May 8 20:09 SuSEfirewall2_init
-rwxr-xr-x 1 root root 1650 May 8 20:09 SuSEfirewall2_setup
-rwxr-xr-x 1 root root 2696 May 8 20:29 aaeventd
-rwxr--r-- 1 root root 5729 May 8 20:15 acpid
-rwxr-xr-x 1 root root 5265 May 8 21:01 alsasound
-rwxr-xr-x 1 root root 3689 May 9 14:49 atd
-rwxr-xr-x 1 root root 6691 May 9 15:03 auditd
-rwxr--r-- 1 root root 9234 May 9 15:01 autofs
-rwxr-xr-x 1 root root 2967 Mar 14 13:40 autoyast
-rwxr-xr-x 1 root root 7072 Apr 20 15:02 boot
-rwxr-xr-x 1 root root 2792 May 8 20:29 boot.apparmor
...
...
...
da51:~ #

Los archivos .depend.{boot,start,stop} son creados por insserv y contienen las


dependencias que son usadas para determinar la secuencia apropiada para iniciar
servicios.

Los script pueden ser llamados de las siguientes maneras:

 Directamente por init cuando el sistema arranca, cuando el sistema se apaga o


cuando se detiene con Ctrñ+Alt+Del. Ejemplos: /etc/init.d/boot y /etc/init.d/rc.
 Indirectamente por init cuando se cambia de runlevel, este es el caso de /etc/init.d/rc
que llama los scripts necesarios en el orden correcto y con los parámetros correctos
durante el cambio de runlevel.
 Directamente por /etc/init.d/script parámetro.

Si tenemos links a estos scripts en las carpetas /sbin/ o /usr/sbin/ podemos llamarlos
usando la sintaxis: rcscript parámetro.

65
Recordemos que nuestra distribución para estudio es SUSE Linux.

Ing. Ricardo Ruiz


190
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

A continuación se describen los parámetros que podemos usar en estos scripts:

Parámetro Descripción
start Inicia un servicio que no está en ejecución.
restart Detiene un servicio que está en ejecución y lo inicia nuevamente.
stop Detiene un servicio que está en ejecución.
reload Carga nuevamente los archivos de configuración de un servicio sin
detenerlo.
force-reload Carga nuevamente los archivos de configuración de un servicio sin
detenerlo, si esta operación no es posible, el servicio es reiniciado.
status Despliega el estado actual del servicio.

Cuando un script es llamado sin definir un parámetro, un mensaje al usuario se despliega,


indicándole que necesita definir uno de los posibles parámetros.

A continuación se detallan algunos de los scripts más importantes almacenados en


/etc/init.d/:

Script Descripción
boot Este script es ejecutado directamente por init cuando el sistema se inicia.
Se ejecuta una sola vez. Este script evalúa la carpeta /etc/init.d/boot.d/ e
inicia todos los scripts que tengan en su nombre la letra „S‟ como inicio del
mismo.
boot.local Este script incluye comandos adicionales a ejecutar antes de cambiar al
nivel de ejecución estándar.
halt Este script se ejecuta si se cambia a los runlevels 0 ó 6. Este es llamado
por el comando halt que apaga completamente el sistema, o por el
comando reboot que apaga y luego enciende el sistema.
rc Este comando es el responsable por el correcto cambio de un nivel a otro.
Primero detiene el nivel de ejecución en la que el sistema se encuentre,
una vez finalizada, ejecuta los scripts definidos en el nuevo nivel de
ejecución.
servicio Cada servicio, (como cron, apache2, cups, etc.), tiene un script que
permite iniciar, detener, recargar, reiniciar y visualizar el estado del
servicio. Podemos crear nuestros propios scripts usando el archivo
/etc/init.d/skeleton como plantilla para los mismos.
66
RSL

Para acceder a cierto nivel de ejecución, init llama al script /etc/init.d/rc con el nivel de
ejecución como parámetro. Este script examina el directorio del nivel de ejecución
respectivo /etc/init.d/rcx.d/ e inicia o detiene los servicios en dependencia de los enlaces
en este directorio.

Por cada nivel de ejecución, existe un subdirectorio en /etc/init.d/; para el nivel de


ejecución 1, el subdirectorio es /etc/init.d/rc1.d/, para el nivel de ejecución 2, el
subdirectorio es /etc/init.d/rc2.d/, y sucesivamente.

66
Runlevel Symbolic Links

Ing. Ricardo Ruiz


191
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cuando se visualiza uno de estos directorios, por ejemplo /etc/init.d/rc3.d/, se pueden


observar dos tipos de archivos, unos cuyo nombre comienza por „K‟ y otros por „S‟:

da51:~ # ls /etc/init.d/rc3.d/
K10cron K17network S07auditd
K10smbfs K20haldaemon S07portmap
K11nscd K21acpid S07splash_early
K11postfix K21dbus S08nfs
K12alsasound K21fbset S08nfsboot
K12boot.apparmor K21irq_balancer S10alsasound
K12cups K21random S10boot.apparmor
K12microcode K21resmgr S10cups
K12powersaved S01acpid S10kbd
K12splash S01dbus S10microcode
K12sshd S01fbset S10powersaved
K14nfs S01irq_balancer S10splash
K14nfsboot S01random S10sshd
K15auditd S01resmgr S11nscd
K15portmap S02haldaemon S11postfix
K15splash_early S05network S12cron
K16novell-zmd S06novell-zmd S12smbfs
K16slpd S06slpd
K16syslog S06syslog
da51:~ #

La primera letra del nombre siempre es seguida por dos digitos y el nombre de un
servicio. Cuando un servicio es iniciado en un runlevel específico depende si existen los
archivos Sxxservice y Kxxservice en el directorio especifico del runlevel.

Con el comando ls –l en el subdirectorio del runlevel, nos mostrara cuales archivos son
enlaces simbólicos apuntando a scripts de servicios en /etc/init.d/:

da51:~ # ls –l /etc/init.d/rc3.d/
total 0
lrwxrwxrwx 1 root root 7 May 15 10:32 K10cron -> ../cron
lrwxrwxrwx 1 root root 8 May 15 10:48 K10smbfs -> ../smbfs
lrwxrwxrwx 1 root root 7 May 15 10:32 K11nscd -> ../nscd
lrwxrwxrwx 1 root root 10 May 15 10:32 K11postfix -> ../postfix
lrwxrwxrwx 1 root root 12 May 15 10:26 K12alsasound -> ../alsasound
...
lrwxrwxrwx 1 root root 7 May 15 10:31 S10sshd -> ../sshd
lrwxrwxrwx 1 root root 7 May 15 10:32 S11nscd -> ../nscd
lrwxrwxrwx 1 root root 10 May 15 10:32 S11postfix -> ../postfix
lrwxrwxrwx 1 root root 7 May 15 10:32 S12cron -> ../cron
lrwxrwxrwx 1 root root 8 May 15 10:48 S12smbfs -> ../smbfs
da51:~ #

Debido al uso de enlaces simbolicos en los subdirectorios, solamente basta modificar la


versión en /etc/init.d/ para que estas se apliquen a los servicios correspondientes.

Estos script (Sxx y Kxx) son enlaces a un mismo script, por ejemplo:

da51:~ # ls –l /etc/init.d/rc3.d/*network
lrwxrwxrwx 1 root root 10 May 15 10:23 /etc/init.d/rc3.d/K17network -> ../network
lrwxrwxrwx 1 root root 10 May 15 10:23 /etc/init.d/rc3.d/S05network -> ../network
da51:~ #

Ing. Ricardo Ruiz


192
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

NOTA: algunas referencias nos indican que los enlaces Kxx se refiere a kill script,
mientras que los enlaces Sxx se refieren a start scripts. De hecho no existen scripts
separados para iniciar o detener servicios.

Como determina init cual servicio se debe iniciar o detener

Como seres humanos sabemos que un servicio es iniciado con el parámetro „start‟ y
detenido con el parámetro „stop‟. Los mismos parámetros son usados cuando cambiamos
de un runlevel a otro.

Cuando cambiamos de runlevel, init llama al script rc con el runlevel como parámetro, más
o menos así: /etc/init.d/rc 3. Este script examina los directorios /etc/init.d/rcactual.d y
/etc/init.d/rcnuevo.d para determinar qué hacer.

Por ejemplo cuando cambiamos del nivel de ejecución 5 al nivel de ejecución 3, init tiene
tres opciones con los scripts:

 Existen enlaces Kxx para determinado servicio en /etc/init.d/rc5.d/ y existen enlaces


Sxx para el mismo servicio en /etc/init.d/rc3.d/. En este caso, el servicio no es
detenido ni reiniciado, el script correspondiente para realizar esta acción jamás es
invocado.
 Existen enlaces Kxx para determinado servicio en /etc/init.d/rc5.d/ y no existen
enlaces Sxx para el mismo servicio en /etc/init.d/rc3.d/. En este caso, el script en
/etc/init.d/servicio es invocado con el parámetro „stop‟ y el servicio es detenido.
 Existen enlaces Sxx para determinado servicio en /etc/init.d/rc3.d/ y no existen
enlaces Kxx para el mismo servicio en /etc/init.d/rc5.d/. En este caso, el script en
/etc/init.d/servicio es invocado con el parámetro „start‟ y el servicio es iniciado.

El número después de la primera letra, determina la secuencia en que los script son
invocados. Por ejemplo el script K10cron es invocado antes del script K20haldaemon
que significa que cron es detenido antes de halddaemon.

Script S05network es invocado antes de S11postfix, que significa que los servicios de
red se inician antes de postfix. Esto es importante si postfix depende de algún servicio de
red para su ejecución.

Por ejemplo, esto pasa cuando cambiamos de runlevel del 3 al 5:

 Se envía a init el comando init 5 (solo root).


 El programa init verifica su archivo de configuración (/etc/inittab) y determina si puede
o no iniciar /etc/init.d/rc con el número del runlevel (5) como parámetro.
 El script rc invoca los scripts para detener servicios en el runlevel 3 (Kxx) que no
tienen scripts de inicio en el runlevel 5 (Sxx).
 Los scripts de inicio en el nuevo runlevel para los servicios que no tienen scripts de
parada (Kxx) son ejecutados.

Cuando se cambia al mismo runlevel (del runlevel 3 al runlevel 3), el programa init solo
verifica si el archivo /etc/inittab tiene cambios e inicia los pasos apropiados (tal como
iniciar getty en otra interface).

Ing. Ricardo Ruiz


193
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Activar y desactivar servicios en un nivel de ejecución

Los servicios son activados y desactivados en un runlevel adicionando o removiendo los


respectivos enlaces a servicios (Kxxservicio y Sxxservicio) en los directorios
correspondientes (/etc/init.d/rcx.d).

Aunque se puede crear enlaces simbólicos en los subdirectorios del nivel de ejecución
para modificar los servicios, una manera más sencilla de realizar esto es editar la
cabecera de un script y luego invocar a insserv.

El bloque „INIT INFO‟ al inicio de un script de un servicio, describe en cual runlevel debe
iniciarse/detenerse el servicio y que servicios deben estar en ejecución como un requisito
para el mismo.

### BEGIN INIT INFO


# Provides: syslog
# Required-Start: network
# Should-Start: earlysyslog
# Required-Stop: network
# Default-Start: 2 3 5
# Default-Stop:
# Description: Start the system logging daemons
### END INIT INFO

Este bloque (INIT INFO) es usado por el programa insserv para determinar en cual
subdirectorio de runlevels deben ser colocados los enlaces y el valor a asociar después
de la primera letra del nombre del servicio (la secuencia de inicio).

La entrada „Default-Start‟ determina en cuales subdirectorios de runlevels serán colocados


los enlaces. La entrada „Required-Start‟ determina cuales servicios tienen que estar
ejecutándose antes de iniciar el actual.

Después de editar el bloque INIT INFO, ejecutar el comando: insserv –d service para
crear los enlaces necesarios y reenumerar el existente en caso de ser necesario.

Para eliminar todos los enlaces de un servicio (deshabilitar el servicio), se debe primero
detener el servicio si este está en ejecución (/etc/init.d/servicio stop), luego ejecutar:
insserv –r servicio.

Con el bloque INIT INFO, es posible el uso de ciertas variables. Estas son explicadas y
definidas en el archivo /etc/insserv.conf.

Una herramienta con funcionalidades similares es chkconfig. Esta puede ser usada para
habilitar y deshabilitar servicios y también para listar cuales servicios están habilitados en
los diferentes runlevels. A continuación una breve muestra de la salida del comando
chkconfig:

da51:~ # chkconfig cron


cron on
da51:~ # chkconfig cron -l
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
da51:~ # chkconfig cron off
da51:~ # chkconfig cron -l

Ing. Ricardo Ruiz


194
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
cron 0:off 1:off 2:off 3:off 4:off 5:off 6:off
da51:~ # chkconfig cron on
da51:~ # chkconfig -l
Makefile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
aaeventd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off
alsasound 0:off 1:off 2:on 3:on 4:off 5:on 6:off
atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
auditd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
...
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
...
da51:~ #

Esta labor también puede ejecutarse desde el entorno grafico de YaST, en lo personal, yo
recomiendo que se use un solo método para realizar esta labor (insserv o chkconfig o
YaST), no tener un solo método puede generar errores.
- Cambiar el nivel de ejecución.

Al momento de instalar un sistema, se puede elegir en cual runlevel se desea este inicie.
Una vez instalado y en ejecución se puede modificar esto.
Cambiar el runlevel al momento del inicio

El runlevel estándar (3 ó 5), es definido en el archivo /etc/inittab por la entrada „initdefault‟.


También es posible iniciar en otro runlevel especificando esto en la línea de comandos
para el kernel de GRUB (al momento del inicio del sistema).

Cualquier parámetro que no es evaluado por el kernel es pasado a init como parámetro
por el kernel. El runlevel deseado es simplemente añadido a las opciones del boot
especificado e GRUB, como en el siguiente ejemplo:

root=/dev/hda1 vga=0x317 resume=/dev/hda2 splash=silent showopts=1

Como partición root se pasa al kernel el parámetro /dev/hda1, varios parámetros se


incluyen, y el sistema arranca en el runlevel 1.

Otra manera de iniciar en el runlevel 1 es digitar:

runlevel 1

Si se desea otro nivel de ejecución solo debe definirse en esta línea.


Administrar runlevels desde la línea de comandos

Se puede cambiar a otro nivel de ejecución en un sistema activo solamente con el


comando „init‟, por ejemplo, si se necesita cambiarse al runlevel 1 desde una línea de
comandos se debe ejecutar: init 1, si en cambio se requiere cambiar al runlevel 5: init 5.

Ing. Ricardo Ruiz


195
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Como cualquier sistema operativo moderno, Linux reacciona sensitivamente a los


apagados intempestivos. Si esto pasa, los sistemas de archivos deberán ser revisados y
corregidos para que puedan ser usados nuevamente.

Por esta razón el sistema debe ser apagado de manera correcta SIEMPRE. Se puede
apagar el sistema ejecutando init 0; reiniciarlo ejecutando init 6. Los comandos halt y
poweroff son equivalentes a init 0; el comando reboot es equivalente a init 6.

El comando shutdown apaga al sistema después de especificar un tiempo (+m: minutos


desde ahora; hh:mm: tiempo en horas:minutos; now: el sistema es apagado
inmediatamente). Este controla el apagado del sistema de una manera especial,
comparado con otros comandos que detienen el sistema. El comando informa a todos los
usuarios que el sistema tendrá que apagarse y no permite a otros usuarios ingresar antes
de apagarse.

El comando shutdown puede ejecutarse con un mensaje de advertencia, tal como sigue:

da51:~ # shutdown +5 El Nuevo Disco Duro ha llegado...


da51:~ #

Si el proceso de apagado que fue planeado para un tiempo posterior no debe ser
ejecutado, se puede revocar ejecutando shutdown –c.

Ing. Ricardo Ruiz


196
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 15: Administración del Software en Linux


En este capítulo aprenderemos como administrar paquetes de software en la distribución
Linux con paquetes RPM y YaST. También aprenderemos sobre librerías de software
dinámicas.

Tema 1: Administrar paquetes de software RPM


Mientras existen muchos paquetes formateados y disponibles para Linux, en la
distribución de estudio (Open SUSE) el formato más usado es el formato RPM.

Instalar aplicaciones con el formato RPM se puede efectuar tanto con el comando rpm
como con YaST. YaST controla la solución automática de dependencias, mientras que
rpm controla que no existan, la solución debe efectuarse manualmente.
- Componentes y características de RPM

RPM es el primer sistema de administración de paquetes diseñado para Linux. RPM


instala, actualiza, desinstala, verifica y permite varias consultas sobre el software
instalado.

Los componentes básicos de RPM son:

 Administrador de Paquetes RPM. Es la utilidad que se encarga de instalar y


desinstalar paquetes RPM.
 Base de datos RPM. La base de datos RPM trabaja en segundo plano del
administrador de paquetes y contiene una lista de toda la información de todos los
paquetes RPM instalados. La base de datos almacena la información de todos los
archivos modificados y creados cuando un usuario instala un programa. Esto ayuda al
administrador de paquetes a remover fácilmente los mismos archivos que fueron
instalados.
 Paquete RPM. RPM permite instalar software y paquetes con código fuente y archivos
binarios. Estos son llamados paquetes RPM o archivos RPM.
 Etiqueta de los Paquetes. Cada paquete RPM incluye una etiqueta que contiene
información como el nombre del software, versión y el número del release. Esta
información ayuda al administrador de paquetes para la toma de decisiones al
momento de actualizar los paquetes en un sistema.

Algunas de las ventajas de usar RPM incluyen las siguientes:

 Provee a los usuarios un método consistente para instalar programas en Linux.


 Hace que la desinstalación sea más fácil.
 Se incluyen archivos fuente originales (.tar.gz y .tar.bz2) y estos son fáciles de
verificar.
 Se pueden usar herramientas RPM para generar instalación de aplicaciones no
interactivas.
 Se pueden usar herramientas RPM para verificar que el software este instalado
correctamente.

Ing. Ricardo Ruiz


197
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 RPM verifica dependencia de software, esto previene la desinstalación de paquetes


que son necesarios para otros. También informa al administrador que paquetes se
necesitan (si es necesario) para poder proceder con la instalación actual.
 RPM permite a todos los paquetes de software el uso de tecnología de llave pública
para la firma digital del mismo.
- RPM Básico

Para entender la filosofía de los paquetes RPM debemos primero comprender lo


siguiente:
Convenciones de nombres de archivos para paquetes RPM

Los archivos RPM usan el siguiente formato de nombres:


nombre-version-número_release.arquitectura.rpm, por ejemplo:
apache2-2.2.0-21.i386.rpm

 nombre. Normalmente el nombre del programa a ser instalado.


 versión. Esta es la versión del programa, normalmente es un número.
 release. Es un número que determina la cantidad de veces que la aplicación a sido
revisada sin cambiar la versión.
 arquitectura. Este indica la arquitectura para la cual el paquete fue creado (i586, i686,
ppc, etc.) o el tipo del contenido del paquete. Por ejemplo su el paquete tiene una
arquitectura i586, se debe instalar en una maquina con CPU Intel de 32 bits, esta es
una Pentium o superior. Si el paquete no tiene una arquitectura definida, este no
incluye ningún código binario.
 rpm. Este es normalmente la extensión del archivo.
Archivo de configuración RPM

El archivo de la configuración global de RPM esta en /usr/lib/rpm/rpmrc, tenemos que


tener claro que cualquier configuración colocada en este, al momento que RPM se
actualice, se perderá.

Para evitar esto, las modificaciones deben ser en el archivo /etc/rpmrc (para la
configuración del sistema) o en el archivo ~/.rpmrc (para la configuración del usuario).
Base de datos RPM

Los archivos de la base de datos RPM están almacenados en /var/lib/rpm/. Si la partición


/usr/ tiene un tamaño de 1Gb, esta base de datos puede ocupar cerca de 30 Mb,
especialmente después de completar la actualización de paquetes.

Si la base de datos es más grande de lo esperado, puede ser útil reconstruirla ejecutando:
rpm --rebuilddb. Antes de realizar esta acción debemos tener un respaldo de la base de
datos anterior.

El script de cron „suse.de-backup-rpmdb‟ almacenado en /etc/cron.daily/ verifica


diariamente en busca de un cambio en la base de datos RPM, si existe el cambio, una
copia de la base de datos comprimida (con gzip) será almacenada en
/var/adm/backup/rpmdb/.

Ing. Ricardo Ruiz


198
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El número de copias de la base de datos es controlada por el registro


MAX_RPMDB_BACKUPS (el estándar es 5) definido en el archivo /etc/sysconfig/backup.

El tamaño promedio para un respaldo individual es aproximadamente 5 Mb para 1Gb en


/usr/.
- Administración de paquetes de software con rpm

Se puede usar el comando rpm para administrar paquetes. Esto incluye consultas a la
base de datos RPM para detalles sobre la instalación de paquetes.

El comando provee los siguientes modos:

 Instalación, desinstalación, o actualización de paquetes.


 Consulta a la base de datos o a archivos RPM individuales.
 Verificar la integridad de los paquetes.
 Reconstruir la base de datos RPM.

Se puede usar el comando rpmbuild para construir un paquete RPM instalable. Este
comando no está cubierto por este manual.

Los paquetes RPM contienen programas, configuración y documentación para la


instalación y cierta información de metadatos usados durante el proceso de instalación
por RPM para configurar el paquete de software. Esta misma información es almacenada
en la base de datos RPM después de la instalación para propósitos de documentación.
Verificar autenticidad de los paquetes

Todos los paquetes RPM (en nuestro caso de estudio) están firmados por la siguiente
llave GnuPG:

da51:~ # gpg --list-keys -v --fingerprint "build@suse.de"


pub 1024D/9C800ACA 2000-10-19 [expired: 2008-06-21]
Key fingerprint = 79C1 79B2 E1C8 20C1 890F 9994 A84E DAE8 9C80 0ACA
uid SuSE Package Signing Key <build@suse.de>
sub 2048g/8495160C 2000-10-19 [expired: 2008-06-21]

pub 1024R/307E3D54 2006-03-21 [expired: 2008-06-21]


Key fingerprint = 4E98 E675 19D9 8DC7 362A 5990 E3A5 C360 307E 3D54
uid SuSE Package Signing Key <build@suse.de>
da51:~ #

Para verificar que nuestros paquetes están firmados por SuSE podemos usar el comando:
rpm --checksig paquete (ejemplo: rpm --checksig apache2-2.2.0-10.i386.rpm). Aunque
no solamente SuSE publica paquetes para su distribución Linux.

Esta comprobación se recomienda especialmente cuando se actualiza el paquete vía


internet.

Los archivos de llave publica están almacenados en los directorios /root/.gnupg/ y


/usr/lib/rpm/gnupg/. Esta ultima ubicación es para permitir que en sesiones de usuario se
pueda verificar la firma de los paquetes RPM.

Ing. Ricardo Ruiz


199
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Instalar paquetes

Se pueden instalar muchos paquetes usando el comando rpm con la opción „-i‟:

rpm –i nombre_paquete.rpm

Cuando se instala un paquete RPM, los programas ejecutables, los archivos de:
documentación, configuración y scripts, son copiados a los directorios apropiados en el
sistema de archivos.

Durante la instalación, la base de datos RPM se asegura de que no existan conflictos. Los
paquetes son instalados solamente si todas las dependencias están cubiertas y no existan
conflictos con los paquetes instalados.

Se pueden usar opciones para que RPM ignore estas advertencias, así que tenemos la
opción „--nodeps‟ que ignora las dependencias de los paquetes o „--force' que sobre
escribe los archivos si fuera necesario, pero estas opciones son para los administradores
expertos que conocen las consecuencias de realizar este tipo de acciones.

Con la opción „-v‟ una cantidad mayor de información sobre la instalación será
desplegada, y la opción „-h‟ producirá una barra de estado de la instalación.
Actualizar paquetes

Se puede usar la opción „-u‟ (--upgrade) y –F (--freshen) para actualizar un paquete


usando la siguiente sintaxis:

rpm –F paquete.rpm

Este comando remueve los archivos de la versión anterior e inmediatamente instala los
nuevos archivos. En todo caso si no existe el paquete (si no hay nada que actualizar), la
actualización no es ejecutada.

Si existe una versión anterior instalada, la opción –U hace lo mismo que –F, en caso que
no exista una versión que actualizar la opción –U instala la nueva versión.

RPM actualiza los archivos de configuración de la siguiente manera.

 Si un archivo de configuración no fue modificado por el administrador del sistema,


RPM instala la nueva versión del archivo sin problemas y no requeriría acciones por
parte del administrador del sistema.
 Si un archivo de configuración fue modificado por el administrador del sistema antes
de la actualización, RPM guarda el archivo modificado con la extensión ‘rpmorig’ o
‘rpmsave’. Entonces se instala la nueva versión del paquete, esto pasa solamente si la
versión original y la nueva versión son diferentes. Si este es el caso, RPM compara el
archivo respaldado contra la nueva versión y realiza los cambios en el archivo nuevo.
Debemos de asegurarnos que los la configuración sea la correcta y luego eliminar los
archivos de respaldo, estos pueden provocar problemas para futuras actualizaciones.
La extensión rpmorig es asignada a los archivos que no son reconocidos por la base
de datos, de lo contrario se usa la extensión rpmsave.

Ing. Ricardo Ruiz


200
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Un conjunto de archivos rpmnew son creados si el archivo de configuración existe y si


la etiqueta „noreplace‟ fue especificado en el archivo que controla la creación del
paquete. Esto es usado para no reescribir ciertos archivos de configuración tal como
/etc/httpd.conf para asegurar la operación continua del servicio.

El script /etc/init.d/rpmconfigcheck busca estos archivos y escribe una lista de estos en


/var/adm/rpmconfigcheck.

NOTA: la opción „–U‟ no es equivalente a desinstalar (uninstall), esto se realiza con la


opción „–e‟, y con la opción „-i‟ se instalan paquetes. Se usa „-U‟ solo cuando es posible
actualizar paquetes.

Desinstalar paquetes

Para desinstalar (remover) un paquete RPM se debe ejecutar el siguiente comando:

Rpm –e paquete

Cuando se desinstala un paquete, todos los archivos, excepto los archivos de


configuración modificados, son eliminados del sistema con la ayuda de la base de datos
RPM. Esto asegura una desinstalación limpia.

RPM intentara borrar el paquete solamente si esto no rompe algunas dependencias. Si


otros paquetes dependen del paquete que se esté eliminando la desinstalación no
procederá y se desplegara un mensaje de error.

Se puede forzar la eliminación con la opción „--nodeps', pero esto provocara que los
paquetes que dependan del paquete eliminado no funcionen mas.
Consultas a la base de datos y archivos RPM

Con la opción „-q‟, se puede consultar la base de datos RPM y además la opción „-p‟,
inspecciona los archivos RPM que no han sido instalados.

Las siguientes opciones son las más usadas por el RPM.

Opción Resultado
-a Lista todos los paquetes instalados
-i Lista la información de un paquete
-l Despliega una lista
-d Lista archivos de documentación solamente
-c Lista archivos de configuración solamente
--provides Lista las características de los paquetes que otros paquetes pueden
requerir con --requires
--requires, -R Lista los requerimientos que un paquete pueda tener.
--scripts Lista los scripts de instalación
--changelog Despliega información detallada sobre un paquete especifico.

Ing. Ricardo Ruiz


201
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Por ejemplo, el comando rpm –qi wget despliega la siguiente información:

da51:~ # rpm –qi wget


Name : wget Relocations: (not relocatable)
Version : 1.10.2 Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
Release : 78 Build Date: Fri Sep 21 18:04:35 2007
Install Date: Tue Dec 11 22:29:51 2012 Build Host: maximegalon.suse.de
Group : Productivity/Networking/Web/Utilities Source RPM: wget-1.10.2-78.src.rpm
Size : 1531960 License: GPL v2 or later
Signature : DSA/SHA1, Fri Sep 21 18:08:37 2007, Key ID a84edae89c800aca
Packager : http://bugs.opensuse.org
URL : http://wget.sunsite.dk/
Summary : A Tool for Mirroring FTP and HTTP Servers
Description :
Wget enables you to retrieve WWW documents or FTP files from a server.
This can be done in script files or via the command line.

Authors:
--------
Hrvoje Niksic <hniksic@srce.hr>
Distribution: openSUSE 10.3 (i586)
da51:~ #

La opción „-f‟ solamente funciona si se especifica la ruta completa. Se pueden especificar


varios archivos:

da51:~ # rpm –qf /bin/rpm /usr/bin/wget


rpm-4.4.2-43
wget-1.10.2-15
da51:~ #

Este ejemplo retorna información de los paquetes rpm y wget. Con la ayuda de la base de
datos, se puede ejecutar la verificación de paquetes, esto se realiza con la opción „-V‟, o „-
-verify‟. Si cualquier archivo en el paquete ha sido modificado después de la instalación se
desplegara esta información. RPM usa los siguientes caracteres para proveer información
sobre los cambios:

Carácter Descripción
5 Check sum MD5
S Tamaño
L Enlace simbólico
T Fecha de modificación
D Numero del dispositivo
U Propietario
G Grupo
M Modo

En caso de los archivos de configuración se despliega la letra „c‟:

da51:~ # rpm –V wget


S.5....T C /etc/wgetrc
da51:~ #

Ing. Ricardo Ruiz


202
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Actualizar paquetes con parches RPM

Para garantizar que un sistema opere con seguridad, se debe actualizar los paquetes
frecuentemente.

Se puede actualizar un paquete completo, o puede usar un parche RPM. El parche RPM
tiene la ventaja de ser pequeño, reduciendo el tiempo de descarga.

Cuando planeamos una actualización, se necesita considerar lo siguiente (usare como


ejemplo el paquete procmail):

 ¿Está disponible el parche para mi sistema?


Para comprobar esto se debe ejecutar:

da51:~ # rpm –q procmail


procmail-3.22-42
da51:~ #

La salida de este comando mostrará la versión de procmail instalada. Ahora verificamos


que el parche RPM para procmail esté disponible:

da51:~ # rpm –qp --basedon \


procmail-3.22-42.4.i586.patch.rpm
procmail = 3.22-42
procmail = 3.22-42.2
da51:~ #

La salida indica que el parche está disponible para dos versiones diferentes de procmail.
La versión en el ejemplo esta en lista también, por tanto el parche puede ser instalado.

 ¿Cuáles archivos serán reemplazados por el parche?

Los archivos afectados por el parche pueden ser visualizarse fácilmente con la opción „-P‟:

da51:~ # rpm –qPpl procmail-3.22-42.4.i586.patch.rpm


/usr/bin/formail
/usr/bin/lockfile
/usr/bin/procmail
...
da51:~ #

Si el parche ya se encuentra instalado, se usa el siguiente comando:

da51:~ # rpm –qPl procmail


/usr/bin/formail
/usr/bin/lockfile
/usr/bin/procmail
...
da51:~ #

Ing. Ricardo Ruiz


203
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 ¿Cómo puede ser instalado un parche en el sistema?

Los parches RPM pueden ser instalados tal como se instalan los paquetes RPM. La única
diferencia es que el paquete ya debe de estar instalado antes de instalar el parche.

 ¿Cuál parche tiene instalado el sistema y para que versión del paquete?

Se puede desplegar una lista de todos los parches instalados en el sistema con el
comando rpm –qPa:

da51:~ # rpm –qPa procmail


procmail-3.22-42.4
da51:~ #

Si después de instalar un parche se requiere saber cual versión era la original, se debe
realizar una consulta a la base de datos RPM:

da51:~ # rpm –q --basedon procmail


procmail = 3.22-42
da51:~ #

Usar YaST para instalar paquetes RPM

Una de las funciones de YaST es la instalación de aplicaciones. Si se conoce el nombre


del paquete, se usa la opción „-i‟ para realizar la instalación:

da51:~ # yast –i ethereal


da51:~ #

Este ejemplo instala el paquete ethereal y cualquier paquete adicional que sea necesario
que ethereal necesite para su ejecución. La ventaja de usar este comando es que las
dependencias son corregidas automáticamente.

También se puede instalar un paquete si se tiene su archivo rpm:

da51:~ # yast –i apache2-2.3.0-10.i586.rpm


da51:~ #

La diferencia es que en este caso no se resolverán las dependencias.

A continuación las tres opciones que están definidas para esto con YaST.

Opción Descripción
-i, --install Instala un paquete
--update Actualiza un paquete
--remove Elimina (desinstala) un paquete

Ing. Ricardo Ruiz


204
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 16: Administrar Respaldos y Recuperación


En este capítulo estudiaremos como desarrollar una estrategia de respaldos y como usar
las herramientas para respaldos que trae nuestra distribución de estudio.

Tener un gran esquema de seguridad no garantiza que los datos no se pierdan, de hecho
siempre existe la posibilidad que este evento ocurra por algunos de los siguientes
sucesos:

 Ocurre un fallo de disco duro, destruyendo datos en los discos afectados.


 Los usuarios eliminan archivos por error.
 Un virus elimina archivos importantes en una estación de trabajo.
 Una notebook se pierde o se destruye.
 Un atacante elimina datos de un servidor.
 Desastres naturales que destruyen sistemas de almacenamiento.

Es importante asegurarnos que se tiene un respaldo reciente de los datos importantes.

Tema 1: Desarrollar una estrategia de respaldos


Respaldar datos es una de las tareas más importantes de un administrador de sistemas.
Pero antes de que se pueda realizar un solo respaldo, se necesita desarrollar una
estrategia de respaldos.
- Seleccionar un método de respaldo

El mejor método para realizar un respaldo, posiblemente es el „respaldo completo‟ (full


backup). En este método todo el sistema es copiado en un medio de respaldo una vez al
día. Para restaurar los datos, el más reciente de los mismos se usa para copiar de
regreso los datos al disco duro del sistema.

La desventaja de este método es la „ventana de respaldo‟. Este es el tiempo que se tarda


el sistema en ejecutar esta labor. Generalmente los respaldos se realizan cuando el
sistema no se está utilizando, para evitar cambios en la data durante el proceso de
respaldo, este cambio en los datos provocaría inconsistencias en el medio de respaldo al
momento de la comprobación del proceso. Debido a esto, los respaldos se ejecutan
durante la noche, cuando los sistemas no están siendo usados.

En algunos casos, especialmente en compañías grandes, esta ventana de respaldo,


puede ser muy pequeña como para ejecutar un respaldo completo cada día. Esto se debe
a las siguientes posibles causas:

 El tamaño de la data a respaldar es muy grande, y toma mucho tiempo el proceso de


copiar del disco al medio de respaldo, y este tiempo excede el tiempo de la ventana de
respaldo.
 El sistema afectado debe permanecer activo en todo momento así que las ventanas
de respaldo deben ser lo más corta posible.

En muchos casos, puede ocurrir una combinación de ambas causas.

Ing. Ricardo Ruiz


205
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para superar estos problemas, se pueden emplear otros métodos aparte del respaldo
completo:
Respaldo Incremental

Con este método, normalmente se programa un respaldo completo una vez a la semana,
y se respalda diariamente solo los archivos que han sido modificados desde la última vez
que se realizo un respaldo. Por ejemplo: si se realiza un respaldo completo en domingo, el
lunes se respaldaran los archivos que sufrieron cambios desde el domingo, el martes se
respaldaran los archivos que sufrieron cambios desde el lunes, y sucesivamente. Como
cualquier método, este tiene ventajas y desventajas:

 Ventaja: debido a que solo se respaldan los archivos que sufren modificaciones desde
el ultimo respaldo, la ventana de respaldos puede ser extremadamente pequeña en
comparación con la ventana de respaldo que se requiere para un respaldo completo.
 Desventaja: el tiempo de recuperación es mayor. Por ejemplo, se realiza un respaldo
completo en domingo, y respaldos incrementales en lunes, martes y miércoles, el
jueves el sistema colapsa y todos los datos se pierden.
Para restaurar los datos, se necesitan todos los respaldos incrementales y el respaldo
completo del domingo, estos deben de restaurarse en el orden adecuado.
Respaldo Diferencial

Con este método, normalmente se programa un respaldo completo una vez a la semana,
y se respalda diariamente solo los archivos que han sido modificados desde la última vez
que se realizo un respaldo completo. Por ejemplo: si se realiza un respaldo completo en
domingo, el lunes se respaldaran los archivos que sufrieron cambios desde el domingo, el
martes se respaldaran los archivos que sufrieron cambios desde el domingo, y
sucesivamente. Como cualquier método, este tiene ventajas y desventajas:

 Ventaja: para restaurar los datos de un respaldo diferencial, se necesita solamente


dos medios de respaldo: el respaldo completo mas reciente y el respaldo diferencial
más reciente, por tanto el tiempo de restauración es mucho más corto que en el
método anterior.
 Desventaja: el tamaño de los datos a respaldar crece diariamente. Al final de un ciclo
de respaldo, en tamaño de la data puede ser muy grande, pudiendo exceder el tiempo
establecido en la ventana de respaldo.

A continuación una imagen para comprender las diferencias entre ambos métodos:

Día Respaldo Incremental Respaldo Diferencial


Lun RC67 RC
Mar RI68 RD69
Mie
Jue
Vie

67
Respaldo Completo
68
Respaldo Incremental
69
Respaldo Diferencial

Ing. Ricardo Ruiz


206
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Seleccionar el medio correcto para los respaldos.

Se debe seleccionar un medio de respaldo adecuado para la cantidad de datos a


respaldarse con el método de respaldo seleccionado.

Las cintas de respaldo son las más usadas ya que estas ofrecen en mejor
costo/desempeño/capacidad. Normalmente son instalados como dispositivos SCSI,
facilitando el acceso a los medios al tener una estructura básica estándar en el sistema de
archivos, estos medios pueden ser DAT, EXABYTE o DLT. Aparte de eso, las cintas de
respaldo son reusables.

Otros medios para realizar respaldos, pueden ser los CD o DVD, discos externos y
dispositivos MO70. Otra opción es la SAN71. Con una SAN, se puede configurar el
almacenamiento de red de manera exclusiva para respaldos de los diferentes
computadores en un servidor central de respaldos. Pero aparte de una SAN, se debe usar
un medio de respaldo en cintas.

Los medios de respaldos SIEMPRE se deben almacenar separados de los sistemas


respaldados. Esto previene la perdida de los respaldos en caso de incendios (por
ejemplo) en la sala de equipos.

Tema 2: Respaldar archivos con YaST


Los respaldos que se pueden realizar con YaST son para archivos del sistema.
- Respaldar datos del sistema con YaST

El sistema de respaldo de YaST nos permite crear un respaldo de nuestro sistema. El


respaldo en si no es del sistema completo, si no de paquetes y elementos críticos del
sistema.

Para crear un respaldo con YaST, se debe realizar lo siguiente:

 Ejecutar el comando yast backup

Este dialogo muestra la lista de perfiles de


respaldo almacenados. Un perfil de
respaldo es usado para nombrar un grupo
de ajustes diferentes. Se puede tener varios
perfiles cada uno con un nombre diferente.

En el menú desplegable „Administrador de


Perfiles‟, se puede agregar, duplicar,
cambiar y borrar un perfil.

También se puede realizar un respaldo manual, para evitar crear un perfil de respaldo.

70
Magnetic-Optical
71
Storage Area Network

Ing. Ricardo Ruiz


207
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Crear un perfil seleccionando


„Administrador de Perfiles‟ > „Agregar‟

Se debe definir un nombre para el perfil,


una vez definido el nombre, se debe
seleccionar „OK‟.

 En el campo „Nombre‟, se debe


ingresar el nombre del archivo de respaldo.
Se debe ingresar la ruta completa.

 Si el archivo se almacena en un
NFS, se debe especificar el servidor remoto
y el directorio.

 Seleccionar si se desea crear un


archivo de respaldo o si solamente se
desea listar una lista de archivos a
respaldar.

Una vez configurados estos ítems, se


selecciona „Siguiente‟.

En este dialogo se puede seleccionar que


partes del sistema deben ser seleccionados
y respaldados.

El archivo puede contener archivos de


paquetes, archivos de configuración, y
archivos de datos.

 Se debe seleccionar entre:


o Respaldar archivos que no
pertenezcan a ningún paquete.

o Desplegar lista de archivos a respaldar antes de crear archivo de respaldo.


 En el campo „Descripción del Archivo‟ se puede ingresar una breve descripción del
perfil.
 Para verificar la integridad con MD5, se debe seleccionar „Verificar MD5 Sum‟

Cuando se finalice esta fase de configuración se debe seleccionar „Siguiente‟

Ing. Ricardo Ruiz


208
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para seleccionar ítems específicos se debe


agregar estos con seleccionar „Agregar‟ en
„Directorios incluidos en la busqueda‟

Este dialogo muestra en la parte inferior los


ítems que se excluirán del respaldo.

Esta lista incluye:

o Directorios
o Sistemas de Archivos
o Expresiones Regulares

- Restaurar datos del sistema con YaST

Se puede usar el sistema de restauración de YaST para restaurar los datos de un


respaldo.

 Ejecutar el comando yast restore. Se abrirá una ventana que solicitará la ubicación
del archivo de respaldo.
 Una vez definido el archivo, aparecerá un dialogo con las propiedades del archivo.
o Se puede visualizar el contenido del archivo seleccionando „Contenido del
Archivo‟
 Seleccionando „Siguiente‟ aparecerá un dialogo que nos permitirá seleccionar los
archivos que requerimos respaldar.

Tema 3: Crear respaldos con tar


La herramienta tar72 es la aplicación más usada para respaldo de datos en los sistemas
Linux. Esta crea archivos con un formato especial, y los almacena directamente en el
medio de respaldo (tal como una cinta magnética o un floppy), o en un archivo.
- Crear archivos tar

El formato „tar‟ es un contenedor para estructuras de archivos y directorios. Por estándar,


la extensión para este tipo de archivos es „.tar‟. Los archivos „tar‟ pueden ser almacenados
en el sistema de archivos o pueden ser escritos directamente en una cinta de respaldos.

Generalmente los datos empaquetados en el archivo „tar‟ no se comprimen, pero se


puede habilitar esto con comandos adicionales. Si el archivo se comprime (usando gzip),
su extensión cambia a „tar.gz‟ o „.tgz‟.

El comando tar primero espera una opción, luego el nombre del archivo a almacenar en el
sistema o en la cinta magnética, por ultimo espera el nombre del directorio a respaldar.
Todos los directorios y archivos dentro de este directorio serán respaldados. La sintaxis
del comando será similar a la siguiente:

tar –cvf /backup/etc.tar /etc

72
Tape ARchiver

Ing. Ricardo Ruiz


209
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En el ejemplo anterior, el comando tar respalda el contenido completo del directorio /etc
en el archivo /backup/etc.tar

La opción –c crea al archivo (/backup/etc.tar). La opción –v despliega en pantalla los


detalles del proceso de respaldo. El nombre del archivo se especifica después de la
opción –f.

El campo archivo puede ser un archivo normal (como en el ejemplo), o un dispositivo


como una unidad de grabación de cintas (/dev/st0).

tar –cvf /dev/st0 /home

En este ejemplo el directorio /home será respaldado en la unidad /dev/st0.

Cuando un archivo es creado, las rutas absolutas son cambiadas por rutas relativas. Esto
significa que el primer / es removido. Se puede ver esto con el siguiente comando:

tar –tvf /backup/etc.tar


- Desempacar archivos tar

Para desempaquetar un archivo „tar‟, el comando es el siguiente:

tar –xvf /dev/st0

Este escribe los archivos en el directorio actual siguiendo la estructura de directorios


relativos. Si no se desea desempaquetar el archivo en la carpeta actual se debe usar la
opción –C y especificar el directorio destino. Esta opción sirve también para restaurar un
solo archivo:

tar –xvf /backup/etc.tar –C /etc/inittab


- Excluir archivos del respaldo

Si se necesita excluir archivos específicos en el respaldo, una lista de estos archivos


deben ser escritos en el archivo de texto línea a línea tal como sigue:

/home/user1/.bashrc
/home/user2/Text*

En este ejemplo, el archivo /home/user1/.bashrc y todos los archivos que comiencen en


Text del directorio /home/user2/ serán excluidos del respaldo.

Esta lista se pasa con la opción –X, como en el ejemplo siguiente:

tar –cv –X archivos.excluidos –f /dev/st0 /home


- Ejecutar respaldos incrementales y diferenciales

Como se explico anteriormente en este tipo de estrategia de respaldo, solamente los


archivos modificados o creados recientemente son respaldados.

Ing. Ricardo Ruiz


210
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Usar un snapshot para respaldos incrementales

El comando tar puede usar un snapshot que contenga información sobre el ultimo proceso
de respaldo. Este archivo necesita ser especificado con la opción –g.

Primero, se necesita realizar un respaldo completo con el comando tar con la siguiente
sintaxis:

tar –cz –g /backup/archivo_snapshot –f /backup/bk_completo.tar.gz /home

En este ejemplo, el directorio /home es respaldado en el archivo


/backup/bk_completo.tar.gz. Si el snapshot no existe, el comando tar lo crea.

La siguiente ocasión que se realice un respaldo incremental con la siguiente sintaxis:

tar –cz –g /backup/archivo_snapshot –f /backup/bk_lunes.tar.gz /home

En este ejemplo, el comando „tar‟ usa el snapshot para determinar cuáles archivos o
directorios fueron modificados desde el último respaldo realizado. Solo los archivos
modificados (o creados) son incluidos en el nuevo respaldo /backup/bk_lunes.tar.gz
Usar el comando ‘find’ para buscar archivos a respaldar

Se puede usar el comando „find‟ para buscar archivos que necesitan se respaldados con
la estrategia: respaldo diferencial.

Primero, se debe generar el respaldo completo:

tar –czf /backup/bk_completo.tar.gz /home

Ahora se usa el siguiente comando para respaldar los archivos modificados más
recientemente que el último respaldo completo realizado:

find /home -type f -newer /backup/bk_completo.tar.gz -print0 | tar --null -cvf


/backup/bk_lunes.tar.gz - T -

En este ejemplo, todos los archivos (-type f) en el directorio /home que son mas nuevos
que el archivo /backup/bk_completo.tar.gz serán respaldados.

Las opciones -print0 y --null asegura que los archivos con espacios en sus nombres sean
también respaldados. La opción -T determina que los archivos entubados por stdin serán
incluidos en el respaldo.

Un problema con la línea de comando anterior es el tiempo de ejecución (puede ser muy
lento de ejecutarse cuando se respaldan grandes cantidades de datos). Si un archivo es
creado después que el comando se inicie pero antes de completarse, este archivo es más
viejo que el archivo de respaldo referenciado y al mismo tiempo no se incluirá en el
respaldo.

Ing. Ricardo Ruiz


211
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Opciones del comando tar

Las siguientes son las opciones más usadas por el comando „tar‟:

Opción Descripción
-c Crear un archivo tar
-C Cambiar al directorio especificado
-d Compara archivos en el respaldo con su contraparte en el sistema
-f Usa un archivo especifico o dispositivo
-j Comprimir o descomprimir directamente el archivo tar, usando bzip2, un
programa moderno y eficiente de compresión de datos.
-r Agrega archivos al respaldo
-u Solo incluye archivos en el respaldo que son mas nuevos que la versión del
respaldo (actualizar)
-v Despliega los archivos que son procesados
-x Extrae archivos del respaldo
-X Excluye archivos listados en un archivo
-z Comprimir o descomprimir directamente el archivo tar, usando gzip.

Tema 4: Trabajar con cintas magnéticas


Para trabajar con cintas magnéticas, se usa el comando mt. Con este comando se puede
posicionar cintas, habilitar la compresión y realizar algunas consultas al estado de la cinta.
Los dispositivos magnéticos usados en Linux son siempre dispositivos SCSI y pueden ser
accedidas con los siguientes nombres de dispositivos:

 /dev/st0. Se vincula al primer dispositivo magnético.


 /dev/nst0. Direcciona el mismo dispositivo magnético en modo „no rebobinado‟. Esto
significa que después de escribir o leer, la cinta permanece en la misma posición y no
se rebobina.

Por razones de compatibilidad con otras versiones UNIX, se incluyen dos enlaces
simbolicos: /dev/rmt0 y /dev/nrmt0. Se puede consultar el estado de la cinta ejecutando el
siguiente comando:

mt -f /dev/st0 status

En este ejemplo, la opción -f es usada para indicar el nombre del dispositivo para cintas.
La salida de este comando luce similar a lo siguiente:

da51:~ # mt -f /dev/st0 status


drive type = Generic SCSI-2 tape drive
status = 620756992
sense key error = 0
residue count = 0
file number = 0
block number = 0
Tape block size 0 bytes. Density code 0x25 (unknown). Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN

Ing. Ricardo Ruiz


212
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La información más importante en este ejemplo es el número de archivos, y el número de


bloques.

Estos parámetros determinan la posición de la cinta. En este ejemplo, la cinta esta


posicionada al inicio del primer archivo.

Para posicionar la cinta al inicio del siguiente archivo se usa el siguiente comando:

mt -f /dev/nst0 fsf 1

En este ejemplo, la opción fsf mueve la cinta la cantidad de archivos determinado por el
valor numérico siguiente. Si ahora se corre el comando para ver el estado, se desplegara
la siguiente información:

da51:~ # mt -f /dev/st0 status


drive type = Generic SCSI-2 tape drive
status = 620756992
sense key error = 0
residue count = 0
file number = 1
block number = 0
Tape block size 0 bytes.
Density code 0x25 (unknown).
Soft error count since last status=0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
da51:~ #

Ahora el número del archivo esta en 1, y al final de la salida del comando aparecen las
siglas EOF73 en vez de BOT74. Con la opción bsf, la cinta puede ser re posicionada hacia
el inicio una cantidad de archivos. Esto se usa en general, cuando posicionamos la cinta
en dispositivos no rebobinables. Si se requiere que la cinta este colocada al inicio
después del proceso de leer o escribir, se ejecuta el siguiente comando:

mt -f /dev/nst0 rewind

Si se desea expulsar la cinta del dispositivo, se ejecuta el siguiente comando:

mt -f /dev/nst0 offline

Normalmente, las cintas siempre se escriben sin compresión, en otras palabras, no se


podrán recuperar los archivos en caso de errores de lectura y escritura. Para verificar si la
compresión de datos está habilitado o no, se ejecuta el siguiente comando:

mt -f /dev/nst0 datcompression

Esto muestra si la compresión está habilitada o no. Si se coloca el parámetro „on‟ (o „off‟)
se habilitará la compresión (o deshabilitara).

73
End Of File
74
Beginning Of Tape

Ing. Ricardo Ruiz


213
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 5: Copiar datos con dd


Se puede usar el comando dd para convertir y copiar archivos bits a bits. Normalmente dd
lee desde la entrada estándar y escribe el resultado a la salida estándar, pero con el
parámetro correcto, los archivos pueden ser direccionados directamente.

Se puede copiar todo tipo de datos con este comando, incluyendo particiones de disco
completos. Para copiar un archivo la sintaxis del comando es:

da51:~ # dd if=/etc/protocols of=protocols.org


12+1 records in
12+1 records out
da51:~ # ls –l /etc/protocols*
-rw-r--r-- 1 root root 6561 Apr 30 11:28 protocols
-rw-r--r-- 1 root root 6561 Apr 30 11:30 protocols.old
da51:~ #

El uso de la opción if= especifica el archivo a ser copiado, y la opción of= se usa para
especificar el nombre de la copia.

Si se requiere copiar una partición completa, entonces el archivo de dispositivo


correspondiente debe ser el parámetro de entrada a como sigue:

da51:~ # dd if=/dev/sda1 of=boot.partition


...
da51:~ #

En este ejemplo, la partición completa /dev/sad1 es copiada al archivo boot.partition.

También se puede usar dd para copiar el MBR75 con la sintaxis:

da51:~ # dd if=/dev/sda of=/tmp/mbr_copy bs=512 count=1


...
da51:~ #

En este ejemplo el MBR del disco /dev/sda es copiado al archivo /tmp/mbr_copy usando
un bloque de datos de 512.

Tema 6: Hacer directorios espejos con rsync


El comando rsync76 es usado actualmente para crear copias de directorios completos
entre diferentes computadoras en una red.

Cuando se copia datos, rsync compara el directorio origen y destino y transfiere solo los
datos que fue modificada o creada.

75
Master Boot Record
76
Remote Synchronization

Ing. Ricardo Ruiz


214
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este comando es ideal para crear un espejo del contenido de un directorio o restaurar el
respaldo desde la red.
- Ejecutar una copia local con rsync

Se puede crear un espejo de todo el directorio /home con el siguiente comando:

rsync -a /home /shadow

En este ejemplo el directorio espejo es /shadow. El directorio /home, se crea primero


dentro de /shadow y después toda su estructura interna.

Si se ejecuta el comando nuevamente, solo los archivos modificados o creados serán


transferidos. La opción -a usada en este ejemplo coloca al comando rsync en „modo
respaldo‟, este modo es el resultado de una combinación de otras opciones (rlptgoD) y
asegura que las características de los elementos copiados sean idénticas a las originales:

Las siguientes son las opciones más usadas por el comando „rsync‟:

Opción Descripción
-l Enlaces simbólicos
-p Privilegios de acceso
-o Propietarios
-g Miembros de grupo
-t Time Stamp
-r Copia directorios recursivamente
-x Guarda archivos de un solo sistema de archivos. Esto significa que no se
siguen los enlaces simbólicos hacia otros sistemas de archivo.
-v Muestra información sobre el progreso de la copia.
-z Comprime los datos durante el proceso de transferencia. Esto es útil para
sincronizaciones remotas.
--delete Elimina archivos que ya no existen en el directorio original.
--exclude-from No respalda los archivos especificados en el archivo de exclusión.

rsync -a --exclude-from=/home/exclusion /home/. /shadow/home

En este ejemplo, todos los archivos listados en /home/exclusion no son respaldados.


- Ejecutar una copia remota con rsync

Con „rsync‟ y SSH, se puede ingresar a otros sistemas y ejecutar la sincronización de


datos de manera remota. El siguiente comando copia el directorio home del usuario tux en
un servidor de respaldo:

rsync -ave ssh root@da50:/home/tux /backup/home/

En este ejemplo, la opción -e especifica al Shell remoto (ssh) que será usado para la
transmisión de datos. El directorio origen se especifica con la expresión
root@da50:/home/tux. Esto significa que rsync ingresara a da50 como root y transferirá
el directorio /home/tux.

Ing. Ricardo Ruiz


215
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Esto funciona en dirección contraria también:

rsync -ave ssh /backup/home/tux root@da50:/home/

Tema 7: Automatizar respaldos de datos con cron


Los respaldos de datos son tareas que se deben ejecutar en periodos regulares. Se
puede programar esta tarea usando el servicio „cron‟.

da51:~ # crontab -l
0 22 * * 5 /root/bin/backup

da51:~ #

En este ejemplo, el script (debe ser creado) /root/bin/backup se ejecuta cada Viernes a las
10 P.M.

Ing. Ricardo Ruiz


216
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 17: Usar el Acceso Remoto


En este capítulo estudiaremos como configurar Linux para proveer acceso remoto a los
usuarios y que estos puedan ejecutar tareas administrativas remotamente.

Tema 1: Proveer acceso remoto seguro con OpenSSH


En el pasado, la conexión remota se establecida con telnet, este programa no ofrece
ningún método de seguridad ni mecanismos de encriptación. Existen otros canales de
comunicación tradicionales que proveen transmisiones sin encriptado (por ejemplo FTP).

Las herramientas SSH se desarrollaron para proveer transmisiones seguras encriptando


la cadena de autenticación y todos los datos transmitidos entre los host.

Con SSH, el flujo de datos aun puede ser revisado e inclusive almacenado en un tercer
host, pero el contenido de los datos al estar encriptados y debido a que no se puede
desencriptar, estos son prácticamente ilegibles para dicho host.

Nuestra distribución de Linux, instala los paquetes OpenSSH como parte de su estándar,
el paquete incluye ssh, scp y sftp como alternativas a Telnet, rlogin, rsh, rcp y FTP.
- Fundamentos de criptografía

La criptografía es un conjunto de procedimientos y técnicas usadas para encriptar y


asegurar la autenticidad de los datos. Para lograr esto se usa un algoritmo de encriptación
que convierte el texto plano en un texto cifrado usando una llave. La llave es la
información requerida para encriptar y desencriptar los datos.
Encriptación simétrica

Con este método o procedimiento, la misma llave se usa para encriptar y desencriptar los
datos. Si esta llave se conoce, los datos encriptados pueden ser desencriptados.

Una propiedad importante de un procedimiento de encriptación es la longitud de la llave.


Una llave simétrica con longitud de 40 bits (1,099,511,627,776 posibilidades) puede ser
vulnerado con el método de fuerza bruta en un corto periodo de tiempo. Actualmente, una
llave simétrica con 128 bits o más es considerada segura. En otras palabras, a mayor
longitud de la llave mayor es la seguridad.

Las siguientes son algunos de los más importantes tecnologías de encriptación simétrica:

 DES. DES77 fue estandarizado en 1977 y es el fundamento de muchos procedimientos


de encriptación (tal como las contraseñas UNIX/Linux). La longitud de la llave es de 56
bits. En enero de 1999 la EFF78 logró descifrar un texto encriptado con DES en solo 22
horas, usando el método de fuerza bruta. Desde entonces una llave de 56 bits es
considerada insegura debido a que se puede descifrar en poco tiempo.
 Triple-DES. Esta es una extensión de DES, usa DES tres veces. Dependiendo de la
variante DES usada, la llave tendrá una longitud máxima de 112 o 168 bits.

77
Data Encryption Standar
78
Electronic Frontier Foundation

Ing. Ricardo Ruiz


217
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 IDEA. Este es un algoritmo de 128 bits patentado en EU y UE, no es comercial, su uso


es libre.
 Blowfish. Este algoritmo tiene una llave de longitud variable de hasta 448 bits. Fue
desarrollado por Bruce Schneier, no tiene patente y su uso es libre.
 AES. Este algoritmo es el sucesor de DES. En 1993 el NIST79 decidió que DES no
satisface los requerimientos actuales de seguridad, y organizo una competencia para
un nuevo algoritmo de encriptado estándar. El ganador de esta competencia fue
anunciado el 2 de Octubre del 2000, y este es el algoritmo Rijndael que soporta llaves
con longitudes de 128, 192 o 256 bits.

La ventaja del cifrado simétrico es que provee cifrado y descifrado de datos de manera
eficiente. La desventaja son las dificultades asociadas con la distribución y administración
de las llaves.
Encriptación asimétrica

En un cifrado asimétrico existen dos llaves, una pública y otra privada. Los datos que son
cifrados con la llave privada solo pueden ser descifrados con la llave pública, y los datos
cifrados con la llave pública solo pueden ser descifrados con la llave privada. La principal
ventaja de este método, es que la llave pública puede ser distribuida libremente. Una
desventaja es su bajo rendimiento en el procesamiento de los datos.

Aun así, se pueden combinar ambos métodos. Por ejemplo, una llave para cifrado
simétrico se transmite usando canales cifrados asimétricamente. SSH usa una
combinación de ambos procedimientos.

Algunos procedimientos de cifrado importantes son:

 RSA. El nombre deriva de los apellidos de sus desarrolladores, Rivest, Shamir, y


Adleman. Su seguridad está basada en la idea de que es fácil la multiplicación de dos
números primos grandes pero es difícil retornar a los factores originales.
 DSA80. Es un estándar del gobierno federal de Estados Unidos.
 Diffie-Hellman. Este método establece llaves de encriptado seguras sin enviar las
llaves a través de canales inseguros.

Las llaves para este método son mucho más largas que las usadas por los
procedimientos simétricos. Por ejemplo, la longitud mínima para que RSA sea
considerado un método seguro es de 1024 bits.
- Arquitectura y propiedades de SSH

SSH ofrece un protocolo de transmisión remota segura.


Propiedades de SSH

El Shell seguro no solo provee todas las funcionalidades de telnet, rlogin, rsh y rcp, sino
que también incluye algunas propiedades de FTP.
SSH soporta X11 y todas las conexiones TCP, proveyendo un canal criptográficamente
seguro. A continuación se listan las funcionalidades básicas provistas por SSH:
79
National Institute of Standar and Technology
80
Digital Signature Algorithm

Ing. Ricardo Ruiz


218
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Ingreso desde un host remoto.


 Ejecución de comandos interactivos y no interactivos desde el host remoto.
 Copiar archivos entre los host de red, el soporte para compresión de datos es
opcional.
 Autenticación y comunicación criptográficamente segura entre redes inseguras.
 Cifrado automático y transparente de toda la comunicación.
 Sustitución completa de todas las utilidades „r‟: rlogin, rsh y rcp.
 Port Forwarding
 Tunneling.

SSH no solo cifra el tráfico y autentica al cliente, también autentica a los servidores. Son
varios los procedimientos disponibles para autenticación de un servidor.
Versiones del protocolo SSH

Los protocolos SSH1 y SSH2 están actualmente disponibles para el paquete SSH.

Protocolo versión 1 (SSH1)

La siguiente ilustración trata de explicar el proceso que SSH1 usa para transmitir datos
sobre una conexión segura:

El cliente establece una conexión con el servidor por


el puerto 22. En esta fase ambos (Cliente-Servidor)
determinan que protocolo y otros parámetros de
comunicación serán usados.

En esta fase el servidor envía al cliente un par de


llaves RSA: long-life host key pair (HK) y Server
process key pair (SK). También se remite la llave
pública. HK y SK ayudan a prevenir que atacantes
puedan desencriptar los datos.

El cliente verifica que la llave publica sea correcta


comparándola con /etc/ssh/ssh_known_host.
Como siguiente paso, el cliente genera un número
aleatorio de 256 bits cifrándola con la llave pública y
se lo remite al servidor.
El servidor desencripta el numero aleatorio debido a
que este posee la llave privada secreta.

Este número aleatorio es la llave para el cifrado


simétrico que ambos sistemas deben conocer.
También se conoce como „llave de sesion‟.

Cuando al usuario se le consulta por su


contraseña, ya esta comunicación se
da por vías seguras, o encriptada.

Protocolo versión 2 (SSH2)

Ing. Ricardo Ruiz


219
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

SSH1 no tiene un mecanismo para asegurar la integridad de una conexión. Esto le


permite a un atacante insertar paquetes de datos en una conexión existente (ataque de
inserción).

SSH2 provee mecanismos para evitar este tipo de ataques. Este mecanismo es llamado
HMAC81 y se describe con detalles en el RFC 2104.

Actualmente solo se puede usar SSH1 si SSH2 no está disponible en el sistema.

La siguiente ilustración trata de explicar el proceso que SSH2 usa para transmitir datos
sobre una conexión segura:

El cliente establece una conexión


con el servidor por el puerto 22.
1 En esta fase ambos (Cliente-
Servidor) determinan que
protocolo y otros parámetros de
comunicación serán usados.

El servidor ahora tiene un par de


llaves (DSA o RSA), la pública y
la privada;
2 /etc/ssh/ssh_host_rsa_key y
/etc/ssh/ssh_host_dsa_key
respectivamente.
Disco
El cliente verifica que la llave
publica sea correcta
comparándola con
/etc/ssh/ssh_known_host.
3 Una llave Diffie-Hellman es
negociada a continuación entre
ambos equipos, esto evita el
envio de llaves entre los equipos.

Tal como en SSH1, al final de la


4 negociación, la comunicaciones
son cifradas simetricamente.

Cuando al usuario se le consulta por su contraseña, ya esta comunicación se da por vías


seguras, o encriptada.

La diferencia básica entre SSH1 y SSH2 son los mecanismos que tiene el protocolo para
garantizar la integridad de la conexión. HMAC es usado para este propósito. La llave de
sesión es diferente (Diffie-Hellman).

Para verificar que versión de SSH existe disponible en el servidor, se debe iniciar una
sesión telnet en el puerto 22, una de las siguientes líneas será la respuesta:

81
keyed-Hash Message Authentication Code

Ing. Ricardo Ruiz


220
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

da51:~ # telnet localhost 22


trying 127.0.0.1...
Connected to localhost
Escape character is ‘^]’.
SSH-1.5-OpenSSH_4.0

da51:~ #

da51:~ # telnet localhost 22


trying 127.0.0.1...
Connected to localhost
Escape character is ‘^]’.
SSH-1.99-OpenSSH_4.2

da51:~ #

da51:~ # telnet localhost 22


trying 127.0.0.1...
Connected to localhost
Escape character is ‘^]’.
SSH-2.0-OpenSSH_4.6

da51:~ #

En el primer ejemplo (la versión 1.5) solo responde con SSH1, en el segundo ejemplo,
responden SSH1 y SSH2, y en el tercer ejemplo solamente SSH2.
Configuración del mecanismo de autenticación de SSH.

El servidor SSH puede descifrar la llave de sesión generada y cifrada por el cliente
solamente si tiene la llave privada. Si el servidor no logra descifrar la llave de sesión, la
comunicación finaliza. Una condición absoluta para la seguridad de este procedimiento es
que el cliente puede verificar si la llave pública del servidor pertenece realmente a ese
servidor.

Actualmente SSH no usa ningún servicio de directorio (como LDAP) o ningún certificado
(como SSL) para la administración de la llave pública. Esto significa que el par de llaves
aleatorias puede ser creada fácilmente en otros equipos, por eventuales atacantes, e
incluirse en el dialogo de autenticación.

Cuando se contacta por primera vez con un servidor desconocido, es posible „aprender‟
su llave de host. En este caso, el cliente SSH escribe esta llave en la base de datos de
llaves local. A continuación un ejemplo:

da51:~ # ssh geeko@da10


The authenticity of host 'da10 (10.0.0.10)' can't be established.
RSA key fingerprint is ea:79:90:9a:d4:bf:b6:a2:40:ee:72:56:f8:d9:e5:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'da10,10.0.0.10' (RSA) to the list of known hosts.

Ing. Ricardo Ruiz


221
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si se responde „SI‟ (yes) a la pregunta: ¿Está seguro de continuar con la conexión? (Are
you sure you want to continue connecting (yes/no)?), entonces la llave publica es
almacenada, de lo contrario la comunicación es abortada en ese instante.

Muchos mecanismos están disponibles en el lado del servidor para autenticar a los
clientes. Los mecanismos disponibles por el servidor son especificados en el archivo de
configuración /etc/ssh/sshd_config.

A continuación se describen los dos más importantes con los parámetros de configuración
apropiados en paréntesis.

 Autenticación con llave pública (RSA/DSA).


(ssh_config: RSA Authentication for SSH1)
(ssh_config: Pubkey Authentication for SSH2)
El procedimiento de autenticación mediante llave pública es el método más seguro.
 Autenticación por contraseña
(ssh_config: PasswordAuthentication)
Este procedimiento de autenticación se usa con las contraseñas de los usuarios UNIX.
La transferencia de la contraseña está cifrada.

Después que la actualización es exitosa, un ambiente de trabajo es creado en el servidor.


Para este propósito, las variables de entorno son iniciadas, y las conexiones X11 y
cualquier posible conexión es redireccionada.
- Configurar el servidor SSH

El archivo de configuración para el servidor está ubicada en /etc/ssh/sshd_config. Algunas


de las opciones más comunes son:

Opción Descripción
AllowUsers Habilita el acceso SSH solo para los usuarios listados, estos
deben estar separados por espacio.
DenyUsers Deshabilita el acceso SSH solo para los usuarios listados,
estos deben estar separados por espacio.
Protocol Especifica la versión del protocolo.
ListenAddress Especifica la dirección local en la que el demonio sshd
esperará conexiones, Direccion_IP:Puerto
Port Especifica el número del puerto en la que el demonio sshd
escucha conexiones. El estándar es 22. Se pueden declarar
múltiples opciones.
PasswordAuthentication Especifica si se usara un método de autenticación. Si se
requiere deshabilitar, configurar esta opción y UsePAM en
„no‟.
UsePAM Habilita la interface PAM

- Configurar el cliente SSH

Se configura el cliente SSH editando el archivo /etc/ssh/ssh_config. Cada usuario puede


editar y ajustar su configuración individual usando el archivo ~/.ssh/config.

Ing. Ricardo Ruiz


222
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si un usuario quiere asegurarse que solo servidores conocidos sean aceptados, este
debe configurar la opción StricthostKeyChecking en „yes‟. Esto evita que el cliente SSH
agregue nuevas llaves de servidores desconocidos al archivo ~/.ssh/known_hosts.
Cualquier nueva llave debe ser agregada manualmente usando un editor. Las conexiones
a servidores en los que se modifique la llave serán rechazadas.

Para las versiones posteriores a 1.2.20, se pueden definir tres valores a esta opción: „yes‟,
„no‟ y „ask‟. El estándar es „ask‟, que significa que antes de agregar nuevas llaves, el
usuario debe decidir que acción debe tomar.

Aun así, estas opciones tienen precedencias y estas son:

1. Opciones de Línea de Comandos


2. ~/.ssh/config
3. /etc/ssh/ssh_config
- Comandos relacionados

La siguiente tabla muestra las opciones más comunes usadas en los clientes SSH:

Comando Descripción
ssh Este es el cliente SSH, este viene a reemplazar las herramientas: rlogin,
rsh y telnet. Existe un enlace simbólico a ssh y es slogin.
Cada usuario puede usar ssh en lugar de telnet.
scp Este comando copia archivos de manera segura entre dos computadoras
usando ssh, este comando reemplaza a rcp y ftp.
sftp Este comando ofrece una interfaz similar a la línea de comandos del
cliente ftp. Se puede visualizar archivos en la maquina remota usando ls
y transferir archivos usando put y get.
ssh-keyscan Es una utilidad para leer las llaves públicas desde varios servidores SSH.
Las llaves son visualizadas en la salida estándar.
ssh-keygen Este comando genera llaves RSA
ssh-agent Este comando puede tomar llaves RSA privadas. Esto simplifica la
autenticación.
ssh-add Este comando registra nuevas llaves con el comando ssh-agent.

La sintaxis básica para ssh es: ssh opciones host comando


La sintaxis básica para scp es: scp opciones archivo_origen archivo_destino

A continuación unos ejemplos del uso de los comandos ssh y scp:

geeko@da51:~> ssh da20.digitalairlines.com

En este ejemplo, el usuario geeko@da51 ingresa al servidor da20.digitalairlines.com


como usuario geeko.

geeko@da51:~> ssh –l tux da20.digitalairlines.com

En este ejemplo, el usuario geeko@da51 ingresa al servidor da20.digitalairlines.com


como usuario tux.

Ing. Ricardo Ruiz


223
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

geeko@da51:~> ssh –l tux@da20.digitalairlines.com

En este ejemplo, el usuario geeko@da51 ingresa al servidor da20.digitalairlines.com


como usuario tux.

geeko@da51:~> ssh –l root@da20.digitalairlines.com shutdown –h now

En este ejemplo, el usuario geeko@da51 envía la orden de apagar al servidor


da20.digitalairlines.com.

geeko@da51:~> scp da20.digitalairlines.com:/etc/HOSTNAME ~

En este ejemplo, el usuario geeko@da51 copia el archivo /etc/HOSTNAME del servidor


da20.digitalairlines.com al directorio home local.

geeko@da51:~> scp /etc/motd da20.digitalairlines.com:

En este ejemplo, el usuario geeko@da51 copia el archivo /etc/motd local a su directorio


home del servidor da20.digitalairlines.com.

geeko@da51:~> ssh –X da20.digitalairlines.com

En este ejemplo, el usuario geeko@da51 ingresa al servidor da20.digitalairlines.com. La


conexión se establece con un túnel X11, habilitando la ejecución de aplicaciones graficas
desde da20. digitalairlines.com, estas aplicaciones se desplegaran en da51.

geeko@da51:~> ssh-keyscan da50


# da50 SSH-1.99-OpenSSH_4.2
da50 1024 35
147630753138877628907212114351828387115609838536239739
003941645933217891796753690402603932260180108759131976
671875861048667320911706379693377112828949660003683832

geeko@da51:~> ssh-keyscan -t rsa da50


# da50 SSH-1.99-OpenSSH_4.2
da50 ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEA3Nj0qGKjyGCBBhn487sMtAzyRF
q9QPK9ZcPiILSNPugTGbG9Y7+ta68JLAS+Bxp4yZGNhtw5tdnM3sRY
WCj6KbjtzjdibuVUGv9xddrq8tUHl8x3y2SY48JA9YozlO57QIT3VP
p/cv5YFYPAlPttNQf0DIbpLkNlNuXTrhbfIsE=

En este ejemplo, la llave pública es leída desde el servidor da50.

SSH puede ser usado para proteger tráfico sin cifrado, por ejemplo POP3, realizando un
túnel SSH. Los siguientes ejemplos ilustra esto:

geeko@da51:~> ssh –L 4242:da20.digitalairlines.com:110 geeko@da20.digitalairlines.com

En este ejemplo, el usuario geeko@da51 reenvía las conexiones entrantes por el puerto
4242 local al puerto 110 (POP3) del host remoto da20.digitalairlines.com vía túnel SSH.

Ing. Ricardo Ruiz


224
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El uso de port-forwarding mediante túneles SSH, se puede configurar un canal seguro


adicional para conexiones entre el host local y el remoto.

geeko@da51:~> ssh –L 4242:da20.digitalairlines.com:110 geeko@da30.digitalairlines.com

En este ejemplo, el usuario geeko@da51 reenvía las conexiones entrantes por el puerto
4242 local al puerto 110 (POP3) del host remoto da30.digitalairlines.com vía túnel SSH.
Este host entonces reenvía los paquetes al puerto 110 (POP3) del host
da20.digitalairlines.com usando una conexión sin cifrado.
- Administración de la autenticación de llave publica

Además de la autenticación con contraseña, un usuario también puede autenticarse


usando un procedimiento de llave pública. SSH1 solamente soporta llaves RSA. SSH2
provee autenticación a través de llaves RSA y DSA.

Para administrar la autenticación de llaves públicas, es necesario entender algunos temas


adicionales:
Proceso de autenticación de llave pública.

Para usar la autenticación con llave pública, la llave pública de un usuario debe estar
almacenada en el servidor, en el directorio home del usuario que quiere acceder. Estas
llaves públicas son almacenadas en el archivo ~/.ssh/authorized_keys. La llave privada
correspondiente debe ser almacenada en la computadora cliente.

Con las llaves almacenadas en los lugares apropiados, ocurre lo siguiente en el proceso
de autenticación:

1. El cliente informa al servidor que llave pública está usando para la autenticación.
2. El servidor verifica si la llave pública es conocida.
3. El servidor cifra un número aleatorio usando la llave pública y transfiere esta al cliente.
4. Solo el cliente es capaz de descifrar el número aleatorio con su llave privada.
5. El cliente envía al servidor un checksum MD5 que es calculada usando la llave de
sesión.
6. El servidor ahora calcula su propio checksum y si ambos son idénticos, el usuario es
autenticado con éxito.
7. Si la autenticación mediante llave pública falla, y se tiene habilitado la autenticación
por contraseña, entonces se le solicita al usuario la contraseña de su usuario.
Crear una pareja de llaves.

Se pueden crear la pareja de llaves con el comando ssh-keygen. Una llave diferente es
requerida por SSH1 y SSH2. Por esta razón se debe crear llaves separadas para cada
versión.

Se puede usar la opción -t tipo_llave para especificar el tipo de llave: ssh-keygen –t


rsa1 genera una pareja de llaves para SSH1; ssh-keygen –t rsa o ssh-keygen –t dsa
son usados para crear una pareja de llaves para SSH2.

Ing. Ricardo Ruiz


225
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

A continuación se muestra como se genera una pareja de llaves para SSH2:

geeko@da51:~> ssh-keygen -t dsa


Generating public/private dsa key pair.
Enter file in which to save the key (/home/geeko/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/geeko/.ssh/id_dsa.
Your public key has been saved in /home/geeko/.ssh/id_dsa.pub.
The key fingerprint is:
ef:73:c6:f6:8a:ff:9d:d1:50:01:cf:07:65:c5:54:8b geeko@da51

Configuración y uso de autenticación de llave pública.

Para la autenticación usando llaves RSA o DSA, se necesita copiar la llave publica al
servidor, entonces se añade la llave publica al archivo ~/.ssh/authorized_keys.

Por ejemplo, se puede copiar la llave al servidor con el comando scp:

geeko@da51:~> scp .ssh/id_dsa.pub da50:geeko-pubkey

Ahora la llave debe ser agregada al archivo ~/.ssh/authorizes_keys sin reescribir las llaves
ya registradas:

geeko@da51:~> scp .ssh/id_dsa.pub da50:geeko-pubkey


geeko@da51:~> ssh da50
Password:
Last Login: Tue Jan 10 23:03:29 2013 from da51.digitalairlines.com
geeko@da50:~> cat geeko-pubkey >> ~/.ssh/authorized_keys
geeko@da50:~> exit
geeko@da51:~>

Se puede en este momento ejecutar el cliente para verificar si la autenticación con DSA
está trabajando apropiadamente:

geeko@da51:~> ssh da50


Enter passphrase for key ‘/home/geeko/.ssh/id_dsa’:
Last Login: Tue Jan 10 23:03:29 2013 from da51.digitalairlines.com
geeko@da50:~> exit
geeko@da51:~>

Para agregar una passphrase se usa el comando ssh-add:

geeko@da51:~> ssh-add .ssh/id_dsa


Enter passphrase for .ssh/id_dsa:
Identity added: .ssh/id_dsa (.ssh/id_dsa)
geeko@da51:~>

Para posteriores conexiones que use el procedimiento de llave pública solicitara la frase
segura.

Ing. Ricardo Ruiz


226
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 2: Habilitar administración remota con YaST


En nuestra distribución de estudio, se puede habilitar la administración remota usando el
modulo de administración remota de YaST.

De hecho, este modulo activa el acceso remoto a todo el entorno grafico, no solo a la
administración remota.

Para implementar y usar esta conexión remota, se necesita conocer lo siguiente:

 Administración remota con YaST usando VNC


 Configurar el servidor para la administración remota
 Acceder al servidor para administrarlo remotamente

Una conexión de administración remota es menos segura que SSH, que cifra todos los
datos transmitidos. Por esta razón, se recomienda usar este tipo de conexiones
solamente
- Administración remota con YaST usando VNC

VNC82 es una solución cliente-servidor que permite a un servidor remoto X ser


administrado mediante un cliente desde cualquier parte del Internet (debo recalcar que
este tipo de acceso debe limitarse a la red LAN ya que el trafico no está cifrado)

Los sistemas operativos de ambos equipos no necesariamente deben ser los mismos,
esto incluye: Microsoft Windows, Apple MacOS, y Linux.

Se usa el modulo de administración remota de YaST para configurar el acceso remoto


con VNC y poder acceder al servidor desde cualquier computador de red.

Cuando se activa la administración remota, xinetd proporciona la conexión que exporta la


sesión X-login a través de VNC.

Con la administración remota activada, se puede conectar al servidor usando un cliente


VNC tal como vncviewer (hostname:5901), o una conexión VNC en Konkeror
(vnc://hostname: 5901), o en un navegador web con java (vnc://hostname: 5801).

El parámetro hostname puede ser el nombre del host actual


(http://da51.digitalairlines.com:5801), o su dirección IP (http://10.0.0.1:5801).
- Configurar el servidor para la administración remota

Para configurar la administración remota se debe realizar lo siguiente:

Iniciar el modulo de administración remota de YaST con el comando: yast remote

En la siguiente pagina se muestra el dialogo que aparece:

82
Virtual Network Computing

Ing. Ricardo Ruiz


227
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se debe seleccionar „Habilitar Administración Remota‟, si el muro de fuego está activo, se


debe habilitar „Abrir puerto en el muro de fuego‟, seleccionar „Finalizar‟.

Si se encuentra en una consola grafica, se deben cerrar todas las aplicaciones y desde la
consola alterna (Ctrl + Alt + F2) ejecutar el comando: rcxdm restart.
- Acceder al servidor para administrarlo remotamente

Para acceder al servidor se debe usar un cliente VNC o un navegador con JAVA
habilitado.

Como se explico anteriormente, con el navegador se coloca el nombre del equipo mas el
puerto 5801:

http://hostname:5801

Donde hostname es el FQDN o la dirección IP del servidor.

En este documento se usara la herramienta Linux krdc para establecer la conexión


remota. Una vez ejecutada esta herramienta en un escritorio grafico el dialogo es el
siguiente:

Ing. Ricardo Ruiz


228
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En el cuadro „Escritorio Remoto‟, se


coloca la IP o el nombre del host al que
deseamos conectarnos.

Seleccionamos el tipo de conexión que


tenemos hacia ese servidor, y
presionamos „Ok‟

Nos pedirá la contraseña para acceso


remoto del servidor.

Una vez escrita la contraseña se


desplegara en la ventana del cliente VNC
la pantalla grafica solicitando el usuario y
contraseña para acceder al sistema

Ing. Ricardo Ruiz


229
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 18: Servicio de Impresión


CUPS83 está basado en IPP84. Este protocolo es soportado por muchos fabricantes de
impresoras y sistemas operativos. IPP es un protocolo de impresión estándar que habilita
autenticación y control de acceso.

Tema 1: Configuración de impresión local.


YaST provee funcionalidad para la instalación y configuración de una impresora.
- Cuando configurar una Impresora.

Se puede configurar una impresora en algún momento descrito a continuación.

 Durante la instalación. Si se estamos en el dialogo de Configuración de Hardware, y


la detección automática no es correcta, se selecciona Impresoras o se usa la lista
Cambiar. Durante la instalación, solamente las impresoras conectadas directamente
son detectadas y listadas en Impresoras.

83
Common UNIX Printing System
84
Internet Printing Protocol

Ing. Ricardo Ruiz


230
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Despues de la instalación. Se puede cambiar los ajustes de impresión con el Centro


del Control YaST seleccionando la pestaña Hardware > Impresoras. Con el
comando yast printer, también se carga directamente el modulo.
- Aplicaciones requeridas para la impresión.

Los siguientes paquetes son necesarios instalar para instalar un servidor de impresión.

Paquete Contenido
cups Es el que provee al demonio cups
cups-client Provee las herramientas de impresión en línea de comandos.
cups-libs Debe ser instalado siempre, debido a que muchas aplicaciones
se enlazan a través de las librerías.
cups-drivers Provee los archivos para las colas de impresión en PPD.
cups-drivers-stp
cups-suse-ppds-dat Provee un archivo pregenerado /etc/cups/ppds.dat

Estos archivos son instalados automáticamente si se usa YaST para configurar el servidor
de impresión. YaST también crea los enlaces simbólicos en los directorios de niveles de
ejecución para asegurar que el demonio CUPS sea iniciado automáticamente cuando el
sistema arranca.

Otras aplicaciones requeridas por el sistema de impresión, como „ghostscript-library‟,


son instalados automáticamente durante la instalación del sistema.
- Agregar una impresora.

Existen dos maneras de instalar una impresora:


Agregar una impresora con YaST.

El dialogo que aparece cuando necesitamos configurar una impresora con YaST, es la
mismo que aparece durante la instalación (ver figura anterior).

En el cuadro superior se listan las impresoras que se encuentren actualmente


configuradas ya sea detectadas automáticamente o agregadas manualmente. Si existe
una impresora listada, entonces en la parte inferior de este dialogo se mostrara el detalle
de la misma.

Para agregar una impresora que no se encuentre listada, por ejemplo, una impresora en
red, se debe presionar el botón „Agregar‟.

Después de esto aparecerá un dialogo en la que se debe seleccionar el tipo de la


impresora:

 Nueva cola para una impresora existente.


 Impresora directamente conectada.
 Impresora de red.

Dependiendo de la selección, se abrirán diferentes opciones, una para cada caso


especifico. Ver imagen en siguiente página:

Ing. Ricardo Ruiz


231
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Nueva cola para una impresora existente.

Esta opción aparecerá solamente si se tiene una impresora configurada. Agregar una cola
a una impresora existente es útil si se usa, por ejemplo, una calidad de impresión
diferente por cola de impresión.

El primer dialogo sirve para seleccionar la impresora a la que se le agregara una nueva
cola, en el segundo dialogo se pueden realizar los cambios necesarios por cada ítem
listado. Para probar la configuración se debe seleccionar „Probar‟. Una vez ajustadas
todas las propiedades se selecciona „Ok‟ para aceptar los cambios y retornar al dialogo de
configuración de impresoras.

Ing. Ricardo Ruiz


232
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Impresora directamente conectada.

Muchas impresoras que se conectan directamente al sistema son detectadas


automáticamente, si no sucede esto, se debe seleccionar esta opción para agregarla al
sistema:

En este ejemplo se ha seleccionado agregar una impresora con puerto paralelo. En el


segundo dialogo mostrado, se debe seleccionar el puerto paralelo en que se instalara la
impresora.

Posteriormente se debe definir el nombre de la impresora, su descripción y ubicación,


también se define si se compartirá la impresora en red. En el siguiente dialogo se debe
seleccionar la marca y modelo de la impresora, se define si agregar otro archivo PPD o
seleccionar uno ya existente.

Una vez definidas todas estas configuraciones, el dialogo que aparecerá es el mismo en
que se definen las propiedades de la impresora, una vez aceptados estos ajustes de
configuración la impresora se mostrará en la lista de impresoras disponibles.

Ing. Ricardo Ruiz


233
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Impresora de red.

CUPS soporta los protocolos IPP, LPD85, SMB86 y socket. A continuación la descripción
de estos protocolos:

Protocolo Descripción
IPP IPP es relativamente un protocolo nuevo (1999), basado en HTTP.
Comparado con otros protocolos, este transmite mucho más datos.
CUPS usa IPP para transmisión interna de datos. Este es el protocolo
estándar para el reenvío de colas entre servidores CUPS.
El número para el puerto de IPP es 631.
Ejemplo con un dispositivo URI87: ipp://cupsserver/printers/printqueue
El dispositivo URI puede ser usado para especificar una impresora.
LPD El protocolo LPD es descrito en el RFC 1179.
Algunos datos relacionados a trabajos de impresión, son enviados a la cola
de impresión después de la data actual. Esto significa que una cola de
impresión puede ser especificada cuando configura el protocolo LPD para la
transmisión de datos.
Las implementaciones de muchos fabricantes de impresoras son flexibles
cuando se especifica un nombre a la cola de impresión. Si es necesario se
debe leer el manual de la impresora para saber cómo estructurar el nombre
de la cola de impresión (ejemplos: LPT, LPT1 o LP1).
El número para el puerto de LPD es 515.
Ejemplo con un dispositivo URI: lpd://host_printer/LPT1
SMB CUPS también soporta impresión o impresoras conectadas y compartidas
en sistemas Windows. El protocolo usado para este propósito es SMB.
SMB usa los números de puertos: 137, 138 y 139.
Ejemplo con un dispositivo URI:
smb://usuario:contraseña@grupo_trabajo/servidor/impresora
smb://usuario:contraseña@host/impresora
smb://servidor/impresora
socket Este protocolo es usado para conectar una impresora con puerto de red,
como la tecnología HP JetDirect. Los puertos usados por este protocolo
comúnmente son: 9100 o 35.
Ejemplo con un dispositivo URI:
socket://servidor_impresion:9100/

85
Line Printer Daemon
86
Standard Message Block
87
Universal Resource Identifier

Ing. Ricardo Ruiz


234
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si se selecciona „Impresora de Red‟ en el


dialogo „Tipo de Impresora‟, se abre un
dialogo en el que se debe seleccionar cual
protocolo se usará para instalar la
impresora.

Aun cuando las opciones son 6 en este


curso solamente se cubrirán dos de ellos:

Imprimir por medio de un servidor CUPS.

El dialogo al lado se mostrara si


seleccionamos esta opción.

Las opciones son descritas en el cuadro de


texto del lado izquierdo.

A continuación se describen brevemente


estas.

Cliente CUPS Solamente

Se puede permitir el acceso a colas de impresión en un servidor específico cuando no


tenemos un demonio de impresión instalado localmente.

Impresora
CLIENTE SERVIDOR
lpr archivo.ps cupsd

Después de seleccionar esta opción, y leer detenidamente la advertencia, el siguiente


dialogo aparecerá, este solicita la dirección IP o el FQDN del servidor de correos y la cola
de correos correspondiente.

El servidor CUPS a usar se añade al archivo /etc/cups/client.conf

Ing. Ricardo Ruiz


235
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Esta es una buena opción de configuración


si se tiene un solo servidor para la red
completa.

CUPS usando broadcasting

Probablemente esta es la mejor opción de


impresión en red. Con CUPS ejecutándose
localmente, se puede imprimir en las
impresoras conectadas directamente, así
como en aquellas anunciadas por medio de
broadcasting por otros servidores. Nuevas
impresoras anunciadas en la red
aparecerán automáticamente y estarán
disponibles a los usuarios.

CLIENTE SERVIDOR

Impresora Impresora

lpr archivo.ps cupsd

cupsd

Con esta configuración, se deben modificar los ajustes del firewall, y especificar desde
cuales direcciones se deben aceptar tráficos de broadcast.

Seleccionando „Ok‟, se retorna al dialogo de Configuración de Impresoras.

Ing. Ricardo Ruiz


236
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Cola remota IPP

Con esta opción se puede acceder a una


cola específica en un servidor específico.

A diferencia de la opción „solo cliente‟, un


servidor CUPS se ejecuta localmente, y las
impresoras locales pueden ser accedidas.

Imprimir directamente a una impresora de


red.

Esta opción permite seleccionar impresoras


equipadas con una tarjeta de red.

Para este tipo de impresoras se selecciona


la opción „Puerto de Impresión Directo
(TCP)‟ en el dialogo mostrado al lado.

La opción „Cola LPD Remota‟ desplegara el


mismo dialogo que aparece después de
seleccionar impresoras en red.

La opción „Cola remota IPP‟ habilita el uso


de posibles futuras colas CUPS que no
puedan ser configuradas con YaST.

Después de seleccionar „Puerto de


Impresión Directo (TCP)‟, y seleccionar
„Siguiente‟, aparece el dialogo de la
izquierda que solicita el IP o el FQDN de la
impresora de red.

Seleccionando „Siguiente‟, se mostrara un


dialogo que solicita el nombre de la cola de
impresión y otras configuraciones de la
impresora.

Luego de eso, aparecerá el dialogo en la


que se debe especificar la marca y modelo
de la impresora, anteriormente estudiado.

Ing. Ricardo Ruiz


237
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Agregar una impresora desde la línea de comandos.

Además de YaST, se puede configurar CUPS con las herramientas de línea de


comandos. Después de recopilar la información necesaria tal como el archivo PPD88 y el
nombre del dispositivo, se debe ejecutar lo siguiente:

lpadmin -p <cola> -v <dispositivo-URI> \ -P <archivo-PPD> -E

La opción –p especifica el nombre de la cola de impresión, la opción –v ajusta los


atributos del dispositivo URI de la cola de impresión, y la opción –P es usada para
especificar el archivo PPD.

No se debe usar la opción –E como primera opción del comando. Para todos los
comandos CUPS, -E como primer argumento implica el uso de una conexión cifrada y
como último argumento habilita que la impresora acepte trabajos de impresión.

Por ejemplo, para habilitar una impresora con bus en paralelo, el comando es similar al
siguiente:

lpadmin -p ps -v parallel:/dev/lp0 –P \ /usr/share/cups/model/Postscript.ppd.gz -E


Para habilitar la impresión en red, el comando será similar al siguiente:

lpadmin -p ps -v socket://10.10.10.200:9100/ –P \
/usr/share/cups/model/Postscript-level1.ppd.gz -E

Tema 2: Administrar trabajos y colas de impresión.


A través de varios comandos, CUPS puede iniciar, detener y modificar colas de impresión.
Los comandos para el sistema de impresión CUPS y sus manuales están incluidos en el
paquete „cups-client‟.

Las herramientas CUPS, permiten el uso de comandos con dos diferentes estilos o
convenciones llamadas:

 Estilo Berkeley (comandos idénticos al utilizado con el sistema de impresión LPRng)


 Estilo System V

Comparado con Berkely, System V provee un rango más extenso de características para
la administración de impresión.
- Generar un trabajo de impresión

Se pueden usar los siguientes comandos para generar un trabajo de impresión:

 Berkeley: lpr –P cola archivo; ejemplo: lpr –P color chart.ps


 System V: lp –d cola archivo; ejemplo: lp –d color chart.ps

Con estos comandos, el archivo chart.ps es enviado a la cola de impresión color.

88
Postscript Printer Description

Ing. Ricardo Ruiz


238
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si no se especifica una cola, el trabajo de impresión se envía a la cola estándar.

Con la opción „–o‟, se envían a la cola opciones adicionales:

da51:~ # lpr –P lp -o duplex=none order.ps


da51:~ #

da51:~ # lp –d lp -o duplex=none order.ps


da51:~ #

Estos comandos envían el archivo order.ps a la cola lp y al mismo tiempo deshabilita la


transmisión dúplex en el dispositivo. Para ver más opciones posibles, ejecute:
lpoptions –l.

Los comandos pueden ser ligeramente diferentes para la impresión en colas remotas:

da51:~ # lpr –P lp@da52.digitalairlines,com \/etc/motd


da51:~ #

da51:~ # lp –d lp –h da52.digitalairlines.com \/etc/motd


da51:~ #

En estos ejemplos el archivo /etc/motd se envía a la cola lp ubicada en el servidor


da52.digitalairlines.com
- Desplegar información de trabajos de impresión

Se pueden usar los siguientes comandos para generar una lista de los trabajos de
impresión:

 Berkeley: lpr –P cola; ejemplo: lpr –P color


 System V: lpstat –o cola; ejemplo: lpstat –o color

El comando lpq despliega trabajos de impresión activos de la cola estándar de la siguiente


manera:

da51:~ # lpq
draft is ready and printing
Rank Owner Job File(s) Total Size
Active root 14 fstab 1024 bytes

da51:~ #

Ing. Ricardo Ruiz


239
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

La opción „-l‟ lista la misma información en un formato ligeramente diferente.

La opción „–P‟ permite listar los trabajos de impresión de una cola diferente.

La opción „-a‟ se usa para desplegar los trabajos de impresión activos de todas las colas.

Para visualizar la lista de trabajos activos en segmentos de tiempo se debe usar el


siguiente comando: lpq –P cola +segundos

Lo siguiente muestra la salida para los comandos: lpqstat –o cola –p cola; lpqstat –a

da51:~ # lpstat -o draft -p draft


draft-14 root 1024 Thu Mar 30 15:08:54 2006
printer draft now printing draft-14. enabled since Jan 01 00:00
Connected to host, sending print job...
da51:~ # lpstat -a
draft accepting requests since Jan 01 00:00
printer accepting requests since Jan 01 00:00
da51:~ #

- Cancelar trabajos de impresión

Se pueden usar los siguientes comandos para cancelar trabajos de impresión:

 Berkeley: lprm –P cola numero_trabajo; ejemplo: lpr –P color 2343


 System V: cancel [-h servidor] cola-numero_trabajo; ejemplo: cancel color-2343
- Administrar colas

Adicionalmente al control de un trabajo de impresión en una cola, se puede controlar la


cola en sí

 Se usa el comando: /usr/bin/disable impresora, para deshabilitar impresiones en la


impresora mientras sus trabajos pueden ser enviados a la misma. Las colas de las
impresoras deshabilitadas aun aceptan trabajos de impresión, pero no imprimirán
nada mientras la impresora este „deshabilitada‟. Deshabilitar una impresora es útil
cuando esta no está funcionando apropiadamente y se necesita tiempo para reparar el
problema.
 Se usa el comando: /usr/bin/enable impresora, para habilitar la cola de impresión
nuevamente. Si existe cualquier trabajo de impresión, estos son retomados por la
impresora después de habilitar la cola.
 Se usa el comando: /usr/bin/reject impresora, para detener el encolamiento de
trabajos de impresión. Con este comando, la impresora finaliza los trabajos de
impresión que ya están en la cola de impresión, pero rechazará los nuevos trabajos de
impresión. Este comando es muy útil cuando se necesita realizar mantenimiento a la
impresora y esta no estará disponible por un periodo significativo de tiempo.
 Se usa el comando: /usr/bin/accept impresora, para aceptar el encolamiento de
trabajos de impresión. Usando este comando, se puede iniciar la cola de impresión
para aceptar nuevos trabajos de impresión. Si la cola esta deshabilitada se debe
habilitar nuevamente.

Ing. Ricardo Ruiz


240
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Configurar colas

Las opciones específicas para impresión afectan los aspectos físicos de salida y
almacenamiento en el archivo PPD para cada cola en el directorio: /etc/cups/ppd/.

PPD89 es el lenguaje de computadora que describe las propiedades (como la resolución) y


las opciones (como dúplex) en impresoras PostScript. Estas descripciones son necesarias
para usar las diferentes opciones en CUPS.

Durante la instalación del Sistema Operativo, muchos archivos PPD son pre instalados,
de esta manera, incluso impresoras sin soporte de PostScript pueden ser utilizadas.

Se puede seleccionar el archivo PPD durante la instalación de la impresora. Si el modelo


no está listado, se puede agregar un archivo PPD a la base de datos.

Para visualizar los ajustes actuales de una cola de impresión ejecutando el comando:
lpoptions –p cola –l. la secuencia de las opciones es importante, si se especifica primero
„-l‟, los ajustes de la cola primaria se mostraría, sin importar lo que se especifica después
de „-p‟.

La salida de este comando tiene la siguiente estructura: opción/cadena:valor valor valor

Lo siguiente es un ejemplo:

da51:~ # lpoptions -l
HalftoningAlgorithm/Halftoning Algorithm: Accurate *Standard WTS
REt/REt Setting: Dark Light *Medium Off
TonerDensity/Toner Density: 1 2 *3 4 5
Duplex/Double-Sided Printing: *DuplexNoTumble DuplexTumble None
Manualfeed/Manual Feed of Paper: Off On
InputSlot/Media Source: *Default Tray1 Tray2 Tray3 Tray4 Envelope Manual
Auto
Copies/Number of Copies: *1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
PageSize/Page Size: *A4 Letter 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5
EnvMonarch Executive Legal
PageRegion/PageRegion: A4 Letter 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5
EnvMonarch Executive Legal
Resolution/Resolution: 75x75dpi *150x150dpi 300x300dpi 600x600dpi
Economode/Toner Saving: *Off On
LowToner/Behaviour when Toner Low: *Continue Stop
da51:~ #

Los símbolos „*‟ delante de los valores indican los ajustes actuales activos. El significado
de algunas de estas opciones es la siguiente:

Opción Descripción
REt/REt Setting (Ajustes de Resolución) Hay tres modos de para mejorar la calidad
de la resolución: „dark‟, „light‟ y „medium‟
TonerDensity / Esta opción especifica la cantidad de tóner (1= poca, 5=mucha)
Toner Density
Duplex / Double- Esta opción deshabilita o habilita la impresión a doble cara,
Sided Printing asumiendo que la impresora soporta impresión a doble cara.
89
PostScript Printer Description

Ing. Ricardo Ruiz


241
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

InputSlot / Media Si la impresora tiene diferentes bandejas, se puede seleccionar una


Source de ellas con esta opción.
Copies / Number Número de copias a imprimir.
of Copies
PageSize / Page El tamaño físico del papel en la bandeja seleccionada.
Size
PageRegion / Normalmente es igual a „PageSize‟. Esta opción es leida por el
PageRegion interprete PostScript.
Resolution / Es la resolución usada por la cola de impresión.
Resolution
Economode / Modo de ahorro del tóner, se puede habilitar el modo económico,
Toner Saving pero la calidad de las impresiones se degrada.
LowToner Define si la impresora continua o detiene las impresiones cuando el
tóner este bajo.

Para cambiar cualquiera de las opciones de una cola, la sintaxis del comando es:
lpoptions –p cola –o opción=valor. El siguiente comando cambia el tamaño de la
página en la cola „lp‟ a „Carta‟:

da51:~ # lpoptions –p lp –o PageSize=Letter


da51:~ #

El rango de los usuarios afectados por los nuevos ajustes varía, dependiendo de cual
usuario realiza los cambios:

 Si los cambios lo realiza un usuario normal (ejemplo geeko), la nueva configuración


afectará solamente a este usuario, y se almacenará en el archivo: ~/.lpoptions
 Si los cambios lo realiza el root, la nueva configuración se aplica a todos los usuarios
en el host correspondiente.

Esta es una forma de para que el root modifique los ajustes en el archivo PPD de
cualquier cola local. Los cambios se aplicarían a todos los usuarios de la red que envían
trabajos de impresión a la cola correspondiente.

CUPS provee colecciones de impresoras llamadas „clase de impresora‟. Los trabajos son
enviados a una clase y esta lo reenvía a la primera impresora de la clase. Se puede usar
el comando lpadmin para:

 Definir colas o clases de impresoras


 Editar cada clase
 Borrar clases

Por ejemplo, para agregar una cola a una clase, se ejecuta: lpadmin –p cola –c clase. Si
la clase no existe, esta es creada automáticamente.

Para eliminar una cola de una clase, se ejecuta: lpadmin –p cola –r clase. Si la clase
está vacía, como resultado de este comando se eliminaría la clase.

Las colas se almacenan en el archivo: /etc/cups/clases.conf

Ing. Ricardo Ruiz


242
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
- Iniciar y detener CUPS

Como root, se puede iniciar o detener el demonio cupsd manualmente con los siguientes
comandos:
 /etc/initd/cups start, o, rccups start
 /etc/initd/cups stop, o, rccups stop
Si se realizan cambios manualmente al archivo /etc/cups/cupsd.conf, se necesita reiniciar
el demonio con uno de los siguientes comandos:
 /etc/initd/cups restart, o, rccups restart

Tema 3: Como trabaja CUPS.


En este tema estudiaremos como trabaja CUPS.
- Pasos del proceso de impresión

El proceso de impresión envuelve los siguientes pasos:

1. Un trabajo es enviado por un usuario o programa.


2. El archivo destinado a la impresora es almacenado en una cola de impresión, que
crea dos archivos por trabajo en el directorio: /var/spool/cups/. Uno de los archivos
contiene los datos a imprimir. El otro contiene información sobre el trabajo de
impresión; por ejemplo, la identidad de los usuarios que crearon los trabajos de
impresión.
3. El demonio de impresión cupsd actúa como el encolador de impresión.
4. La conversión de los datos a imprimir se realiza de la siguiente manera:
a. Los tipos de datos se determinan usando las entradas en el archivo:
/etc/cups/mime.types
b. Después, los datos se convierten a PostScript usando el programa especifico
en el archivo: /etc/cups/mime.convs
c. Después, el programa pstops (/usr/lib/cups/filter/pstops) es usado para
determinar la cantidad de páginas, este valor se almacena en:
/var/log/cups/page_log
d. CUPS usa otras capacidades de filtrado que pstops necesita, dependiendo de
las opciones definidas en el trabajo de impresión.
e. Si la impresora seleccionada no soporta PostScript, cupsd inicia el filtro
apropiado para convertir los datos al formato de la impresora. Uno de estos
filtros es: /usr/lib/filter/cupsomatic. Los filtros son responsables del
procesamiento de todas las opciones de la impresora, incluyendo resolución,
tamaño de papel, y otros.
f. Para la transferencia actual del stream de datos hacia el dispositivo, CUPS usa
otro tipo de filtro, o „back end‟, dependiendo de cómo la impresora se conecta
al host. Esto puede ser encontrado en el directorio: /usr/lib/cups/backend/.

da51:~ # ls /usr/lib/cups/backend
. canon http lpd parallel scsi smb usb
.. Epson ipp novell pipe serial socket
da51:~ #

Ing. Ricardo Ruiz


243
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

5. Una vez que el trabajo se transfiere a la impresora, el spooler elimina el trabajo de la


cola e inicia el proceso del siguiente trabajo. Cuando un trabajo es eliminado, los
archivos de datos a imprimir son eliminados de la carpeta: /var/spool/cups/. El archivo
que tiene información sobre el trabajo de impresión no es eliminado. El nombre del
archivo para el primer trabajo es etiquetado como c00001. Los siguientes trabajos
incrementan este número.

El siguiente es un esquema que representa el proceso de filtrado:

1 2 3 4 5 6 8 9

7 8 9

La región sombreada representa a los procesos de filtrado.

1. Archivo
2. Cola de Impresión
3. Especificación del formato del archivo
4. Conversión a PostScript
5. Lenguaje PostScript
6. Filtrado con pstops
7. Conversión a lenguaje de Impresora
8. Lenguaje de la impresora (PostScript u otro)
9. Impresora final (PostScript u otra)
- Colas de impresión

Con CUPS, los dispositivos de impresión son direccionadas usando colas de impresión.
En vez de enviar los trabajos de impresión directamente a la impresora, estos se envían a
una cola de impresión asociado con el dispositivo. En un servidor de impresión, cada cola
de impresión es registrada con su nombre en el archivo: /etc/cups/printers.conf.

Entre otras cosas, este archivo define el direccionamiento de las colas hacia la impresora,
como está conectada, y mediante cual interface se conecta.

Muchas colas de impresión puedes estar definidas para una sola impresora, así como el
ejemplo siguiente:

da51:~ # cat /etc/cups/printers.conf


# Printer configuration file for CUPS v1.1.23
# Written by cupsd on Thu Mar 30 16:39:17 2006
<DefaultPrinter draft>
Info Laserjet 4050TN
Location Office Training Services
DeviceURI socket://muc-hp4050TN-3.muc.novell.com:9100
State Idle
Accepting Yes
JobSheets none none

Ing. Ricardo Ruiz


244
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer color>
Info HEWLETT-PACKARD DESKJET 880C
Location Parallel printer on /dev/lp0
DeviceURI parallel:/dev/lp0
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer grayscale>
Info HEWLETT-PACKARD DESKJET 880C
Location Parallel printer on /dev/lp0
DeviceURI parallel:/dev/lp0
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
da51:~ #

Por ejemplo: en el caso de una impresora a color es útil tener dos colas, una para
impresiones en blanco y negro y otra para impresión a color.

Lo siguiente explica algunas entradas en este archivo:

 <DefaultPrinter cola>. Es la entrada para la impresora preferida.


 <Printer color> y <DefaultPrinter grayscale>. Las colas definidas para la impresora
“HEWLLETT-PACKARD DESKJET 880C”
 State Idle. Estado actual de la impresora, no existen trabajos de impresión en la cola.
 Accepting Yes. La cola está aceptando trabajos de impresión.
 JobSheets none none. No imprime banner al inicio o fin del trabajo.

Cada cola existente tiene su propio archivo de configuración, estos se almacenan en el


directorio: /etc/cups/ppd/. Estos archivos contienen entradas para configuración del
tamaño del papel, resolución, y otros ajustes. En contraste, en el lado del cliente, las colas
se registran en el archivo: /etc/printcap.

da51:~ # cat /etc/printcap


# This file was automatically generated by cupsd(8) from
# the /etc/cups/printers.conf file. All changes to this
# file will be lost.
draft|Laserjet 4050TN:rm=da10:rp=draft:
color|HEWLETT-PACKARD DESKJET 880C:rm=da10:rp=color:
grayscale|HEWLETT-PACKARD DESKJET 880C:rm=da10:
rp=grayscale:
printer|Laserjet 4050TN:rm=da10:rp=printer:
da51:~ #

Este archivo es un enlace simbólico al archivo: /etc/cups/printcap.

Ing. Ricardo Ruiz


245
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este archivo es generado y actualizado automáticamente por cupsd y es relevante para


un gran número de aplicaciones que usan las entradas de las impresoras disponibles.

No se debe modificar este archivo manualmente.


- Archivos de bitácora.

Los archivos de bitácora para CUPS son almacenados en el directorio: /var/log/cups/. En


este directorio existen tres archivos: access_log, error_log y page_log.
El access_log

Este archivo lista cada recurso HTTP que es accedido por un navegador web o cliente
CUPS/IPP.

Las líneas en el archivo lucen como esto:

da51:~ # tail /var/log/cups/access_log


localhost - - [15/Ene/2013:09:48:47 -0600] "POST / HTTP/1.1" 200 132
localhost - - [15/Ene/2013:09:48:47 -0600] "POST / HTTP/1.1" 200 132
localhost - - [15/Ene/2013:09:48:47 -0600] "POST / HTTP/1.1" 200 72
localhost - - [15/Ene/2013:09:48:47 -0600] "POST /printers/grayscale HTTP/1.1" 200 799
da51:~ #

La tabla siguiente describe los campos de cada línea:

Campo Descripción
Host Muestra el nombre del host que accede al servidor cupsd. En este caso se
muestra el nombre „hostname‟.
Grupo El campo grupo, siempre contiene el símbolo „-„ en CUPS.
Usuario Este campo se refiere al nombre del usuario. Si no se suple el usuario y
contraseña, el campo contendrá „-„
Tiempo Este campo muestra la fecha y hora del envío del trabajo de impresión ( en
el ejemplo [15/Ene/2013:09:48:47 -0600] )
Método Este campo especifica cual método HTTP se usa en la impresión (GET,
PUT o POST)
Recurso Especifica el nombre del archivo del recurso solicitado, estos pueden ser:
 /
 /admin/
 /printers/
 /jobs/
Versión Especifica la versión HTTP usada en el trabajo
Estado Especifica el código del estado HTTP de la solicitud.
Usualmente es „200‟, pero otros códigos de estado HTTP son posibles. Por
ejemplo „401‟ que indica acceso no autorizado.
Tamaño Este campo contiene el número de bytes en la solicitud. Para solicitudes
POST, este campo contiene el número de bytes recibidos por el cliente.

Ing. Ricardo Ruiz


246
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
El error_log

Este archivo lista los mensajes adicionales tales como errores y advertencias.

Las líneas en el archivo lucen como esto:

da51:~ # tail /var/log/cups/error_log


I [31/Mar/2006:09:48:47 +0200] Adding start banner page "none" to job 16.
I [31/Mar/2006:09:48:47 +0200] Adding end banner page "none" to job 16.
I [31/Mar/2006:09:48:47 +0200] Job 16 queued on 'grayscale' by 'root'.
I [31/Mar/2006:09:48:47 +0200] Started filter /usr/lib/cups/filter/texttops (PID 4088) for job 16.
I [31/Mar/2006:09:48:47 +0200] Started filter /usr/lib/cups/filter/pstops (PID 4089) for job 16.
I [31/Mar/2006:09:48:47 +0200] Started filter /usr/lib/cups/filter/foomatic-rip (PID 4090) for job
16.
I [31/Mar/2006:09:48:47 +0200] Started backend /usr/lib/cups/backend/parallel (PID 4091) for job 16.
da51:~ #

La tabla siguiente describe los campos de cada línea:

Campo Descripción.
Nivel Este campo contiene el tipo del mensaje:
 E. Un error ocurrió.
 W. El servidor no puede ejecutar una acción.
 I. Mensaje de Información.
 D. Mensaje de advertencia de nivel bajo.
Tiempo Este campo contiene la fecha y hora de la entrada, por ejemplo cuando
una página comienza a imprimirse.
Mensaje Este campo tiene una forma libre (sin formato definido) de describir el
mensaje.

El page_log

Este archivo almacena la bitácora de cada página enviada a la impresora.


Las líneas en el archivo lucen como esto:

da51:~ # tail /var/log/cups/page_log


grayscale root 16 [31/Mar/2006:09:48:57 +0200] 1 1 – localhost
da51:~ #

La tabla siguiente describe los campos de cada línea:

Campo Descripción
Impresora Contiene el nombre de la impresora que imprime la pagina, en este
ejemplo es „greyscale‟
Usuario Contiene el nombre del usuario que envió el trabajo de impresión.
ID del trabajo Contiene el ID del trabajo de impresión
Tiempo Contiene la fecha y hora en que se realiza la impresión
Cantidad Contiene el número de páginas a imprimir
Copia Contiene el número de copias a imprimir
Costo Contiene los costos de la impresión, este es un atributo provisto por

Ing. Ricardo Ruiz


247
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

IPP, si no se define este atributo se lista „-„


Host Contiene el nombre del host desde el que se envió la impresión.

Configurar el nivel de registro de errores.

Los mensajes de cupsd son escritos en el archivo /var/log/cups/error_log. Con el nivel


estándar info, solamente los mensajes de cambios del requerimiento y estado son
almacenados en el archivo.

Si re requiere registrar errores, se necesita cambiar la opción LogLevel en el archivo de


configuración de cupsd /etc/cups/cupsd.conf:

# LogLevel: controls the number of messages logged to the ErrorLog


# file and can be one of the following:
#
# debug2 Log everything.
# debug Log almost everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
# none Log nothing.
#
LogLevel debug2

Para registro y troubleshooting, se debe ajustar esto a debug2. Después de cambiar esta
configuración, se debe reiniciar CUPS.
- Archivo de Configuración.

El archivo de configuración de CUPS esta almacenado en /etc/cups/cupsd.conf. Este tiene


un formato similar al archivo de configuración del servidor web Apache.

Varias opciones son usadas para configurar el archivo en sí, filtros, aspectos de red,
navegación y acceso. Estos últimos serán cubiertos en el siguiente tema.

Tema 4: Configurar y administrar un servidor de impresión.


En el primer tema de este capítulo, se configuro la impresora para trabajar en una
maquina local. En este tema se estudiara la manera de cómo controlar quien puede usar
la impresora por medio de la red.
- Transmitir información sobre las impresoras a otras computadoras

CUPS puede distribuir información sobre las impresoras disponibles a todos los clientes
de red por medio de las propiedades de navegación.

El servidor CUPS puede usar la transmisión broadcast para distribuir la información de las
impresoras. Si se habilita, el servidor transmite la información de sus impresoras cada 30
segundos. Esta información típicamente usa solamente 80 bytes por impresora. Se
pueden agregar una gran cantidad de servidores e impresoras.

Se puede configurar con la herramienta YaST (en SUSE) o directamente en el archivo de


configuración de CUPS: /etc/cups/cupsd.conf

Ing. Ricardo Ruiz


248
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

El siguiente diagrama muestra la función de transmisión de la información de las


impresoras del servidor CUPS.

10.10.10.254

Laser
10.10.10.12

10.10.10.255
Impresoras Disponibles:
ipp://10.10.10.254/printers/laser .
ipp://10.10.10.254/printers/multifuncional

Multifuncional

10.10.10.11

10.10.10.10

Para configurar con YaST esta opción, se debe acceder al centro de control de YaST,
seleccionar Hardware > Impresoras, en ese dialogo seleccionar Otro > Ajustes de
Experto CUPS.

En el dialogo siguiente se debe seleccionar Ajustes del Servidor CUPS.

Ing. Ricardo Ruiz


249
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Como estándar, la navegación está


habilitada, esto significa que el servidor
CUPS puede anunciar sus colas de
impresión en la red. Pero si no se ha
especificado una dirección en el campo
„Dirección de navegación‟, la información
no es enviada.

Para habilitarla, se debe agregar una IP y


su mascara

El siguiente fragmento del archivo /etc/cups/cupsd.conf muestra que se puede definir en


este campo:

# BrowseAddress: specifies a broadcast address to be used. By


# default browsing information is not sent!
#
# Note: Using the "global" broadcast address (255.255.255.255) will
# activate a Linux demand-dial link with the default configuration.
# If you have a LAN as well as the dial-up link, use the LAN's
# broadcast address.
#
# The @LOCAL address broadcasts to all non point-to-point interfaces.
# For example, if you have a LAN and a dial-up link, @LOCAL would
# send printer updates to the LAN but not to the dial-up link.
# Similarly, the @IF(name) address sends to the named network
# interface, e.g. @IF(eth0) under Linux. Interfaces are refreshed
# automatically (no more than once every 60 seconds), so they can
# be used on dynamically-configured interfaces, e.g. PPP, 802.11, etc.
#
#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#BrowseAddress 255.255.255.255
#BrowseAddress @LOCAL
#BrowseAddress @IF(name)

Normalmente se puede elegir entre el broadcast de la red (10.10.10.255) o la interfaz de


red local (@LOCAL).
- Restricciones de acceso

Se puede restringir el acceso a varios recursos de CUPS. Los recursos son desplegados
como directorios (/printers o /jobs).

Los siguientes son los recursos que normalmente se encuentran disponibles en un


servidor CUPS:

Recurso Descripción
/ La restricción de acceso para este recurso se aplica para todos los recursos
subsecuentes si no existen otras restricciones especificadas.
/printers Todas las impresoras o colas.

Ing. Ricardo Ruiz


250
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

/clases Clases de impresoras disponibles, por ejemplo, todas las impresoras de


color.
/jobs Trabajos de impresión en el servidor CUPS
/admin Estos ajustes conciernen al acceso a la configuración del servidor.

Estos recursos pueden ser accedidos de


varias maneras, por ejemplo, un navegador
web:

http://localhost:631/printers
http://localhost:631/admin

Se puede configurar la restricción de


acceso usando la herramienta YaST (en
SUSE), seleccionando „Cambiar Permisos‟
en este cuadro de dialogo.

Se puede definir el orden en que las


directivas de acceso son aplicadas, y la
directiva estándar para el siguiente cuadro
de dialogo.

El cuadro de texto „Permisos‟, define las


reglas de acceso a las entidades.

Los ajustes de accesos son almacenados


en el archivo de configuración:
/etc/cups/cupsd.conf.

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 127.0.0.2
Allow From @LOCAL
</Location>

<Location /admin>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>

<Location /printers>
Deny From All
Allow From 10.10.10.0/24
Allow From 10.10.20.10
Order Allow,Deny
</Location>

Ing. Ricardo Ruiz


251
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Campo Descripción
Order Define el orden de la reglas y la directiva estándar:
Allow,Deny. Habilita la respuesta para todos los sistemas excepto
para los listados en la directiva Deny.
Deny,Allow. Habilita la respuesta solamente para los listados en la
directiva Allow.
Deny From All Todos los accesos al recurso son prohibidos
Allow From El acceso es permitido.

Mientras que el recurso /printers concierne a todas las colas de impresión, se puede
especificar restricciones en un par de colas básicas;

<Location /printers/color>
Deny From All
Allow From 10.10.10.10/24
Order Deny,Allow
</Location>

En el ejemplo anterior, todos los clientes dentro de la red 10.10.10.0/24 y el host


10.10.20.10 pueden imprimir en todas las colas de impresión (página anterior), con la
excepción de la cola „color‟ a la que solo puede acceder el cliente 10.10.10.10.

- Restringir el acceso a las impresoras a los


usuarios y grupos

Para configurar esto con la herramienta


YaST (en SUSE) se debe seleccionar la
cola de impresión, editarla y seleccionar
„Ajustes de Restricción‟.

Se puede seleccionar uno de los


siguientes:

 Todos los usuarios pueden usar esta impresora.


 Los siguientes usuarios pueden usar esta impresora
 Los siguientes usuarios no pueden usar esta impresora

Mediante el comando lpadmin se pueden realizar las siguientes labores:

 Permitir la impresión a usuarios individuales:


lpadmin –q cola –u allow:usuario1,usuario2
O para un grupo se usa este comando:
lpadmin –q cola –u allow:@grupo

 Para prohibir la impresión a los usuarios o grupos:


lpadmin –p cola –u deny:geeko,@guests

Ing. Ricardo Ruiz


252
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

 Para permitir la impresión a todos:


lpadmin –p cola –u allow:all
O
lpadmin –p cola –u deny:none

Estas restricciones de acceso, son escritas en el archivo /etc/cups/printers.conf, tal como


sigue:

<Printer printer>
...
AllowUser user1
AllowUser user2
AllowUser @users
</Printer>

- Restringir el acceso a la interface web

Se puede proteger recursos, tal como la interface de administración mediante uso de


contraseña.

La configuración estándar en el archivo /etc/cups/cupsd.conf luce similar a lo siguiente:

<Location /admin>
AuthType BasicDigest
AuthClass Group
AuthGroupName sys
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>

Los campos relevantes son:

Campo Descripción
AuthType BasicDigest Este es un usuario especial de la base de datos CUPS usado
para la autenticación. (/etc/cups/passwd.md5)
Los siguientes tipos son posibles:
 None. Sin autenticación.
 Basic. Autenticacion básica, usando los archivos de
usuarios y grupos de UNIX.
 Digest. Esta tipo usa el archivo /etc/cups/passwd.md5 para
realizar la autenticación.
 BasicDigest. Autenticación básica usando el archivo
/etc/cups/passwd.md5
AuthClass Group El acceso solamente es posible para usuarios validos que son
miembros del grupo de sistema (sys)
AuthGroupName Nombre del grupo de sistema (en este ejemplo sys)

Con la configuración estándar anterior, CUPS accede a la base de datos de usuario


/etc/cups/passwd.md5

Ing. Ricardo Ruiz


253
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Este archivo no existe y no es creado durante la instalación, para crearlo se debe usar
este comando:

da51:~ # lppasswd –a root –g sys


Enter password:
Enter password again:
da51:~ #

Este comando agrega al usuario root en el grupo sys. Cualquier usuario puede ser
agregado al grupo, y estos no necesariamente deben ser usuarios del sistema local.

Ing. Ricardo Ruiz


254
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Capitulo 19: Servicio SAMBA


(Anexo)

En este capítulo, estudiaremos como configurar un servidor de archivos para clientes


Windows usando Samba y como usar algunos de las características más avanzadas de
Samba.

Tema 1: ¿Que es Samba?


Samba es un conjunto de aplicaciones usadas para integrar un sistema Linux a las redes
Windows. Samba es usado comúnmente como servidor de archivos para clientes
Windows.

El protocolo SMB90, es un protocolo de red que provee servicios de impresión y archivos


en una red Windows. Samba habilita el uso de SMB en Linux y esto permite que Linux
sea integrado a los entornos Windows.

Se puede usar samba para los siguientes propósitos:

 Para proveer servicios de impresión y archivos a clientes Windows.


 Para acceder a servicios de impresión y archivos mediante SMB en sistemas Linux.
 Para actuar como controlador de dominio de clientes Windows.

Los servicios de SMB, son provistos por el protocolo NetBIOS. Este habilita su propio
espacio de nombres, que puede ser completamente diferente al utilizado por el DNS.

Este espacio de nombres puede ser accedido mediante notación UNC91: todos los
servicios provistos por un servidor son direccionados así: \\Servidor\Nombre_Servicio.

Los servicios de impresión o archivos que ofrece el servidor también son llamados
„recursos compartidos‟.

En el lado del servidor, samba consiste de 2 partes:

 nmbd. Este demonio toma todas las tareas del NetBIOS.


 smbd. Este demonio provee los servicios de impresión y archivos para clientes
Windows.

Para integrar a Linux como un cliente en un entorno Windows, samba provee 3


herramientas:

 winbind. Este demonio integra un sistema Linux a un sistema de autenticación


Windows (Active Directory).
 nmblookup. Esta herramienta puede ser usada para la resolución y pruebas de los
nombres del NetBIOS.
 smbclient. Esta herramienta provee acceso a servicios de archivos e impresión por
medio de SMB.

90
Server Message Block
91
Unique Naming Convention

Ing. Ricardo Ruiz


255
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

A partir de la versión 3.0.22 de samba, este tiene soporte para Kerberos en „winbind‟. Esto
permite la habilitación de integración basado en Kerberos en dominios Active Directory.

Tema 2: Configurar un servidor de archivos simple


Este tema trata sobre la instalación y comprensión del archivo de configuración del
servicio samba.
- Instalar Samba

Los siguientes paquetes son necesarios para la instalación básica de samba:

 samba. Este es el paquete principal. Contiene el software del servidor samba.


 samba-client. Este paquete contiene las herramientas de samba para clientes.
 samba-doc. Este paquete provee documentación adicional sobre samba.

Después de que los paquetes se instalan, se debe iniciar los demonios de samba:

rcnmb start
rcsmb start

Para agregar samba a los servicios que se inician junto con el sistema, se debe ejecutar
lo siguiente.

insserv nmb
insserv smb
- Entender el archivo de configuración de Samba

Los servicios de samba son configurados en el archivo de configuración


/etc/samba/smb.conf.

Las opciones dentro del archivo son agrupadas en diferentes secciones. Cada sección
inicia con una palabra clave encerrada en corchetes.
Crear una sección para la configuración general del servidor.

Esta sección inicia con la palabra clave „global‟ ([global]). Las siguientes líneas son un
ejemplo de la sección básica global:

[global]
workgroup = DigitalAirlines
netbios name = Fileserver
security = share

Las entradas de la sección global en este ejemplo es descrito abajo:

Campo Descripción
workgroup Esta línea configura el grupo de trabajo Windows en el servidor samba,
en este ejemplo es: DigitalAirlines
netbios name Este campo configura el nombre del host para el NetBIOS

Ing. Ricardo Ruiz


256
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

security Esta línea determina como un cliente puede autenticarse cuando


accede a un elemento compartido. Esta opción puede tener los
siguientes valores:
 share. El cliente no necesita proveer una contraseña cuando se
conecta al servidor. Aun así se necesita una contraseña para
acceder al recurso compartido.
 user. El cliente necesita proveer un usuario y contraseña cuando se
conecta al servidor. Samba valida la contraseña del usuario contra
su propio archivo de contraseña.
 server. El cliente necesita proveer un usuario y contraseña cuando
se conecta al servidor. Samba contacta a otro servidor SMB en la
red para validar la contraseña.
 domain. El cliente necesita proveer un usuario y contraseña
cuando se conecta al servidor. Samba se conecta entonces con un
controlador de dominio y valida la contraseña. Esto funciona
solamente si samba se conecta a un dominio Windows.
 ads. Samba actúa como un miembro de dominio de un dominio
ADS para validar el usuario y la contraseña.

Crear una sección para los archivos que serán compartidos.

Después de la sección global, se necesita agregar una sección para compartir los datos
del servidor de archivos. El siguiente ejemplo es la manera más simple de configurar un
recurso compartido:

[data]
comment = Data
path = /srv/data
read only = Yes
guest ok = Yes

Las entradas de esta sección se describen a continuación:

Campo Descripción
[data] Este es el identificador de la sección y del recurso compartido. Este
recurso puede ser accedido mediante la dirección: \\Servidor\data.
comment Esta opción es un comentario con información adicional sobre el
recurso compartido. El comentario es desplegado cuando se navega en
la red con Windows Explorer.
path Esta opción define la ruta de los datos compartidos en el sistema local.
Se debe estar seguro que el usuario local tiene los privilegios
suficientes para acceder a los archivos de este recurso compartido.
read only Si esta opción se configura en „Yes‟, el cliente que acceda al recurso
compartido no tendrá privilegios de modificación, borrar o crear
archivos. Este es el valor estándar, si se elimina esta opción el recurso
será definido como „de solo lectura‟.
guest ok Si esta opción se configura en „Yes‟, una contraseña no es requerida
para acceder al recurso compartido.

Ing. Ricardo Ruiz


257
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Después de crear el archivo smb.conf, se deben reiniciar los demonios de samba.

Antes de reiniciar los demonios, se debe probar la sintaxis del archivo de configuración
con el comando:

testparm

La salida de este comando luce más o menos así:

Load smb config files from /etc/samba/smb.conf


processing section "[data]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

En este ejemplo, no existen errores en la configuración. Si existe algún error en el archivo,


el comando desplegara los errores agrupándolos por sección.

Una opción útil de este comando es --section-name <nombre_seccion>, este probara la


configuración en la sección definida. Esta opción es muy útil cuando se tiene un archivo
smb.conf muy extenso.

Tema 3: Configurar autenticación de usuario


En el tema anterior, samba se configuro para que el servidor sea accesible sin definir
usuario y contraseña. En muchos casos, este tipo de configuración no es recomendado.
- Preparar el servidor para autenticación de usuario

La primera tarea es cambiar la opción de seguridad en el archivo smb.conf a:


security = user

El valor „user‟ en esta opción habilita la seguridad, solicitando la autenticación con usuario
y contraseña cuando el cliente intenta la conexión al servidor.

En el siguiente ejemplo, la configuración se basa en ULS92. En este nivel de seguridad, la


contraseña cifrada es almacenada en el archivo /etc/samba/smbpasswd.

Los usuarios que necesiten acceso a los recursos SMB, deben primero ser creados como
usuarios del sistema. Luego se necesita definir una contraseña SMB usando el comando
smbpasswd.

A continuación se escribe el comando para configurar la contraseña SMB para el usuario


tux: smbpasswd –a tux, este comando tiene unas salidas similares al comando passwd.

Para deshabilitar una cuenta de usuario se usa: smbpasswd –d usuario.

Para reactivar una cuenta de usuario se usa: smbpasswd –e usuario.

92
User Level Security

Ing. Ricardo Ruiz


258
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Para remover un usuario SMB, se usa: smbpasswd –x usuario. Si se está como usuario
(no root), el comando smbpasswd (sin opciones) nos permite cambiar la contraseña del
usuario en el que estamos dentro del sistema. Es muy importante recordar que solo root
puede cambiar la contraseña de otros usuarios SMB (usando la opción –a).
- Configurar un recurso compartido que sea accesible solo por un usuario

El siguiente ejemplo configura un recurso compartido que será accedido solamente por el
usuario tux:

[tux-dir]
comment = Directorio del usuario tux
path = /srv/share
valid users = tux
read only = no

A continuación se describen los campos más relevantes:

Campo Descripción
[tux-dir] Este es el identificador de la sección y del recurso compartido. Este
recurso puede ser accedido mediante la dirección: \\Servidor\tux-dir.
valid users Esta opción lista a todos los usuarios que tienen privilegios de
conectarse a este recurso. Los nombres de usuario deben de estar
separados por comas, tambien se puede agregar un grupo completo
usando la sintaxix: @nombre_grupo. Aun así todos los usuarios del
grupo UNIX necesitan cuentas de usuario en el archivo smbpasswd.

- Configurar acceso al recurso compartido a un grupo de usuarios

En el siguiente ejemplo crea un recurso compartido que es accedido por todos los
usuarios del grupo llamado „contabilidad‟:

[contabilidad]
comment = Departamento de Contabilidad
path = /srv/share
valid users = @contabilidad
force user = tux
force group = contabilidad
read only = no

Comparado con los anteriores ejemplos, las siguientes líneas son nuevas o tienen
cambios:

Campo Descripción
valid users En este ejemplo, se está definiendo acceso al grupo de usuarios
„contabilidad‟ completo.
force user Esta línea le indica al servidor samba que la ejecución de todas las
operaciones de archivos en este recurso serán efectuadas mediante el
usuario „tux‟.
Esto asegura que todos los archivos en el recurso tengan los mismos
privilegios de acceso para cada usuario que acceda al recuros.

Ing. Ricardo Ruiz


259
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

force group Esta línea le indica al servidor samba que efectúe todas las
operaciones con el grupo de usuario „contabilidad‟.

- Configurar la exportación de directorios Home

El siguiente ejemplo, exporta los directorios home de todos los usuarios UNIX en el
servidor samba. Se necesita agregar los usuarios al archivo smbpasswd antes de
configurar esto:

[homes]
comment = Directorios HOME
valid users = %S
read only = No
browseable = No

En este ejemplo, se debe nombrar el recurso como „homes‟. Si samba encuentra un


recurso con este nombre, este recurso es tratado de manera especial. Cuando un recurso
es solicitado, samba busca la sección correspondiente en el archivo de configuración. Si
la sección no existe, samba usa el nombre del recurso solicitado como un nombre de
usuario y busca este en el archivo de contraseñas local. Si el usuario existe y su
contraseña esta correcta, samba automáticamente crea un recurso para el directorio
home del usuario.

A continuación se describen los campos más relevantes:

Campo Descripción
valid users %S configura el nombre del recurso solicitado como posibles nombres
de usuario validos.
browseable Por razones de seguridad, los recursos no deben ser navegables.

Para acceder al directorio exportado, se debe usar la dirección:


\\servidor\nombre_usuario.

Tema 4: ¿Cómo usar las herramientas para clientes Samba?


Como se ha mencionado, el propósito principal de samba es proveer servicios a clientes
Windows, esto se provee mediante herramientas de acceso a recursos SMB. No importa
si estos recursos son provistos por samba o un servidor Windows.
- Usar el comando nmblookup

Con esta herramienta se pueden traducir nombres NetBIOS a direcciones IP (analogía de


DNS). En el siguiente ejemplo, la dirección IP del servidor samba con el nombre NetBIOS
es encontrado usando: nmblookup servidor. La salida del comando será parecido a lo
siguiente:

querying servidor on 10.0.0.255


10.0.0.1 servidor<00>

En la primera línea, nmblookup inunda la red con una consulta NetBIOS.

Ing. Ricardo Ruiz


260
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En la segunda línea, se despliega el resultado de la consulta, en este caso, 10.0.0.1 para


el sistema con el nombre NetBIOS „servidor‟
- Usar el comando smbclient

Con esta herramienta, se puede acceder a los recursos SMB en la red. Esta herramienta
es muy útil para probar la configuración de un servidor samba.
Desplegar recursos provistos por un servidor

Para desplegar los recursos ofertados por un servidor SMB se puede usar el siguiente
comando: smbclient –L //Servidor_archivos.

Cuando el comando solicite la contraseña, se debe presionar Enter para proceder.

La salida del comando se parecerá mucho a lo siguiente:

Domain=[DigitalAirlines] OS=[Unix] Server=[Samba 3.0.22-SUSE]


Sharename Type Comment
--------- ---- -------
data Disk Data
IPC$ IPC IPC Service
ADMIN$ IPC IPC Service
Domain=[DigitalAirlines] OS=[Unix] Server=[Samba 3.0.22-SUSE]
Server Comment
--------- -------
Workgroup Master
--------- -------
DigitalAirlines Fileserver

El comando despliega todos los recursos del servidor SMB. Debajo de los recursos
configurados en el archivo smb.conf, el servidor SMB siempre oferta otros dos recursos:

 IPC$. Este recurso provee información sobre los otros recursos disponibles en el
servidor SMB.
 ADMIN$. En un computador Windows este recurso coloca el directorio donde
Windows está instalado. Esto es muy útil para las tareas administrativas. Cuando
samba intenta emular un servidor Windows, también oferta este recurso, aun así no
este recurso no es necesario para administrar un servidor Linux.

La parte baja de la salida de este comando, muestra información sobre el grupo de trabajo
del sistema. Este comando puede ser de mucho valor por propósitos de prueba. Después
de configurar un recurso, se debe verificar la disponibilidad del recurso con smbclient.

Algunos recursos no se muestran sin haber sido antes autenticados. En este caso se
puede enviar el usuario a smbclient de la siguiente manera:

smbclient –L //Servidor –U tux

En este ejemplo, smbclient conecta al servidor „Servidor‟ con el usuario „tux‟, y le solicitara
al cliente su contraseña.

Ing. Ricardo Ruiz


261
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
Acceder archivos provistos por un servidor SMB

El comando para acceder al recurso de un servidor es similar al comando usado para


visualizar los recursos disponibles, pero en cambio se debe definir claramente la ruta
completa del recurso sin la opción „-L‟.

En el siguiente ejemplo, smbclient conecta al recurso „data‟ en el servidor „Servidor‟:


smbclient //Servidor/data

En este caso, no es necesario definir usuario y contraseña debido a que el recurso „data‟
esta configurado con la opción „gest ok = yes‟. Un usuario puede ser provisto con la
opción „-U‟.

Después de conectar con el recurso, se despliega el siguiente prompt:

Smb: \>

Este comando (smbclient) puede ser usado como el cliente FTP. Los comandos mas
importantes son los siguientes:

Comando Descripción
ls Despliega el contenido del directorio actual
cd Cambia de directorio
get Copia un archivo desde el recurso compartido al directorio local
put Copia un archivo desde el directorio local al recurso compartido

Imprimir en impresoras provistas por un servidor SMB

Se puede usar el comando smbclient para compartir impresoras a la red. La sintaxis


básica para es la siguiente: smbclient //Servidor_impresion/laser –c ‘print letras.ps’

En este ejemplo, el archivo „letras.ps‟ es impreso en una impresora de red accedido


mediante el recurso „laser‟ de un servidor de impresión SMB.

Se puede usar el comando „print‟ dentro del comando smbclient después de realizar la
conexión al servidor. La opción „-c‟ ejecuta el comando definido inmediatamente después
de establecer la conexión.
Montar recursos en un sistema de archivos Linux.

Además de acceder a los recursos con smbclient, se puede montar un recurso en el


sistema de archivos, tal como si fuera una partición, o un disco óptico. El comando básico
para realizar esta acción es:

mount –t cifs //Servidor/data /mnt/servidor_samba.

En el ejemplo, el recurso „data‟ provisto por el servidor SMB, es montado en el directorio


/mnt/servidor_samba. La opción „-t cifs‟ es necesaria para especificar que el recurso a ser
montado es de un servidor SMB.

Ing. Ricardo Ruiz


262
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Si el recurso requiere autenticación, se puede suplir el usuario y la contraseña de la


siguiente manera: mount –t cifs –o username=tux,password=novell //Servidor/data
/mnt/servidor_samba

Tema 5: Usar Samba como un controlador de dominio


Samba puede ser configurada para actuar al estilo de un controlador de dominio de
Windows NT4.

NOTA: Antes de continuar, se debe tener en cuenta lo siguiente: para configurar un


controlador de dominios con samba, se necesita conocer profundamente los conceptos de
dominio y redes en Windows. Este conocimiento no es abarcado en este manual. Una
buen conjunto de ejemplos y „Samba Howtos‟ pueden ser encontrados en:
http://www.samba.org/samba/docs/man/Samba-Guide/

- ¿Que es un controlador de dominio’

Un controlador de dominio es un sistema, que es usado para administrar los usuarios de


un grupo de estaciones de trabajo en red. En la terminología de Windows, un grupo es
llamado „dominio‟.

El controlador de dominio provee una base de datos de usuario, que es usada para la
autenticación de usuarios cuando estos tratan de acceder a una de las computadoras
administradas.

Además de autenticación de usuarios, el controlador de dominio también provee


información sobre los recursos compartidos en red que un usuario puede acceder y otras
políticas de usuario.

Un controlador de dominio está basado en los servicios de Active Directory de Microsoft,


pero los protocolos de comunicación entre controladores de dominio y host cambian.

Samba puede actuar como un controlador de dominio NT4. Las estaciones Windows 2000
y Windows XP Professional son compatibles para Windows NT4 y pueden por
consiguiente ser usados con samba. Aun así, las nuevas funciones de Active Directory no
estarán disponibles.
- Configurar /etc/samba/smb.conf

Las siguientes líneas son parte de la configuración básica del Controlador de Dominios en
el archivo smb.conf:

[global]
netbios name = da50
workgroup = berlin
security = user
passdb backend = ldapsam:ldap://da2.digitalairlines.com
logon script = %U.bat
domain master = yes
os level = 50
local master = yes
preferred master = yes

Ing. Ricardo Ruiz


263
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX
domain logons = yes

[netlogon]
path = /netlogon

A continuación se describen los campos más relevantes:

Campo Descripción
passdb backend Especifica en cual tipo de base de datos la información del usuario y
grupo son almacenados.
Se pueden especificar uno de las siguientes opciones:
 smbpasswd
 tdbsam (smbpasswd más NT SAM)
 ldapsam
Si es un controlador de dominio de respaldo (BDC) en la red, se
debe seleccionar aquí ldapsam y especificar el servidor LDAP.
El uso de una base de datos distinta a LDAP-SAM es
particularmente problemática debido a que los miembros del dominio
cambian periódicamente las contraseñas en su estación de trabajo.
Esta nueva contraseña debe ser almacenada localmente.
logon script Especifica un script, que es ejecutado en la maquina del cliente
cuando el usuario ingrese. La variable „%U‟ se reemplaza con el
nombre del usuario. En esta configuración cada usuario tiene su
propio script. El script puede ser ubicado en el directorio que es
especificado en el recurso netlogon.
domain master Esta opción es la que le indica a samba que será un controlador de
dominio
local master Esta opción permite a samba participar en la elección del local
master.
os level Este valor entero controla el nivel de advertencia de samba. Se
necesita un valor de 32 para ser PDC
preferred master Si esta opción se ajusta, el nmdb obliga a una elección
inmediatamente.

Samba no puede actuar como un ADS93 o ADPDC.


- Crear cuentas para estaciones de trabajo

Para cada estación de trabajo Windows que proyectemos como miembros del dominio, se
necesita una cuenta para la estación en el servidor Samba. La cuenta de la estación de
trabajo es usada para establecer una relación de confianza para asegurar la conexión
entre el Controlador de Dominios y el cliente.

Para crear cuentas locales para estaciones de trabajo Windows NT, se usa el comando:
smbpasswd –a –m estacion_trabajo

Las cuentas de estaciones de trabajo son creadas con un „$‟ al final del nombre.

93
Active Directory Server
Active Directory Primary Domain Controller

Ing. Ricardo Ruiz


264
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Veamos el siguiente ejemplo:

da2:~ # smbpasswd -a -m da50


User da50$ does not exist in system password file (usually /etc/passwd).
Cannot add account without a valid local system user.
Failed to modify password entry for user da2$

da2:~ # useradd da51$

da2:~ # smbpasswd -a -m da51


Added user da51$.

da2:~ # cat smbpasswd


# Sample smbpasswd file.
# To use this, set 'encrypt passwords = yes' in the [global]-section
# of /etc/samba/smb.conf
kbailey:1008DD098F35B3B42417306D272A9441BB:6478A80295C56CEBBBC1A6FDEE370971:[U]:LCT-39C8CC96:
da50$:101:6AD9466E87D89AAD3B435B51404EE:F05822FA2A7B7166AF98CF16CFA5FFDF:[W]:LCT-39CB1383:

Tema 6: Integrar Samba en un dominio Windows


A partir de la versión 10 de SUSE, esta distribución de Linux tiene un modulo adicional
para YaST, este modulo ayuda a integrar el sistema Linux en un grupo de trabajo
Windows NT.

El demonio winbind tiene soporte actualmente para Kerberos, que provee una manera de
autenticación en Active Directory.

El modulo se encuentra en el centro de


control de YaST, en Servicios de Red >
Miembro de dominio Windows.

Tendremos el dialogo que se muestra:

En el cuadro de texto superior, se


especifica el nombre del dominio o grupo
de trabajo al que se desea agregar el
sistema. Se puede navegar la red para
seleccionar un grupo de trabajo o dominio
seleccionando „Navegar‟

Si se usa información del servidor SMB para autenticar usuarios Linux, se debe
seleccionar la opción correspondiente. Cuando se activa esta opción, dos cajas de
selección se activan.

 Crear directorio Home al iniciar. Cuando se activa esta opción, un directorio Home
se creado automáticamente cuando un usuario se autentica la primera vez.
 Autenticación fuera de línea. Estas opciones permiten autenticación aun cuando el
sistema no está conectado con el controlador de dominio. Esto puede ser una opción
muy útil para computadores portátiles.

La configuración es almacenada en /etc/samba/smb.conf

Ing. Ricardo Ruiz


265
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Tema 7: Configurar Samba como un servidor de impresión.


Samba puede ser usado como servidor de impresión en una red Windows. Esto es
compartir impresoras con otras computadoras en la red.

Para imprimir con samba, se debe instalar un sistema de impresión CUPS en el servidor
samba y configurar la impresora conectada. Esto puede realizarse con el modulo de
impresión de YaST.

Antes de comenzar a configurar las impresoras compartidas con samba, se debe probar
la instalación de CUPS mediante la impresión con una aplicación local en Linux.

Una vez que el sistema CUPS y las impresoras son configuradas, samba puede ser
usado para compartir las impresoras CUPS con estaciones de trabajo Windows. En Linux,
el formato de impresión estándar que las aplicaciones producen es PostScript. Cuando
una impresora no entiende PostScript directamente, una controlador de impresora en el
sistema CUPS traduce los datos al formato nativo de la impresora.

Windows usa Windows Metafile como su formato de impresión estándar. Cuando se


comparte impresoras con samba, existen dos maneras para convertir este formato en
alguno que la impresora entienda.
- Pre procesar en el servidor samba.

Este tipo de configuración depende mucho del numero de impresoras que se necesite
compartir.
Compartir una impresora

Si se necesita proveer solamente una impresora a los sistemas Windows, se puede


simplemente crear un recurso.

Para crear este recurso podemos usar como ejemplo lo siguiente:

[laserjet]
printable = yes
printer = lp_raw
path = /var/tmp

La opción „printable = yes‟ le indica a samba que este recurso es una impresora
compartida y no un directorio compartido.

Se usa la opción „printer‟ para especificar cuando la cola de la impresora debe ser usada
por medio de este recurso. Si se necesita pre procesar en el cliente, se debe especificar la
cola RAW aquí.

El directorio de la pila de impresión, se especifica en la opción „path‟. El directorio puede


ser modificado por todos los usuarios a los que se les permite imprimir. Es en este
directorio que los trabajos de impresión son almacenados para poder ser impresos.

Ing. Ricardo Ruiz


266
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

En la imagen siguiente se muestra el Windows Explorer navegando en un servidor samba


que tiene una impresora compartida.

Compartir muchas impresoras

Si se necesita instalar muchas impresoras en un servidor samba y que estas sean


accesibles desde Windows, el método descrito anteriormente no es suficiente. Muchas
impresoras pueden ser configuradas de la siguiente manera:

Agregar las siguientes líneas a la sección „global‟ en el archivo de configuración de


samba:

printing = CUPS
printcap name = CUPS

Usando la opción „printing‟, se puede especificar el sistema de impresión. Los siguientes


valores son validos:

 AIX  LPRNG
 BSD  PLP
 CUPS  QNX
 HPUx  SYSV

Ing. Ricardo Ruiz


267
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Se debe usar el parámetro „printcap name‟ para especificar el archivo de configuración de


la impresora.

La impresora compartida puede ser configurada en la sección „printers‟ usando las


opciones mostradas antes.

La sección lucirá más o menos así:

[printers]
printable = yes
path = /var/tmp

- Pre procesar en el cliente Windows.

Si el pre procesamiento de la impresión es efectuado por los clientes, se debe instalar el


controlador de la impresora en cada cliente de manera manual.

Para efectuar esto se necesitara el CD de instalación de Windows.

Puede ser mejor almacenar los controladores en el servidor samba para que estos
puedan ser accedidos a través de la red.

Para poder efectuar esto, se necesita configurar el archivo /etc/samba/smb.conf.

Podemos observar el ejemplo:

[laserjet]
printable = yes
print command = lpr –Plp –I %s

Un recurso especial [print$] también es necesaria. Especifica la ruta donde los


controladores de Windows pueden ser almacenados.

Este recurso puede ser modificado solamente por el administrador y leídos por todos los
usuarios.

El recurso [print$] luce como sigue:

[print$]
path = /var/lib/samba/drivers
write list = root

Ahora si se puede instalar los controladores en el cliente Windows.

Para agregar una impresora en Windows, se selecciona „Agregar Impresora‟ desde las
opciones de impresión del panel de control de Windows. En el dialogo que busca las
impresoras en red, se selecciona la impresora en el servidor samba:

Ing. Ricardo Ruiz


268
PROCURADURIA GENERAL DE LA REPUBLICA DE NICARAGUA
Curso LINUX

Algunos pasos después, se puede seleccionar el modelo de la impresora. Después de la


instalación de los controladores, samba crea nuevos directorios para diferentes versiones
de Windows usando la opción „path‟ en la sección [print$].

Ahora, se puede encontrar los controladores de impresoras instalados (HP2100_6.PPD


en el siguiente ejemplo)

da2: # ls /var/lib/samba/drivers/
. .. W32ALPHA W32MIPS W32PPC W32X86 WIN40
da2: # ls /var/lib/samba/drivers/W32X86/
. .. 2
da2: # ls /var/lib/samba/drivers/W32X86/2/
. .. HP2100_6.PPD PSCRIPT.DLL PSCRIPT.HLP PSCRPTUI.DLL

Ing. Ricardo Ruiz


269

Anda mungkin juga menyukai