Linux Administración avanzada - Mantenimiento y explotación de los servidores Introducción 1. ¿ Qué contiene este libro ? 19 2. Requisitos previos 20 3. Obtener el software a implementar 20 3.1 Imagen ISO de las distribuciones Linux 3.2 Oracle VM VirtualBox 3.3 Máquinas virtuales 3.4 Convenciones 21 21 22 26 Arquitectura del sistema GNU/Linux 1. Sinopsis 29 1.1 Proyecto GNU 1.2 Distribución GNU/Linux 29 30 2. Anillos de protección 32 2.1 Arquitectura de bits 2.1.1 Sin virtualización 2.1.2 Con virtualización 2.2 Arquitectura de 64 bits 2.2.1 Sin virtualización 2.2.2 Con virtualización 32 33 33 34 34 35 3. Plataformas hardware 36 3.1 ¿ En qué plataformas hardware ? 3.2 Identificador de la arquitectura hardware 4. Kernel Linux 37 4.1 Componentes del kernel www.ediciones-eni.com 36 36 37 © Ediciones ENI 1/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 4.2 Código fuente 4.3 Versión del kernel 4.3.1 Breve historia de las versiones 4.3.2 Números de versión 4.3.3 ¿ Cómo saber la versión del kernel ? 4.4 Módulos del kernel 5. Controladores de dispositivos 38 39 39 41 41 43 44 5.1 Archivos especiales 5.2 Controladores de red 44 48 6. Librerías 49 6.1 Librerías estáticas 6.2 Librerías compartidas 6.3 Ubicación de las librerías 49 50 51 7. Llamadas de sistema 52 8. Shell 54 8.1 Diferentes shells 8.1.1 Bourne Shell 8.1.2 Almquist Shell y Debian Almquist Shell 8.1.3 Korn Shell 8.1.4 C-Shell y Tenex C-Shell 8.1.5 Bourne Again Shell 8.2 ¿ Cuál es el shell de login ? 8.3 Páginas del manual 8.3.1 Secciones 8.3.2 Buscar la ayuda de un comando 9. Interfaz gráfica 66 9.1 Capas gráficas 9.1.1 Transporte de red 9.1.2 Sistema de ventanas 9.1.3 Gestor de pantalla www.ediciones-eni.com 55 55 55 56 58 60 61 62 62 64 66 67 67 69 © Ediciones ENI 2/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 9.1.4 Gestor de sesión 9.1.5 Gestor de ventanas 9.1.6 Gestor de escritorio 9.2 Desinstalar un entorno gráfico 69 69 71 71 10. Servicios y niveles de ejecución 73 10.1 Gestión de servicios con Debian 10.1.1 Mostrar el estado de un servicio 10.1.2 Ver el estado de todos los servicios 10.1.3 Arrancar/detener un servicio 10.1.4 Recargar la configuración de un servicio 10.1.5 Activar/desactivar los servicios del arranque 10.2 Gestión de servicios con Ubuntu Server 10.2.1 Mostrar el estado de un servicio 10.2.2 Ver el estado de todos los servicios 10.2.3 Arrancar/detener un servicio 10.2.4 Recargar la configuración de un servicio 10.2.5 Activar/desactivar los servicios durante el arranque 10.3 Gestión de servicios con CentOS 10.3.1 Mostrar el estado de un servicio 10.3.2 Ver el estado de todos los servicios 10.3.3 Arrancar/detener un servicio 10.3.4 Recargar la configuración de un servicio 10.3.5 Activar/desactivar los servicios durante el arranque 11. Gestores de arranque 87 11.1 LILO 11.2 GRUB legacy 11.3 GRUB-PC 88 88 89 12. Registros del sistema 89 12.1 Registros de Debian 12.2 Registros de Ubuntu 12.3 Registros de CentOS 12.4 Leer los registros del sistema www.ediciones-eni.com 74 74 75 76 76 77 78 81 82 82 84 84 84 85 85 86 86 86 89 91 92 94 © Ediciones ENI 3/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 12.4.1 Leer un registro texto 12.4.2 Leer un registro binario 12.4.3 Logwatch 12.5 rsyslog 12.5.1 rsyslog.conf 12.5.2 Las reglas de rsyslog 12.6 Logrotate 95 98 98 102 102 102 105 13. Aplicaciones 107 13.1 Procesos 13.1.1 Definición 13.1.2 Identificador de proceso 13.1.3 Estado de un proceso 13.1.4 Función fork() 13.1.5 Función exec() 13.2 Threads 14. Distribuciones 113 14.1 Identificar la distribución 14.2 Debian 14.2.1 Presentación 14.2.2 Diferentes versiones de Debian 14.3 Ubuntu 14.3.1 Presentación 14.3.2 Diferentes versiones de Ubuntu 14.4 Red Hat 14.4.1 Presentación 14.4.2 Diferentes versiones de Red Hat 14.5 CentOS 14.6 Identificar la versión de la distribución 14.6.1 Versión de Debian 14.6.2 Versión de Ubuntu 14.6.3 Versión de CentOS 15. Plantilla del sistema www.ediciones-eni.com 108 108 109 109 110 111 112 113 114 114 114 115 115 115 116 116 116 117 117 117 118 119 120 © Ediciones ENI 4/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 16. Ejercicio 120 Kernel Linux 1. Introducción 121 1.1 ¿ Por qué compilar un kernel ? 1.2 Archivos que componen el núcleo 2. Compilar e instalar un kernel 122 2.1 Realizar una compilación clásica 2.1.1 Requisitos previos 2.1.2 Descargar el código fuente del kernel 2.1.3 Herramientas para configurar el kernel 2.1.4 Archivos de configuración 2.1.5 Eliminar los archivos de una compilación anterior 2.1.6 Construir el kernel 2.1.7 Instalar un módulo del kernel 2.2 Compilar un kernel al estilo Debian 2.2.1 Paquetes necesarios 2.2.2 Privilegios de usuario 2.2.3 Eliminar los archivos de una compilación anterior 2.2.4 Construir un kernel 2.2.5 Instalar un kernel 3. Desinstalar un kernel 122 123 123 126 132 133 134 135 137 137 138 139 140 141 143 3.1 Debian y Ubuntu 3.1.1 Mostrar los kernels instalados 3.1.2 Desinstalar 3.2 CentOS 3.2.1 Mostrar los kernels instalados 3.2.2 Desinstalar 3.2.3 Limitar el número de paquetes www.ediciones-eni.com 121 122 © Ediciones ENI 143 143 144 145 145 145 147 5/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 4. Elegir un kernel durante el arranque 148 4.1 Debian 4.2 Ubuntu 4.3 CentOS 4.4 Retardo para elegir el kernel a ejecutar 5. Kernel panic 148 149 150 150 152 5.1 Características 5.2 Frecuencia del problema 5.3 Análisis de la fuente del problema 5.4 Análisis del hardware 5.5 Análisis de software 5.5.1 Gestor de arranque 5.5.2 Origen del kernel 5.5.3 Módulos 5.6 Buscar soluciones 5.7 Aplicar la solución 6. Ejercicio 152 153 153 154 156 156 156 156 157 157 157 Módulos 1. Introducción 159 2. Compilar e instalar un módulo 160 2.1 Requisitos previos a la recompilación 2.1.1 Debian y Ubuntu 2.1.2 Red Hat 2.2 Escribir un módulo "Hello World" 2.2.1 Escribir el código fuente 2.2.2 Crear el archivo Makefile 2.2.3 Compilar el código fuente hello.c www.ediciones-eni.com © Ediciones ENI 160 160 160 160 161 162 163 6/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 3. Cargar un módulo 163 3.1 Instalar el módulo hello 3.2 insmod 3.3 Gestionar las dependencias 3.4 modprobe 3.5 Cargar un módulo durante el arranque 3.5.1 Debian y Ubuntu 3.5.2 CentOS 163 164 164 165 166 166 166 4. Descargar un módulo 167 5. Mostrar los módulos 169 5.1 Mostrar todos los módulos disponibles 5.2 Mostrar los módulos cargados 169 169 6. Obtener los datos 170 7. Bloquear un módulo 173 8. Registro del sistema 174 9. Ejercicio 175 Pseudo-sistemas de archivos 1. procfs 177 1.1 Presentación 1.2 Principales archivos de /proc 1.2.1 /proc/acpi 1.2.2 /proc/apm 1.2.3 /proc/bus www.ediciones-eni.com 177 178 178 179 179 © Ediciones ENI 7/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 1.2.4 /proc/cmdline 1.2.5 /proc/cpuinfo 1.2.6 /proc/crypto 1.2.7 /proc/devices 1.2.8 /proc/dma 1.2.9 /proc/filesystems 1.2.10 /proc/fs 1.2.11 /proc/ide 1.2.12 /proc/interrupts 1.2.13 /proc/iomem 1.2.14 /proc/ioports 1.2.15 /proc/irq 1.2.16 /proc/kcore 1.2.17 /proc/loadavg 1.2.18 /proc/mdstat 1.2.19 /proc/meminfo 1.2.20 /proc/misc 1.2.21 /proc/modules 1.2.22 /proc/mounts 1.2.23 /proc/net 1.2.24 /proc/partitions 1.2.25 /proc/self 1.2.26 /proc/stat 1.2.27 /proc/swaps 1.2.28 /proc/sys 1.2.29 /proc/scsi 1.2.30 /proc/tty 1.2.31 /proc/uptime 1.2.32 /proc/version 1.2.33 /proc/vmallocinfo 1.2.34 /proc/vmstat 1.2.35 /proc/zoneinfo 1.3 Carpetas de un proceso 1.3.1 /proc/1/cmdline 1.3.2 /proc/1/cwd 1.3.3 /proc/1/environ www.ediciones-eni.com 182 182 183 184 185 185 186 186 187 188 188 189 191 191 192 192 195 195 196 196 197 198 198 199 199 211 213 214 214 214 215 215 216 216 216 217 © Ediciones ENI 8/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 1.3.4 /proc/1/exe 1.3.5 /proc/1/fd 1.3.6 /proc/1/maps 1.3.7 /proc/1/smaps 1.3.8 /proc/1/mem 1.3.9 /proc/1/root 1.3.10 /proc/1/stat 1.3.11 /proc/1/statm 1.3.12 /proc/1/status 1.4 Modificación de los parámetros del kernel 1.4.1 Modificación no permanente 1.4.2 Modificación permanente 2. sysfs 225 2.1 Presentación 2.2 Principales archivos de /sys 2.2.1 /sys/block 2.2.2 /sys/bus 2.2.3 /sys/class 2.2.4 /sys/dev 2.2.5 /sys/devices 2.2.6 /sys/firmware 2.2.7 /sys/fs 2.2.8 /sys/hypervisor 2.2.9 /sys/kernel 2.2.10 /sys/module 2.2.11 /sys/power 2.3 Herramienta systool 2.3.1 Instalación 2.3.2 Uso de systool 2.4 Modificación de los parámetros del kernel 3. Ejercicio www.ediciones-eni.com 217 217 217 218 219 219 220 220 220 221 222 223 225 226 226 226 227 227 228 228 229 230 230 232 233 234 234 236 240 241 © Ediciones ENI 9/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores Solución de problemas hardware 1. Tipos de problemas de hardware 243 1.1 Problemas de hardware 1.1.1 Hardware del equipo que no funciona 1.1.2 Funcionamiento errático del hardware 1.1.3 Problemas de firmware y controlador 1.1.4 Otras consideraciones 1.2 Hardware no detectado por el sistema 2. Analizar el hardware 246 2.1 Enumerar el hardware 2.1.1 Instalación de lshw 2.1.2 Utilización de lshw 2.2 Sistema 2.3 CPU 2.4 Tabla DMI 2.5 Bus 2.5.1 lspci 2.5.2 lsusb 2.5.3 lsscsi 2.5.4 lspcmcia 2.6 Memoria 2.6.1 Información acerca de la memoria 2.6.2 Diagnosticar la memoria 2.7 Tarjeta gráfica 2.8 Discos duros 2.8.1 Información sobre los controladores 2.8.2 Información de los discos 2.8.3 Información de los volúmenes 2.8.4 El diagnóstico de un disco duro 2.9 Tarjeta de red 3. Ejercicio www.ediciones-eni.com 243 243 244 244 245 245 246 246 249 253 253 254 258 258 261 263 266 267 267 267 269 269 269 270 271 273 281 285 © Ediciones ENI 10/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores Mantenimiento de los discos 1. Introducción 287 2. Particiones 287 2.1 Tabla de particiones 2.1.1 Tipo msdos 2.1.2 Tipo GPT 2.1.3 Convertir de MBR a GPT 2.1.4 Eliminar una tabla de particiones 2.2 Herramientas de particionado 2.2.1 fdisk 2.2.2 cfdisk 2.2.3 GNU parted 2.2.4 GParted y QtParted 2.2.5 Live CD 3. Logical Volume Manager 313 3.1 Terminología 3.1.1 Volumen físico 3.1.2 Grupo de volúmenes 3.1.3 Volumen Lógico 3.1.4 Metadatos 3.2 Administración de volúmenes físicos 3.2.1 Crear un volumen físico 3.2.2 Mostrar los volúmenes físicos 3.2.3 Cambiar el tamaño de un volumen físico 3.2.4 Eliminar un volumen físico 3.3 Administración de grupos de volúmenes 3.3.1 Crear un grupo de volúmenes 3.3.2 Mostrar los grupos de volúmenes 3.3.3 Añadir un volumen físico al grupo de volúmenes 3.3.4 Retirar un volumen físico del grupo de volúmenes 3.3.5 Activar o desactivar un grupo de volúmenes 3.3.6 Eliminar un grupo de volúmenes www.ediciones-eni.com 289 289 290 291 293 294 294 302 305 308 312 © Ediciones ENI 313 313 314 314 315 316 316 318 320 321 322 322 323 325 327 329 329 11/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 3.3.7 Dividir un grupo de volúmenes 3.3.8 Fusionar grupos de volúmenes 3.3.9 Renombrar un grupo de volúmenes 3.4 Administración de volúmenes lógicos 3.4.1 Crear volúmenes lógicos en modo lineal 3.4.2 Crear volúmenes lógicos en modo stripe 3.4.3 Crear volúmenes lógicos en modo espejo 3.4.4 Crear instantáneas de volumen lógico 3.4.5 Mostrar los volúmenes lógicos 3.4.6 Aumentar el tamaño de un volumen lógico 3.4.7 Reducir el tamaño de un volumen lógico 3.4.8 Renombrar un volumen lógico 3.4.9 Eliminar un volumen lógico 3.5 Mover los datos 4. Sistemas de archivo 330 332 333 333 334 337 342 346 349 351 353 355 356 357 361 4.1 ext2 4.1.1 Bloques 4.1.2 Superbloque 4.1.3 Inodos 4.1.4 Crear un sistema de archivos ext2 4.2 ext3 4.2.1 El archivo de transacciones 4.2.2 Convertir una partición ext2 a ext3 4.2.3 Crear un sistema de archivos ext3 4.3 ext4 4.3.1 Convertir una partición ext3 a ext4 4.3.2 Crear un sistema de archivos ext4 5. Ejercicios 362 362 363 365 367 367 368 368 369 370 371 371 373 5.1 Particionado durante la instalación 5.2 Particionado post-instalación 373 374 Secuencia de arranque www.ediciones-eni.com © Ediciones ENI 12/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 1. Introducción 375 2. Proceso de arranque 375 3. GRUB 2 377 3.1 Identificar la versión de GRUB 3.2 Archivos de configuración 377 377 4. Guardar y restaurar el MBR 383 5. Ejercicio 383 Mantenimiento de las aplicaciones 1. Introducción 385 2. Aplicación que no ejecuta 385 2.1 Descripción de un paquete instalado 2.2 Archivos de configuración 2.3 Consultar los registros 2.4 Filtros de red 2.5 Dependencias del programa 2.6 Ubicación de las librerías 2.7 Modo de depuración 3. Aplicación que no responde 406 3.1 Modo depuración 3.2 Terminar un proceso 3.2.1 Buscar un PID 3.2.2 Herramientas para terminar un proceso www.ediciones-eni.com 386 390 391 399 401 402 406 © Ediciones ENI 406 407 408 410 13/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 4. Rendimiento degradado 415 5. Comportamientos inesperados 416 5.1 Eliminar los zombis 5.2 Fuga de memoria 416 418 6. Ejercicios 422 6.1 Matar un programa zombi 6.2 Identificar una fuga de memoria 422 423 Mantenimiento de la configuración de red 1. Modelos de comunicación 425 1.1 Recordatorio del modelo OSI 1.2 Modelo TCP/IP 1.3 Modelo OSI vs. modelo TCP/IP 425 427 428 2. Interfaz física 428 2.1 Detección de hardware y controlador 2.2 Direccionamiento físico 2.2.1 Identificar la dirección MAC 2.2.2 Caché ARP 2.2.3 ARPing 3. Interfaz lógica 437 3.1 CentOS 7: cambiar el nombre de la interfaz 3.2 Activar/desactivar una interfaz 3.3 Configurar una interfaz 3.3.1 Configuración de interfaces en Debian y Ubuntu 3.3.2 Configuración de las interfaces en CentOS 3.3.3 Herramienta ethtool 3.3.4 Interfaz virtual www.ediciones-eni.com 428 432 432 434 436 © Ediciones ENI 438 441 443 443 444 446 448 14/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 3.4 Direccionamiento IPv4 3.4.1 Dirección IPv4 estática 3.4.2 Direccionamiento IPv4 dinámico 3.4.3 Eliminar la dirección IPv4 3.5 Gateway por defecto 3.6 Resolución de nombres de hosts 3.6.1 Probar la resolución de nombres 3.6.2 Archivos de configuración 4. Herramientas de análisis 449 451 452 453 454 455 456 457 458 4.1 Problemas de conexión 4.1.1 Verificar la configuración TCP/IP 4.1.2 Verificar la conexión a la red 4.1.3 Verificar la comunicación local 4.1.4 Verificar la comunicación remota 4.2 Bloquear/desbloquear ping 4.2.1 Bloquear ping con /proc 4.2.2 Bloquear ping con iptables 4.3 Puertos abiertos 4.4 Ancho de banda 5. Ejercicios 458 459 459 460 461 461 461 463 466 467 473 5.1 Recopilar la configuración de una tarjeta de red 5.2 Renombrar la interfaz de red eth0 473 474 Análisis de rendimiento 1. Introducción 475 2. Cuello de botella 476 2.1 Identificar los recursos 2.2 Capturar y almacenar los datos www.ediciones-eni.com 476 477 © Ediciones ENI 15/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 3. Procesador 478 4. Memorias 483 4.1 Memoria física 4.1.1 Arquitectura x86 4.1.2 Arquitectura x86_64/amd64 4.2 Buffer 4.3 Memoria caché 4.4 El espacio de intercambio 4.4.1 Swap como partición 4.4.2 Swap como archivo 4.5 Memoria virtual 4.6 Mostrar la memoria del sistema 4.7 El mapa de memoria de un programa 4.8 Memoria insuficiente 483 483 484 484 485 485 485 486 487 488 490 492 5. Discos 494 6. Interfaces de red 498 7. Ejercicio 500 7.1 Creación de un archivo swap 7.2 Prueba de carga de memoria 500 501 Seguridad 1. Introducción 503 2. Seguridad física 504 2.1 ¿ Quién debe tener acceso al equipo ? 2.2 Alimentación eléctrica 2.3 Interfaces de comunicación www.ediciones-eni.com © Ediciones ENI 504 504 504 16/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 2.4 BIOS 512 3. Seguridad software 512 3.1 Versión del software 3.2 ¿ Qué es necesario instalar ? 3.3 Actualización 3.4 Gestionar los paquetes deb con apt 3.4.1 Instalar un paquete 3.4.2 Buscar paquetes 3.4.3 Mostrar la descripción de un paquete 3.4.4 Mostrar las dependencias 3.4.5 Instalar las dependencias 3.4.6 Mostrar la información de un paquete 3.4.7 Identificar el repositorio de un paquete 3.4.8 Origen de un archivo 3.4.9 Mostrar el contenido de un paquete 3.4.10 Buscar las versiones de los paquetes disponibles 3.4.11 Actualizar los repositorios 3.4.12 Actualizar los paquetes del sistema 3.4.13 Desinstalar un paquete 3.4.14 Eliminar los paquetes de instalación 3.5 Gestionar los paquetes deb con dpkg 3.5.1 Mostrar los paquetes instalados 3.5.2 Reconfigurar un paquete 3.5.3 Manejar los paquetes rotos 3.6 Gestionar los paquetes RPM con yum 3.6.1 Actualización del sistema 3.6.2 Buscar un paquete 3.6.3 Instalar un paquete 3.6.4 Eliminar un paquete 3.6.5 Muestra información del paquete 3.6.6 Actualización selectiva 3.6.7 Gestionar grupos de programas 3.7 Gestionar los paquetes RPM con rpm 3.7.1 Instalar un paquete 3.7.2 Leer la información de un paquete www.ediciones-eni.com © Ediciones ENI 512 513 513 515 516 517 518 520 526 529 529 529 533 534 535 537 538 540 540 540 543 543 543 543 546 548 549 551 552 552 554 554 555 17/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 3.7.3 Mostrar todos los paquetes instalados 3.7.4 Modificar el formato de visualización 3.8 Identificación y autenticación 3.8.1 Tipos de cuenta 3.8.2 Características de una cuenta 3.8.3 Características de la cuenta root 3.8.4 Autenticación 3.8.5 Perfil de usuario 3.8.6 Sesión 3.8.7 Verificar los archivos de cuenta 3.9 Configuración de red 3.9.1 Identificar los puertos abiertos 3.9.2 Firewall 3.10 ¿ Hace falta un antivirus ? 556 557 557 557 558 559 560 560 560 560 561 561 563 564 Corrección de los ejercicios 1. Ejercicio del capítulo Arquitectura del sistema GNU/Linux 567 2. Ejercicio del capítulo Kernel Linux 570 3. Ejercicio del capítulo Módulos 572 4. Ejercicio del capítulo Pseudo-sistemas de archivos 574 5. Ejercicio del capítulo Solución de problemas hardware 575 6. Ejercicio del capítulo Mantenimiento de los discos 578 6.1 Particionado durante la instalación 6.2 Particionado post-instalación 578 588 7. Ejercicio del capítulo Secuencia de arranque 592 www.ediciones-eni.com © Ediciones ENI 18/19 Linux Administración avanzada - Mantenimiento y explotación de los servidores 8. Ejercicio del capítulo Mantenimiento de las aplicaciones 8.1 Matar un programa zombi 8.2 Identificar una fuga de memoria 593 595 9. Ejercicio del capítulo Mantenimiento de la configuración de red 9.1 Recopilar la configuración de una tarjeta de red 9.2 Renombrar la interfaz de red eth0 10. Ejercicio del capítulo Análisis de rendimiento 10.1 Creación de un archivo swap 10.2 Prueba de carga de memoria 598 598 599 600 600 601 índice www.ediciones-eni.com 593 605 © Ediciones ENI 19/19