0% encontró este documento útil (0 votos)
31 vistas700 páginas

Rh124 8.2 Student Guide (1) 1

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas700 páginas

Rh124 8.2 Student Guide (1) 1

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Libro de trabajo del estudiante (ROLE)

Red Hat Enterprise Linux 8.2 RH124


Red Hat System Administration I
Edición 1

RH124-RHEL8.2-es-1-20200928 Copyright ©2020 Red Hat, Inc.


Red Hat System
Administration I

RH124-RHEL8.2-es-1-20200928 Copyright ©2020 Red Hat, Inc.


Red Hat Enterprise Linux 8.2 RH124
Red Hat System Administration I
Edición 1 20200928
fecha de publicación 20200928

Autores: Fiona Allen, Victor Costea, Snehangshu Karmakar, Marc Kesler,


Ed Parenti, Saumik Paul, Hervé Quatremain, Dallas Spohn
Editor: Steven Bonneville, Ralph Rodriguez, David Sacco, Nicole Muller, Heather
Charles, David O'Brien, Seth Kenlon
Copyright © 2020 Red Hat, Inc.

The contents of this course and all its modules and related materials, including handouts to audience members, are
Copyright © 2020 Red Hat, Inc.

No part of this publication may be stored in a retrieval system, transmitted or reproduced in any way, including, but
not limited to, photocopy, photograph, magnetic, electronic or other record, without the prior written permission of
Red Hat, Inc.

This instructional program, including all material provided herein, is supplied without any guarantees from Red Hat,
Inc. Red Hat, Inc. assumes no liability for damages or legal action arising from the use or misuse of contents or details
contained herein.

If you believe Red Hat training materials are being used, copied, or otherwise improperly distributed, please send
email to [email protected] or phone toll-free (USA) +1 (866) 626-2994 or +1 (919) 754-3700.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, JBoss, Hibernate, Fedora, the Infinity logo, and RHCE are
trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a registered trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or
other countries.

The OpenStack® word mark and the Square O Design, together or apart, are trademarks or registered trademarks
of OpenStack Foundation in the United States and other countries, and are used with the OpenStack Foundation's
permission. Red Hat, Inc. is not affiliated with, endorsed by, or sponsored by the OpenStack Foundation or the
OpenStack community.

All other trademarks are the property of their respective owners.

Colaboradores: Artur Glogowski, Latha Murthy, Samik Sanyal, Chetan Tiwary, Achyut Madhusudan,
Rudolf Kastl, Rob Locke, Michael Phillips
Convenciones del documento ix

Introducción xi
Red Hat System Administration I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Orientación sobre el entorno del aula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Internacionalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi

1. Primeros pasos con Red Hat Enterprise Linux 1


¿Qué es Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Cuestionario: Primeros pasos con Red Hat Enterprise Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2. Acceso a la línea de comandos 13


Acceso a la línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Cuestionario: Acceso a la línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Acceso a la línea de comandos con el escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Ejercicio Guiado: Acceso a la línea de comandos con el escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Ejecución de comandos con la shell Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Cuestionario: Ejecución de comandos con la shell Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Trabajo de laboratorio: Acceso a la línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3. Administración de archivos desde la línea de comandos 51


Descripción de conceptos de la jerarquía del sistema de archivos Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Cuestionario: Descripción de conceptos de la jerarquía del sistema de archivos Linux . . . . . . . . 55
Especificar archivos por nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Cuestionario: Especificar archivos por nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Administración de archivos con las herramientas de línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Ejercicio Guiado: Administración de archivos con las herramientas de línea de
comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Creación de enlaces entre archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Ejercicio Guiado: Creación de enlaces entre archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Coincidencia de nombres de archivo con expansiones de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Cuestionario: Coincidencia de nombres de archivo con expansiones de shell . . . . . . . . . . . . . . . . . . . . 91
Trabajo de laboratorio: Administración de archivos desde la línea de comandos . . . . . . . . . . . . . . . . 95
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4. Obtener ayuda en Red Hat Enterprise Linux 107


Lectura de páginas de manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Ejercicio Guiado: Lectura de páginas de manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Leer documentación de Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Ejercicio Guiado: Leer documentación de Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Trabajo de laboratorio: Obtener ayuda en Red Hat Enterprise Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

5. Creación, visualización y edición de archivos de texto 131


Redireccionamiento de la salida a un archivo o programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Cuestionario: Redireccionamiento de la salida a un archivo o programa . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Edición de archivos de texto desde el prompt de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Ejercicio Guiado: Edición de archivos de texto desde el prompt de shell . . . . . . . . . . . . . . . . . . . . . . . . . 146
Modificación del entorno de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Ejercicio Guiado: Modificación del entorno de Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Trabajo de laboratorio: Creación, visualización y edición de archivos de texto . . . . . . . . . . . . . . . . . . 157
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

6. Administración de usuarios y grupos locales 167


Descripción de conceptos de usuarios y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Cuestionario: Descripción de conceptos de usuarios y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

RH124-RHEL8.2-es-1-20200928 v
Obtención de acceso de superusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Ejercicio Guiado: Obtención de acceso de superusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Administración de cuentas de usuarios locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Ejercicio Guiado: Administración de cuentas de usuarios locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Administración de cuentas de grupos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Ejercicio Guiado: Administración de cuentas de grupos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Administración de contraseñas de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Ejercicio Guiado: Administración de contraseñas de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Trabajo de laboratorio: Administración de usuarios y grupos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

7. Control de acceso a los archivos 215


Interpretación de los permisos del sistema de archivos de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Cuestionario: Interpretación de los permisos del sistema de archivos de Linux . . . . . . . . . . . . . . . . . 221
Administración de permisos del sistema de archivos desde la línea de comandos . . . . . . . . . . . . 225
Ejercicio Guiado: Administración de permisos del sistema de archivos desde la línea de
comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Administración de permisos predeterminados y acceso a archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Ejercicio Guiado: Administración de permisos predeterminados y acceso a archivos . . . . . . . . 238
Trabajo de laboratorio: Control de acceso a los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

8. Monitoreo y administración de procesos Linux 251


Lista de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Cuestionario: Lista de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Control de trabajos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Ejercicio Guiado: Control de trabajos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Finalización de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Ejercicio Guiado: Finalización de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Monitoreo de la actividad de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Ejercicio Guiado: Monitoreo de la actividad de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Trabajo de laboratorio: Monitoreo y administración de procesos Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

9. Control de servicios y daemons 301


Identificación de procesos del sistema iniciados en forma automática . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Ejercicio Guiado: Identificación de procesos del sistema iniciados en forma automática . . . 308
Control de servicios del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Ejercicio Guiado: Control de servicios del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Trabajo de laboratorio: Control de servicios y daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

10. Configuración y seguridad de SSH 327


Acceso a la línea de comandos remota con SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Ejercicio Guiado: Acceso a la línea de comandos remota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Configuración de autenticación basada en claves SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Ejercicio Guiado: Configuración de autenticación basada en claves SSH . . . . . . . . . . . . . . . . . . . . . . . . 341
Personalización de la configuración del servicio OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Ejercicio Guiado: Personalización de la configuración del servicio OpenSSH . . . . . . . . . . . . . . . . . . 349
Trabajo de laboratorio: Configuración y seguridad de SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

11. Análisis y almacenamiento de registros 363


Descripción de la arquitectura de registro del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Cuestionario: Descripción de la arquitectura de registro del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Revisión de archivos Syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Ejercicio Guiado: Revisión de archivos Syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

vi RH124-RHEL8.2-es-1-20200928
Revisión de las entradas del diario (journal) del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Ejercicio Guiado: Revisión de las entradas del diario (journal) del sistema . . . . . . . . . . . . . . . . . . . . . . . 383
Resguardo del diario (journal) del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Ejercicio Guiado: Resguardo del diario (journal) del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Mantenimiento de la hora correcta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Ejercicio Guiado: Mantenimiento de la hora correcta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Trabajo de laboratorio: Análisis y almacenamiento de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

12. Administración de redes 409


Descripción de conceptos de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Cuestionario: Descripción de conceptos de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Validación de la configuración de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Ejercicio Guiado: Validación de la configuración de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Configuración de redes desde la línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Ejercicio Guiado: Configuración de redes desde la línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Edición de archivos de configuración de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Ejercicio Guiado: Edición de archivos de configuración de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Configuración de nombres de host y resolución de nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Ejercicio Guiado: Configuración de nombres de host y resolución de nombre . . . . . . . . . . . . . . . . . 459
Trabajo de laboratorio: Administración de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

13. Almacenamiento y transferencia de archivos 471


Administración de colecciones de archivos tar comprimidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Ejercicio Guiado: Administración de colecciones de archivos tar comprimidas . . . . . . . . . . . . . . . . 479
Transferencia de archivos entre sistemas de forma segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Ejercicio Guiado: Transferencia de archivos entre sistemas de forma segura . . . . . . . . . . . . . . . . . . 484
Sincronización de archivos entre sistemas en forma segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Ejercicio Guiado: Sincronización de archivos entre sistemas en forma segura . . . . . . . . . . . . . . . . . 489
Trabajo de laboratorio: Almacenamiento y transferencia de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

14. Instalación y actualización de paquetes de software 499


Registro de sistemas para Soporte de Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Cuestionario: Registro de sistemas para Soporte de Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Explicación y revisión de paquetes de software RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Ejercicio Guiado: Explicación y revisión de paquetes de software RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Instalación y actualización de paquetes de software con Yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Ejercicio Guiado: Instalación y actualización de paquetes de software con Yum . . . . . . . . . . . . . . . 522
Habilitación de repositorios de software yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Ejercicio Guiado: Habilitación de repositorios de software yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Administración de flujos de módulos de paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Ejercicio Guiado: Administración de flujos de módulos de paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Trabajo de laboratorio: Instalación y actualización de paquetes de software . . . . . . . . . . . . . . . . . . . 548
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

15. Acceso a los sistemas de archivos de Linux 557


Identificación de dispositivos y sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Cuestionario: Identificación de dispositivos y sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Montaje y desmontaje de sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Ejercicio Guiado: Montaje y desmontaje de sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Localización de archivos en el sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Ejercicio Guiado: Localización de archivos en el sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Trabajo de laboratorio: Acceso a los sistemas de archivos de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

RH124-RHEL8.2-es-1-20200928 vii
16. Cómo analizar servidores y obtener soporte 587
Análisis y administración de servidores remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Ejercicio Guiado: Análisis y administración de servidores remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Obtención de ayuda en el portal de clientes de Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Ejercicio Guiado: Obtención de ayuda en el portal de clientes de Red Hat . . . . . . . . . . . . . . . . . . . . . 620
Detección y resolución de problemas con Red Hat Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Cuestionario: Detección y resolución de problemas con Red Hat Insights . . . . . . . . . . . . . . . . . . . . . . . 631
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
17. Revisión completa 635
Revisión completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Trabajo de laboratorio: Administración de archivos desde la línea de comandos . . . . . . . . . . . . . . . 641
Trabajo de laboratorio: Administración de usuarios y grupos, permisos y procesos . . . . . . . . . . 650
Trabajo de laboratorio: Configuración y administración de un servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Trabajo de laboratorio: Administración de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Trabajo de laboratorio: Montaje de sistemas de archivos y búsqueda de archivos . . . . . . . . . . . . 672

viii RH124-RHEL8.2-es-1-20200928
Convenciones del documento

Referencias
En "Referencias", se describe el lugar donde se puede encontrar documentación
externa relevante para un tema.

nota
Las "Notas" son consejos, atajos o enfoques alternativos para una tarea
determinada. Omitir una nota no debería tener consecuencias negativas, pero
quizás se pase por alto algún truco que puede simplificar una tarea.

Importante
En las cajas (boxes) "Importante", se detallan cosas que se olvidan con facilidad:
cambios de configuración que solo se aplican a la sesión actual o servicios que se
deben reiniciar para poder aplicar una actualización. Ignorar una caja (box) con la
etiqueta "Importante" no provocará pérdida de datos, pero puede causar irritación y
frustración.

Advertencia
No se deben ignorar las "advertencias". Es muy probable que ignorar las
advertencias provoque la pérdida de datos.

RH124-RHEL8.2-es-1-20200928 ix
x RH124-RHEL8.2-es-1-20200928
Introducción

Red Hat System Administration I


Red Hat System Administration I (RH124) se diseñó para profesionales de TI
sin experiencia previa en la administración de sistemas Linux. El objetivo del
curso es proporcionales a los estudiantes "habilidades de supervivencia" en
la administración de Linux ya que cubre las tareas de administración básicas.
En Red Hat System Administration I también se presentan los conceptos
claves de línea de comandos y las herramientas de nivel empresarial a fin
de ofrecerles una base a los estudiantes que planifiquen convertirse en
administradores de sistemas Linux de tiempo completo. Estos conceptos se
ampliarán en el siguiente curso: Red Hat System Administration II (RH134).

Objetivos del • Obtener la habilidad suficiente para realizar


curso las tareas principales de administración de
sistemas en Red Hat Enterprise Linux.
• Desarrollar las habilidades necesarias para un
administrador de sistemas Red Hat Enterprise
Linux con certificación RHCSA.

Destinatarios • Profesionales de TI que se dedican a diversas


disciplinas y que necesitan realizar tareas de
administración de Linux esenciales, entre ellas,
instalación, establecimiento de conectividad de
red, administración de almacenamiento físico y
administración de seguridad básica.

Requisitos • No hay requisitos previos formales para este


previos curso; sin embargo, sería muy beneficioso
contar con experiencia previa en administración
de otros sistemas operativos.

RH124-RHEL8.2-es-1-20200928 xi
Introducción

Orientación sobre el entorno del aula

Figura 0.1: Entorno del aula

En este curso, la computadora principal usada para las actividades prácticas de aprendizaje es
workstation. Los estudiantes también usarán otras dos máquinas para las actividades: servera
y serverb. Estos tres sistemas se encuentran en el dominio DNS lab.example.com.

Todas las computadoras de los estudiantes tienen una cuenta de usuario estándar (student) con
la contraseña student. La contraseña root de todos los sistemas de los estudiantes es redhat.

Máquinas del aula

Nombre de la máquina Direcciones IP Rol

bastion.lab.example.com 172.25.250.254 Sistema de puerta de enlace para


conectar la red privada de los
estudiantes al servidor del aula
(debe estar siempre en ejecución)

workstation.lab.example.com 172.25.250.9 Estación de trabajo gráfica usada


para la administración del sistema

servera.lab.example.com 172.25.250.10 Primer servidor

serverb.lab.example.com 172.25.250.11 Segundo servidor

La función principal de bastion es que actúa como enrutador entre la red que conecta las
máquinas de los estudiantes y la red del aula. Si bastion está apagada, otras máquinas de
estudiantes solo podrán acceder a sistemas en la red de estudiantes individuales.

xii RH124-RHEL8.2-es-1-20200928
Introducción

Varios sistemas en el aula brindan servicios de soporte. Dos servidores, content.example.com


y materials.example.com, son fuentes de software y materiales del trabajo de laboratorio
usados en actividades prácticas. Se provee información sobre cómo usar estos servidores en
las instrucciones para estas actividades. Estas instrucciones las proporciona la máquina virtual
classroom.example.com. Tanto classroom como bastion se deben estar ejecutando
siempre para el uso adecuado del entorno de laboratorio.

nota
Al iniciar sesión en servera o serverb, es posible que vea un mensaje sobre la
activación de cockpit. El mensaje puede ser ignorado.

[student@workstation ~]$ ssh student@serverb


Warning: Permanently added 'serverb,172.25.250.11' (ECDSA) to the list of
known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

[student@serverb ~]$

Control de sus sistemas


Se le asignan computadoras remotas en un aula de aprendizaje en línea de Red Hat. Se accede a
ellas a través de una aplicación web alojada en rol.redhat.com [http://rol.redhat.com]. Debe iniciar
sesión en este sitio usando sus credenciales de usuario del Portal de clientes de Red Hat.

Control de las máquinas virtuales


Las máquinas virtuales del entorno de su aula se controlan a través de una página web. El estado
de cada máquina virtual en el aula se muestra en la página en la pestaña Online Lab (Trabajo de
laboratorio en línea).

Estados de la máquina

Estado de la Descripción
máquina virtual

STARTING (EN La máquina virtual está por arrancar.


INICIO)

STARTED (INICIADA) La máquina virtual se está ejecutando y está disponible (o bien,


cuando arranque, pronto lo estará).

STOPPING (EN La máquina virtual está por apagarse.


DETENCIÓN)

STOPPED La máquina virtual se ha apagado completamente. Al iniciarse, la


(DETENIDA) máquina virtual arranca en el mismo estado en que se hallaba en el
momento de apagarse (el disco se habrá preservado).

PUBLISHING Se está llevando a cabo la creación inicial de la máquina virtual.


(PUBLICADA)

RH124-RHEL8.2-es-1-20200928 xiii
Introducción

Estado de la Descripción
máquina virtual

WAITING_TO_START La máquina virtual está esperando que inicien las demás máquinas
(EN ESPERA PARA virtuales.
INICIARSE)

Según el estado de una máquina, se dispone de una selección de las siguientes acciones.

Acciones de aula/máquina

Botón o acción Descripción

PROVISION LAB Crea el aula de ROL. Crea todas las máquinas virtuales necesarias para
(APROVISIONAR el aula y las inicia. Puede tardar algunos minutos en completarse.
TRABAJO DE
LABORATORIO)

DELETE LAB Elimina el aula de ROL. Destruye todas las máquinas virtuales del aula.
(ELIMINAR Precaución: Se perderán los trabajos generados en los discos.
TRABAJO DE
LABORATORIO)

START LAB Inicia todas las máquinas virtuales en el aula.


(INICIAR
TRABAJO DE
LABORATORIO)

SHUTDOWN Detiene todas las máquinas virtuales en el aula.


LAB (APAGAR
TRABAJO DE
LABORATORIO)

OPEN CONSOLE Abra una nueva pestaña en el navegador y conéctese a la consola de


(ABRIR CONSOLA) la máquina virtual. Puede iniciar sesión directamente en la máquina
virtual y ejecutar los comandos. En la mayoría de los casos, debe iniciar
sesión en la máquina virtual workstation y usar ssh para conectarse
a las otras máquinas virtuales.

ACTION (ACCIÓN) Inicie (power on [encender]) la máquina virtual.


→ Start(Iniciar)

ACTION Apague la máquina virtual correctamente y preserve el contenido del


(ACCIÓN) → disco.
Shutdown(Apagar)

ACTION (ACCIÓN) Fuerce el apagado de la máquina virtual y preserve el contenido del


→ Power disco. Esto equivale a desenchufar una máquina física.
Off(Desconectar)

ACTION Fuerce el apagado de la máquina virtual y restablezca el disco para que


(ACCIÓN) → vuelva a su estado original. Precaución: Se perderán los trabajos
Reset(Restablecer) generados en el disco.

xiv RH124-RHEL8.2-es-1-20200928
Introducción

Al inicio de un ejercicio, si se le indica que restablezca el nodo de una máquina virtual, haga clic en
ACTION (ACCIÓN) → Reset (Restablecer) solo para la máquina virtual específica.

Al inicio de un ejercicio, si se le indica que restablezca todas las máquinas virtuales, haga clic en
ACTION (ACCIÓN) → Reset (Restablecer)

Si desea que el entorno del aula vuelva a su estado original al inicio del curso, puede hacer
clic en DELETE LAB (ELIMINAR TRABAJO DE LABORATORIO) para eliminar el entorno del
aula completo. Después de eliminar el trabajo de laboratorio, puede hacer clic en PROVISION
LAB (APROVISIONAR TRABAJO DE LABORATORIO) para aprovisionar un nuevo conjunto de
sistemas del aula.

Advertencia
La operación DELETE LAB (ELIMINAR TRABAJO DE LABORATORIO) no puede
deshacerse. Se perderán todos los trabajos que haya completado en el entorno del
aula hasta el momento.

Temporizador de detención automática


La inscripción a la capacitación en línea de Red Hat le da derecho a una cierta cantidad de tiempo
de uso del equipo. Para ahorrar tiempo asignado de la computadora, el aula de ROL tiene un
temporizador de cuenta regresiva asociado, el cual apaga el entorno del aula cuando se termina el
tiempo.

Para ajustar el temporizador, haga clic en MODIFY (MODIFICAR) para que aparezca el cuadro
de diálogo New Autostop Time (Nuevo tiempo de detención automática). Defina la cantidad
de horas hasta que el aula deba detenerse automáticamente. Tenga en cuenta que hay un tiempo
máximo de diez horas. Haga clic en ADJUST TIME (AJUSTAR TIEMPO) para aplicar este cambio
en los ajustes del temporizador.

RH124-RHEL8.2-es-1-20200928 xv
Introducción

Internacionalización

Selección de idioma por usuario


Es posible que sus usuarios prefieran usar un idioma para su entorno de escritorio distinto al
predeterminado del sistema. Quizás también quieran usar una distribución del teclado o un
método de entrada distintos para su cuenta.

Configuración de idioma
En el entorno de escritorio GNOME, posiblemente el usuario deba definir el idioma de su
preferencia y el método de entrada la primera vez que inicie sesión. Si no es así, la manera más
simple para un usuario individual de definir el idioma de su preferencia y el método de entrada es
usando la aplicación Region & Language.

Puede iniciar esta aplicación de dos maneras. Puede ejecutar el comando gnome-control-
center region desde una ventana de terminal, o bien, en la barra superior en el menú de
sistema de la esquina derecha, puede seleccionar el botón de configuración (que tiene un icono de
un destornillador y una llave inglesa cruzados) ubicado en la parte inferior izquierda del menú.

En la ventana que se abre, seleccione Region & Language (Región e idioma). El usuario puede
hacer clic en la caja (box) Language (Idioma) y seleccionar el idioma de su preferencia en la
lista que aparece. Esto también actualiza la configuración de Formats (Formatos) mediante
la adopción del valor predeterminado para ese idioma. La próxima vez que inicie sesión, se
efectuarán los cambios.

Estas configuraciones afectan el entorno de escritorio GNOME y todas las aplicaciones, como
gnome-terminal, que se inician dentro de este. Sin embargo, de forma predeterminada, no se
aplican a la cuenta si el acceso a ella es mediante un inicio de sesión ssh desde un sistema remoto
o un inicio de sesión basado en texto en una consola virtual (como tty5).

nota
Puede hacer que su entorno de shell use la misma configuración de LANG que su
entorno gráfico, incluso cuando inicia sesión a través de una consola virtual basada
en texto o mediante ssh. Una manera de hacer esto es colocar un código similar
al siguiente en su archivo ~/.bashrc. Este código de ejemplo definirá el idioma
empleado en un inicio de sesión en interfaz de texto de modo que coincida con el
idioma actualmente definido en el entorno de escritorio GNOME del usuario.

i=$(grep 'Language=' /var/lib/AccountsService/users/${USER} \


| sed 's/Language=//')
if [ "$i" != "" ]; then
export LANG=$i
fi

Es posible que algunos idiomas, como el japonés, coreano, chino y otros con un
conjunto de caracteres no latinos, no se vean correctamente en consolas virtuales
basadas en texto.

xvi RH124-RHEL8.2-es-1-20200928
Introducción

Se pueden crear comandos individuales para usar otro idioma mediante la configuración de la
variable LANG en la línea de comandos:

[user@host ~]$ LANG=fr_FR.utf8 date


jeu. avril 25 17:55:01 CET 2019

Los comandos subsiguientes se revertirán y usarán el idioma de salida predeterminado del


sistema. El comando locale se puede usar para determinar el valor actual de LANG y otras
variables de entorno relacionadas.

Configuración del método de entrada


GNOME 3 en Red Hat Enterprise Linux 7 o posterior usa de manera automática el sistema de
selección de método de entrada IBus, que permite cambiar las distribuciones del teclado y los
métodos de entrada de manera rápida y sencilla.

La aplicación Region & Language (Región e idioma) también se puede usar para habilitar métodos
de entrada alternativos. En la ventana de la aplicación Region & Language (Región e idioma), la
caja (box) Input Sources (Fuentes de entrada) muestra los métodos de entrada disponibles en
este momento. De forma predeterminada, es posible que English (US) (Inglés [EE. UU.]) sea
el único método disponible. Resalte English (US) (Inglés [EE. UU.]) y haga clic en el icono de
keyboard (teclado) para ver la distribución actual del teclado.

Para agregar otro método de entrada, haga clic en el botón +, en la parte inferior izquierda de
la ventana Input Sources. Se abrirá la ventana Add an Input Source (Agregar una fuente de
entrada). Seleccione su idioma y, luego, el método de entrada o la distribución del teclado de su
preferencia.

Cuando haya más de un método de entrada configurado, el usuario puede alternar entre ellos
rápidamente escribiendo Super+Space (en ocasiones denominado Windows+Space). También
aparecerá un indicador de estado en la barra superior de GNOME con dos funciones: por un lado,
indica el método de entrada activo; por el otro lado, funciona como un menú que puede usarse
para cambiar de un método de entrada a otro o para seleccionar funciones avanzadas de métodos
de entrada más complejos.

Algunos de los métodos están marcados con engranajes, que indican que tienen opciones de
configuración y capacidades avanzadas. Por ejemplo, el método de entrada japonés Japanese
(Kana Kanji) (japonés [Kana Kanji]) permite al usuario editar previamente texto en latín y usar las
teclas de Down Arrow (flecha hacia abajo) y Up Arrow (flecha hacia arriba) para seleccionar los
caracteres correctos que se usarán.

El indicador también puede ser de utilidad para los hablantes de inglés de Estados Unidos. Por
ejemplo, en English (United States) (Inglés [Estados Unidos]) está la distribución de teclado
English (international AltGr dead keys) (Inglés [internacional, teclas inactivas AltGr]), que
trata AltGr (o la tecla Alt derecha) en un teclado de 104/105 teclas de una PC como una tecla
modificadora "Bloq Mayús secundaria" y tecla de activación de teclas inactivas para escribir
caracteres adicionales. Hay otras distribuciones alternativas disponibles, como Dvorak.

RH124-RHEL8.2-es-1-20200928 xvii
Introducción

nota
Cualquier carácter Unicode puede ingresarse en el entorno de escritorio GNOME
si conoce el código Unicode del carácter. Escriba Ctrl+Shift+U, seguido por
el código. Después de ingresar Ctrl+Shift+U, aparecerá una u subrayada que
indicará que el sistema espera la entrada del código Unicode.

Por ejemplo, la letra del alfabeto griego en minúscula lambda tiene el código U
+03BB y puede ingresarse escribiendo Ctrl+Shift+U, luego 03BB y, por último,
Enter.

Configuración de idioma predeterminado en todo el


sistema
El idioma predeterminado del sistema está definido en US English (inglés de EE. UU.), que usa
la codificación UTF-8 de Unicode como su conjunto de caracteres (en_US.utf8), pero puede
cambiarse durante o después de la instalación.

Desde la línea de comandos, el usuario root puede cambiar los ajustes de configuración regional
de todo el sistema con el comando localectl. Si localectl se ejecuta sin argumentos,
muestra los ajustes actuales de configuración regional de todo el sistema.

Para configurar el idioma predeterminado de todo el sistema, ejecute el comando localectl


set-locale LANG=locale, donde locale es el valor adecuado para la variable de entorno LANG
de la tabla "Referencia de códigos de idioma" en este capítulo. El cambio entrará en vigencia para
los usuarios en su siguiente inicio de sesión y se almacena en /etc/locale.conf.

[root@host ~]# localectl set-locale LANG=fr_FR.utf8

En GNOME, un usuario administrativo puede cambiar esta configuración en Region & Language
(Región e idioma) haciendo clic en el botón Login Screen (Pantalla de inicio de sesión) ubicado
en la esquina superior derecha de la ventana. Al cambiar la opción Language (Idioma) de la
pantalla de inicio de sesión gráfico, también se ajustará el valor de idioma predeterminado de todo
el sistema almacenado en el archivo de configuración /etc/locale.conf.

Importante
Las consolas virtuales basadas en texto, como tty4, pueden mostrar una cantidad
más limitada de fuentes que los terminales en una consola virtual que ejecuta un
entorno gráfico, o pseudoterminales para sesiones ssh. Por ejemplo, los caracteres
del japonés, coreano y chino posiblemente no se visualicen como se espera en una
consola virtual basada en texto. Por este motivo, debe considerar el uso de inglés u
otro idioma con un conjunto de caracteres latinos para los valores predeterminados
para todo el sistema.

De manera similar, las consolas virtuales basadas en texto soportan una cantidad
limitada de métodos de entrada; y esto se administra de manera separada
desde el entorno gráfico de escritorio. Las opciones de entrada globales
pueden ser configuradas a través localectl de la consola de texto virtual y del
entorno gráfico. Para obtener más información, consulte las páginas del manual
localectl(1) y vconsole.conf(5).

xviii RH124-RHEL8.2-es-1-20200928
Introducción

Paquetes de idiomas
Paquetes de RPM especiales llamados langpacks instalan paquetes de idiomas que agregan
soporte para idiomas específicos. Estos paquetes de idiomas usan dependencias para instalar
automáticamente paquetes de RPM adicionales que contienen localizaciones, diccionarios y
traducciones para otros paquetes de software en su sistema.

Use yum list langpacks-* para enumerar los paquetes de idiomas que están instalados y
que pueden instalarse:

[root@host ~]# yum list langpacks-*


Updating Subscription Management repositories.
Updating Subscription Management repositories.
Installed Packages
langpacks-en.noarch 1.0-12.el8 @AppStream
Available Packages
langpacks-af.noarch 1.0-12.el8 rhel-8-for-x86_64-appstream-rpms
langpacks-am.noarch 1.0-12.el8 rhel-8-for-x86_64-appstream-rpms
langpacks-ar.noarch 1.0-12.el8 rhel-8-for-x86_64-appstream-rpms
langpacks-as.noarch 1.0-12.el8 rhel-8-for-x86_64-appstream-rpms
langpacks-ast.noarch 1.0-12.el8 rhel-8-for-x86_64-appstream-rpms
...output omitted...

Para agregar soporte de idioma, instale el paquete langpacks correcto. Por ejemplo, el siguiente
comando agrega soporte para francés:

[root@host ~]# yum install langpacks-fr

Use yum repoquery --whatsupplements para determinar qué paquetes de RPM pueden ser
instalados por un paquete de idiomas:

[root@host ~]# yum repoquery --whatsupplements langpacks-fr


Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:01:33 ago on Wed 06 Feb 2019 10:47:24 AM CST.
glibc-langpack-fr-0:2.28-18.el8.x86_64
gnome-getting-started-docs-fr-0:3.28.2-1.el8.noarch
hunspell-fr-0:6.2-1.el8.noarch
hyphen-fr-0:3.0-1.el8.noarch
libreoffice-langpack-fr-1:6.0.6.1-9.el8.x86_64
man-pages-fr-0:3.70-16.el8.noarch
mythes-fr-0:2.3-10.el8.noarch

RH124-RHEL8.2-es-1-20200928 xix
Introducción

Importante
Los paquetes langpacks usan dependencias débiles de RPM para instalar paquetes
complementarios solo cuando el paquete principal (core) que lo necesita también
está instalado.

Por ejemplo, al instalar langpacks-fr como se muestra en los ejemplos anteriores, el


paquete mythes-fr solo se instalará si el tesauro mythes también está instalado en el
sistema.

Si mythes se instala posteriormente en ese sistema, el paquete mythes-fr también


se instalará automáticamente debido a la débil dependencia del paquete langpacks-
fr ya instalado.

Referencias
Páginas del manual: locale(7), localectl(1), locale.conf(5),
vconsole.conf(5), unicode(7) y utf-8(7).

Las conversiones entre los nombres de las distribuciones X11 del entorno de
escritorio gráfico y sus nombres en localectl se pueden encontrar en el archivo /
usr/share/X11/xkb/rules/base.lst.

Referencia de códigos de idioma


nota
Es posible que en esta tabla no se reflejen todos los paquetes de idiomas
disponibles en su sistema. Use yum info langpacks-SUFFIX para obtener más
información sobre un paquete de idiomas en particular.

Códigos de idioma

Idioma Sufijo de los Valor $LANG


paquetes de
idiomas

Inglés (EE. UU.) en en_US.utf8

Asamés as as_IN.utf8

Bengalí bn bn_IN.utf8

Chino (Simplificado) zh_CN zh_CN.utf8

Chino (Tradicional) zh_TW zh_TW.utf8

Francés fr fr_FR.utf8

Alemán de de_DE.utf8

Guyaratí gu gu_IN.utf8

xx RH124-RHEL8.2-es-1-20200928
Introducción

Idioma Sufijo de los Valor $LANG


paquetes de
idiomas

Hindi hi hi_IN.utf8

Italiano it it_IT.utf8

Japonés ja ja_JP.utf8

Canarés kn kn_IN.utf8

Coreano ko ko_KR.utf8

Malayalam ml ml_IN.utf8

Maratí mr mr_IN.utf8

Odia or or_IN.utf8

Portugués (Brasil) pt_BR pt_BR.utf8

Punyabí pa pa_IN.utf8

Ruso ru ru_RU.utf8

Español es es_ES.utf8

Tamil ta ta_IN.utf8

Telugú te te_IN.utf8

RH124-RHEL8.2-es-1-20200928 xxi
xxii RH124-RHEL8.2-es-1-20200928
capítulo 1

Primeros pasos con


Red Hat Enterprise Linux
Meta Describir y definir código abierto, Linux,
distribuciones de Linux y Red Hat Enterprise Linux.

Objetivos • Definir y explicar el propósito de Linux, el


código abierto, las distribuciones de Linux y
Red Hat Enterprise Linux.

Secciones • ¿Qué es Linux?

Cuestionario Primeros pasos con Red Hat Enterprise Linux

RH124-RHEL8.2-es-1-20200928 1
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

¿Qué es Linux?

Objetivos
Tras finalizar esta sección, debería poder definir y explicar el propósito de Linux, el código abierto,
las distribuciones de Linux y Red Hat Enterprise Linux.

¿Por qué debería aprender sobre Linux?


Es muy importante que los profesionales de TI entiendan la tecnología de Linux.

El uso de Linux está generalizado; si usa Internet, probablemente ya esté interactuando con
sistemas Linux en su vida diaria. Quizás la forma más obvia en que interactúa con sistemas Linux
es al navegar por la World Wide Web o al usar sitios de comercio electrónico para comprar y
vender productos.

Sin embargo, Linux se usa para mucho más que eso. Linux administra los sistemas de
punto de venta y los mercados de valores del mundo, y también se usa en los televisores
inteligentes y en los sistemas de entretenimiento durante el vuelo. Se usa en la mayoría de
las 500 supercomputadoras más importantes del mundo. Linux proporciona las tecnologías
fundamentales que impulsan la revolución de la nube y las herramientas utilizadas para desarrollar
la próxima generación de aplicaciones de microservicios basadas en contenedores, tecnologías de
almacenamiento basado en software y soluciones de grandes volúmenes de datos.

En el centro de datos moderno, Linux y Microsoft Windows son los principales actores, y Linux
es un segmento en crecimiento en ese espacio. Algunas de las muchas razones por las que debe
aprender a usar Linux incluyen:

• Un usuario de Windows necesita interoperar con Linux.

• En el desarrollo de aplicaciones, Linux aloja la aplicación o su tiempo de ejecución.

• En la computación en nube, las instancias de la nube en el entorno de nube privada o pública


usan Linux como sistema operativo.

• Con las aplicaciones móviles o Internet de las cosas (IoT), hay muchas posibilidades de que el
sistema operativo de su dispositivo use Linux.

• Si está buscando nuevas oportunidades en TI, hay mucha demanda de habilidades de Linux.

¿Qué hace que Linux sea excelente?


Hay muchas respuestas diferentes a la pregunta "¿Qué hace que Linux sea excelente?". Tres de
ellas son:

• Linux es software de código abierto.

Al ser de código abierto, no solo se puede ver cómo funciona el sistema. También se pueden
probar cambios y compartirlos libremente para que otros los utilicen. El modelo de código
abierto facilita el desarrollo de mejoras, lo que acelera la innovación.

• Linux proporciona fácil acceso a una interfaz de línea de comandos (CLI) potente y programable.

2 RH124-RHEL8.2-es-1-20200928
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

Linux se construyó alrededor de la filosofía de diseño básica de que los usuarios pueden
realizar todas las tareas de administración desde la CLI. Esto facilita la automatización, la
implementación y el aprovisionamiento, así como simplifica la administración de sistemas locales
y remotos. A diferencia de otros sistemas operativos, estas capacidades se han incorporado
desde el principio, y la idea ha sido siempre permitir estas importantes capacidades.

• Linux es un sistema operativo modular que hace posible reemplazar o eliminar componentes
fácilmente.

Los componentes del sistema se pueden actualizar y mejorar según sea necesario. Un sistema
Linux puede ser una estación de trabajo de desarrollo de uso general o un dispositivo de
software en su mínima expresión.

¿Qué es el software de código abierto?


El software de código abierto es software con código fuente que cualquiera puede usar, estudiar,
modificar y compartir.

El código fuente es el conjunto de instrucciones en lenguaje humano que se usan para hacer un
programa. Puede interpretarse como un script o compilarse en un archivo ejecutable binario que la
computadora ejecuta directamente. Al crear el código fuente, se le aplican los derechos de autor y
su titular controla los términos bajo los cuales se puede copiar, adaptar y distribuir el software. Los
usuarios pueden usar este software bajo una licencia de software.

Otros tipos de software tienen un código fuente que solo la persona, el equipo o la organización
que lo crearon pueden verlo, cambiarlo o distribuirlo. Este software a veces se denomina software
"patentado" o de "código cerrado". Por lo general, la licencia solo permite que el usuario final
ejecute el programa y no proporciona acceso al código fuente, o brinda acceso muy limitado a
este.

El software de código abierto es diferente. Cuando el titular de los derechos de autor proporciona
software con una licencia de código abierto, otorga a los usuarios el derecho de ejecutar el
programa y también de ver, modificar, compilar y redistribuir el código fuente a otros sin pagar
regalías.

El código abierto promueve la colaboración, el intercambio, la transparencia y la innovación rápida,


ya que alienta a otras personas, más allá de los desarrolladores originales, a realizar modificaciones
y mejoras en el software, así como a compartirlo con los demás.

El hecho de que el software sea de código abierto no significa que de alguna manera no se
pueda usar o proporcionar para fines comerciales. El código abierto es una parte crítica de las
operaciones comerciales de muchas organizaciones. Algunas licencias de código abierto permiten
que el código se reutilice en productos de código cerrado. Se puede vender el código fuente
abierto, pero los términos de las verdaderas licencias de código abierto generalmente permiten
que el cliente redistribuya el código fuente. Más comúnmente, los proveedores como Red Hat
proporcionan ayuda comercial con la implementación, el soporte y la ampliación de soluciones
basadas en productos de código abierto.

El código abierto tiene muchos beneficios para el usuario:

• Control: vea lo que hace el código y cámbielo para mejorarlo.

• Formación: aprenda del código real y desarrolle aplicaciones más útiles.

• Seguridad: inspeccione el código confidencial y corríjalo ya sea con la ayuda de los


desarrolladores originales o sin ella.

RH124-RHEL8.2-es-1-20200928 3
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

• Estabilidad: el código puede sobrevivir a la pérdida del desarrollador o distribuidor original.

La conclusión es que el código abierto permite la creación de mejor software con un mayor
retorno de la inversión mediante la colaboración.

Tipos de licencias de código abierto


Hay más de una forma de proporcionar software de código abierto. Los términos de la licencia
de software controlan cómo puede reutilizarse el código fuente o cómo puede combinarse con
otro código, y existen cientos de licencias de código abierto diferentes. Sin embargo, para ser
de código abierto, las licencias deben permitir que los usuarios usen, vean, cambien, compilen y
distribuyan libremente el código.

Hay dos clases amplias de licencias de código abierto que son particularmente importantes:

• Las licencias copyleft, que están diseñadas para fomentar que el código se mantenga abierto.

• Las licencias permisivas, que están diseñadas para maximizar la reutilización del código.

Las licencias copyleft o de "uso compartido para todos" requieren que cualquier persona que
distribuya el código fuente, con o sin cambios, también deba extender esta libertad para que los
demás también puedan copiar, cambiar y distribuir el código. La ventaja básica de estas licencias
es que ayudan a que el código existente y las mejoras a ese código sigan siendo de código
abierto, para aumentar la cantidad de código fuente abierto disponible. Las licencias copyleft más
comunes son la Licencia Pública General de GNU (GNU General Public License, GPL) y la Licencia
Pública General Reducida de GNU (GNU Lesser General Public License, LGPL).

Las licencias permisivas están diseñadas para maximizar la reutilización del código fuente. Los
usuarios pueden usar el código fuente para cualquier propósito siempre que se conserven las
declaraciones de derechos de autor y de licencia, incluso al reutilizar ese código bajo licencias más
restrictivas o incluso de propiedad exclusiva. Esto simplifica mucho la reutilización de este código,
pero con el riesgo de incentivar mejoras de propiedad exclusiva. Algunas licencias permisivas de
código abierto de uso común son la licencia MIT/X11, la licencia BSD simplificada y la licencia de
software Apache 2.0.

¿Quién desarrolla el software de código abierto?


Es un error común pensar que el código abierto lo desarrolla únicamente un "ejército de
voluntarios" o incluso un ejército de individuos junto con Red Hat. En la actualidad, el desarrollo de
código abierto es una actividad mayoritariamente profesional. Muchas organizaciones pagan a los
desarrolladores para que trabajen en proyectos de código abierto para desarrollar y contribuir con
las mejoras que ellos y sus clientes necesitan.

Los voluntarios y la comunidad académica desempeñan un papel importante y pueden hacer


contribuciones vitales, en especial en áreas de tecnologías nuevas. La combinación de desarrollo
formal e informal proporciona un entorno altamente dinámico y productivo.

¿Qué es Red Hat?


Red Hat es el proveedor líder de soluciones de software de código abierto, que ha adoptado un
enfoque basado en la comunidad para proporcionar tecnologías fiables y de alto rendimiento de
nube, Linux, middleware, almacenamiento y virtualización. La misión de Red Hat es actuar como
catalizador entre las comunidades de clientes, colaboradores y socios, para crear una tecnología
mejor al estilo del código abierto.

La función de Red Hat es ayudar a los clientes a conectarse con la comunidad de código abierto y
sus socios para usar con eficacia las soluciones de software de código abierto. Red Hat participa

4 RH124-RHEL8.2-es-1-20200928
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

activamente y apoya a la comunidad de código abierto; los muchos años de experiencia han
convencido a la empresa de la importancia del código abierto para el futuro de la industria de TI.

Red Hat es más conocida por su participación en la comunidad de Linux y la distribución de


Red Hat Enterprise Linux. Sin embargo, Red Hat también es muy activa en otras comunidades de
código abierto, incluidos proyectos de middleware centrados en la comunidad de desarrolladores
de JBoss, soluciones de virtualización, tecnologías de nube, como OpenStack y OpenShift, y los
proyectos de almacenamiento basado en software Ceph y Gluster, entre otros.

¿Qué es una distribución de Linux?


Una distribución de Linux es un sistema operativo instalable construido a partir de un kernel de
Linux, que admite librerías y programas de usuario. Un sistema operativo Linux completo no está
desarrollado por una sola organización, sino por un conjunto de comunidades independientes
de desarrollo de código abierto que trabajan con componentes individuales de software. Una
distribución proporciona una manera fácil para que los usuarios instalen y administren un sistema
Linux que funcione.

En 1991, un joven estudiante de informática llamado Linus Torvalds desarrolló un kernel tipo
Unix y lo denominó Linux, con licencia de software de código abierto bajo la GPL. El kernel
es el componente central del sistema operativo, que administra el hardware, la memoria y la
programación de los programas en ejecución. A continuación, este kernel de Linux podría
complementarse con otro software de código abierto, como utilidades y programas del Proyecto
GNU, la interfaz gráfica de X Window System de MIT y muchos otros componentes de código
abierto, como el servidor de correo Sendmail o el servidor web Apache HTTP, para desarrollar un
sistema operativo completo de código abierto tipo Unix.

Sin embargo, uno de los desafíos para los usuarios de Linux era reunir todas estas piezas de
muchas fuentes diferentes. Muy temprano en su historia, los desarrolladores de Linux comenzaron
a trabajar para proporcionar una distribución de herramientas precompiladas y probadas que los
usuarios pudieran descargar y usar para configurar los sistemas Linux rápidamente.

Existen muchas distribuciones de Linux diferentes, con diferentes objetivos y criterios tanto para
seleccionar como para apoyar el software proporcionado por su distribución. Sin embargo, las
distribuciones generalmente tienen muchas características comunes:

• Las distribuciones constan de un kernel de Linux y programas de espacio de usuario


compatibles.

• Las distribuciones pueden ser pequeñas y de propósito único o incluir miles de programas de
código abierto.

• Las distribuciones deben proporcionar un medio para instalar y actualizar la distribución y sus
componentes.

• El proveedor de la distribución debe admitir ese software, e idealmente, debe participar


directamente en la comunidad que lo desarrolla.

Red Hat Enterprise Linux es la distribución comercial de Linux de Red Hat.

Red Hat Enterprise Linux


Desarrollo de Red Hat Enterprise Linux
Red Hat desarrolla e integra software de código abierto en RHEL a través de un proceso de
múltiples etapas.

RH124-RHEL8.2-es-1-20200928 5
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

• Red Hat participa al apoyar proyectos individuales de código abierto. Aporta código, tiempo de
desarrollo, recursos y otros medios de apoyo, a menudo en colaboración con desarrolladores de
otras distribuciones de Linux. Ayuda a mejorar la calidad general del software para todos.

• Red Hat auspicia e integra proyectos de código abierto en una distribución de Linux dirigida
por la comunidad, Fedora. Fedora proporciona un entorno de trabajo libre que puede servir
como laboratorio de desarrollo y espacio de prueba para las funciones que se incorporan a sus
productos comercializados.

• Red Hat estabiliza el software para garantizar que esté listo para el soporte y la estandarización
a largo plazo, y lo integra en su distribución lista para usos empresariales, RHEL.

Fedora
Fedora es un proyecto comunitario que produce y lanza un sistema operativo completo y gratuito
basado en Linux. Red Hat patrocina a la comunidad y trabaja con sus representantes para integrar
el último software ascendente en una distribución segura y de rápida actualización. El proyecto
Fedora contribuye al mundo del código abierto y libre, y todos pueden participar.

Sin embargo, Fedora se centra en la innovación y la excelencia, no en la estabilidad a largo


plazo. Las nuevas actualizaciones importantes ocurren cada seis meses y pueden traer cambios
significativos. Fedora solo brinda soporte a las versiones durante aproximadamente un año (dos
actualizaciones importantes), por lo que resulta menos adecuado para uso empresarial.

Red Hat Enterprise Linux


Red Hat Enterprise Linux (RHEL) es la distribución de Linux, con soporte comercial, lista para
empresas, de Red Hat. Es la plataforma líder para la computación de código abierto; no se trata
solo de un conjunto de proyectos maduros de código abierto. RHEL se ha probado ampliamente,
con un gran ecosistema de respaldo formado por socios, certificaciones de hardware y software,
servicios de consultoría, capacitación, así como garantías de soporte y mantenimiento de varios
años.

Red Hat basa las versiones principales de RHEL en Fedora. Sin embargo, Red Hat puede elegir qué
paquetes incluir, realizar mejoras adicionales (con las que contribuye a los proyectos ascendentes

6 RH124-RHEL8.2-es-1-20200928
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

y Fedora) y tomar decisiones de configuración que satisfagan las necesidades de los clientes.
Red Hat ayuda a los proveedores y clientes a interactuar con la comunidad de código abierto, así
como a trabajar con el desarrollo ascendente para diseñar soluciones y resolver problemas.

Red Hat Enterprise Linux usa un modelo de distribución basado en suscripciones. Como se trata
de software de código abierto, esto no es un cargo por licencia. En cambio, este cargo es por el
soporte, el mantenimiento, las actualizaciones, los parches de seguridad, el acceso a la base de
conocimiento del portal de clientes de Red Hat (http://access.redhat.com/), las certificaciones,
etc. El cliente paga para recibir soporte y experiencia, compromiso y asistencia a largo plazo
cuando lo necesite.

Cuando las actualizaciones principales están disponibles, los clientes pueden pasar a usarlas
según su conveniencia sin tener que pagar más. Esto simplifica la administración de los aspectos
económicos y prácticos de las actualizaciones del sistema.

CentOS
CentOS es una distribución de Linux impulsada por la comunidad y derivada en gran parte de la
base de código de Red Hat Enterprise Linux de código abierto y de otras fuentes. Es gratuita,
fácil de instalar y cuenta con el personal y el respaldo de una comunidad activa de usuarios
voluntarios que opera de manera independiente a Red Hat.

La siguiente tabla enumera algunas diferencias clave entre CentOS y Red Hat Enterprise Linux.

CentOS Red Hat Enterprise Linux

Solo soporte automático Hay varios niveles de soporte disponibles, que


incluyen soporte estándar en horario laboral,
soporte 24x7 Premium para problemas
críticos y suscripciones de soporte de nivel
inicial. En un entorno se pueden mezclar y
combinar diferentes niveles de SLA.

La producción de erratas comienza cuando Respuesta rápida por parte de


hay una publicación oficial de erratas de RHEL desarrolladores internos; puede haber
disponible. revisiones puntuales disponibles ante de la
publicación oficial de erratas de RHEL.

Se proporcionan actualizaciones de paquetes Las actualizaciones están disponibles


para la versión secundaria más reciente para versiones secundarias anteriores
hasta el final de la fase de Soporte de bajo el programa Soporte ampliado para
mantenimiento 2 de RHEL. actualizaciones (EUS) y durante años
luego de la finalización del Soporte de
mantenimiento 2 a través del programa
Soporte del ciclo de vida ampliado (ELS).

Generalmente no cuenta con certificación Miles de aplicaciones certificadas de cientos


de plataforma compatible por parte de de ISV.
proveedores de software como SAS, SAP y
Oracle.

RH124-RHEL8.2-es-1-20200928 7
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

CentOS Red Hat Enterprise Linux

Recursos de ayuda y documentación Documentación, arquitecturas de referencia,


disponibles a través de foros, listas de correo, estudios de caso y artículos de la base de
chat, wiki y el sitio web del proyecto CentOS, y conocimiento disponibles a través del portal
otras fuentes de la comunidad. de clientes de Red Hat. Acceso a los trabajos
de laboratorio del portal de clientes de
Red Hat, un conjunto de herramientas que
puede utilizar para mejorar el rendimiento,
identificar problemas de seguridad o
ayudar con cualquier problema. Análisis
proactivo opcional del sistema con Red Hat
Insights, una herramienta de SaaS para
proporcionar evaluación en tiempo real de
riesgos relacionados con el rendimiento, la
disponibilidad, la estabilidad y la seguridad.

Prueba de Red Hat Enterprise Linux


Hay muchas maneras diferentes de probar Red Hat Enterprise Linux. Una forma es descargar una
copia de evaluación del sitio web en https://access.redhat.com/products/red-hat-enterprise-
linux/evaluation. Esa página incluye vínculos a información complementaria.

Red Hat también ofrece suscripciones gratuitas a varios productos para fines de desarrollo a
través del programa para desarrolladores de Red Hat en https://developer.redhat.com. Estas
suscripciones permiten que los desarrolladores diseñen, creen prototipos, prueben y demuestren
rápidamente su software para implementarlo en los mismos productos empresariales.

Otro enfoque es implementar una instancia de Red Hat Enterprise Linux disponible a través
de un proveedor en la nube. Por ejemplo, Red Hat tiene AMI oficiales disponibles para Red Hat
Enterprise Linux en el Amazon AWS Marketplace.

Para obtener más información, visite la página "Primeros pasos con Red Hat Enterprise Linux", que
se menciona al final de esta sección.

Referencias
Introducción a Red Hat Enterprise Linux
https://access.redhat.com/products/red-hat-enterprise-linux#getstarted

El enfoque de código abierto


https://opensource.com/open-source-way

8 RH124-RHEL8.2-es-1-20200928
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

Cuestionario

Primeros pasos con Red Hat


Enterprise Linux
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Cuáles de los siguientes son beneficios del software de código abierto para el usuario?
(Elija dos opciones).
a. El código puede sobrevivir a la pérdida del desarrollador o distribuidor original.
b. Las partes confidenciales del código están protegidas y solo están disponibles para el
desarrollador original.
c. Puede aprender del código real y desarrollar aplicaciones más efectivas.
d. El código permanece abierto mientras esté en un repositorio público, pero la licencia
puede cambiar cuando se incluye con el software de código cerrado.

2. ¿Cuáles de las siguientes son formas en las que Red Hat desarrolla sus productos para
el futuro e interactúa con la comunidad? (Elija dos opciones).
a. Patrocinar e integrar proyectos de código abierto en el proyecto impulsado por la
comunidad de Fedora.
b. Desarrollar herramientas de integración específicas solo disponibles en distribuciones de
Red Hat.
c. Participar en proyectos upstream.
d. Volver a empaquetar y a emitir licencias para productos de la comunidad.

3. ¿Qué dos afirmaciones describen los beneficios de Linux? (Elija dos opciones).
a. El desarrollo de Linux está completamente a cargo de voluntarios, lo que lo convierte en
un sistema operativo de bajo costo.
b. Linux es modular y puede configurarse para un escritorio gráfico completo o para un
pequeño dispositivo.
c. Linux está bloqueado en un estado conocido durante un mínimo de un año para cada
versión, lo que facilita el desarrollo de software personalizado.
d. Linux incluye una interfaz de línea de comandos potente y programable que facilita la
automatización y el aprovisionamiento.

RH124-RHEL8.2-es-1-20200928 9
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

Solución

Primeros pasos con Red Hat


Enterprise Linux
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Cuáles de los siguientes son beneficios del software de código abierto para el usuario?
(Elija dos opciones).
a. El código puede sobrevivir a la pérdida del desarrollador o distribuidor original.
b. Las partes confidenciales del código están protegidas y solo están disponibles para el
desarrollador original.
c. Puede aprender del código real y desarrollar aplicaciones más efectivas.
d. El código permanece abierto mientras esté en un repositorio público, pero la licencia
puede cambiar cuando se incluye con el software de código cerrado.

2. ¿Cuáles de las siguientes son formas en las que Red Hat desarrolla sus productos para
el futuro e interactúa con la comunidad? (Elija dos opciones).
a. Patrocinar e integrar proyectos de código abierto en el proyecto impulsado por la
comunidad de Fedora.
b. Desarrollar herramientas de integración específicas solo disponibles en distribuciones de
Red Hat.
c. Participar en proyectos upstream.
d. Volver a empaquetar y a emitir licencias para productos de la comunidad.

3. ¿Qué dos afirmaciones describen los beneficios de Linux? (Elija dos opciones).
a. El desarrollo de Linux está completamente a cargo de voluntarios, lo que lo convierte en
un sistema operativo de bajo costo.
b. Linux es modular y puede configurarse para un escritorio gráfico completo o para un
pequeño dispositivo.
c. Linux está bloqueado en un estado conocido durante un mínimo de un año para cada
versión, lo que facilita el desarrollo de software personalizado.
d. Linux incluye una interfaz de línea de comandos potente y programable que facilita la
automatización y el aprovisionamiento.

10 RH124-RHEL8.2-es-1-20200928
capítulo 1 | Primeros pasos con Red Hat Enterprise Linux

Resumen
En este capítulo, aprendió lo siguiente:

• El software de código abierto es software con código fuente que cualquiera puede usar,
estudiar, modificar y compartir libremente.

• Una distribución de Linux es un sistema operativo instalable construido a partir de un kernel de


Linux, que admite bibliotecas y programas de usuario.

• Red Hat participa en el soporte y la contribución de código para proyectos de código abierto,
patrocina e integra el software del proyecto en distribuciones impulsadas por la comunidad, y
estabiliza el software para ofrecerlo como productos compatibles listos para la empresa.

• Red Hat Enterprise Linux es la distribución de Linux, con soporte comercial, lista para empresas
de Red Hat.

RH124-RHEL8.2-es-1-20200928 11
12 RH124-RHEL8.2-es-1-20200928
capítulo 2

Acceso a la línea de comandos


Meta Iniciar sesión en el sistema Linux y ejecutar
comandos simples mediante la shell.

Objetivos • Iniciar sesión en el sistema Linux en una consola


de texto local y ejecutar comandos simples
mediante la shell.
• Iniciar sesión en el sistema Linux usando el
entorno de escritorio GNOME 3 y ejecutar
comandos desde un prompt de shell en un
programa de terminal.
• Ahorrar tiempo al usar Autocompletado con
tab, el historial de comandos y los métodos
abreviados de edición de comandos para
ejecutar comandos en la shell Bash.

Secciones • Acceso a la línea de comandos (y cuestionario)


• Acceso a la línea de comandos a través del
escritorio (y ejercicio guiado)
• Ejecución de comandos con la shell Bash (y
cuestionario)

Trabajo de Acceso a la línea de comandos


laboratorio

RH124-RHEL8.2-es-1-20200928 13
capítulo 2 | Acceso a la línea de comandos

Acceso a la línea de comandos

Objetivos
Tras finalizar esta sección, deberá ser capaz de iniciar sesión en un sistema Linux y ejecutar
comandos simples a través de la shell.

Introducción a la shell Bash


Una línea de comandos es una interfaz basada en texto que puede usarse para introducir
instrucciones en un sistema de cómputo. Un programa denominado shell proporciona la línea de
comandos de Linux. Se han desarrollado diversas opciones para el programa de shell a lo largo de
los años, y pueden configurarse diferentes usuarios para que usen diferentes shells. Sin embargo,
la mayoría de los usuarios usan la shell predeterminada actual.

La shell predeterminada para usuarios de Red Hat Enterprise Linux es GNU Bourne-Again Shell
(bash). Bash es una versión mejorada de una de las shells más exitosas que se usa en los sistemas
tipo UNIX: la shell Bourne (sh).

Si una shell se usa de manera interactiva, muestra una cadena cuando espera un comando del
usuario. Esto recibe el nombre de prompt de shell. Cuando un usuario normal inicia una shell, el
prompt predeterminado finaliza con un carácter $, como se muestra a continuación.

[user@host ~]$

El carácter $ se reemplaza con el carácter # si la shell se está ejecutando como el superusuario


root. Con esto, resulta más evidente que se trata de una shell de superusuario, lo que permite
evitar accidentes y errores que pueden afectar a todo el sistema. El prompt de shell de
superusuario se muestra a continuación.

[root@host ~]#

El uso de bash para ejecutar comandos puede ser eficaz. La shell bash proporciona un
lenguaje de secuencia de comandos capaz de admitir la automatización de tareas. La shell tiene
capacidades adicionales que pueden simplificar operaciones o posibilitar aquellas que son difíciles
de realizar con herramientas gráficas.

nota
La shell bash es similar en concepto al intérprete de la línea de comandos
disponible en versiones recientes de Microsoft Windowscmd.exe, pero bash
posee un lenguaje de secuencia de comandos más sofisticado. También es
similar a Windows PowerShell en Windows 7 y Windows Server 2008 R2. A los
administradores de Apple Mac que usan la utilidad Terminal les agradará saber que
bash es la shell predeterminada en MacOS.

Conceptos básicos de la shell


Los comandos ingresados en el prompt de shell están compuestos por tres partes básicas:

14 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

• Comando que se ejecuta

• Opciones que permiten ajustar el comportamiento del comando

• Argumentos que generalmente son destinos del comando

El comando es el nombre del programa que se ejecuta. Puede estar seguido de una o más
opciones que ajustan el comportamiento del comando o lo que hará. Las opciones generalmente
comienzan con uno o dos guiones (-a o --all, por ejemplo) para que se distingan de los
argumentos. Los comandos pueden estar seguidos por uno o más argumentos, que generalmente
indican un destino sobre el cual el comando debe operar.

Por ejemplo, el comando usermod -L user01 tiene un comando (usermod), una opción (-L)
y un argumento (user01). El efecto de este comando es bloquear la contraseña de la cuenta del
usuario user01.

Inicio de sesión en una computadora local


Para ejecutar la shell, debe iniciar sesión en la computadora en un terminal. Un terminal es una
interfaz basada en texto que se utiliza para ingresar comandos e imprimir salidas desde un sistema
de cómputo. Esto se puede realizar de varias maneras.

La computadora puede tener un teclado y una pantalla de hardware para la entrada y salida
directamente conectados a ella. Esta es la consola física de la máquina Linux. La consola
física admite varias consolas virtuales que pueden ejecutar terminales independientes. Cada
consola virtual admite un inicio de sesión independiente. Puede cambiar entre ellas presionando
Ctrl+Alt y una tecla de función (F1 a F6) al mismo tiempo. La mayoría de estas consolas
virtuales ejecutan un terminal con un prompt de inicio de sesión de texto y, si ingresa su nombre de
usuario y contraseña correctamente, iniciará sesión y obtendrá un prompt de shell.

La computadora puede proporcionar un prompt de inicio de sesión gráfico en una de las consolas
virtuales. Puede usar esto para iniciar sesión en un entorno gráfico. El entorno gráfico también
se ejecuta en una consola virtual. Para obtener un prompt de shell, debe iniciar un programa de
terminal en el entorno gráfico. El prompt de shell se proporciona en una ventana de aplicación de
su programa de terminal gráfico.

nota
Muchos administradores de sistemas eligen no ejecutar un entorno gráfico en sus
servidores. Esto permite que los servicios del servidor usen los recursos que de otra
forma usaría el entorno gráfico.

En Red Hat Enterprise Linux 8, si el entorno gráfico está disponible, la pantalla de inicio de sesión
se ejecutará en la primera consola virtual, llamada tty1. Hay cinco prompts de inicio de sesión de
texto adicionales disponibles en las consolas virtuales dos a seis.

Si inicia sesión con la pantalla de inicio de sesión gráfica, su entorno gráfico se iniciará en
la primera consola virtual que no se encuentre en uso en una sesión de inicio de sesión.
Normalmente, la sesión gráfica reemplazará al prompt de inicio de sesión en la segunda consola
virtual (tty2). Sin embargo, si esa consola está en uso en una sesión de inicio de sesión de texto
activa (no solo en un prompt de inicio de sesión), en su lugar, se usa la siguiente consola virtual
libre.

La pantalla de inicio de sesión gráfico se sigue ejecutando en la primera consola virtual (tty1). Si
ya ha iniciado sesión en una sesión gráfica e inicia sesión con otro usuario en la pantalla de inicio
de sesión gráfica, o si usa el ítem de menú Switch User (Cambiar usuario) para cambiar de

RH124-RHEL8.2-es-1-20200928 15
capítulo 2 | Acceso a la línea de comandos

usuario en el entorno gráfico sin cerrar sesión, se iniciará otro entorno gráfico para ese usuario en
la siguiente consola virtual libre.

Cuando cierra sesión en un entorno gráfico, la sesión se cerrará y la consola física volverá
automáticamente a la pantalla de inicio de sesión gráfica de la primera consola virtual.

nota
En Red Hat Enterprise Linux 6 y 7, la pantalla de inicio de sesión gráfica se ejecuta
en la primera consola virtual; sin embargo, al iniciar sesión, el entorno gráfico inicial
reemplaza a la pantalla de inicio de sesión de la primera consola virtual en lugar de
iniciarse en una nueva consola virtual.

En Red Hat Enterprise Linux 5 y versiones anteriores, las seis primeras consolas
virtuales proporcionaban siempre prompts de inicio de sesión de texto. Si el entorno
gráfico está en ejecución, se ejecuta en la consola virtual siete (a la que se accede a
través deCtrl+Alt+F7).

Un servidor sin periféricos no tiene teclado ni pantalla conectados permanentemente. Un centro


de datos puede estar lleno de muchos racks de servidores sin periféricos; al no proporcionar
a cada uno un teclado y una pantalla, se ahorran espacio y gastos. Para permitir que los
administradores inicien sesión, un servidor sin periféricos puede tener un prompt de inicio de
sesión proporcionado por su consola serial, que se ejecuta en un puerto serial conectado a un
servidor de consola en red para tener acceso remoto a la consola serial.

La consola serial normalmente se usaría para reparar el servidor si su propia tarjeta de red tuviera
una configuración incorrecta y el inicio de sesión a través de su propia conexión de red fuera
imposible. Sin embargo, la mayoría de las veces se accede a los servidores sin periféricos por otros
medios a través de la red.

Inicio de sesión a través de la red


Los usuarios y administradores de Linux a menudo necesitan obtener acceso de shell a un sistema
remoto conectándose a él a través de la red. En un entorno de cómputo moderno, muchos
servidores sin periféricos son en realidad máquinas virtuales o se ejecutan como instancias de
nube pública o privada. Estos sistemas no son físicos y no tienen consolas de hardware reales. Es
posible que ni siquiera puedan proporcionar acceso a su consola física o consola serial (simulada).

En Linux, la forma más común de obtener un prompt de shell en un sistema remoto es usar Secure
Shell (SSH). La mayoría de los sistemas Linux (incluidos los que usan Red Hat Enterprise Linux) y
macOS proporcionan el programa de línea de comandos OpenSSH ssh para este propósito.

En este ejemplo, un usuario con un prompt de shell en la máquina host usa ssh para iniciar sesión
en el sistema Linux remoto remotehost como el usuario remoteuser:

[user@host ~]$ ssh remoteuser@remotehost


remoteuser@remotehost's password: password
[remoteuser@remotehost ~]$

El comando ssh cifra la conexión para proteger la comunicación contra el espionaje o el robo de
contraseñas y contenido.

Algunos sistemas (como las nuevas instancias en la nube) no permiten que los usuarios usen
una contraseña para iniciar sesión con ssh para mejorar la seguridad. Una forma alternativa de

16 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

autenticarse en una máquina remota sin ingresar una contraseña es a través de la autenticación de
clave pública.

Con este método de autenticación, los usuarios tienen un archivo de identidad especial que
contiene una clave privada, equivalente a una contraseña, que mantienen en secreto. Su cuenta
en el servidor está configurada con una clave pública, que no tiene que ser secreta. Al iniciar
sesión, los usuarios pueden configurar ssh para proporcionar la clave privada y, si su clave pública
coincidente está instalada en esa cuenta en ese servidor remoto, iniciarán sesión sin necesitar una
contraseña.

En el siguiente ejemplo, un usuario con un prompt de shell en la máquina host inicia sesión en
remotehost como remoteuser con ssh, mediante autenticación de clave pública. La opción -i
se usa para especificar el archivo de clave privada del usuario, que es mylab.pem. La clave pública
coincidente ya está configurada como una clave autorizada en la cuenta remoteuser.

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost


[remoteuser@remotehost ~]$

Para que esto funcione, el archivo de clave privada debe ser legible solo para el propietario del
archivo. En el ejemplo anterior, donde la clave privada está en el archivo mylab.pem, el comando
chmod 600 mylab.pem podría usarse para garantizar esto. La forma de configurar los permisos
de archivo se describe en más detalle en un capítulo posterior.

Los usuarios también pueden tener configuradas claves privadas que se prueban
automáticamente, pero ese asunto está fuera del alcance de esta sección. En las referencias que
aparecen al final de esta sección, hay más información acerca de este tema.

RH124-RHEL8.2-es-1-20200928 17
capítulo 2 | Acceso a la línea de comandos

nota
La primera vez que inicie sesión en una nueva máquina, ssh le mostrará una
advertencia de que no puede establecer la autenticidad del host:

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost


The authenticity of host 'remotehost (192.0.2.42)' can't be established.
ECDSA key fingerprint is 47:bf:82:cd:fa:68:06:ee:d8:83:03:1a:bb:29:14:a3.
Are you sure you want to continue connecting (yes/no)? yes
[remoteuser@remotehost ~]$

Cada vez que se conecta a un host remoto con ssh, el host remoto envía a ssh su
clave de host para autenticarse y para ayudar a configurar la comunicación cifrada.
El comando ssh compara eso con una lista de claves de host guardadas para
asegurarse de que no haya cambiado. Si la clave del host ha cambiado, esto podría
indicar que alguien está tratando de fingir ser ese host para capturar la conexión, lo
que también se conoce como ataque de intermediario. En SSH, las claves de host
protegen contra los ataques de intermediario; estas claves de host son únicas para
cada servidor, y deben cambiarse periódicamente y siempre que se sospeche una
violación a la seguridad.

Recibirá esta advertencia si su máquina local no tiene una clave de host guardada
para el host remoto. Si introduce yes, la clave de host que envió el host remoto se
aceptará y se guardará para referencia futura. El inicio de sesión continuará y no
deberá volver a ver este mensaje cuando se conecte a este host. Si introduce no, se
rechazará la clave de host y se cerrará la conexión.

Si la máquina local tiene una clave de host guardada y no coincide con la que
realmente envió el host remoto, la conexión se cerrará automáticamente con una
advertencia.

Cerrar sesión
Cuando haya terminado de usar la shell y desee salir, puede elegir una de las varias formas de
finalizar la sesión. Puede introducir el comando exit para finalizar la sesión de shell actual. Como
alternativa, puede terminar una sesión presionando Ctrl+D.

El siguiente es un ejemplo de un usuario que cierra una sesión de SSH:

[remoteuser@remotehost ~]$ exit


logout
Connection to remotehost closed.
[user@host ~]$

18 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Referencias
Páginas del manual intro(1), bash(1), console(4), pts(4), ssh(1) y ssh-
keygen(1)

Nota: Algunos detalles de la página del manual console(4) acerca de init(8) y


inittab(5) están desactualizados.

Para obtener más información sobre OpenSSH y la autenticación de clave pública,


consulte el capítulo Uso de comunicaciones seguras entre dos sistemas con
OpenSSH en la Seguridad de redes de la guía Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/securing_networks/index#using-secure-communications-between-two-
systems-with-openssh_securing-networks

nota
Al final de la siguiente sección, se incluyen instrucciones sobre cómo leer las páginas
man y otros documentos de ayuda en línea.

RH124-RHEL8.2-es-1-20200928 19
capítulo 2 | Acceso a la línea de comandos

Cuestionario

Acceso a la línea de comandos


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué término describe al intérprete que ejecuta los comandos escritos como
secuencias?
a. Comando
b. Consola
c. Shell
d. Terminal

2. ¿Qué término describe la indicación visual que muestra que una shell interactiva espera
que el usuario escriba un comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

3. ¿Qué término describe el nombre del programa que se ejecutará?


a. Argumento
b. Comando
c. Opción
d. Prompt

4. ¿Qué término describe la parte de la línea de comandos que modifica el


comportamiento de un comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

5. ¿Qué término describe la parte de la línea de comandos que especifica el destino


donde debe operar el comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

20 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

6. ¿Qué término describe el hardware de pantalla y el teclado que se usan para interactuar
con un sistema?
a. Consola física
b. Consola virtual
c. Shell
d. Terminal

7. ¿Qué término describe a una de las varias consolas lógicas, de las cuales cada una
puede respaldar una sesión de inicio de sesión independiente?
a. Consola física
b. Consola virtual
c. Shell
d. Terminal

8. ¿Qué término describe a una interfaz que proporciona una pantalla de salida y un
teclado de entrada en una sesión de shell?
a. Consola
b. Consola virtual
c. Shell
d. Terminal

RH124-RHEL8.2-es-1-20200928 21
capítulo 2 | Acceso a la línea de comandos

Solución

Acceso a la línea de comandos


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué término describe al intérprete que ejecuta los comandos escritos como
secuencias?
a. Comando
b. Consola
c. Shell
d. Terminal

2. ¿Qué término describe la indicación visual que muestra que una shell interactiva espera
que el usuario escriba un comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

3. ¿Qué término describe el nombre del programa que se ejecutará?


a. Argumento
b. Comando
c. Opción
d. Prompt

4. ¿Qué término describe la parte de la línea de comandos que modifica el


comportamiento de un comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

5. ¿Qué término describe la parte de la línea de comandos que especifica el destino


donde debe operar el comando?
a. Argumento
b. Comando
c. Opción
d. Prompt

22 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

6. ¿Qué término describe el hardware de pantalla y el teclado que se usan para interactuar
con un sistema?
a. Consola física
b. Consola virtual
c. Shell
d. Terminal

7. ¿Qué término describe a una de las varias consolas lógicas, de las cuales cada una
puede respaldar una sesión de inicio de sesión independiente?
a. Consola física
b. Consola virtual
c. Shell
d. Terminal

8. ¿Qué término describe a una interfaz que proporciona una pantalla de salida y un
teclado de entrada en una sesión de shell?
a. Consola
b. Consola virtual
c. Shell
d. Terminal

RH124-RHEL8.2-es-1-20200928 23
capítulo 2 | Acceso a la línea de comandos

Acceso a la línea de comandos con el


escritorio

Objetivos
Tras finalizar esta sección, deberá ser capaz de iniciar sesión en el sistema Linux usando el entorno
de escritorio GNOME 3 para ejecutar comandos desde un prompt de shell en un programa de
terminal.

Introducción al entorno de escritorio de GNOME


El entorno de escritorio es la interfaz gráfica de usuario en un sistema Linux. El entorno de
escritorio predeterminado en Red Hat Enterprise Linux 8 lo proporciona GNOME 3. Proporciona
un escritorio integrado para usuarios y una plataforma de desarrollo unificada sobre un marco
(framework) gráfico proporcionado por Wayland (opción predeterminada) o la herramienta
heredada X Window System.

GNOME Shell proporciona las funciones principales de la interfaz de usuario para el entorno de
escritorio GNOME. La aplicación GNOME Shell es muy personalizable. Red Hat Enterprise Linux 8
toma como valor predeterminado de aspecto y comportamiento de GNOME Shell el tema
"Estándar", que se utiliza en esta sección. Red Hat Enterprise Linux 7 tomó como valor
predeterminado un tema alternativo denominado "Clásico" que se parecía más al aspecto y
comportamiento de las versiones anteriores de GNOME. Cualquier tema se puede seleccionar
persistentemente en el inicio de sesión al hacer clic en el ícono de engranaje junto al botón Sign
In (Iniciar sesión) que está disponible después de seleccionar su cuenta pero antes de ingresar la
contraseña.

Figura 2.1: Un escritorio de GNOME 3 vacío

La primera vez que inicia sesión como usuario nuevo se ejecuta un programa de configuración
inicial para ayudar a configurar parámetros de cuenta básicos. Una vez completa, se inicia la
aplicación GNOME Help en la pantalla Getting Started with GNOME (Primeros pasos con
GNOME). Esta pantalla incluye videos y documentación para ayudar a orientar a los nuevos
usuarios hacia el entorno de GNOME3. Para iniciar rápidamente GNOME Help, haga clic en el
botón Activities (Actividades) a la izquierda de la barra superior y en el guión que aparece a la
izquierda de la pantalla; haga clic en el icono de la boya salvavidas para iniciarla.

24 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Partes de la shell de GNOME


Los elementos de la shell de GNOME incluyen las siguientes partes, como se ilustra en esta
captura de pantalla de la shell de GNOME en el modo de vista general de Activities (Actividades):

Barra superior: la barra que se muestra en la parte superior de la pantalla. Aparece en la vista
general de Activities (Actividades) y en los espacios de trabajo. La barra superior proporciona
el botón Activities (Actividades) y los controles de volumen, redes, acceso al calendario y
de selección de métodos de entrada del teclado (si hay más de uno configurado).
Vista general de Activities (Actividades): es un modo especial que ayuda al usuario a organizar
ventanas e iniciar aplicaciones. Para ingresar a la vista general de Activities (Actividades)
puede hacer clic en el botón Activities (Actividades) en la esquina superior izquierda de
la barra superior o presionar la tecla Super. La tecla Super (a veces denominada tecla de
Windows o tecla Command [Comando]) se encuentra cerca de la esquina inferior izquierda
de los teclados de 104/105 teclas de una PC IBM o de los teclados de Apple. Las tres áreas
principales de la vista general de Activities (Actividades) son el guión a la izquierda de la
pantalla, la vista general de ventanas en el centro de la pantalla y el selector de espacios
de trabajo a la derecha de la pantalla.
Menú del sistema: el menú en la esquina superior derecha de la barra superior proporciona
controles para ajustar el brillo de la pantalla y para activar y desactivar las conexiones de
red. En el submenú del nombre del usuario, hay opciones para ajustar la configuración de la
cuenta y cerrar la sesión del sistema. El menú del sistema también ofrece botones para abrir
la ventana Settings (Configuración), bloquear la pantalla o apagar el sistema.
Guión: es una lista configurable de iconos de las aplicaciones favoritas del usuario,
aplicaciones que se están ejecutando actualmente y un botón de cuadrícula en la parte
inferior del guión que se puede usar para seleccionar aplicaciones de forma arbitraria.
Las aplicaciones se pueden iniciar al hacer clic en uno de los iconos o al usar el botón de
cuadrícula para buscar una aplicación que se usa con menos frecuencia. Al guión también a
veces se lo denomina dock.
Descripción general de ventanas: área en el centro de la descripción general de Activities
(Actividades) que muestra miniaturas de todas las ventanas activas en el espacio de trabajo
actual. Esto permite que las ventanas se lleven más fácilmente al primer plano en un espacio
de trabajo abarrotado, o que se muevan a otro espacio de trabajo.

RH124-RHEL8.2-es-1-20200928 25
capítulo 2 | Acceso a la línea de comandos

Selector de espacios de trabajo: área a la derecha de la vista general de Activities


(Actividades) que muestra miniaturas de todos los espacios de trabajo activos y permite
seleccionar espacios de trabajo y mover ventanas de un espacio de trabajo a otro.
Bandeja de mensajes: la bandeja de mensajes proporciona una manera de revisar
notificaciones enviadas por las aplicaciones o los componentes del sistema a GNOME. Si
ocurre una notificación, normalmente esta aparece primero brevemente como una sola línea
en la parte superior de la pantalla, y aparece un indicador persistente en el medio de la barra
superior junto al reloj para informar al usuario de las notificaciones recibidas recientemente.
Se puede abrir la bandeja de mensajes para revisar estas notificaciones al hacer clic en el
reloj en la parte superior o al presionar Super+M. La bandeja de mensajes se puede cerrar al
presionar el reloj en la barra superior o al presionar Esc o Super+M nuevamente.

Figura 2.2: Primer plano de una bandeja de mensajes abierta

Puede ver y editar los métodos abreviados de teclado de GNOME que utiliza su cuenta. Abra
el menú del sistema en el lado derecho de la barra superior. Haga clic en el botón Settings
(Configuración) en la parte inferior del menú de la izquierda. En la ventana de la aplicación que se
abre, seleccione Devices → Keyboard (Teclado de dispositivos) en el panel izquierdo. En el panel
derecho aparecerá la configuración actual de métodos abreviados.

nota
Algunos métodos abreviados de teclado, como las teclas de función o la tecla
Super, pueden ser difíciles de enviar a una máquina virtual. Esto se debe a que el
sistema operativo local o la aplicación que utiliza para acceder al escritorio gráfico
de la máquina virtual pueden capturar las pulsaciones de teclas especiales que
utilizan esos métodos abreviados.

26 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Importante
En los entornos actuales de capacitación virtual y autoaprendizaje de Red Hat, el
uso de la tecla Super puede ser un poco complicado. Probablemente no pueda
utilizar la tecla Super del teclado porque, a menudo, el navegador web no la
transfiere a la máquina virtual en el entorno del aula.

En la parte superior de la ventana del navegador que muestra la interfaz para su


máquina virtual, debe haber un icono de teclado en el margen derecho. Si hace clic
allí, se abrirá un teclado en pantalla. Al hacer clic de nuevo, se cerrará.

El teclado en pantalla considera a Super como una tecla modificadora que a


menudo se mantiene presionada mientras se presiona otra tecla. Si hace clic una
vez, se pondrá amarilla para indicar que la tecla se mantiene presionada. Por lo
tanto, para ingresar Super+M en el teclado en pantalla, haga clic en Super y luego
en M.

Si solo quiere presionar y soltar Super en el teclado en pantalla, tiene que hacer clic
dos veces. El primer clic "mantiene pulsada" la tecla Super y el segundo la suelta.

Las otras teclas que se consideran teclas modificadoras (como Super) en el


teclado en pantalla son Shift (Mayús), Ctrl, Alt y Caps (Mayúsculas). Las teclas
Esc y Menu (Menú) se consideran teclas normales y no teclas modificadoras.

Espacios de trabajo
Los espacios de trabajo son pantallas de escritorio por separado que tienen diferentes ventanas
de aplicaciones. Se pueden usar para organizar el entorno de trabajo al agrupar las ventanas
abiertas de la aplicación por tarea. Por ejemplo, las ventanas que se están usando para realizar una
actividad de mantenimiento del sistema particular (como configurar un nuevo servidor remoto)
se pueden agrupar en un espacio de trabajo, mientras que las aplicaciones de correo electrónico y
otras aplicaciones de comunicación se pueden agrupar en otro espacio de trabajo.

Hay dos métodos simples para cambiar entre espacios de trabajo. Un método, tal vez el más
rápido, es presionar Ctrl+Alt+UpArrow (Flecha arriba) o Ctrl+Alt+DownArrow
(Flecha abajo) para cambiar entre espacios de trabajo de forma secuencial. El segundo
método es cambiar a la vista general de Activities (Actividades) y hacer clic en el espacio de
trabajo deseado.

Una ventaja de usar la vista general de Activities (Actividades) es que se puede hacer clic en las
ventanas y arrastrarlas entre espacios de trabajo mediante el uso del selector de espacios de
trabajo en el lado derecho de la pantalla y la descripción general de ventanas en el centro de
la pantalla.

RH124-RHEL8.2-es-1-20200928 27
capítulo 2 | Acceso a la línea de comandos

Importante
Al igual que lo que sucede con Super, en los entornos actuales de capacitación
virtual y autoaprendizaje de Red Hat, el navegador web por lo general no transfiere
las combinaciones de teclas Ctrl+Alt a la máquina virtual en el entorno del aula.

Puede ingresar estas combinaciones de teclas para cambiar espacios de trabajo a


través del teclado en pantalla. Al menos dos espacios de trabajo deben estar en uso.
Abra el teclado en pantalla y haga clic en Ctrl, Alt y luego en UpArrow (Flecha
arriba) o DownArrow (Flecha abajo).

Sin embargo, en esos entornos de capacitación, generalmente es más simple evitar


los métodos abreviados de teclado y el teclado en pantalla. Para cambiar espacios
de trabajo, haga clic en el botón Activities (Actividades) y, luego, en el selector
de espacios de trabajo a la derecha de la vista general de Activities (Actividades) y
haga clic en el espacio de trabajo al que desea cambiar.

Inicio de un terminal
Para obtener un prompt de shell en GNOME, inicie una aplicación de terminal gráfica como
GNOME Terminal. Esto se puede realizar de varias maneras. Los dos métodos más usados se
enumeran a continuación:

• En la descripción general de Activities (Actividades), seleccione Terminal desde el guión (ya


sea desde el área de favoritos o mediante la búsqueda con el botón de cuadrícula [dentro
de la agrupación Utilities (Utilidades)] o el campo de búsqueda en la parte superior de la
descripción general de ventanas).

• Presione la combinación de teclas Alt+F2 para abrir la ventana Enter a Command (Introduzca
un comando) e introduzca gnome-terminal.

Cuando se abre una ventana de terminal, se muestra un prompt de shell para el usuario que inició
el programa de terminal gráfica. El prompt de shell y la barra de títulos de la ventana de terminal
indicarán el nombre de usuario actual, el nombre del host y el directorio de trabajo.

Bloqueo de la pantalla o cierre de sesión


El bloqueo de la pantalla, o el cierre definitivo de sesión, se puede realizar desde el menú del
sistema bien a la derecha de la barra superior.

Para bloquear la pantalla, en el menú del sistema en la esquina superior derecha, haga clic en el
botón de bloqueo en la parte inferior del menú o presione Super+L (que puede ser más fácil de
recordar como Windows+L). La pantalla también se bloqueará si la sesión gráfica está inactiva
durante unos minutos.

Aparecerá una cortina de pantalla bloqueada que muestra la hora del sistema y el nombre del
usuario que inició sesión. Para desbloquear la pantalla, presione Enter (Intro) o Space (Espacio)
para levantar la cortina de la pantalla bloqueada y, luego, introduzca la contraseña del usuario en la
pantalla bloqueada.

Para cerrar sesión y finalizar la sesión gráfica actual, seleccione el menú del sistema en la esquina
superior derecha de la barra superior y seleccione (User) [Usuario] → Log Out (Cerrar sesión).
Aparece una ventana que ofrece la opción Cancel (Cancelar) o Log Out (Cerrar sesión) para
confirmar el cierre de sesión.

28 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Apagar o reiniciar el sistema


Para apagar el sistema, desde el menú del sistema en la esquina superior derecha, haga clic en el
botón de encendido en la parte inferior del menú o presione Ctrl+Alt+Del(Supr). En el cuadro
de diálogo que aparece, puede elegir entre Power Off (Apagar) para apagar, Restart (Reiniciar)
para reiniciar la máquina o Cancel (Cancelar) para cancelar la operación. Si no elige nada, el
sistema se apagará automáticamente después de 60 segundos.

Referencias
Ayuda de GNOME

• yelp

Ayuda de GNOME: Introducción a GNOME

• yelp help:gnome-help/getting-started

RH124-RHEL8.2-es-1-20200928 29
capítulo 2 | Acceso a la línea de comandos

Ejercicio Guiado

Acceso a la línea de comandos con el


escritorio
En este ejercicio, iniciará sesión como usuario normal a través del gestor de visualización
gráfica para conocer el entorno de escritorio estándar de GNOME que ofrece GNOME 3.

Resultados
Deberá ser capaz de iniciar sesión en el sistema Linux con el entorno de escritorio GNOME 3
y ejecutar comandos desde un prompt de shell en un programa de terminal.

Andes De Comenzar
Asegúrese de que la máquina virtual workstation esté ejecutándose. Realice las
siguientes tareas en workstation.

1. Inicie sesión en workstation como student con la contraseña student.

1.1. En workstation, en la pantalla de inicio de sesión de GNOME, haga clic en la


cuenta de usuario student. Introduzca student como contraseña cuando se le
solicite.

1.2. Haga clic en Sign In (Iniciar sesión).

2. Cambie la contraseña del usuario student de student a 55TurnK3y.

Importante
El script finish restablece la contraseña del usuario student a student. El script
debe ejecutarse al final del ejercicio.

2.1. La manera más simple de hacerlo es abrir una ventana del Terminal y usar el comando
passwd en el prompt de shell.
En el entorno de aprendizaje virtual con teclado visual, presione la tecla Super dos
veces para ingresar a la vista general de Activities (Actividades). Escriba terminal
y luego presione Enter (Intro) para iniciarTerminal.

2.2. En la ventana de terminal que aparece, escriba passwd en el prompt de shell. Cambie
la contraseña del usuario student de student a 55TurnK3y.

[student@workstation ~]$ passwd


Changing password for user student.
Current password: student
New password: 55TurnK3y
Retype new password: 55TurnK3y
passwd: all authentication tokens updated successfully.

30 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

3. Cierre sesión y vuelva a iniciarla con el usuario student con la contraseña 55TurnK3y
para verificar el cambio de contraseña.

3.1. Haga clic en el menú del sistema en la esquina superior derecha.

3.2. Seleccione Student User → Log Out.

3.3. Haga clic en Log Out en el cuadro de diálogo de confirmación que se muestra.

3.4. En la pantalla de inicio de sesión de GNOME, haga clic en la cuenta de usuario


student. Escriba 55TurnK3y como contraseña cuando se le solicite.

3.5. Haga clic en Sign In (Iniciar sesión).

4. Bloquee la pantalla.

4.1. En el menú del sistema en la esquina superior derecha, presione el botón de bloqueo
de pantalla en la parte inferior del menú.

5. Desbloquee la pantalla.

5.1. Presione Intro para levantar la cortina de la pantalla de bloqueo.

5.2. En el campo Password (Contraseña), escriba 55TurnK3y como contraseña.

5.3. Haga clic en Unlock (Desbloquear).

6. Determine cómo apagar workstation desde la interfaz gráfica, pero haga clic en Cancel
(Cancelar) para cancelar la operación sin apagar el sistema.

6.1. En el menú del sistema en la esquina superior derecha, haga clic en el botón de
apagado en la parte inferior del menú. Aparecerá un cuadro de diálogo con las
opciones Restart (Reiniciar) o Power Off (Apagar) para reiniciar o apagar la
máquina.

6.2. Haga clic en Cancel (Cancelar) en el cuadro de diálogo que se muestra.

Finalizar
En workstation, ejecute el script lab cli-desktop finish para terminar este ejercicio.

[student@workstation ~]$ lab cli-desktop finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 31
capítulo 2 | Acceso a la línea de comandos

Ejecución de comandos con la shell Bash

Objetivos
Tras finalizar esta sección, deberá ser capaz de ahorrar tiempo en la ejecución de comandos a
partir de un prompt de shell con los accesos directos de Bash.

Sintaxis básica de comandos


GNU Bourne-Again Shell (bash) es un programa que interpreta comandos escritos por el usuario.
Cada secuencia escrita en la shell puede tener un máximo de tres partes: el comando, las opciones
(que suelen comenzar con - o --) y los argumentos. Cada palabra escrita en la shell está separada
de las otras por espacios. Los comandos son nombres de programas que están instalados en el
sistema. Cada comando tiene sus propias opciones y argumentos.

Cuando esté listo para ejecutar un comando, presione la tecla Intro. Escriba cada comando en
una línea separada. La salida del comando se muestra antes de que aparezca el siguiente prompt
de shell.

[user@host]$ whoami
user
[user@host]$

Si quiere escribir más de un comando en una sola línea, use un punto y coma (;) como separador
de comando. El punto y coma pertenece a la clase de caracteres denominada metacaracteres que
tienen un significado especial para bash. En este caso, la salida de ambos comandos se mostrará
antes de que aparezca el siguiente prompt de shell.

En el siguiente ejemplo, se muestra cómo combinar dos comandos (command1 y command2) en la


linea de comandos.

[user@host]$ command1;command2

Ejemplos de comandos simples


El comando date muestra la fecha y la hora actuales. Además, puede usarlo el superusuario para
configurar el reloj del sistema. Un argumento que comienza con el signo más (+) especifica una
secuencia de formato para el comando de fecha.

[user@host ~]$ date


Sat Jan 26 08:13:50 IST 2019
[user@host ~]$ date +%R
08:13
[user@host ~]$ date +%x
01/26/2019

El comando passwd cambia la contraseña propia del usuario. La contraseña original de la cuenta
debe especificarse antes de que se permita un cambio. De manera predeterminada, passwd se

32 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

configura para solicitar una contraseña más sólida, que esté compuesta por letras minúsculas,
letras mayúsculas, números y símbolos, y que no se base en una palabra del diccionario. El
superusuario puede usar el comando passwd para cambiar las contraseñas de otros usuarios.

[user@host ~]$ passwd


Changing password for user user.
Current password: old_password
New password: new_password
Retype new password: new_password
passwd: all authentication tokens updated successfully.

Linux no requiere de extensiones de nombre de archivo para clasificar los archivos por tipo. El
comando file detecta el comienzo del contenido de un archivo y muestra qué tipo de archivo es.
Los archivos que se clasificarán pasan como argumentos para el comando.

[user@host ~]$ file /etc/passwd


/etc/passwd: ASCII text
[user@host ~]$ file /bin/passwd
/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
for GNU/Linux 3.2.0, BuildID[sha1]=a3637110e27e9a48dced9f38b4ae43388d32d0e4,
stripped
[user@host ~]$ file /home
/home: directory

Visualización del contenido de los archivos


Uno de los comandos más simples y de uso frecuente en Linux es cat. El comando cat permite
crear archivos individuales o múltiples, ver el contenido de los archivos, concatenar el contenido de
varios archivos y redirigirlo a un terminal o a archivos.

En el ejemplo, se muestra cómo ver el contenido del archivo /etc/passwd.

[user@host ~]$ cat /etc/passwd


root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...

Use el siguiente comando para mostrar el contenido de varios archivos.

[user@host ~]$ cat file1 file2


Hello World!!
Introduction to Linux commands.

Algunos archivos son muy largos y pueden ocupar más espacio para mostrar que el proporcionado
por el terminal. El comando cat no muestra el contenido de un archivo como páginas. El comando
less muestra una página del archivo a la vez y le permite desplazarse a su gusto.

El comando less le permite avanzar y retroceder por las páginas de los archivos que son más
largos de lo que puede mostrar una ventana de terminal. Use las teclas UpArrow (Flecha arriba)

RH124-RHEL8.2-es-1-20200928 33
capítulo 2 | Acceso a la línea de comandos

y DownArrow (Flecha abajo) para desplazarse hacia arriba y hacia abajo. Presione q para salir del
comando.

Los comandos head y tail muestran el comienzo y el final de un archivo, respectivamente. De


manera predeterminada, estos comandos muestran 10 líneas del archivo, pero ambos tienen la
opción -n que permite la especificación de una cantidad diferente de líneas. El archivo que se
mostrará pasa como un argumento para estos comandos.

[user@host ~]$ head /etc/passwd


root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[user@host ~]$ tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:977:977::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

El comando wc cuenta líneas, palabras y caracteres en un archivo. Puede usar la opción -l, -w o -
c para mostrar solo la cantidad de líneas, palabras o caracteres, respectivamente.

[user@host ~]$ wc /etc/passwd


45 102 2480 /etc/passwd
[user@host ~]$ wc -l /etc/passwd ; wc -l /etc/group
45 /etc/passwd
70 /etc/group
[user@host ~]$ wc -c /etc/group /etc/hosts
966 /etc/group
516 /etc/hosts
1482 total

Autocompletado con tab


Autocompletado con tab permite que el usuario complete comandos o nombres de archivo
rápidamente una vez que haya escrito lo suficiente en el prompt como para hacerlo único. Si
los caracteres escritos no son únicos, al presionar la tecla Tab dos veces, aparecen todos los
comandos que comienzan con los caracteres ya escritos.

[user@host ~]$ pas Tab+Tab


passwd paste pasuspender
[user@host ~]$ pass Tab
[user@host ~]$ passwd
Changing password for user user.
Current password:

Presione la tecla Tab dos veces.


Presione la tecla Tab una vez.

34 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

La opción Autocompletado con tab puede usarse para completar nombres de archivo cuando
se escriben como argumentos para comandos. Si se presiona la tecla Tab, se completará el
nombre de archivo tanto como sea posible. Si se presiona la tecla Tab por segunda vez, provoca
que la shell enumere todos los archivos que coinciden con el patrón actual. Escriba caracteres
adicionales hasta que el nombre sea único; a continuación, use la opción Autocompletado con tab
para finalizar el comando.

[user@host ~]$ ls /etc/pas Tab


[user@host ~]$ ls /etc/passwd Tab
passwd passwd-

Presione la tecla Tab una vez.

Mediante Autocompletado con tab, se pueden establecer coincidencias entre argumentos y


opciones para muchos comandos. El comando useradd lo utiliza el superusuario, root, para
crear otros usuarios en el sistema. Tiene muchas opciones que pueden usarse para controlar el
comportamiento del comando. Puede usarse la opción Autocompletado con tab después de una
opción parcial para completar la opción sin necesidad de escribir mucho.

[root@host ~]# useradd -- Tab+Tab


--base-dir --groups --no-log-init --shell
--comment --help --non-unique --skel
--create-home --home-dir --no-user-group --system
--defaults --inactive --password --uid
--expiredate --key --root --user-group
--gid --no-create-home --selinux-user
[root@host ~]# useradd --

Presione la tecla Tab dos veces.

Continuación de un comando largo en otra línea


Los comandos con muchas opciones y argumentos pueden volverse largos rápidamente y la
ventana de comandos los delimita automáticamente cuando el cursor llega al margen derecho. En
cambio, para facilitar la lectura del comando, puede escribir un comando largo utilizando más de
una línea.

Para ello, utilizará un carácter de barra invertida (\), al que se conoce como carácter de escape,
para ignorar el significado del carácter que se encuentra inmediatamente después de la barra
invertida. Aprendió que al ingresar un carácter de nueva línea, presionando la tecla Enter (Intro),
se le indica a la shell que la entrada del comando está completa y que ejecute el comando. Con
el escape del carácter de nueva línea, se le indica a la shell que se traslade a una nueva línea de
comando sin la ejecución del comando. La shell reconoce la solicitud mostrando un prompt de
continuación, denominado prompt secundario, mediante el carácter mayor que (>) de forma
predeterminada, en una nueva línea vacía. Los comandos pueden continuarse a lo largo de muchas
líneas.

[user@host]$ head -n 3 \
> /usr/share/dict/words \
> /usr/share/dict/linux.words
==> /usr/share/dict/words <==
1080
10-point
10th

RH124-RHEL8.2-es-1-20200928 35
capítulo 2 | Acceso a la línea de comandos

==> /usr/share/dict/linux.words <==


1080
10-point
10th
[user@host ~]$

Importante
El ejemplo de la pantalla anterior muestra cómo aparece un comando continuo para
un usuario típico. Sin embargo, la representación de este realismo en los materiales
de aprendizaje, como este manual, suele causar confusión. Los estudiantes nuevos
pueden insertar erróneamente el carácter adicional mayor que como parte del
comando escrito. La shell interpreta un carácter mayor que escrito como redirección
del proceso, que el usuario no pretendía. La redirección del proceso se trata en un
próximo capítulo.

Para evitar esta confusión, este manual no mostrará prompts secundarios en las
salidas de pantalla. Un usuario aún ve el prompt secundario en la ventana de la shell,
pero el material del curso muestra intencionalmente solo los caracteres que se
deben escribir, como se muestra en el siguiente ejemplo. Compare con el ejemplo
de la pantalla anterior.

[user@host]$ head -n 3 \
/usr/share/dict/words \
/usr/share/dict/linux.words
==> /usr/share/dict/words <==
1080
10-point
10th

==> /usr/share/dict/linux.words <==


1080
10-point
10th
[user@host ~]$

Historial de comandos
El comando history muestra una lista de los comandos ejecutados anteriormente con un
número de comando como prefijo.

El carácter de signo de admiración, (!), es un metacarácter que se usa para expandir los comandos
anteriores sin tener que volver a escribirlos. El comando !number se expande hasta el comando
que coincide con el número especificado. El comando !string se expande hasta el comando
más reciente que comienza con la secuencia especificada.

[user@host ~]$ history


...output omitted...
23 clear
24 who
25 pwd
26 ls /etc

36 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

27 uptime
28 ls -l
29 date
30 history
[user@host ~]$ !ls
ls -l
total 0
drwxr-xr-x. 2 user user 6 Mar 29 21:16 Desktop
...output omitted...
[user@host ~]$ !26
ls /etc
abrt hosts pulse
adjtime hosts.allow purple
aliases hosts.deny qemu-ga
...output omitted...

Las teclas de flecha se pueden usar para navegar a través de comandos anteriores en el historial
de la shell. UpArrow (Flecha arriba) edita el comando anterior en la lista del historial. DownArrow
(Flecha abajo) edita el siguiente comando en la lista del historial. LeftArrow (Flecha izquierda)
y RightArrow (Flecha derecha) mueven el cursor hacia la izquierda y hacia la derecha en el
comando actual de la lista del historial, de modo que pueda editarlo antes de ejecutarlo.

Puede usar la combinación de teclas Esc+. o Alt+. para insertar la última palabra del comando
anterior en la ubicación actual del cursor. El uso repetido de la combinación de teclas reemplazará
ese texto con la última palabra de comandos anteriores en el historial. La combinación de teclas
Alt+. es particularmente conveniente porque puede mantener presionado Alt y presionar .
repetidamente para pasar con facilidad por los comandos anteriores.

Edición de línea de comandos


Cuando se usa en forma interactiva, bash tiene una función de edición de línea de comandos.
Esto permite al usuario usar los comandos del editor de texto para desplazarse y modificar el
comando actual que se está escribiendo. El uso de las teclas de flecha para moverse dentro del
comando actual y pasar por el historial de comando se presentó anteriormente en esta sesión. En
la siguiente tabla, se presentan comandos de edición más contundentes.

Métodos abreviados útiles de edición de línea de comandos

Método abreviado Descripción

Ctrl+A Ir al inicio de la línea de comandos.

Ctrl+E Ir al final de la línea de comandos.

Ctrl+U Borrar desde el cursor hasta el principio de la línea de comandos.

Ctrl+K Borrar desde el cursor hasta el final de la línea de comandos.

Ctrl+LeftArrow(Flecha Ir al inicio de la palabra anterior en la línea de comandos.


izquierda)

Ctrl+RightArrow Ir al final de la palabra siguiente en la línea de comandos.


(Flecha derecha)

Ctrl+R Buscar un patrón en la lista de historial de comandos.

RH124-RHEL8.2-es-1-20200928 37
capítulo 2 | Acceso a la línea de comandos

Hay varios otros comandos disponibles para editar la línea de comandos, pero estos son los
comandos más útiles para los nuevos usuarios. Los otros comandos están en la página de manual
bash(1).

Referencias
Páginas del manual: bash(1), date(1), file(1), cat(1), more(1), less(1), head(1),
passwd(1), tail(1) y wc(1)

38 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Cuestionario

Ejecución de comandos con la shell Bash


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando o método abreviado de Bash va al inicio de la palabra anterior en la línea


de comandos?
a. Presionar Ctrl+LeftArrow (Flecha izquierda)
b. Presionar Ctrl+K
c. Presionar Ctrl+A
d. !string
e. !number

2. ¿Qué método abreviado o comando de Bash separa los comandos en la misma línea?
a. Presionar Tab
b. history
c. ;
d. !string
e. Presionar Esc+.

3. ¿Qué método abreviado o comando de Bash se usa para borrar los caracteres desde el
cursor hasta el final de la línea de comandos?
a. Presionar Ctrl+LeftArrow (Flecha izquierda)
b. Presionar Ctrl+K
c. Presionar Ctrl+A
d. ;
e. Presionar Esc+.

4. ¿Qué comando o método abreviado de Bash se usa para volver a ejecutar un comando
reciente mediante la coincidencia del nombre del comando?
a. Presionar Tab
b. !number
c. !string
d. history
e. Presionar Esc+.

RH124-RHEL8.2-es-1-20200928 39
capítulo 2 | Acceso a la línea de comandos

5. ¿Qué comando o método abreviado se usa para completar comandos, nombres de


archivo y opciones?
a. ;
b. !number
c. history
d. Presionar Tab
e. Presionar Esc+.

6. ¿Qué comando o método abreviado de Bash vuelve a ejecutar un comando específico


de la lista del historial?
a. Presionar Tab
b. !number
c. !string
d. history
e. Presionar Esc+.

7. ¿Qué comando o método abreviado de Bash va al inicio de la línea de comandos?


a. !number
b. !string
c. Presionar Ctrl+LeftArrow (Flecha izquierda)
d. Presionar Ctrl+K
e. Presionar Ctrl+A

8. ¿Qué comando o método abreviado de Bash muestra la lista de comandos anteriores?


a. Presionar Tab
b. !string
c. !number
d. history
e. Presionar Esc+.

9. ¿Qué comando o método abreviado de Bash copia el último argumento de comandos


anteriores?
a. Presionar Ctrl+K
b. Presionar Ctrl+A
c. !number
d. Presionar Esc+.

40 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Solución

Ejecución de comandos con la shell Bash


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando o método abreviado de Bash va al inicio de la palabra anterior en la línea


de comandos?
a. Presionar Ctrl+LeftArrow (Flecha izquierda)
b. Presionar Ctrl+K
c. Presionar Ctrl+A
d. !string
e. !number

2. ¿Qué método abreviado o comando de Bash separa los comandos en la misma línea?
a. Presionar Tab
b. history
c. ;
d. !string
e. Presionar Esc+.

3. ¿Qué método abreviado o comando de Bash se usa para borrar los caracteres desde el
cursor hasta el final de la línea de comandos?
a. Presionar Ctrl+LeftArrow (Flecha izquierda)
b. Presionar Ctrl+K
c. Presionar Ctrl+A
d. ;
e. Presionar Esc+.

4. ¿Qué comando o método abreviado de Bash se usa para volver a ejecutar un comando
reciente mediante la coincidencia del nombre del comando?
a. Presionar Tab
b. !number
c. !string
d. history
e. Presionar Esc+.

RH124-RHEL8.2-es-1-20200928 41
capítulo 2 | Acceso a la línea de comandos

5. ¿Qué comando o método abreviado se usa para completar comandos, nombres de


archivo y opciones?
a. ;
b. !number
c. history
d. Presionar Tab
e. Presionar Esc+.

6. ¿Qué comando o método abreviado de Bash vuelve a ejecutar un comando específico


de la lista del historial?
a. Presionar Tab
b. !number
c. !string
d. history
e. Presionar Esc+.

7. ¿Qué comando o método abreviado de Bash va al inicio de la línea de comandos?


a. !number
b. !string
c. Presionar Ctrl+LeftArrow (Flecha izquierda)
d. Presionar Ctrl+K
e. Presionar Ctrl+A

8. ¿Qué comando o método abreviado de Bash muestra la lista de comandos anteriores?


a. Presionar Tab
b. !string
c. !number
d. history
e. Presionar Esc+.

9. ¿Qué comando o método abreviado de Bash copia el último argumento de comandos


anteriores?
a. Presionar Ctrl+K
b. Presionar Ctrl+A
c. !number
d. Presionar Esc+.

42 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Trabajo de laboratorio

Acceso a la línea de comandos


Lista de verificación de rendimiento
En este trabajo de laboratorio, usará la shell Bash para ejecutar comandos.

Resultados
• Ejecute con éxito programas simples con la línea de comandos de la shell Bash.

• Ejecute comandos usados para identificar tipos de archivos y visualizar partes de archivos
de texto.

• Practique el uso de algunos "atajos" del historial de comandos de Bash para repetir
comandos o partes de comandos con más eficiencia.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el script lab cli-review start para configurar un entorno


de laboratorio nuevo. El script también copia el archivo zcat al directorio de inicio de
student.

[student@workstation ~]$ lab cli-review start

1. Use el comando date para mostrar la fecha y hora actuales.


2. Muestre la hora actual en reloj de 12 horas (por ejemplo, 11:42:11 AM). Sugerencia: la cadena
de formato que se muestra en la salida es %r.
3. ¿Qué tipo de archivo es /home/student/zcat? ¿Es legible por el ojo humano?
4. Use el comando wc y los atajos de Bash para visualizar el tamaño de zcat.
5. Visualice las primeras 10 líneas de zcat.
6. Muestre las últimas 10 líneas del archivo zcat.
7. Repita el comando anterior exactamente con tres o menos pulsaciones del teclado.
8. Repita el comando anterior, pero use la opción -n 20 para visualizar las últimas 20 líneas
del archivo. Use la edición de la línea de comandos para hacerlo con una cantidad mínima de
pulsaciones.
9. Use el historial de shell para ejecutar el comando date +%r de nuevo.

Evaluación
En workstation, ejecute el script lab cli-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab cli-review grade

RH124-RHEL8.2-es-1-20200928 43
capítulo 2 | Acceso a la línea de comandos

Finalizar
En workstation, ejecute el script lab cli-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab cli-review finish

Esto concluye el trabajo de laboratorio.

44 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Solución

Acceso a la línea de comandos


Lista de verificación de rendimiento
En este trabajo de laboratorio, usará la shell Bash para ejecutar comandos.

Resultados
• Ejecute con éxito programas simples con la línea de comandos de la shell Bash.

• Ejecute comandos usados para identificar tipos de archivos y visualizar partes de archivos
de texto.

• Practique el uso de algunos "atajos" del historial de comandos de Bash para repetir
comandos o partes de comandos con más eficiencia.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el script lab cli-review start para configurar un entorno


de laboratorio nuevo. El script también copia el archivo zcat al directorio de inicio de
student.

[student@workstation ~]$ lab cli-review start

1. Use el comando date para mostrar la fecha y hora actuales.

[student@workstation ~]$ date


Thu Jan 22 10:13:04 PDT 2019

2. Muestre la hora actual en reloj de 12 horas (por ejemplo, 11:42:11 AM). Sugerencia: la cadena
de formato que se muestra en la salida es %r.
Use el argumento +%r con el comando date para mostrar la hora actual en reloj de 12 horas.

[student@workstation ~]$ date +%r


10:14:07 AM

3. ¿Qué tipo de archivo es /home/student/zcat? ¿Es legible por el ojo humano?


Use el comando file para determinar su tipo de archivo.

[student@workstation ~]$ file zcat


zcat: POSIX shell script, ASCII text executable

4. Use el comando wc y los atajos de Bash para visualizar el tamaño de zcat.


El comando wc se puede usar para mostrar la cantidad de líneas, palabras y bytes en el guión
zcat. En lugar de volver a escribir el nombre del archivo, use el atajo del historial de Bash

RH124-RHEL8.2-es-1-20200928 45
capítulo 2 | Acceso a la línea de comandos

Esc+. (presione las teclas Esc y . al mismo tiempo) para volver a usar el argumento del
comando anterior.

[student@workstation ~]$ wc Esc+.


[student@workstation ~]$ wc zcat
51 299 1983 zcat

5. Visualice las primeras 10 líneas de zcat.


El comando head muestra el inicio del archivo. Intente usar el atajo Esc+. de nuevo.

[student@workstation ~]$ head Esc+.


[student@workstation ~]$ head zcat
#!/bin/sh
# Uncompress files to standard output.

# Copyright (C) 2007, 2010-2018 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify


# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.

6. Muestre las últimas 10 líneas del archivo zcat.


Use el comando tail para mostrar las últimas 10 líneas del archivo zcat.

[student@workstation ~]$ tail Esc+.


[student@workstation ~]$ tail zcat
With no FILE, or when FILE is -, read standard input.

Report bugs to <[email protected]>."

case $1 in
--help) printf '%s\n' "$usage" || exit 1;;
--version) printf '%s\n' "$version" || exit 1;;
esac

exec gzip -cd "$@"

7. Repita el comando anterior exactamente con tres o menos pulsaciones del teclado.
Repita el comando anterior exactamente. Presione la tecla Flecha arriba una vez
para retroceder un comando en el historial de comandos y presione Intro (se usan dos
pulsaciones) o introduzca el comando de método abreviado !! y presione Intro (se usan

46 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

tres pulsaciones) para ejecutar el comando más reciente del historial de comandos. (Intente
ambos métodos).

[student@workstation]$ !!
tail zcat
With no FILE, or when FILE is -, read standard input.

Report bugs to <[email protected]>."

case $1 in
--help) printf '%s\n' "$usage" || exit 1;;
--version) printf '%s\n' "$version" || exit 1;;
esac

exec gzip -cd "$@"

8. Repita el comando anterior, pero use la opción -n 20 para visualizar las últimas 20 líneas
del archivo. Use la edición de la línea de comandos para hacerlo con una cantidad mínima de
pulsaciones.
UpArrow muestra el comando anterior. Ctrl+A hace que el cursor salte al principio de la
línea. Ctrl+RightArrow (Flecha derecha) salta a la siguiente palabra; luego agregue la
opción -n 20 y presione Enter (Intro) para ejecutar el comando.

[student@workstation ~]$ tail -n 20 zcat


-l, --list list compressed file contents
-q, --quiet suppress all warnings
-r, --recursive operate recursively on directories
-S, --suffix=SUF use suffix SUF on compressed files
--synchronous synchronous output (safer if system crashes, but slower)
-t, --test test compressed file integrity
-v, --verbose verbose mode
--help display this help and exit
--version display version information and exit

With no FILE, or when FILE is -, read standard input.

Report bugs to <[email protected]>."

case $1 in
--help) printf '%s\n' "$usage" || exit 1; exit;;
--version) printf '%s\n' "$version" || exit 1; exit;;
esac

exec gzip -cd "$@"

RH124-RHEL8.2-es-1-20200928 47
capítulo 2 | Acceso a la línea de comandos

9. Use el historial de shell para ejecutar el comando date +%r de nuevo.


Use el comando history para visualizar la lista de comandos anteriores e identificar el
comando date específico que se ejecutará. Use !number para ejecutar el comando, donde
number es el número de comando que se usará desde la salida del comando history.
Tenga en cuenta que su historial de shell puede ser diferente del que figura en el siguiente
ejemplo. Determine el número de comando que se usará en función de la salida de su propio
comando history.

[student@workstation ~]$ history


1 date
2 date +%r
3 file zcat
4 wc zcat
5 head zcat
6 tail zcat
7 tail -n 20 zcat
8 history
[student@workstation ~]$ !2
date +%r
10:49:56 AM

Evaluación
En workstation, ejecute el script lab cli-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab cli-review grade

Finalizar
En workstation, ejecute el script lab cli-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab cli-review finish

Esto concluye el trabajo de laboratorio.

48 RH124-RHEL8.2-es-1-20200928
capítulo 2 | Acceso a la línea de comandos

Resumen
En este capítulo, aprendió lo siguiente:

• La shell Bash es un intérprete de comandos que solicita a los usuarios interactivos que
especifiquen los comandos de Linux.

• Muchos comandos tienen una opción --help que muestra un mensaje o una pantalla de uso.

• El uso de espacios de trabajo facilita la organización de varias ventanas de aplicaciones.

• El botón Activities (Actividades) situado en la esquina superior izquierda de la barra superior


proporciona un modo de vista general que ayuda a los usuarios a organizar las ventanas e iniciar
las aplicaciones.

• El comando file detecta el comienzo del contenido de un archivo y muestra qué tipo de
archivo es.

• Los comandos head y tail muestran el comienzo y el final de un archivo, respectivamente.

• Puede usar la tecla Tab para completar los nombres de archivo al escribirlos como argumentos
para comandos.

RH124-RHEL8.2-es-1-20200928 49
50 RH124-RHEL8.2-es-1-20200928
capítulo 3

Administración de archivos
desde la línea de comandos
Meta Copiar, mover, crear, eliminar y organizar archivos
mientras se trabaja desde la shell Bash.

Objetivos • Describir cómo Linux organiza los archivos y


los propósitos de diversos directorios en la
jerarquía del sistema de archivos.
• Especificar la ubicación de los archivos en
relación con el directorio de trabajo actual y
por ubicación absoluta, determinar y cambiar
su directorio de trabajo, y hacer una lista del
contenido de los directorios.
• Crear, copiar, mover y eliminar archivos y
directorios.
• Hacer que varios nombres de archivo hagan
referencia al mismo archivo con enlaces duros y
simbólicos (o "blandos").
• Ejecutar con eficiencia los comandos que
afectan a muchos archivos mediante el uso de
las funciones de coincidencia de patrones de la
shell Bash.

Secciones • Descripción de conceptos de la jerarquía del


sistema de archivos Linux (y cuestionario)
• Especificación de archivos por nombre (y
cuestionario)
• Administración de archivos con las
herramientas de línea de comandos (y ejercicio
guiado)
• Creación de enlaces entre archivos (y ejercicio
guiado)
• Coincidencia de nombres de archivo con
expansiones de shell (y cuestionario)

Trabajo de Administración de archivos desde la línea de


comandos
laboratorio

RH124-RHEL8.2-es-1-20200928 51
capítulo 3 | Administración de archivos desde la línea de comandos

Descripción de conceptos de la jerarquía


del sistema de archivos Linux

Objetivos
Tras finalizar esta sección, deberá ser capaz de describir la manera en que Linux organiza los
archivos y los propósitos de diversos directorios en la jerarquía del sistema de archivos.

La jerarquía del sistema de archivos


Todos los archivos de un sistema Linux se guardan en sistemas de archivos que están organizados
en un árbol de directorios invertido individual conocido como jerarquía de sistema de archivos. Este
árbol está invertido porque se dice que la root del árbol está en la parte superior de la jerarquía, y
las ramas de los directorios y subdirectorios se extienden debajo de root.

Figura 3.1: Directorios importantes del sistema de archivos de Red Hat Enterprise Linux 8

El directorio / es el directorio raíz (root) que está en la parte superior de la jerarquía del sistema
de archivos. El carácter / también se usa también como un separador de directorio en los nombres
de archivo. Por ejemplo, si etc es un subdirectorio del directorio /, podemos llamar a ese
directorio /etc. De la misma manera, si el directorio /etc contiene un archivo con el nombre
issue, podemos referirnos a ese archivo como /etc/issue.

Los subdirectorios de / se usan con fines estandarizados para organizar archivos por tipo y
objetivo. Esto facilita la posibilidad de encontrar archivos. Por ejemplo, en el directorio raíz, el
subdirectorio /boot se usa para guardar archivos que se necesitan para arrancar el sistema.

52 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

nota
Los siguientes términos ayudan a describir el contenido del directorio del sistema de
archivos:

• El contenido estático no se modifica hasta que se edita o se reconfigura en forma


explícita.

• El contenido dinámico o variable se puede modificar o adjuntar mediante


procesos activos.

• El contenido persistente se mantiene después de un arranque nuevo, como los


parámetros de configuración.

• El contenido de tiempo de ejecución es contenido específico del proceso o del


sistema que se elimina en el reinicio.

La siguiente tabla enumera algunos de los directorios más importantes del sistema por nombre y
objetivo.

Directorios importantes de Red Hat Enterprise Linux

Ubicación Propósito

/usr Software instalado, bibliotecas compartidas, incluye archivos y datos de


programa de solo lectura. Los subdirectorios importantes incluyen:

• /usr/bin: Comandos del usuario.

• /usr/sbin: Comandos de administración del sistema.

• /usr/local: Software personalizado a nivel local.

/etc Archivos de configuración específicos para este sistema.

/var Datos variables específicos de este sistema que deberían conservarse entre
los arranques. Los archivos que cambian en forma dinámica (por ejemplo,
bases de datos, directorios caché, archivos de registro, documentos en cola
de impresión y contenido de sitio web) pueden encontrarse en /var.

/run Datos de tiempo de ejecución para procesos que se iniciaron desde el último
arranque. Esto incluye archivos de ID de proceso y archivos de bloqueo,
entre otros elementos. El contenido de este directorio se vuelve a crear en
el arranque nuevo. Este directorio consolida /var/run y /var/lock de
versiones anteriores de Red Hat Enterprise Linux.

/home Los directorios de inicio son aquellos donde los usuarios habituales guardan
sus datos personales y los archivos de configuración.

/root Es el directorio de inicio para el superusuario administrativo, root.

RH124-RHEL8.2-es-1-20200928 53
capítulo 3 | Administración de archivos desde la línea de comandos

Ubicación Propósito

/tmp Es un espacio con capacidad de escritura por parte de cualquier usuario del
sistema para archivos temporales. Los archivos a los que no se haya accedido,
y que no se hayan cambiado ni modificado durante 10 días se eliminan de este
directorio automáticamente. Existe otro directorio temporal, /var/tmp, en el
que los archivos que no tuvieron acceso, cambios ni modificaciones durante
más de 30 días se eliminan automáticamente.

/boot Son los archivos necesarios para iniciar el proceso de arranque.

/dev Contiene archivos de dispositivo especiales que el sistema usa para acceder al
hardware.

Importante
En Red Hat Enterprise Linux 7 y versiones posteriores, cuatro directorios antiguos
en / tienen contenido idéntico al de sus equivalentes que están en /usr:

• /bin y /usr/bin

• /sbin y /usr/sbin

• /lib y /usr/lib

• /lib64 y /usr/lib64

En versiones anteriores de Red Hat Enterprise Linux, estos eran directorios distintos
que contenían diferentes conjuntos de archivos.

En Red Hat Enterprise Linux 7 y versiones posteriores, los directorios de / son


enlaces simbólicos a los directorios coincidentes de /usr.

Referencias
Página del manual: hier(7)

La página de la función UsrMove de Fedora 17


https://fedoraproject.org/wiki/Features/UsrMove

54 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Cuestionario

Descripción de conceptos de la jerarquía


del sistema de archivos Linux
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué directorio contiene datos de configuración persistentes y específicos del


sistema?
a. /etc
b. /root
c. /run
d. /usr

2. ¿Qué directorio está en la parte superior de la jerarquía del sistema de archivos del
sistema?
a. /etc
b. /
c. /home/root
d. /root

3. ¿Qué directorio contiene los directorios de inicio de los usuarios?


a. /
b. /home
c. /root
d. /user

4. ¿Qué directorio contiene archivos temporales?


a. /tmp
b. /trash
c. /run
d. /var

5. ¿Qué directorio contiene datos dinámicos, como para bases de datos y sitios web?
a. /etc
b. /run
c. /usr
d. /var

RH124-RHEL8.2-es-1-20200928 55
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué directorio es el directorio de inicio del superusuario administrativo?


a. /etc
b. /
c. /home/root
d. /root

7. ¿Qué directorio contiene los comandos y las utilidades habituales?


a. /commands
b. /run
c. /usr/bin
d. /usr/sbin

8. ¿Qué directorio contiene datos de tiempo de ejecución de procesos no persistentes?


a. /tmp
b. /etc
c. /run
d. /var

9. ¿Qué directorio contiene las bibliotecas y los programas de software instalados?


a. /etc
b. /lib
c. /usr
d. /var

56 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Solución

Descripción de conceptos de la jerarquía


del sistema de archivos Linux
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué directorio contiene datos de configuración persistentes y específicos del


sistema?
a. /etc
b. /root
c. /run
d. /usr

2. ¿Qué directorio está en la parte superior de la jerarquía del sistema de archivos del
sistema?
a. /etc
b. /
c. /home/root
d. /root

3. ¿Qué directorio contiene los directorios de inicio de los usuarios?


a. /
b. /home
c. /root
d. /user

4. ¿Qué directorio contiene archivos temporales?


a. /tmp
b. /trash
c. /run
d. /var

5. ¿Qué directorio contiene datos dinámicos, como para bases de datos y sitios web?
a. /etc
b. /run
c. /usr
d. /var

RH124-RHEL8.2-es-1-20200928 57
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué directorio es el directorio de inicio del superusuario administrativo?


a. /etc
b. /
c. /home/root
d. /root

7. ¿Qué directorio contiene los comandos y las utilidades habituales?


a. /commands
b. /run
c. /usr/bin
d. /usr/sbin

8. ¿Qué directorio contiene datos de tiempo de ejecución de procesos no persistentes?


a. /tmp
b. /etc
c. /run
d. /var

9. ¿Qué directorio contiene las bibliotecas y los programas de software instalados?


a. /etc
b. /lib
c. /usr
d. /var

58 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Especificar archivos por nombre

Objetivos
Tras finalizar esta sección, debería ser capaz de especificar la ubicación de los archivos en relación
con el directorio de trabajo actual y por ubicación absoluta, determinar y cambiar su directorio de
trabajo y hacer una lista del contenido de los directorios.

Rutas absolutas y rutas relativas

Figura 3.2: La vista del explorador de archivos habitual


(izquierda) equivale a la vista descendente (derecha).

La ruta de un archivo o directorio especifica su ubicación única en el sistema de archivos. Si se


sigue la ruta de un archivo, pasa por uno o más subdirectorios con nombre que están delimitados
por una barra (/) hasta que se llega al destino. Los directorios, también llamados carpetas,
contienen otros archivos y otros subdirectorios. Se puede hacer referencia a estos de la misma
manera que con los archivos.

Importante
Es posible incluir un espacio como parte de un nombre de archivo de Linux.
Sin embargo, la shell también utiliza espacios para separar las opciones y los
argumentos en la línea de comandos. Si ingresa un comando que incluye un archivo
que tiene un espacio en su nombre, la shell puede malinterpretar el comando
y asumir que desea iniciar un nuevo nombre de archivo u otro argumento en el
espacio.

Esto se evita si pone los nombres de archivo entre comillas. Sin embargo, si no
necesita usar espacios en los nombres de archivo, puede resultar más simple no
usarlos en absoluto.

RH124-RHEL8.2-es-1-20200928 59
capítulo 3 | Administración de archivos desde la línea de comandos

Rutas absolutas
Una ruta absoluta es un nombre totalmente calificado que especifica la ubicación exacta de los
archivos en la jerarquía del sistema de archivos. Comienza en el directorio raíz (/) y especifica
cada subdirectorio que se debe atravesar para llegar al archivo específico. Cada archivo del
sistema de archivos tiene un único nombre de ruta absoluta, reconocido con una regla simple:
un nombre de ruta con una barra (/) como primer carácter es el nombre de la ruta absoluta. Por
ejemplo, el nombre de ruta absoluta para el archivo de registro de mensajes del sistema es /var/
log/messages. Los nombres de rutas absolutas pueden ser extensos; en consecuencia, los
archivos también pueden ubicarse en forma relativa al directorio de trabajo actual para su prompt
de shell.

El directorio de trabajo actual y las rutas relativas


Cuando un usuario inicia sesión y abre una ventana de comandos, la ubicación inicial es, por lo
general, el directorio de inicio del usuario. Los procesos del sistema también tienen un directorio
inicial. Los usuarios y los procesos navegan hacia otros directorios, según sea necesario; los
términos directorio de trabajo o directorio de trabajo actual se refieren a su ubicación actual.

Al igual que una ruta absoluta, una ruta relativa identifica un archivo único y especifica solo la ruta
necesaria para llegar al archivo desde el directorio de trabajo. Para reconocer nombres de ruta
relativas, se sigue una regla simple: un nombre de ruta que no tenga otro carácter más que una
barra como primer carácter es un nombre de ruta relativa. Un usuario en el directorio /var podría
referirse en forma relativa al archivo de registro del mensaje como log/messages.

Los sistemas de archivos Linux, que incluyen, entre otros, ext4, XFS, GFS2 y GlusterFS, distinguen
entre letras minúsculas y mayúsculas. Si se crea un archivo FileCase.txt y un archivo
filecase.txt en el mismo directorio, se obtienen dos archivos exclusivos.

Los sistemas de archivos que no pertenecen a Linux podrían funcionar de manera diferente. Por
ejemplo, VFAT, NTFS de Microsoft y HFS+ de Apple tienen un comportamiento de conservación
de tipo de letra. A pesar de que estos sistemas de archivos no distinguen entre minúsculas y
mayúsculas, muestran los nombres de archivo con el uso de mayúsculas original usado cuando se
creó el archivo. Por lo tanto, si intentó crear los archivos en el ejemplo anterior en un sistema de
archivos VFAT, ambos nombres se tratarían como nombres que apuntan al mismo archivo y no a
dos archivos diferentes.

Rutas de navegación
El comando pwd muestra el nombre completo de ruta del directorio de trabajo actual para esa
shell. Esto puede ayudarlo a determinar la sintaxis para acceder a los archivos por medio de
nombres de ruta relativa. El comando ls enumera los contenidos del directorio para el directorio
especificado o, si no se indica un directorio, para el directorio de trabajo actual.

[user@host ~]$ pwd


/home/user
[user@host ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[user@host ~]$

Utilice el comando cd para cambiar el directorio de trabajo actual de su shell. Si no especifica


ningún argumento para el comando, cambiará a su directorio de inicio.

En el siguiente ejemplo, se utiliza una combinación de rutas absolutas y relativas con el comando
cd para cambiar el directorio de trabajo actual para la shell.

60 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host ~]$ pwd


/home/user
[user@host ~]$ cd Videos
[user@host Videos]$ pwd
/home/user/Videos
[user@host Videos]$ cd /home/user/Documents
[user@host Documents]$ pwd
/home/user/Documents
[user@host Documents]$ cd
[user@host ~]$ pwd
/home/user
[user@host ~]$

Como puede ver en el ejemplo anterior, el prompt de shell predeterminado también muestra
el último componente de la ruta absoluta al directorio de trabajo actual. Por ejemplo, para /
home/user/Videos, solo se muestra Videos. El prompt muestra el carácter tilde (~) cuando el
directorio de trabajo actual es su directorio de inicio.

Por lo general, el comando touch actualiza la marca de tiempo de un archivo con respecto a la
fecha y la hora actuales sin modificarlo. Esto es útil para crear archivos vacíos, que pueden usarse
para practicar, ya que si se "toca" el nombre de un archivo que no existe, se produce la creación del
archivo. En el siguiente ejemplo, el comando touch crea archivos de práctica en los subdirectorios
Documents y Videos.

[user@host ~]$ touch Videos/blockbuster1.ogg


[user@host ~]$ touch Videos/blockbuster2.ogg
[user@host ~]$ touch Documents/thesis_chapter1.odf
[user@host ~]$ touch Documents/thesis_chapter2.odf
[user@host ~]$

El comando ls tiene varias opciones para mostrar los atributos en los archivos. Los más usados
y útiles son -l (formato de enumeración extensa), -a (todos los archivos, incluidos los archivos
ocultos) y -R (recurrente, para incluir el contenido de todos los subdirectorios).

[user@host ~]$ ls -l
total 15
drwxr-xr-x. 2 user user 4096 Feb 7 14:02 Desktop
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Documents
drwxr-xr-x. 3 user user 4096 Jan 9 15:00 Downloads
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Music
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Pictures
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Public
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Templates
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Videos
[user@host ~]$ ls -la
total 15
drwx------. 16 user user 4096 Feb 8 16:15 .
drwxr-xr-x. 6 root root 4096 Feb 8 16:13 ..
-rw-------. 1 user user 22664 Feb 8 00:37 .bash_history
-rw-r--r--. 1 user user 18 Jul 9 2013 .bash_logout
-rw-r--r--. 1 user user 176 Jul 9 2013 .bash_profile
-rw-r--r--. 1 user user 124 Jul 9 2013 .bashrc
drwxr-xr-x. 4 user user 4096 Jan 20 14:02 .cache

RH124-RHEL8.2-es-1-20200928 61
capítulo 3 | Administración de archivos desde la línea de comandos

drwxr-xr-x. 8 user user 4096 Feb 5 11:45 .config


drwxr-xr-x. 2 user user 4096 Feb 7 14:02 Desktop
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Documents
drwxr-xr-x. 3 user user 4096 Jan 25 20:48 Downloads
drwxr-xr-x. 11 user user 4096 Feb 6 13:07 .gnome2
drwx------. 2 user user 4096 Jan 20 14:02 .gnome2_private
-rw-------. 1 user user 15190 Feb 8 09:49 .ICEauthority
drwxr-xr-x. 3 user user 4096 Jan 9 15:00 .local
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Music
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Pictures
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Public
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Templates
drwxr-xr-x. 2 user user 4096 Jan 9 15:00 Videos
[user@host ~]$

Los dos directorios especiales que están en la parte superior del listado se refieren al directorio
actual (.) y al directorio principal (..). Estos directorios especiales existen en cada directorio
del sistema. Descubrirá su utilidad cuando comience a usar los comandos de administración de
archivos.

Importante
Los nombres de archivo que comienzan con un punto (.) indican archivos ocultos;
no se los puede ver en la vista normal con ls y otros comandos. Esta no es una
característica de seguridad. Los archivos ocultos evitan que los archivos de
configuración necesarios del usuario llenen los directorios de inicio. Existen muchos
comandos que procesan archivos ocultos solo con opciones de línea de comandos
específicas y previenen que la configuración de un usuario se copie por accidente
en otros directorios o usuarios.

Para proteger el contenido de los archivos de la visualización indebida, se deben


usar permisos de archivos.

[user@host ~]$ ls -R
.:
Desktop Documents Downloads Music Pictures Public Templates Videos

./Desktop:

./Documents:
thesis_chapter1.odf thesis_chapter2.odf

./Downloads:

./Music:

./Pictures:

./Public:

./Templates:

62 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

./Videos:
blockbuster1.ogg blockbuster2.ogg
[user@host ~]$

El comando cd tiene muchas opciones. Muy pocas son tan útiles como para justificar que se
practiquen por anticipado y se usen con cierta frecuencia. El comando cd - vuelve al directorio
anterior, donde estaba el usuario antes de estar en el directorio actual. En el siguiente ejemplo, se
ilustra este comportamiento, al alternar entre dos directorios, lo cual es útil al procesar una serie
de tareas similares.

[user@host ~]$ cd Videos


[user@host Videos]$ pwd
/home/user/Videos
[user@host Videos]$ cd /home/user/Documents
[user@host Documents]$ pwd
/home/user/Documents
[user@host Documents]$ cd -
[user@host Videos]$ pwd
/home/user/Videos
[user@host Videos]$ cd -
[user@host Documents]$ pwd
/home/user/Documents
[user@host Documents]$ cd -
[user@host Videos]$ pwd
/home/user/Videos
[user@host Videos]$ cd
[user@host ~]$

El comando cd .. usa el directorio oculto .. para ascender un nivel hasta el directorio principal,
sin necesidad de conocer el nombre exacto del directorio principal. El otro directorio oculto (.)
especifica el directorio actual en los comandos en que la ubicación actual es el argumento de
origen o destino, y se evita la necesidad de escribir el nombre de la ruta absoluta del directorio.

[user@host Videos]$ pwd


/home/user/Videos
[user@host Videos]$ cd .
[user@host Videos]$ pwd
/home/user/Videos
[user@host Videos]$ cd ..
[user@host ~]$ pwd
/home/user
[user@host ~]$ cd ..
[user@host home]$ pwd
/home
[user@host home]$ cd ..
[user@host /]$ pwd
/
[user@host /]$ cd
[user@host ~]$ pwd
/home/user
[user@host ~]$

RH124-RHEL8.2-es-1-20200928 63
capítulo 3 | Administración de archivos desde la línea de comandos

Referencias
info libc 'file name resolution' (Manual de referencia de la biblioteca
GNU C)

• Sección 11.2.2: Resolución de nombre de archivo

Páginas del manual: bash(1), cd(1), ls(1), pwd(1), unicode(7) y utf-8(7)

UTF-8 y Unicode
http://www.utf-8.com/

64 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Cuestionario

Especificar archivos por nombre


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando se usa para volver al directorio de inicio del usuario actual, asumiendo
que el directorio de trabajo actual es /tmp y su directorio de inicio es /home/user?
a. cd
b. cd ..
c. cd .
d. cd *
e. cd /home

2. ¿Qué comando muestra el nombre de la ruta absoluta de la ubicación actual?


a. cd
b. pwd
c. ls ~
d. ls -d

3. ¿Qué comando volverá siempre al directorio de trabajo que se usó antes del directorio
de trabajo actual?
a. cd -
b. cd -p
c. cd ~
d. cd ..

4. ¿Qué comando siempre subirá el directorio de trabajo dos niveles desde la ubicación
actual?
a. cd ~
b. cd ../
c. cd ../..
d. cd -u2

5. ¿Qué comando enumera los archivos de la ubicación actual con un formato largo e
incluyendo los archivos ocultos?
a. llong ~
b. ls -a
c. ls -l
d. ls -al

RH124-RHEL8.2-es-1-20200928 65
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué comando siempre cambiará el directorio de trabajo a /bin?


a. cd bin
b. cd /bin
c. cd ~bin
d. cd -bin

7. ¿Qué comando siempre cambiará el directorio de trabajo al directorio principal de la


ubicación actual?
a. cd ~
b. cd ..
c. cd ../..
d. cd -u1

8. ¿Qué comando cambiará el directorio de trabajo a /tmp si el directorio de trabajo actual


es /home/student?
a. cd tmp
b. cd ..
c. cd ../../tmp
d. cd ~tmp

66 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Solución

Especificar archivos por nombre


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando se usa para volver al directorio de inicio del usuario actual, asumiendo
que el directorio de trabajo actual es /tmp y su directorio de inicio es /home/user?
a. cd
b. cd ..
c. cd .
d. cd *
e. cd /home

2. ¿Qué comando muestra el nombre de la ruta absoluta de la ubicación actual?


a. cd
b. pwd
c. ls ~
d. ls -d

3. ¿Qué comando volverá siempre al directorio de trabajo que se usó antes del directorio
de trabajo actual?
a. cd -
b. cd -p
c. cd ~
d. cd ..

4. ¿Qué comando siempre subirá el directorio de trabajo dos niveles desde la ubicación
actual?
a. cd ~
b. cd ../
c. cd ../..
d. cd -u2

5. ¿Qué comando enumera los archivos de la ubicación actual con un formato largo e
incluyendo los archivos ocultos?
a. llong ~
b. ls -a
c. ls -l
d. ls -al

RH124-RHEL8.2-es-1-20200928 67
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué comando siempre cambiará el directorio de trabajo a /bin?


a. cd bin
b. cd /bin
c. cd ~bin
d. cd -bin

7. ¿Qué comando siempre cambiará el directorio de trabajo al directorio principal de la


ubicación actual?
a. cd ~
b. cd ..
c. cd ../..
d. cd -u1

8. ¿Qué comando cambiará el directorio de trabajo a /tmp si el directorio de trabajo actual


es /home/student?
a. cd tmp
b. cd ..
c. cd ../../tmp
d. cd ~tmp

68 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Administración de archivos con las


herramientas de línea de comandos

Objetivos
Tras finalizar esta sección, debería ser capaz de crear, copiar, mover y eliminar archivos y
directorios.

Administración de archivos de la línea de comandos


Para administrar archivos, debe poder crearlos, eliminarlos, copiarlos y moverlos. También debe
organizarlos de forma lógica en directorios, los cuales también debe poder crear, eliminar, copiar y
mover.

La siguiente tabla resume algunos de los comandos de administración de archivos más comunes.
El resto de esta sección analizará con más detalle las formas de usar estos comandos.

Comandos comunes de administración de archivos

Actividad Sintaxis de comandos

Crear un directorio mkdir directory

Copiar un archivo cp file new-file

Copiar un directorio y su contenido cp -r directory new-directory

Mover o cambiar el nombre de un archivo o mv file new-file


directorio

Eliminar un archivo rm file

Eliminar un directorio que contiene archivos rm -r directory

Eliminar un directorio vacío rmdir directory

Creación de directorios
El comando mkdir crea uno o más directorios o subdirectorios. Toma como argumentos una lista
de rutas a los directorios que desea crear.

El comando mkdir mostrará un error si el directorio ya existe o si está intentando crear un


subdirectorio en un directorio que no existe. La opción -p (parent) crea directorios principales
faltantes para el destino solicitado. Tenga cuidado cuando use el comando mkdir -p, ya que los
errores de ortografía accidentales pueden generar directorios involuntarios sin que produzcan
mensajes de error.

En el siguiente ejemplo, simule que está intentando crear un directorio en el directorio Videos
llamado Watched, pero que accidentalmente omite la letra "s" en Videos en su comando mkdir.

RH124-RHEL8.2-es-1-20200928 69
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host ~]$ mkdir Video/Watched


mkdir: cannot create directory `Video/Watched': No such file or directory

El comando mkdir generó un error porque Videos se escribió mal y el directorio Video no existe.
Si hubiera usado el comando mkdir con la opción -p, el directorio Video se crearía, lo cual no era
su intención original, y el subdirectorio Watched se crearía en ese directorio incorrecto.

Después de escribir correctamente el nombre del directorio principal Videos, la creación del
subdirectorio Watched se ejecutará de forma correcta.

[user@host ~]$ mkdir Videos/Watched


[user@host ~]$ ls -R Videos
Videos/:
blockbuster1.ogg blockbuster2.ogg Watched

Videos/Watched:

En el siguiente ejemplo, los archivos y directorios se organizan en el directorio /home/user/


Documents. Use el comando mkdir y una lista delimitada por espacios con los nombres de
directorios para crear varios directorios.

[user@host ~]$ cd Documents


[user@host Documents]$ mkdir ProjectX ProjectY
[user@host Documents]$ ls
ProjectX ProjectY

Use el comando mkdir -p y rutas relativas delimitadas por espacios para cada nombre de
subdirectorio a fin de crear varios directorios principales con subdirectorios.

[user@host Documents]$ mkdir -p Thesis/Chapter1 Thesis/Chapter2 Thesis/Chapter3


[user@host Documents]$ cd
[user@host ~]$ ls -R Videos Documents
Documents:
ProjectX ProjectY Thesis

Documents/ProjectX:

Documents/ProjectY:

Documents/Thesis:
Chapter1 Chapter2 Chapter3

Documents/Thesis/Chapter1:

Documents/Thesis/Chapter2:

Documents/Thesis/Chapter3:

Videos:
blockbuster1.ogg blockbuster2.ogg Watched

Videos/Watched:

70 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

El último comando mkdir creó tres subdirectorios de ChapterN con un comando. La opción -p
creó el directorio principal faltante Thesis.

Copia de archivos
El comando cp copia un archivo y crea un archivo nuevo en el directorio actual o en el directorio
especificado. También puede copiar varios archivos en un directorio.

Advertencia
Si el archivo de destino ya existe, el comando cp sobrescribe el archivo.

[user@host ~]$ cd Videos


[user@host Videos]$ cp blockbuster1.ogg blockbuster3.ogg
[user@host Videos]$ ls -l
total 0
-rw-rw-r--. 1 user user 0 Feb 8 16:23 blockbuster1.ogg
-rw-rw-r--. 1 user user 0 Feb 8 16:24 blockbuster2.ogg
-rw-rw-r--. 1 user user 0 Feb 8 16:34 blockbuster3.ogg
drwxrwxr-x. 2 user user 4096 Feb 8 16:05 Watched
[user@host Videos]$

Cuando se copian varios archivos con un comando, el último argumento debe ser un directorio.
Los archivos copiados conservan su nombre original en el directorio nuevo. Si existe un archivo
con el mismo nombre en el directorio de destino, el archivo existente se sobrescribe. De manera
predeterminada, cp no copia directorios; los omite.

En el siguiente ejemplo, se enumeran dos directorios, Thesis y ProjectX. Solo el último


argumento, ProjectX, es válido como destino. El directorio Thesis se omite.

[user@host Videos]$ cd ../Documents


[user@host Documents]$ cp thesis_chapter1.odf thesis_chapter2.odf Thesis ProjectX
cp: omitting directory `Thesis'
[user@host Documents]$ ls Thesis ProjectX
ProjectX:
thesis_chapter1.odf thesis_chapter2.odf

Thesis:
Chapter1 Chapter2 Chapter3

En el primer comando cp, el directorio Thesis no se pudo copiar, pero sí lo hicieron los archivos
thesis_chapter1.odf y thesis_chapter2.odf.

Si desea copiar un archivo en el directorio de trabajo actual, puede usar el directorio especial .:

[user@host ~]$ cp /etc/hostname .


[user@host ~]$ cat hostname
host.example.com
[user@host ~]$

Use el comando de copiar con la opción -r —recursive— (recurrente) para copiar el directorio
Thesis y su contenido al directorio ProjectX.

RH124-RHEL8.2-es-1-20200928 71
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host Documents]$ cp -r Thesis ProjectX


[user@host Documents]$ ls -R ProjectX
ProjectX:
Thesis thesis_chapter1.odf thesis_chapter2.odf

ProjectX/Thesis:
Chapter1 Chapter2 Chapter3

ProjectX/Thesis/Chapter1:

ProjectX/Thesis/Chapter2:
thesis_chapter2.odf

ProjectX/Thesis/Chapter3:

Cómo mover archivos


El comando mv mueve los archivos de una ubicación a otra. Si piensa que la ruta absoluta a un
archivo es su nombre completo y mueve un archivo, esto equivale a cambiar el nombre de un
archivo. Los contenidos del archivo se conservan sin modificaciones.

Use el comando mv para cambiar el nombre de un archivo.

[user@host Videos]$ cd ../Documents


[user@host Documents]$ ls -l thesis*
-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter1.odf
-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter2.odf
[user@host Documents]$ mv thesis_chapter2.odf thesis_chapter2_reviewed.odf
[user@host Documents]$ ls -l thesis*
-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter1.odf
-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter2_reviewed.odf

Use el comando mv para mover un archivo a un directorio diferente.

[user@host Documents]$ ls Thesis/Chapter1


[user@host Documents]$
[user@host Documents]$ mv thesis_chapter1.odf Thesis/Chapter1
[user@host Documents]$ ls Thesis/Chapter1
thesis_chapter1.odf
[user@host Documents]$ ls -l thesis*
-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter2_reviewed.odf

Cómo eliminar archivos y directorios


El comando rm elimina archivos. De manera predeterminada, rm no eliminará los directorios que
contienen archivos, a menos que agregue la opción -r o --recursive.

Importante
No existe una función de deshacer la eliminación de línea de comandos ni tampoco
una papelera de reciclaje desde donde se puedan restaurar los archivos que se
borraron.

72 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Le recomendamos que verifique su directorio de trabajo actual antes de eliminar un archivo o


directorio.

[user@host Documents]$ pwd


/home/student/Documents

Use el comando rm para eliminar un solo archivo de su directorio de trabajo.

[user@host Documents]$ ls -l thesis*


-rw-rw-r--. 1 user user 0 Feb 6 21:16 thesis_chapter2_reviewed.odf
[user@host Documents]$ rm thesis_chapter2_reviewed.odf
[user@host Documents]$ ls -l thesis*
ls: cannot access 'thesis*': No such file or directory

Si intenta utilizar el comando rm para eliminar un directorio sin utilizar la opción -r, el comando
fallará.

[user@host Documents]$ rm Thesis/Chapter1


rm: cannot remove `Thesis/Chapter1': Is a directory

Use el comando rm -r para eliminar un subdirectorio y su contenido.

[user@host Documents]$ ls -R Thesis


Thesis/:
Chapter1 Chapter2 Chapter3

Thesis/Chapter1:
thesis_chapter1.odf

Thesis/Chapter2:
thesis_chapter2.odf

Thesis/Chapter3:
[user@host Documents]$ rm -r Thesis/Chapter1
[user@host Documents]$ ls -l Thesis
total 8
drwxrwxr-x. 2 user user 4096 Feb 11 12:47 Chapter2
drwxrwxr-x. 2 user user 4096 Feb 11 12:48 Chapter3

El comando rm -r primero recorre cada subdirectorio y elimina individualmente sus archivos


antes de eliminar cada directorio. Puede usar el comando rm -ri para pedir confirmación de
forma interactiva antes de la eliminación. Esto es básicamente lo contrario que usar la opción -f,
que fuerza la eliminación sin pedir confirmación al usuario.

RH124-RHEL8.2-es-1-20200928 73
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host Documents]$ rm -ri Thesis


rm: descend into directory `Thesis'? y
rm: descend into directory `Thesis/Chapter2'? y
rm: remove regular empty file `Thesis/Chapter2/thesis_chapter2.odf'? y
rm: remove directory `Thesis/Chapter2'? y
rm: remove directory `Thesis/Chapter3'? y
rm: remove directory `Thesis'? y
[user@host Documents]$

Advertencia
Si especifica tanto la opción -i como la -f, la opción -f tiene prioridad, y no se le
pedirá confirmación antes de que rm borre los archivos.

En el siguiente ejemplo, el comando rmdir solo elimina el directorio que está vacío. Al igual
que en el ejemplo anterior, debe usar el comando rm -r para eliminar un directorio que tiene
contenido.

[user@host Documents]$ pwd


/home/student/Documents
[user@host Documents]$ rmdir ProjectY
[user@host Documents]$ rmdir ProjectX
rmdir: failed to remove `ProjectX': Directory not empty
[user@host Documents]$ rm -r ProjectX
[user@host Documents]$ ls -lR
.:
total 0
[user@host Documents]$

nota
El comando rm sin opciones no puede eliminar un directorio vacío. Debes usar el
comando rmdir, rm -d (que equivale a rmdir), o rm -r.

Referencias
Páginas del manual cp(1), mkdir(1), mv(1), rm(1) y rmdir(1)

74 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Ejercicio Guiado

Administración de archivos con las


herramientas de línea de comandos
En este ejercicio, creará, organizará, copiará y eliminará archivos y directorios.

Resultados
Deberá ser capaz de crear, organizar, copiar, y eliminar archivos y directorios.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab files-manage start. Este comando ejecuta


un script de inicio que determina si la máquina servera es accesible en la red.

[student@workstation ~]$ lab files-manage start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En el directorio de inicio del usuario student, use el comando mkdir para crear tres
subdirectorios: Music, Pictures y Videos.

[student@servera ~]$ mkdir Music Pictures Videos

3. Aún en el directorio de inicio del usuario student, use el comando touch para crear
conjuntos de archivos de práctica vacíos para usar durante este trabajo de laboratorio.

• Cree seis archivos con nombres como songX.mp3.


• Cree seis archivos con nombres como snapX.jpg.
• Cree seis archivos con nombres como filmX.avi.

En cada conjunto, reemplace la X con los números del 1 al 6.

[student@servera ~]$ touch song1.mp3 song2.mp3 song3.mp3 song4.mp3 \


song5.mp3 song6.mp3
[student@servera ~]$ touch snap1.jpg snap2.jpg snap3.jpg snap4.jpg \
snap5.jpg snap6.jpg
[student@servera ~]$ touch film1.avi film2.avi film3.avi film4.avi \
film5.avi film6.avi

RH124-RHEL8.2-es-1-20200928 75
capítulo 3 | Administración de archivos desde la línea de comandos

[student@servera ~]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film1.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film2.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film3.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film4.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film5.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film6.avi
drwxrwxr-x. 2 student student 6 Feb 4 18:23 Music
drwxrwxr-x. 2 student student 6 Feb 4 18:23 Pictures
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap1.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap2.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap3.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap4.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap5.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap6.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song1.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song2.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song3.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song4.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song5.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song6.mp3
drwxrwxr-x. 2 student student 6 Feb 4 18:23 Videos

4. Aún en el directorio de inicio del usuario student, mueva los archivos de canciones al
subdirectorio Music, los archivos de instantáneas al subdirectorio Pictures y los archivos
de películas al subdirectorio Videos.
Cuando distribuya archivos desde una ubicación hacia muchas ubicaciones, primero
cambie el directorio que contiene los archivos de origen. Use la sintaxis de ruta más simple,
absoluta o relativa, para llegar al destino de cada tarea de administración de archivos.

[student@servera ~]$ mv song1.mp3 song2.mp3 song3.mp3 song4.mp3 \


song5.mp3 song6.mp3 Music
[student@servera ~]$ mv snap1.jpg snap2.jpg snap3.jpg snap4.jpg \
snap5.jpg snap6.jpg Pictures
[student@servera ~]$ mv film1.avi film2.avi film3.avi film4.avi \
film5.avi film6.avi Videos
[student@servera ~]$ ls -l Music Pictures Videos
Music:
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song1.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song2.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song3.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song4.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song5.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:23 song6.mp3

Pictures:
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap1.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap2.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap3.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap4.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap5.jpg

76 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

-rw-rw-r--. 1 student student 0 Feb 4 18:23 snap6.jpg

Videos:
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film1.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film2.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film3.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film4.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film5.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:23 film6.avi

5. Aún en el directorio de inicio del usuario student, cree tres subdirectorios para organizar
los archivos en proyectos. Nombre a los subdirectorios friends, family y work. Use un
solo comando para crear los tres subdirectorios al mismo tiempo.
Usará estos directorios para reorganizar los archivos en proyectos.

[student@servera ~]$ mkdir friends family work


[student@servera ~]$ ls -l
total 0
drwxrwxr-x. 2 student student 6 Feb 4 18:38 family
drwxrwxr-x. 2 student student 6 Feb 4 18:38 friends
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Music
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Pictures
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Videos
drwxrwxr-x. 2 student student 6 Feb 4 18:38 work

6. Copie una selección de los nuevos archivos a los directorios del proyecto family y
friends. Use todos los comandos que necesite. No tiene que usar un solo comando como
en el ejemplo. Para cada proyecto, primero pase al directorio del proyecto y, a continuación,
copie los archivos de origen en este directorio. Tenga en cuenta que está haciendo copias;
por lo tanto, los archivos originales permanecerán en sus ubicaciones originales una vez que
los archivos se hayan copiado a los directorios del proyecto.

• Copie los archivos (de todo tipo) que tengan los números 1 y 2 al subdirectorio friends.
• Copie los archivos (de todo tipo) que tengan los números 3 y 4 al subdirectorio family.

Cuando copie archivos de varias ubicaciones a una sola ubicación, Red Hat recomienda que
pase al directorio de destino antes de copiar los archivos. Use la sintaxis de ruta más simple,
absoluta o relativa, para llegar al origen de cada tarea de administración de archivos.

[student@servera ~]$ cd friends


[student@servera friends]$ cp ~/Music/song1.mp3 ~/Music/song2.mp3 \
~/Pictures/snap1.jpg ~/Pictures/snap2.jpg ~/Videos/film1.avi \
~/Videos/film2.avi .
[student@servera friends]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:42 film1.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:42 film2.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:42 snap1.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:42 snap2.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:42 song1.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:42 song2.mp3
[student@servera friends]$ cd ../family

RH124-RHEL8.2-es-1-20200928 77
capítulo 3 | Administración de archivos desde la línea de comandos

[student@servera family]$ cp ~/Music/song3.mp3 ~/Music/song4.mp3 \


~/Pictures/snap3.jpg ~/Pictures/snap4.jpg ~/Videos/film3.avi \
~/Videos/film4.avi .
[student@servera family]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:44 film3.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:44 film4.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:44 snap3.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:44 snap4.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:44 song3.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:44 song4.mp3

7. Para su proyecto de trabajo, cree copias adicionales.

[student@servera family]$ cd ../work


[student@servera work]$ cp ~/Music/song5.mp3 ~/Music/song6.mp3 \
~/Pictures/snap5.jpg ~/Pictures/snap6.jpg \
~/Videos/film5.avi ~/Videos/film6.avi .
[student@servera work]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 4 18:48 film5.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:48 film6.avi
-rw-rw-r--. 1 student student 0 Feb 4 18:48 snap5.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:48 snap6.jpg
-rw-rw-r--. 1 student student 0 Feb 4 18:48 song5.mp3
-rw-rw-r--. 1 student student 0 Feb 4 18:48 song6.mp3

8. Las tareas del proyecto ya están terminadas, por lo que es hora de limpiar los proyectos.
Pase al directorio de inicio del usuario student. Intente eliminar los directorios del
proyecto family y friends con un solo comando rmdir.

[student@servera work]$ cd
[student@servera ~]$ rmdir family friends
rmdir: failed to remove 'family': Directory not empty
rmdir: failed to remove 'friends': Directory not empty

El uso del comando rmdir debería fallar porque ambos subdirectorios contienen archivos.

9. Use el comando rm -r para eliminar recursivamente los subdirectorios family y


friends, así como su contenido.

[student@servera ~]$ rm -r family friends


[student@servera ~]$ ls -l
total 0
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Music
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Pictures
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Videos
drwxrwxr-x. 2 student student 108 Feb 4 18:48 work

78 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

10. Elimine todos los archivos del proyecto de trabajo, pero no elimine el directorio de trabajo.

[student@servera ~]$ cd work


[student@servera work]$ rm song5.mp3 song6.mp3 snap5.jpg snap6.jpg \
film5.avi film6.avi
[student@servera work]$ ls -l
total 0

11. Por último, desde el directorio de inicio del usuario student, use el comando rmdir para
eliminar el directorio work. El comando deberá ser capaz de completar la acción sin errores
ahora que está vacío.

[student@servera work]$ cd
[student@servera ~]$ rmdir work
[student@servera ~]$ ls -l
total 0
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Music
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Pictures
drwxrwxr-x. 2 student student 108 Feb 4 18:36 Videos

12. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab files-manage finish para terminar este ejercicio.
Este script elimina todos los archivos y directorios creados durante el ejercicio.

[student@workstation ~]$ lab files-manage finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 79
capítulo 3 | Administración de archivos desde la línea de comandos

Creación de enlaces entre archivos

Objetivos
Tras finalizar esta sección, deberá ser capaz de hacer que varios nombres de archivo hagan
referencia al mismo archivo con enlaces duros y simbólicos (o "blandos").

Administración de enlaces entre archivos


Enlaces duros y enlaces blandos
Es posible crear varios nombres que apunten al mismo archivo. Existen dos formas de hacerlo:
mediante la creación de un enlace duro al archivo o mediante la creación de un enlace blando (a
veces llamado enlace simbólico) al archivo. Cada forma tiene sus ventajas y desventajas.

Creación de enlaces duros


Cada archivo comienza con un solo enlace duro, desde su nombre inicial hasta los datos en el
sistema de archivos. Cuando crea un nuevo enlace duro a un archivo, crea otro nombre que apunta
a esos mismos datos. El nuevo enlace duro actúa exactamente igual que el nombre del archivo
original. Una vez creado, no puede distinguir la diferencia entre el nuevo enlace duro y el nombre
original del archivo.

Puede comprobar si un archivo tiene varios enlaces duros con el comando ls -l. Uno de los
datos que aparecen es el recuento de enlaces de cada archivo, es decir, la cantidad de enlaces
duros que tiene el archivo.

[user@host ~]$ pwd


/home/user
[user@host ~]$ ls -l newfile.txt
-rw-r--r--. 1 user user 0 Mar 11 19:19 newfile.txt

En el ejemplo anterior, el recuento de enlaces de newfile.txt es 1. Tiene exactamente una ruta


absoluta, que es /home/user/newfile.txt.

Puede usar el comando ln para crear un nuevo enlace duro (otro nombre) que apunte a un archivo
existente. El comando necesita al menos dos argumentos, una ruta al archivo existente y la ruta al
enlace duro que desea crear.

En el siguiente ejemplo se crea un enlace duro con el nombre newfile-link2.txt para el


archivo existente newfile.txt en el directorio /tmp.

[user@host ~]$ ln newfile.txt /tmp/newfile-hlink2.txt


[user@host ~]$ ls -l newfile.txt /tmp/newfile-hlink2.txt
-rw-rw-r--. 2 user user 12 Mar 11 19:19 newfile.txt
-rw-rw-r--. 2 user user 12 Mar 11 19:19 /tmp/newfile-hlink2.txt

Si desea verificar si dos archivos tienen los mismos enlaces duros, una posibilidad es usar la opción
-i con el comando ls para enumerar el número de inodo de los archivos. Si los archivos están

80 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

en el mismo sistema de archivos (que se explicará más adelante) y sus números de inodo son los
mismos, los archivos son enlaces duros que apuntan a los mismos datos.

[user@host ~]$ ls -il newfile.txt /tmp/newfile-hlink2.txt


8924107 -rw-rw-r--. 2 user user 12 Mar 11 19:19 newfile.txt
8924107 -rw-rw-r--. 2 user user 12 Mar 11 19:19 /tmp/newfile-hlink2.txt

Importante
Todos los enlaces duros que hacen referencia al mismo archivo tendrán el mismo
recuento de enlaces, permiso de acceso, pertenencia a usuarios y grupos, marcas
de tiempo y contenido de archivo. Si se modifica algún dato en un enlace duro,
todos los demás enlaces duros que apuntan al mismo archivo también mostrarán el
dato nuevo. Esto se debe a que cada enlace duro apunta a los mismos datos en el
dispositivo de almacenamiento.

Incluso si se elimina el archivo original, el contenido del archivo continúa estando disponible
siempre y cuando exista un enlace duro como mínimo. Los datos solo se eliminan del
almacenamiento cuando se elimina el último enlace duro.

[user@host ~]$ rm -f newfile.txt


[user@host ~]$ ls -l /tmp/newfile-hlink2.txt
-rw-rw-r--. 1 user user 12 Mar 11 19:19 /tmp/newfile-hlink2.txt
[user@host ~]$ cat /tmp/newfile-hlink2.txt
Hello World

Limitaciones de los enlaces duros


Los enlaces duros tienen algunas limitaciones. En primer lugar, los enlaces duros solo se pueden
utilizar con archivos normales. No puede utilizar ln para crear un enlace duro a un directorio o
archivo especial.

En segundo lugar, los enlaces duros solo se pueden usar si ambos archivos están en el mismo
sistema de archivos. La jerarquía del sistema de archivos puede estar formada por varios
dispositivos de almacenamiento. Dependiendo de la configuración de su sistema, cuando pase a
un nuevo directorio, ese directorio y su contenido pueden almacenarse en un sistema de archivos
diferente.

Puede usar el comando df para enumerar los directorios que están en diferentes sistemas de
archivos. Por ejemplo, es posible que visualice un resultado como el siguiente:

[user@host ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 886788 0 886788 0% /dev
tmpfs 902108 0 902108 0% /dev/shm
tmpfs 902108 8696 893412 1% /run
tmpfs 902108 0 902108 0% /sys/fs/cgroup
/dev/mapper/rhel_rhel8--root 10258432 1630460 8627972 16% /
/dev/sda1 1038336 167128 871208 17% /boot
tmpfs 180420 0 180420 0% /run/user/1000
[user@host ~]$

RH124-RHEL8.2-es-1-20200928 81
capítulo 3 | Administración de archivos desde la línea de comandos

Los archivos que están en dos directorios diferentes con el indicador "Montado en" y sus
subdirectorios están en sistemas de archivos distintos. (La coincidencia más específica es la
correcta). Por lo tanto, el sistema en este ejemplo. Puede crear un enlace duro entre /var/tmp/
link1 y /home/user/file porque ambos son subdirectorios de /, pero no de ningún otro
directorio de la lista. Pero no puede crear un enlace duro entre /boot/test/badlink y /home/
user/file porque el primer archivo está en un subdirectorio de /boot (en la lista "Montado en")
y el segundo archivo no está allí.

Creación de enlaces blandos


El comando ln -s permite crear un enlace blando, que también se conoce como "enlace
simbólico". Un enlace blando no es un archivo regular, sino un tipo de archivo especial que apunta
a un archivo o a un directorio existente.

Los enlaces blandos tienen algunas ventajas en comparación con los enlaces duros:

• Pueden vincular dos archivos en diferentes sistemas de archivos.


• Pueden apuntar a un directorio o archivo especial, no solo a un archivo regular.

En el siguiente ejemplo, el comando ln -s se utiliza para crear un nuevo enlace blando para
el archivo existente /home/user/newfile-link2.txt que se llamará /tmp/newfile-
symlink.txt.

[user@host ~]$ ln -s /home/user/newfile-link2.txt /tmp/newfile-symlink.txt


[user@host ~]$ ls -l newfile-link2.txt /tmp/newfile-symlink.txt
-rw-rw-r--. 1 user user 12 Mar 11 19:19 newfile-link2.txt
lrwxrwxrwx. 1 user user 11 Mar 11 20:59 /tmp/newfile-symlink.txt -> /home/user/
newfile-link2.txt
[user@host ~]$ cat /tmp/newfile-symlink.txt
Soft Hello World

En el ejemplo anterior, el primer carácter de la lista larga para /tmp/newfile-symlink.txt es


l, y no -. Esto indica que el archivo es un enlace blando y no un archivo regular. (La letra d indicaría
que el archivo es un directorio).

Cuando se elimina el archivo regular original, el enlace blando seguirá apuntando al archivo, pero
el destino desaparece. Un enlace blando que apunta a un archivo que falta recibe el nombre de
"enlace blando colgante".

[user@host ~]$ rm -f newfile-link2.txt


[user@host ~]$ ls -l /tmp/newfile-symlink.txt
lrwxrwxrwx. 1 user user 11 Mar 11 20:59 /tmp/newfile-symlink.txt -> /home/user/
newfile-link2.txt
[user@host ~]$ cat /tmp/newfile-symlink.txt
cat: /tmp/newfile-symlink.txt: No such file or directory

82 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Importante
Un efecto secundario del enlace blando colgante en el ejemplo anterior es que
si usted crea más adelante un nuevo archivo con el mismo nombre que el archivo
eliminado (/home/user/newfile-link2.txt), el enlace blando ya no estará
"colgando" y apuntará al archivo nuevo.

Los enlaces duros no funcionan de esta forma. Si borra un enlace duro y luego usa
herramientas normales (en lugar de ln) para crear un nuevo archivo con el mismo
nombre, el nuevo archivo no se vinculará al archivo anterior.

Aquí presentamos una forma de comparar enlaces duros y enlaces blandos que
puede ayudarlo a comprender cómo funcionan:

• Un enlace duro apunta un nombre a los datos de un dispositivo de


almacenamiento.
• Un enlace blando apunta un nombre a otro nombre, que apunta a datos en un
dispositivo de almacenamiento.

Un enlace blando puede apuntar a un directorio. El enlace blando funciona como un directorio.
Si cambia al enlace blando con cd, hará que el directorio de trabajo actual se convierta en el
directorio vinculado. Algunas herramientas pueden hacer un seguimiento del hecho de que usted
siguió un enlace blando para llegar allí. Por ejemplo, de manera predeterminada, cd actualizará
su directorio de trabajo actual por medio del nombre del enlace blando, y no del nombre del
directorio real. (Existe la opción, -P, que permite actualizarlo con el nombre del directorio real).

En el siguiente ejemplo, se crea un enlace blando llamado /home/user/configfiles que


apunta al directorio /etc.

[user@host ~]$ ln -s /etc /home/user/configfiles


[user@host ~]$ cd /home/user/configfiles
[user@host configfiles]$ pwd
/home/user/configfiles

Referencias
Página del manual: ln(1)

info ln (‘ln’: Creación de enlaces entre archivos)

RH124-RHEL8.2-es-1-20200928 83
capítulo 3 | Administración de archivos desde la línea de comandos

Ejercicio Guiado

Creación de enlaces entre archivos


En este ejercicio, creará enlaces duros y enlaces simbólicos, y comparará los resultados.

Resultados
Deberá ser capaz de crear enlaces duros y enlaces blandos entre archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab files-make start. Este comando ejecuta


un script de inicio que determina si el host servera está accesible en la red, y crea los
archivos y directorios de trabajo en servera.

[student@workstation ~]$ lab files-make start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cree un enlace duro denominado /home/student/backups/source.backup para el


archivo existente, /home/student/files/source.file.

2.1. Vea el recuento de enlaces para el archivo, /home/student/files/source.file.

[student@servera ~]$ ls -l files/source.file


total 4
-rw-r--r--. 1 student student 11 Mar 5 21:19 source.file

2.2. Cree un enlace duro denominado /home/student/backups/source.backup.


Establezca su enlace con el archivo /home/student/files/source.file.

[student@servera ~]$ ln /home/student/files/source.file \


/home/student/backups/source.backup

2.3. Verifique el recuento de enlaces para el /home/student/files/source.file


original y el nuevo archivo vinculado, /home/student/backups/source.backup.
El recuento de enlaces debe ser de 2 para ambos archivos.

84 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

[student@servera ~]$ ls -l /home/student/files/


-rw-r--r--. 2 student student 11 Mar 5 21:19 source.file
[student@servera ~]$ ls -l /home/student/backups/
-rw-r--r--. 2 student student 11 Mar 5 21:19 source.backup

3. Cree un enlace blando denominado /home/student/tempdir que apunte al directorio /


tmp en servera.

3.1. Cree un enlace blando denominado /home/student/tempdir y vincúlelo a /tmp.

[student@servera ~]$ ln -s /tmp /home/student/tempdir

3.2. Use el comando ls -l para verificar el enlace blando recién creado.

[student@servera ~]$ ls -l /home/student/tempdir


lrwxrwxrwx. 1 student student 4 Mar 5 22:04 /home/student/tempdir -> /tmp

4. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab files-make finish para terminar este ejercicio. Este
script elimina todos los archivos y directorios creados en servera durante el ejercicio.

[student@workstation ~]$ lab files-make finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 85
capítulo 3 | Administración de archivos desde la línea de comandos

Coincidencia de nombres de archivo con


expansiones de shell

Objetivos
Tras finalizar esta sección, debería ser capaz de ejecutar con eficiencia los comandos que afectan
a muchos archivos mediante el uso de las funciones de coincidencia de patrones de la shell Bash.

Expansiones de las líneas de comandos


La shell Bash tiene varias formas de expandir una línea de comandos, incluida la coincidencia
de patrones, la expansión del directorio de inicio, la expansión de secuencias y la sustitución de
variables. Quizás la más potente de estas capacidades sea la de coincidencia de nombres de
ruta, históricamente denominada globbing. La función globbing de Bash, que comúnmente se
denomina “comodines”, facilita la administración de grandes cantidades de archivos. Si se usan
los metacaracteres que se “expanden” para establecer una coincidencia entre los archivos y los
nombres de ruta que se buscan, los comandos actúan en un conjunto orientado de archivos de una
vez.

Coincidencia de patrones
Globbing es una operación de análisis de comandos de la shell que expande un patrón de comodín
en una lista de nombres de ruta coincidentes. Los metacaracteres de la línea de comandos se
reemplazan con la lista de coincidencias antes de la ejecución del comando. Los patrones que no
ofrecen coincidencias muestran la solicitud de patrón original como texto literal. Los siguientes
son metacaracteres y clases de patrones de uso frecuente.

Tabla de metacaracteres y coincidencias

Patrón Coincidencias

* Cualquier secuencia de cero o más caracteres.

? Cualquier carácter individual.

[abc...] Cualquier carácter en la clase incluida (entre corchetes).

[!abc...] Cualquier carácter que no esté en la clase incluida.

[^abc...] Cualquier carácter que no esté en la clase incluida.

[[:alpha:]] Cualquier carácter alfabético.

[[:lower:]] Cualquier carácter en minúsculas.

[[:upper:]] Cualquier carácter en mayúsculas.

[[:alnum:]] Cualquier dígito o carácter alfabético.

[[:punct:]] Cualquier carácter imprimible que no sea un espacio o alfanumérico.

[[:digit:]] Cualquier dígito de 0 a 9.

86 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Patrón Coincidencias

[[:space:]] Cualquier carácter individual de espacio en blanco. Esto puede incluir


tabulaciones, saltos de línea, retornos de carro, avances de página o
espacios.

Para los siguientes ejemplos, simule que ha ejecutado los siguientes comandos para crear algunos
archivos de muestra.

[user@host ~]$ mkdir glob; cd glob


[user@host glob]$ touch alfa bravo charlie delta echo able baker cast dog easy
[user@host glob]$ ls
able alfa baker bravo cast charlie delta dog easy echo
[user@host glob]$

El primer ejemplo utilizará coincidencias de patrones simples con el asterisco (*) y signo de
interrogación (?), y una clase de caracteres, para hacer coincidir con algunos de esos nombres de
archivo.

[user@host glob]$ ls a*
able alfa
[user@host glob]$ ls *a*
able alfa baker bravo cast charlie delta easy
[user@host glob]$ ls [ac]*
able alfa cast charlie
[user@host glob]$ ls ????
able alfa cast easy echo
[user@host glob]$ ls ?????
baker bravo delta
[user@host glob]$

Expansión de tilde
El carácter del tilde (~) coincide con el directorio de inicio del usuario actual. Si comienza una
secuencia de caracteres con cualquier carácter que no sea una barra (/), la shell interpretará que
la secuencia es un nombre de usuario hasta esa barra, si se logra una coincidencia, y reemplazará
la secuencia con la ruta absoluta al directorio de inicio de ese usuario. Si ningún nombre de usuario
coincide, empleará la propia tilde seguida de la secuencia de caracteres.

En el siguiente ejemplo, el comando echo se usa para mostrar el valor del carácter de tilde. El
comando echo también se puede usar para mostrar los valores de los caracteres de expansión de
llaves y variables, y otros.

[user@host glob]$ echo ~root


/root
[user@host glob]$ echo ~user
/home/user
[user@host glob]$ echo ~/glob
/home/user/glob
[user@host glob]$

RH124-RHEL8.2-es-1-20200928 87
capítulo 3 | Administración de archivos desde la línea de comandos

Expansión de llaves
La expansión de llaves se usa para generar secuencias discrecionales de caracteres. Las llaves
contienen una lista de secuencias, o una expresión de secuencias, separadas por comas. El
resultado incluye el texto que antecede o que sigue a la definición de llaves. Las expansiones
de llaves pueden estar anidadas, una dentro de la otra. Además, la sintaxis de punto doble (..) se
expande para formar una secuencia, de manera que {m..p} se expandirá para formar m n o p.

[user@host glob]$ echo {Sunday,Monday,Tuesday,Wednesday}.log


Sunday.log Monday.log Tuesday.log Wednesday.log
[user@host glob]$ echo file{1..3}.txt
file1.txt file2.txt file3.txt
[user@host glob]$ echo file{a..c}.txt
filea.txt fileb.txt filec.txt
[user@host glob]$ echo file{a,b}{1,2}.txt
filea1.txt filea2.txt fileb1.txt fileb2.txt
[user@host glob]$ echo file{a{1,2},b,c}.txt
filea1.txt filea2.txt fileb.txt filec.txt
[user@host glob]$

La expansión de llaves se utiliza en la práctica, por ejemplo, para crear rápidamente una serie de
archivos o directorios.

[user@host glob]$ mkdir ../RHEL{6,7,8}


[user@host glob]$ ls ../RHEL*
RHEL6 RHEL7 RHEL8
[user@host glob]$

Expansión de variables
Una variable actúa como un contenedor con nombre que puede almacenar un valor en la memoria.
Las variables facilitan el acceso y la modificación de los datos almacenados desde la línea de
comandos o dentro de un script de shell.

Puede asignar datos como valor de una variable mediante la siguiente sintaxis:

[user@host ~]$ VARIABLENAME=value

Puede usar la expansión de variables para convertir el nombre de la variable a su valor en la línea
de comandos. Si una secuencia comienza con un signo de dólar ($), entonces la shell intentará
usar el resto de esa secuencia como un nombre de variable y reemplazarlo con cualquier valor que
tenga la variable.

[user@host ~]$ USERNAME=operator


[user@host ~]$ echo $USERNAME
operator

Para ayudar a evitar errores debidos a otras expansiones de shell, puede poner el nombre de la
variable entre llaves, por ejemplo, ${VARIABLENAME}.

88 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host ~]$ USERNAME=operator


[user@host ~]$ echo ${USERNAME}
operator

Las variables de shell y las formas de usarlas se analizarán con mayor profundidad más adelante en
este curso.

Sustitución de comandos
La sustitución de comandos permite obtener un comando para reemplazar el comando mismo
en la línea de comandos. La sustitución de comandos se produce cuando un comando está entre
paréntesis y precedido por un signo de dólar ($). La forma $(comando) puede anidar varias
expansiones de comando dentro de cada una.

[user@host glob]$ echo Today is $(date +%A).


Today is Wednesday.
[user@host glob]$ echo The time is $(date +%M) minutes past $(date +%l%p).
The time is 26 minutes past 11AM.
[user@host glob]$

nota
Una forma más antigua de sustitución de comandos usa acentos graves:
`comando`. Estas son algunas de las desventajas de la forma con acento grave: 1)
el acento grave puede confundirse fácilmente a la vista con las comillas simples, y 2)
el acento grave no puede anidarse.

Cómo evitar la expansión de argumentos


Muchos caracteres tienen un significado especial en la shell Bash. Para evitar que la shell realice
expansiones de shell en partes de su línea de comandos, puede usar caracteres y secuencias entre
comillas y de escape.

La barra invertida (\) es un carácter de escape en la shell Bash. Evitará que el carácter que lo sigue
se expanda.

[user@host glob]$ echo The value of $HOME is your home directory.


The value of /home/user is your home directory.
[user@host glob]$ echo The value of \$HOME is your home directory.
The value of $HOME is your home directory.
[user@host glob]$

En el ejemplo anterior, proteger el signo de dólar de la expansión hizo que Bash lo tratara como un
carácter normal y no realizó la expansión de variables en $HOME.

Para proteger las secuencias de caracteres más extensas, se usan comillas simples (') o dobles (")
para encerrar las secuencias. Tienen efectos ligeramente diferentes. Las comillas simples detienen
toda la expansión de shell. Las comillas dobles detienen la mayor parte de la expansión de shell.

Use comillas dobles para suprimir el globbing y la expansión de la shell y, al mismo tiempo, permitir
la sustitución de comandos y variables.

RH124-RHEL8.2-es-1-20200928 89
capítulo 3 | Administración de archivos desde la línea de comandos

[user@host glob]$ myhost=$(hostname -s); echo $myhost


host
[user@host glob]$ echo "***** hostname is ${myhost} *****"
***** hostname is host *****
[user@host glob]$

Use comillas simples para interpretar todo el texto literalmente.

[user@host glob]$ echo "Will variable $myhost evaluate to $(hostname -s)?"


Will variable host evaluate to host?
[user@host glob]$ echo 'Will variable $myhost evaluate to $(hostname -s)?'
Will variable $myhost evaluate to $(hostname -s)?
[user@host glob]$

Importante
Tanto en la pantalla como en el teclado la comilla simple (') y el acento grave
de sustitución de comando (`) pueden confundirse fácilmente. Si usa uno
incorrectamente, ya que la intención era usar el otro, generará un comportamiento
inesperado de la shell.

Referencias
Páginas del manual: bash(1), cd(1), glob(7), isalpha(3), ls(1),
path_resolution(7) y pwd(1)

90 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Cuestionario

Coincidencia de nombres de archivo con


expansiones de shell
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué patrón coincidirá solo con los nombres de archivo que terminan con "b"?
a. b*
b. *b
c. *b*
d. [!b]*

2. ¿Qué patrón coincidirá solo con los nombres de archivo que comienzan con "b"?
a. b*
b. *b
c. *b*
d. [!b]*

3. ¿Qué patrón coincidirá solo con los nombres de archivo donde el primer carácter no es
"b"?
a. b*
b. *b
c. *b*
d. [!b]*

4. ¿Qué patrón coincidirá con todos los nombres de archivo que contengan una "b"?
a. b*
b. *b
c. *b*
d. [!b]*

5. ¿Qué patrón coincidirá solo con los nombres de archivo que contengan un número?
a. *#*
b. *[[:digit:]]*
c. *[digit]*
d. [0-9]

RH124-RHEL8.2-es-1-20200928 91
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué patrón coincidirá solo con los nombres de archivo que comienzan con una letra
mayúscula?
a. ^?*
b. ^*
c. [upper]*
d. [[:upper:]]*
e. [[CAP]]*

7. ¿Qué patrón coincidirá solo con los nombres de archivo de al menos tres caracteres de
longitud?
a. ???*
b. ???
c. \3*
d. +++*
e. ...*

92 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Solución

Coincidencia de nombres de archivo con


expansiones de shell
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué patrón coincidirá solo con los nombres de archivo que terminan con "b"?
a. b*
b. *b
c. *b*
d. [!b]*

2. ¿Qué patrón coincidirá solo con los nombres de archivo que comienzan con "b"?
a. b*
b. *b
c. *b*
d. [!b]*

3. ¿Qué patrón coincidirá solo con los nombres de archivo donde el primer carácter no es
"b"?
a. b*
b. *b
c. *b*
d. [!b]*

4. ¿Qué patrón coincidirá con todos los nombres de archivo que contengan una "b"?
a. b*
b. *b
c. *b*
d. [!b]*

5. ¿Qué patrón coincidirá solo con los nombres de archivo que contengan un número?
a. *#*
b. *[[:digit:]]*
c. *[digit]*
d. [0-9]

RH124-RHEL8.2-es-1-20200928 93
capítulo 3 | Administración de archivos desde la línea de comandos

6. ¿Qué patrón coincidirá solo con los nombres de archivo que comienzan con una letra
mayúscula?
a. ^?*
b. ^*
c. [upper]*
d. [[:upper:]]*
e. [[CAP]]*

7. ¿Qué patrón coincidirá solo con los nombres de archivo de al menos tres caracteres de
longitud?
a. ???*
b. ???
c. \3*
d. +++*
e. ...*

94 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Trabajo de laboratorio

Administración de archivos desde la línea


de comandos
Lista de verificación de rendimiento
En este trabajo de laboratorio, creará, moverá y eliminará archivos y directorios usando la
shell y una variedad de técnicas de coincidencia de nombres de archivo.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Usar comodines para localizar y manipular archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab files-review start. Este comando ejecuta


un script de inicio que determina si la máquina serverb es accesible en la red.

[student@workstation ~]$ lab files-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Los sistemas
se configuran para que usen claves SSH para la autenticación, por lo que no se necesita una
contraseña.
2. Antes de crear archivos de proyecto, use el comando mkdir con expansión de llaves para
crear documentos de planificación de proyectos vacíos en el directorio /home/student/
Documents/project_plans. (Sugerencia: si ~/Documents no existe, la opción -p para el
comando mkdir lo creará).
Cree dos archivos vacíos en el directorio ~/Documents/project_plans:
season1_project_plan.odf y season2_project_plan.odf.
3. Cree conjuntos de archivos de práctica vacíos para usar en este trabajo de laboratorio. Si
no reconoce inmediatamente el atajo deseado de expansión de la shell, use la solución para
aprender y practicar. Use la función de autocompletado con tab de la shell para localizar los
nombres de ruta de archivos fácilmente.
Cree un total de 12 archivos con nombres tv_seasonX_episodeY.ogg. Reemplace X con
el número de temporada e Y con el episodio de esa temporada, para dos temporadas de seis
episodios cada una.
4. Como autor de una serie exitosa de novelas de misterio, los capítulos de su próximo
bestseller se están editando para publicarlos. Cree un total de ocho archivos con nombres
mystery_chapterX.odf. Reemplace la X con los números del 1 al 8.
5. Use un solo comando para crear dos subdirectorios denominados season1 y season2 en el
directorio Videos, a fin de organizar los capítulos de la serie de televisión.

RH124-RHEL8.2-es-1-20200928 95
capítulo 3 | Administración de archivos desde la línea de comandos

6. Mueva los episodios de la serie de televisión correspondientes a los subdirectorios de


temporadas. Use solo dos comandos y especifique los destinos con la sintaxis relativa.
7. Cree una jerarquía de directorios de dos niveles con un solo comando para organizar los
capítulos del libro de misterios. Cree my_bestseller en el directorio Documents y
chapters en el nuevo directorio my_bestseller.
8. Cree tres subdirectorios más directamente en el directorio my_bestseller con un solo
comando. Nombre a estos subdirectorios editor, changes y vacation. La opción -p
(crear elementos principales) no es necesaria porque el directorio principal my_bestseller
ya existe.
9. Cambie al directorio chapters. Use el atajo del directorio de inicio con tilde (~) para
especificar los archivos de recursos, mueva todos los capítulos del libro al directorio
chapters, que ahora es el directorio actual. ¿Cuál es la sintaxis más simple para especificar
el directorio de destino?
10. Envió los primeros dos capítulos al editor para la revisión. Mueva solo esos dos capítulos
al directorio editor para evitar modificarlos durante la revisión. Comenzando por el
subdirectorio de capítulos, use la expansión de llaves con un rango para especificar los
nombres de archivo de los capítulos que se moverán y una ruta relativa para el directorio de
destino.
11. En las vacaciones, tiene la intención de escribir los capítulos 7 y 8. Use un solo comando para
mover los archivos del directorio chapters al directorio vacation. Para especificar los
nombres de archivo de los capítulos, use la expansión de llaves con una lista de secuencias y
sin usar caracteres comodín.
12. Cambie el directorio de trabajo a ~/Videos/season2 y copie el primer episodio de la
temporada al directorio vacation.
13. Use un solo comando cd para pasar del directorio de trabajo al directorio ~/Documents/
my_bestseller/vacation. Haga una lista de sus archivos. Use el argumento directorio
de trabajo anterior para volver al directorio season2. (Esto se ejecutará correctamente si el
último cambio de directorio con el comando cd se hizo con un comando en lugar de varios
comandos cd). Desde el directorio season2, copie el archivo del episodio 2 en el directorio
vacation. Use el atajo de nuevo para volver al directorio vacation.
14. Los autores de los capítulos 5 y 6 quieren experimentar con posibles cambios. Copie
ambos archivos del directorio ~/Documents/my_bestseller/chapters al directorio
~/Documents/my_bestseller/changes para evitar que estos cambios modifiquen
los archivos originales. Diríjase al directorio ~/Documents/my_bestseller. Use la
coincidencia de patrones con corchetes para especificar qué números de capítulo deben
coincidir en el argumento de nombre de archivo del comando cp.
15. Cambie el directorio actual al directorio changes.
Use el comando date +%F con sustitución de comandos para copiar
mystery_chapter5.odf a un archivo nuevo que incluya la fecha completa. El nombre
debe tener el formato mystery_chapter5_YYYY-MM-DD.odf.
Haga otra copia de mystery_chapter5.odf anexando la marca de tiempo actual (como
el número de segundos desde la era, 1-1-1970 00:00 UTC) para garantizar un nombre de
archivo único. Use la sustitución de comandos con el comando date +%s para lograr esto.
16. Después de una revisión adicional, usted decide que los cambios a la trama no son
necesarios. Elimine el directorio changes.
De ser necesario, vaya al directorio changes y elimine todos los archivos del directorio. No
puede eliminar un directorio mientras sea el directorio de trabajo actual. Pase al directorio
principal del directorio changes. Intente eliminar el directorio vacío con el comando rm sin

96 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

la opción recursiva -r. Este intento debe fallar. Finalmente, use el comando rmdir para
eliminar el directorio vacío; esta acción se ejecutará correctamente.
17. Cuando finalicen las vacaciones, el directorio vacation ya no será necesario. Elimínelo
usando el comando rm con la opción recursive.
Una vez que haya finalizado, regrese al directorio de inicio del usuario student.
18. Cree un enlace duro al archivo ~/Documents/project_plans/
season2_project_plan.odf denominado ~/Documents/backups/
season2_project_plan.odf.back. Un enlace duro evitará la eliminación accidental del
archivo original y mantendrá actualizado el archivo de respaldo a medida que se realicen
cambios en el original.
19. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab files-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab files-review grade

Finalizar
En workstation, ejecute el script lab files-review finish para finalizar este trabajo de
laboratorio. Este script elimina todos los archivos y directorios creados en serverb durante el
ejercicio de laboratorio.

[student@workstation ~]$ lab files-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 97
capítulo 3 | Administración de archivos desde la línea de comandos

Solución

Administración de archivos desde la línea


de comandos
Lista de verificación de rendimiento
En este trabajo de laboratorio, creará, moverá y eliminará archivos y directorios usando la
shell y una variedad de técnicas de coincidencia de nombres de archivo.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Usar comodines para localizar y manipular archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab files-review start. Este comando ejecuta


un script de inicio que determina si la máquina serverb es accesible en la red.

[student@workstation ~]$ lab files-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Los sistemas
se configuran para que usen claves SSH para la autenticación, por lo que no se necesita una
contraseña.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. Antes de crear archivos de proyecto, use el comando mkdir con expansión de llaves para
crear documentos de planificación de proyectos vacíos en el directorio /home/student/
Documents/project_plans. (Sugerencia: si ~/Documents no existe, la opción -p para el
comando mkdir lo creará).
Cree dos archivos vacíos en el directorio ~/Documents/project_plans:
season1_project_plan.odf y season2_project_plan.odf.

[student@serverb ~]$ mkdir -p ~/Documents/project_plans


[student@serverb ~]$ touch \
~/Documents/project_plans/{season1,season2}_project_plan.odf
[student@serverb ~]$ ls -lR Documents/
Documents/:
total 0
drwxrwxr-x. 2 student student 70 Jan 31 18:20 project_plans

Documents/project_plans:
total 0

98 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

-rw-rw-r--. 1 student student 0 Jan 31 18:20 season1_project_plan.odf


-rw-rw-r--. 1 student student 0 Jan 31 18:20 season2_project_plan.odf

3. Cree conjuntos de archivos de práctica vacíos para usar en este trabajo de laboratorio. Si
no reconoce inmediatamente el atajo deseado de expansión de la shell, use la solución para
aprender y practicar. Use la función de autocompletado con tab de la shell para localizar los
nombres de ruta de archivos fácilmente.
Cree un total de 12 archivos con nombres tv_seasonX_episodeY.ogg. Reemplace X con
el número de temporada e Y con el episodio de esa temporada, para dos temporadas de seis
episodios cada una.

[student@serverb ~]$ touch tv_season{1..2}_episode{1..6}.ogg


[student@serverb ~]$ ls tv*
tv_season1_episode1.ogg tv_season1_episode5.ogg tv_season2_episode3.ogg
tv_season1_episode2.ogg tv_season1_episode6.ogg tv_season2_episode4.ogg
tv_season1_episode3.ogg tv_season2_episode1.ogg tv_season2_episode5.ogg
tv_season1_episode4.ogg tv_season2_episode2.ogg tv_season2_episode6.ogg

4. Como autor de una serie exitosa de novelas de misterio, los capítulos de su próximo
bestseller se están editando para publicarlos. Cree un total de ocho archivos con nombres
mystery_chapterX.odf. Reemplace la X con los números del 1 al 8.

[student@serverb ~]$ touch mystery_chapter{1..8}.odf


[student@serverb ~]$ ls mys*
mystery_chapter1.odf mystery_chapter4.odf mystery_chapter7.odf
mystery_chapter2.odf mystery_chapter5.odf mystery_chapter8.odf
mystery_chapter3.odf mystery_chapter6.odf

5. Use un solo comando para crear dos subdirectorios denominados season1 y season2 en el
directorio Videos, a fin de organizar los capítulos de la serie de televisión.

[student@serverb ~]$ mkdir -p Videos/season{1..2}


[student@serverb ~]$ ls Videos
season1 season2

6. Mueva los episodios de la serie de televisión correspondientes a los subdirectorios de


temporadas. Use solo dos comandos y especifique los destinos con la sintaxis relativa.

[student@serverb ~]$ mv tv_season1* Videos/season1


[student@serverb ~]$ mv tv_season2* Videos/season2
[student@serverb ~]$ ls -R Videos
Videos:
season1 season2

Videos/season1:
tv_season1_episode1.ogg tv_season1_episode3.ogg tv_season1_episode5.ogg
tv_season1_episode2.ogg tv_season1_episode4.ogg tv_season1_episode6.ogg

Videos/season2:
tv_season2_episode1.ogg tv_season2_episode3.ogg tv_season2_episode5.ogg
tv_season2_episode2.ogg tv_season2_episode4.ogg tv_season2_episode6.ogg

RH124-RHEL8.2-es-1-20200928 99
capítulo 3 | Administración de archivos desde la línea de comandos

7. Cree una jerarquía de directorios de dos niveles con un solo comando para organizar los
capítulos del libro de misterios. Cree my_bestseller en el directorio Documents y
chapters en el nuevo directorio my_bestseller.

[student@serverb ~]$ mkdir -p Documents/my_bestseller/chapters


[student@serverb ~]$ ls -R Documents
Documents:
my_bestseller project_plans

Documents/my_bestseller:
chapters

Documents/my_bestseller/chapters:

Documents/project_plans:
season1_project_plan.odf season2_project_plan.odf

8. Cree tres subdirectorios más directamente en el directorio my_bestseller con un solo


comando. Nombre a estos subdirectorios editor, changes y vacation. La opción -p
(crear elementos principales) no es necesaria porque el directorio principal my_bestseller
ya existe.

[student@serverb ~]$ mkdir Documents/my_bestseller/{editor,changes,vacation}


[student@serverb ~]$ ls -R Documents
Documents:
my_bestseller project_plans

Documents/my_bestseller:
changes chapters editor vacation

Documents/my_bestseller/changes:

Documents/my_bestseller/chapters:

Documents/my_bestseller/editor:

Documents/my_bestseller/vacation:

Documents/project_plans:
season1_project_plan.odf season2_project_plan.odf

9. Cambie al directorio chapters. Use el atajo del directorio de inicio con tilde (~) para
especificar los archivos de recursos, mueva todos los capítulos del libro al directorio
chapters, que ahora es el directorio actual. ¿Cuál es la sintaxis más simple para especificar
el directorio de destino?

[student@serverb ~]$ cd Documents/my_bestseller/chapters


[student@serverb chapters]$ mv ~/mystery_chapter* .
[student@serverb chapters]$ ls
mystery_chapter1.odf mystery_chapter4.odf mystery_chapter7.odf
mystery_chapter2.odf mystery_chapter5.odf mystery_chapter8.odf
mystery_chapter3.odf mystery_chapter6.odf

100 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

10. Envió los primeros dos capítulos al editor para la revisión. Mueva solo esos dos capítulos
al directorio editor para evitar modificarlos durante la revisión. Comenzando por el
subdirectorio de capítulos, use la expansión de llaves con un rango para especificar los
nombres de archivo de los capítulos que se moverán y una ruta relativa para el directorio de
destino.

[student@serverb chapters]$ mv mystery_chapter{1..2}.odf ../editor


[student@serverb chapters]$ ls
mystery_chapter3.odf mystery_chapter5.odf mystery_chapter7.odf
mystery_chapter4.odf mystery_chapter6.odf mystery_chapter8.odf
[student@serverb chapters]$ ls ../editor
mystery_chapter1.odf mystery_chapter2.odf

11. En las vacaciones, tiene la intención de escribir los capítulos 7 y 8. Use un solo comando para
mover los archivos del directorio chapters al directorio vacation. Para especificar los
nombres de archivo de los capítulos, use la expansión de llaves con una lista de secuencias y
sin usar caracteres comodín.

[student@serverb chapters]$ mv mystery_chapter{7,8}.odf ../vacation


[student@serverb chapters]$ ls
mystery_chapter3.odf mystery_chapter5.odf
mystery_chapter4.odf mystery_chapter6.odf
[student@serverb chapters]$ ls ../vacation
mystery_chapter7.odf mystery_chapter8.odf

12. Cambie el directorio de trabajo a ~/Videos/season2 y copie el primer episodio de la


temporada al directorio vacation.

[student@serverb chapters]$ cd ~/Videos/season2


[student@serverb season2]$ cp *episode1.ogg ~/Documents/my_bestseller/vacation

13. Use un solo comando cd para pasar del directorio de trabajo al directorio ~/Documents/
my_bestseller/vacation. Haga una lista de sus archivos. Use el argumento directorio
de trabajo anterior para volver al directorio season2. (Esto se ejecutará correctamente si el
último cambio de directorio con el comando cd se hizo con un comando en lugar de varios
comandos cd). Desde el directorio season2, copie el archivo del episodio 2 en el directorio
vacation. Use el atajo de nuevo para volver al directorio vacation.

[student@serverb season2]$ cd ~/Documents/my_bestseller/vacation


[student@serverb vacation]$ ls
mystery_chapter7.odf mystery_chapter8.odf tv_season2_episode1.ogg
[student@serverb vacation]$ cd -
/home/ec2-user/Videos/season2
[student@serverb season2]$ cp *episode2.ogg ~/Documents/my_bestseller/vacation
[student@serverb vacation]$ cd -
/home/ec2-user/Documents/my_bestseller/vacation
[student@serverb vacation]$ ls
mystery_chapter7.odf tv_season2_episode1.ogg
mystery_chapter8.odf tv_season2_episode2.ogg

14. Los autores de los capítulos 5 y 6 quieren experimentar con posibles cambios. Copie
ambos archivos del directorio ~/Documents/my_bestseller/chapters al directorio
~/Documents/my_bestseller/changes para evitar que estos cambios modifiquen

RH124-RHEL8.2-es-1-20200928 101
capítulo 3 | Administración de archivos desde la línea de comandos

los archivos originales. Diríjase al directorio ~/Documents/my_bestseller. Use la


coincidencia de patrones con corchetes para especificar qué números de capítulo deben
coincidir en el argumento de nombre de archivo del comando cp.

[student@serverb vacation]$ cd ~/Documents/my_bestseller


[student@serverb my_bestseller]$ cp chapters/mystery_chapter[56].odf changes
[student@serverb my_bestseller]$ ls chapters
mystery_chapter3.odf mystery_chapter5.odf
mystery_chapter4.odf mystery_chapter6.odf
[student@serverb my_bestseller]$ ls changes
mystery_chapter5.odf mystery_chapter6.odf

15. Cambie el directorio actual al directorio changes.


Use el comando date +%F con sustitución de comandos para copiar
mystery_chapter5.odf a un archivo nuevo que incluya la fecha completa. El nombre
debe tener el formato mystery_chapter5_YYYY-MM-DD.odf.
Haga otra copia de mystery_chapter5.odf anexando la marca de tiempo actual (como
el número de segundos desde la era, 1-1-1970 00:00 UTC) para garantizar un nombre de
archivo único. Use la sustitución de comandos con el comando date +%s para lograr esto.

[student@serverb my_bestseller]$ cd changes


[student@serverb changes]$ cp mystery_chapter5.odf \
mystery_chapter5_$(date +%F).odf
[student@serverb changes]$ cp mystery_chapter5.odf \
mystery_chapter5_$(date +%s).odf
[student@serverb changes]$ ls
mystery_chapter5_1492545076.odf mystery_chapter5.odf
mystery_chapter5_2017-04-18.odf mystery_chapter6.odf

16. Después de una revisión adicional, usted decide que los cambios a la trama no son
necesarios. Elimine el directorio changes.
De ser necesario, vaya al directorio changes y elimine todos los archivos del directorio. No
puede eliminar un directorio mientras sea el directorio de trabajo actual. Pase al directorio
principal del directorio changes. Intente eliminar el directorio vacío con el comando rm sin
la opción recursiva -r. Este intento debe fallar. Finalmente, use el comando rmdir para
eliminar el directorio vacío; esta acción se ejecutará correctamente.

[student@serverb changes]$ rm mystery*


[student@serverb changes]$ cd ..
[student@serverb my_bestseller]$ rm changes
rm: cannot remove 'changes': Is a directory
[student@serverb my_bestseller]$ rmdir changes
[student@serverb my_bestseller]$ ls
chapters editor vacation

102 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

17. Cuando finalicen las vacaciones, el directorio vacation ya no será necesario. Elimínelo
usando el comando rm con la opción recursive.
Una vez que haya finalizado, regrese al directorio de inicio del usuario student.

[student@serverb my_bestseller]$ rm -r vacation


[student@serverb my_bestseller]$ ls
chapters editor
[student@serverb my_bestseller]$ cd
[student@serverb ~]$

18. Cree un enlace duro al archivo ~/Documents/project_plans/


season2_project_plan.odf denominado ~/Documents/backups/
season2_project_plan.odf.back. Un enlace duro evitará la eliminación accidental del
archivo original y mantendrá actualizado el archivo de respaldo a medida que se realicen
cambios en el original.
Tenga en cuenta que el recuento de enlaces es 2 para los archivos
season2_project_plan.odf.back y season2_project_plan.odf.

[student@serverb ~]$ mkdir ~/Documents/backups


[student@serverb ~]$ ln ~/Documents/project_plans/season2_project_plan.odf \
~/Documents/backups/season2_project_plan.odf.back
[student@serverb ~]$ ls -lR ~/Documents/
/home/student/Documents/:
total 0
drwxrwxr-x. 2 student student 43 Jan 31 18:59 backups
drwxrwxr-x. 4 student student 36 Jan 31 19:42 my_bestseller
drwxrwxr-x. 2 student student 70 Jan 31 18:20 project_plans

/home/student/Documents/backups:
total 4
-rw-rw-r--. 2 student student 0 Jan 31 19:05 season2_project_plan.odf.back

/home/student/Documents/my_bestseller:
total 0
drwxrwxr-x. 2 student student 118 Jan 31 19:39 chapters
drwxrwxr-x. 2 student student 62 Jan 31 19:38 editor

/home/student/Documents/my_bestseller/chapters:
total 0
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter3.odf
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter4.odf
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter5.odf
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter6.odf

/home/student/Documents/my_bestseller/editor:
total 0
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter1.odf
-rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter2.odf

/home/student/Documents/project_plans:
total 4
-rw-rw-r--. 1 student student 0 Jan 31 18:20 season1_project_plan.odf
-rw-rw-r--. 2 student student 0 Jan 31 19:05 season2_project_plan.odf

RH124-RHEL8.2-es-1-20200928 103
capítulo 3 | Administración de archivos desde la línea de comandos

19. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab files-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab files-review grade

Finalizar
En workstation, ejecute el script lab files-review finish para finalizar este trabajo de
laboratorio. Este script elimina todos los archivos y directorios creados en serverb durante el
ejercicio de laboratorio.

[student@workstation ~]$ lab files-review finish

Esto concluye el trabajo de laboratorio.

104 RH124-RHEL8.2-es-1-20200928
capítulo 3 | Administración de archivos desde la línea de comandos

Resumen
En este capítulo, aprendió lo siguiente:

• Los archivos de un sistema Linux se organizan en un árbol de directorios invertido individual


conocido como jerarquía de sistema de archivos.

• Las rutas absolutas comienzan con / y especifican la ubicación de un archivo en la jerarquía del
sistema de archivos.

• Las rutas relativas no comienzan con / y especifican la ubicación de un archivo en relación con el
directorio de trabajo actual.

• Se utilizan cinco comandos clave para administrar archivos: mkdir, rmdir, cp, mv y rm.

• Los enlaces duros y los enlaces blandos son formas diferentes de hacer que varios nombres de
archivo apunten a los mismos datos.

• La shell Bash ofrece funciones de coincidencia de patrones, expansión y sustitución para


ayudarlo a ejecutar los comandos de manera eficiente.

RH124-RHEL8.2-es-1-20200928 105
106 RH124-RHEL8.2-es-1-20200928
capítulo 4

Obtener ayuda en Red Hat


Enterprise Linux
Meta Resolver problemas mediante el uso de sistemas
de ayuda locales.

Objetivos • Encontrar información en las páginas de manual


del sistema Linux local.
• Encontrar información en la documentación
local de GNU Info.

Secciones • Leer páginas de manual (y ejercicio guiado)


• Leer documentación de Info (y ejercicio
guiado)

Trabajo de Obtener ayuda en Red Hat Enterprise Linux


laboratorio

RH124-RHEL8.2-es-1-20200928 107
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Lectura de páginas de manual

Objetivos
Tras finalizar esta sección, podrá encontrar información en las páginas de manual del sistema
Linux local.

Presentación del comando man


Una fuente de documentación que generalmente está disponible en el sistema local son las
páginas de manual del sistema o páginas del manual Estas páginas se envían como parte de los
paquetes de software para los que proporcionan documentación, y se puede acceder a ellas
desde la línea de comandos por medio del comando man.

El histórico manual para programadores de Linux, del cual provienen las páginas de manual, era
tan extenso que se convertía en varias secciones impresas. Cada sección contiene información
sobre un tema en particular.

Secciones comunes del manual de Linux

Sección Tipo de contenido

1 Comandos del usuario (ejecutables y programas de la shell)

2 Llamadas del sistema (rutinas del kernel invocadas desde el espacio del usuario)

3 Funciones de la biblioteca (proporcionadas por bibliotecas de programas)

4 Archivos especiales (como archivos de dispositivos)

5 Formatos de archivos (para muchos archivos y estructuras de configuración)

6 Juegos (sección histórica destinada a programas de entretenimiento)

7 Convenciones, estándares y páginas varias (protocolos, sistemas de archivos)

8 Comandos de administración del sistema y con privilegios (tareas de


mantenimiento)

9 API del kernel de Linux (llamadas del kernel internas)

Para diferenciar nombres de temas idénticos en secciones diferentes, las referencias de las
páginas de manual incluyen el número de la sección entre paréntesis después del tema. Por
ejemplo: por un lado, en passwd(1) se describe el comando para cambiar contraseñas; por otro
lado, en passwd(5) se explica el formato de archivo /etc/passwd para almacenar cuentas de
usuario local.

Si desea leer páginas de manual específicas, use man topic. El contenido aparece en una
pantalla a la vez. El comando man busca en las secciones del manual en orden alfanumérico. Por
ejemplo, man passwd muestra passwd(1) de manera predeterminada. Para visualizar el tema de

108 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

una página de manual de una sección específica, incluya el argumento de número de sección: man
5 passwd muestra passwd(5).

Navegue y busque páginas de manual


La capacidad de realizar búsquedas por temas de manera eficiente y de navegar a través de
páginas de manual es una habilidad de administración fundamental. Las herramientas de la
GUI facilitan la configuración de recursos comunes del sistema, pero usar la interfaz de línea de
comandos es aún más eficiente. Para navegar la línea de comandos con eficacia, debe poder
encontrar la información que necesita en las páginas de manual.

En la siguiente tabla, se incluyen los comandos de navegación básicos al visualizar páginas de


manual:

Navegar por las páginas de manual

Comando Resultado

Barra espaciadora Avanzar (abajo) una pantalla

AvPág Avanzar (abajo) una pantalla

RePág Retroceder (arriba) una pantalla

Flecha abajo Avanzar (abajo) una línea

Flecha arriba Retroceder (arriba) una línea

D Avanzar (abajo) la mitad de una pantalla

U Retroceder (arriba) la mitad de una pantalla

/secuencia Avanzar (abajo) para buscar la secuencia en la


página de manual

N Repetir la búsqueda anterior más adelante


(abajo) en la página del manual

Mayús+N Repetir la búsqueda anterior más atrás


(arriba) en la página del manual

G Ir al inicio de la página de manual

Mayús+G Ir al final de la página de manual

Q Salir de man y regresar al prompt de shell de


comandos

RH124-RHEL8.2-es-1-20200928 109
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Importante
Al realizar búsquedas, la secuencia permite usar sintaxis de expresiones regulares.
Mientras que el texto simple (como passwd) funciona según lo esperado, las
expresiones regulares usan metacaracteres (como $, *, . y ^) para lograr una
coincidencia de patrón más sofisticada. Por lo tanto, la realización de búsquedas con
secuencias que incluyen metacaracteres de expresión de programa, como make $$
$, puede arrojar resultados imprevistos.

En Red Hat System Administration II y en el tema del manual regex(7), se abordan


la sintaxis y las expresiones regulares.

Lectura de las páginas de manual


Cada tema se separa en varias partes. La mayoría de los temas comparten los mismos
encabezados y se presentan en el mismo orden. Normalmente, un tema no presenta todos los
encabezados, porque no todos los títulos se aplican a todos los temas.

Estos son algunos encabezados comunes:

Encabezados

Encabezado Descripción

NAME (NOMBRE) Nombre del tema. Por lo general, un nombre de comando o archivo.
Descripción muy breve.

SYNOPSIS Resumen de la sintaxis del comando.


(SINOPSIS)

DESCRIPTION Descripción detallada que proporciona una comprensión básica del


(DESCRIPCIÓN) tema.

OPTIONS Explicación de las opciones de ejecución del comando.


(OPCIONES)

EXAMPLES Ejemplos de cómo usar el comando, la función o el archivo.


(EJEMPLOS)

FILES (ARCHIVOS) Una lista de archivos y directorios relacionados con la página del manual.

SEE ALSO Información relacionada, normalmente otros temas de la página de


(CONSULTE manual.
TAMBIÉN)

BUGS (ERRORES) Errores conocidos en el software.

AUTHOR (AUTOR) Información sobre las personas que han contribuido al desarrollo del
tema.

Búsqueda de páginas de manual por palabra clave


Una búsqueda de páginas de manual por palabra clave se realiza con la palabra clave man -
k keyword, que arroja una lista de temas de páginas de manual con números de sección que
coinciden con la palabra clave.

110 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

[student@desktopX ~]$ man -k passwd


checkPasswdAccess (3) - query the SELinux policy database in the kernel.
chpasswd (8) - update passwords in batch mode
ckpasswd (8) - nnrpd password authenticator
fgetpwent_r (3) - get passwd file entry reentrantly
getpwent_r (3) - get passwd file entry reentrantly
...
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
passwd (5) - password file
passwd.nntp (5) - Passwords for connecting to remote NNTP servers
passwd2des (3) - RFS password encryption
...

Los temas conocidos de administración del sistema se tratan en las secciones 1 (comandos
del usuario), 5 (formatos de archivos) y 8 (comandos administrativos). Los administradores
que emplean ciertas herramientas para la solución de problemas también recurren a la sección
2 (llamadas del sistema). Las secciones restantes generalmente se usan para consulta de
programadores y administración avanzada.

nota
Las búsquedas por palabra clave se basan en un índice generado con el comando
mandb(8), que se debe ejecutar como usuario root. El comando se ejecuta a diario
a través de cron.daily o de anacrontab durante la hora posterior al arranque si
está desactualizado.

Importante
El comando man, opción -K (mayúscula), realiza una búsqueda en páginas de
texto completo, no solo en títulos y descripciones, como lo hace la opción -k. Una
búsqueda en texto completo emplea más recursos del sistema y lleva más tiempo.

Referencias
Páginas de manual: man(1), mandb(8), man-pages(7), less(1), intro(1),
intro(2), intro(5), intro(7), intro(8)

RH124-RHEL8.2-es-1-20200928 111
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Ejercicio Guiado

Lectura de páginas de manual


En este ejercicio, practicará cómo encontrar información relevante con las opciones y los
argumentos de man.

Resultados
Deberá ser capaz de usar el sistema de manual de Linux man para encontrar información útil
mediante la búsqueda y la navegación.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab help-manual start. Crea el archivo llamado


manual.

[student@workstation ~]$ lab help-manual start

1. En workstation, vea la página de manual gedit. Vea las opciones para editar un archivo
específico con gedit desde la línea de comandos.
Use una de las opciones de la página de manual gedit para abrir el archivo /home/
student/manual por medio de gedit con el cursor al final del archivo.

1.1. Visualice la página de manual gedit.

[student@workstation ~]$ man gedit

GEDIT(1) General Commands Manual GEDIT(1)


NAME
gedit - text editor for the GNOME Desktop

SYNOPSIS
gedit [OPTION...] [FILE...] [+LINE[:COLUMN]]
gedit [OPTION...] -
...output omitted...

1.2. En la página de manual gedit, vea las opciones para editar un archivo específico
desde la línea de comandos.

112 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

...output omitted...
FILE Specifies the file to open when gedit starts.
...output omitted...
+LINE For the first file, go to the line specified by LINE (do not insert
a space between the "+" sign and the number). If LINE is missing, go to the last
line.
...output omitted...

Presione q para salir de la página de manual.

1.3. Use el comando gedit + para abrir el archivo manual. El número de línea que falta
junto a la opción + abre un archivo que se pasó como argumento con el cursor al final
de la última línea.

[student@workstation ~]$ gedit + manual

the quick brown fox just came over to greet the lazy poodle!

Confirme que el archivo se abre con el cursor al final de la última línea en el archivo.
Presione Ctrl+q para cerrar la aplicación.

2. Lea la página de manual su(1).


Tenga en cuenta que cuando se omite el usuario, el comando su presupone que el usuario
es root. Si el comando su viene seguido por un solo guion (-), se inicia una shell de inicio
de sesión secundaria. Sin el guion, se crea una shell de no inicio de sesión, que coincide con
el entorno actual del usuario.

[student@workstation ~]$ man 1 su

SU(1) User Commands SU(1)


NAME
su - run a command with substitute user and group ID

SYNOPSIS
su [options] [-] [user [argument...]]

DESCRIPTION
su allows to run commands with a substitute user and group ID.
When called without arguments, su defaults to running an interactive
shell as root.
...output omitted...
OPTIONS
...output omitted...
-, -l, --login
Start the shell as a login shell with an environment similar to a real login
...output omitted...

RH124-RHEL8.2-es-1-20200928 113
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

nota
Tenga en cuenta que las opciones separadas por coma en una sola línea, como -, -l
y --login, todas dan como resultado el mismo comportamiento.

Presione q para salir de la página de manual.

3. El comando man también tiene sus propias páginas de manual.

[student@workstation ~]$ man man


MAN(1) Manual pager utils MAN(1)

NAME
man - an interface to the on-line reference manuals
...output omitted...
DESCRIPTION
man is the system's manual pager. Each page argument given to man is
normally the name of a program, utility or function. The manual page
associated with each of these arguments is then found and displayed.
A section, if provided, will direct man to look only in that section
of the manual.
...output omitted...

Presione q para salir de la página de manual.

4. Todas las páginas de manual se encuentran en /usr/share/man. Localice las páginas de


manual, el código binario y el código fuente ubicados en el directorio /usr/share/man
con el comando whereis.

[student@workstation ~]$ whereis passwd


passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/
man/man5/passwd.5.gz

5. Use el comando man -k zip para enumerar información detallada sobre un archivo ZIP.

[student@workstation ~]$ man -k zip


...output omitted...
zipinfo (1) - list detailed information about a ZIP archive
zipnote (1) - write the comments in zipfile to stdout, edit comments and
rename files in zipfile
zipsplit (1) - split a zipfile into smaller zipfiles

114 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

6. Use man -k boot para mostrar la página de manual que contiene una lista de los
parámetros que se pueden pasar al kernel durante el proceso de arranque.

[student@workstation ~]$ man -k boot


...output omitted...
bootctl (1) - Control the firmware and boot manager settings
bootparam (7) - introduction to boot time parameters of the Linux kernel
bootup (7) - System bootup process
...output omitted...

7. Use man -k ext4 para encontrar el comando que se usa para ajustar los parámetros del
sistema de archivos ext4.

[student@workstation ~]$ man -k ext4


...output omitted...
resize2fs (8) - ext2/ext3/ext4 file system resizer
tune2fs (8) - adjust tunable filesystem parameters on ext2/ext3/ext4
filesystems

Finalizar
En workstation, ejecute el script lab help-manual finish para terminar este ejercicio.

[student@workstation ~]$ lab help-manual finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 115
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Leer documentación de Info

Objetivos
Tras finalizar esta sección, los estudiantes deberán ser capaces de encontrar información en la
documentación local de GNU Info.

Presentación de GNU Info


Las páginas de manual tienen un formato que resulta útil como referencia para los comandos,
pero no tan útil como documentación general. Para los documentos de este tipo, como parte del
proyecto GNU, se desarrolló un sistema de documentación en línea diferente, conocido como
GNU Info. Los documentos de Info son un recurso importante en un sistema Red Hat Enterprise
Linux porque muchos componentes y utilidades fundamentales, como el paquete coreutils y las
bibliotecas estándares glibc, se desarrollan como parte del proyecto GNU o usan el sistema de
documentos Info.

Importante
Podría preguntarse por qué hay dos sistemas locales de documentación, páginas
de manual y documentos Info. Esto se debe en parte a cuestiones prácticas y, por
otro lado, esto tiene que ver con la forma en que Linux y sus aplicaciones han sido
desarrollados por varias comunidades de open source a lo largo de los años.

Las páginas de manual tienen un formato mucho más formal y, por lo general,
documentan un comando o función específicos de un paquete de software y están
estructuradas como archivos de texto individuales. Los documentos Info suelen
abarcar paquetes de software particulares como un todo, tienden a tener ejemplos
más prácticos de cómo usar el software y están estructurados como documentos de
hipertexto.

Debe estar familiarizado con ambos sistemas para aprovechar al máximo la


información disponible desde el sistema.

Leer documentación de Info


Para iniciar el visor de documentos de Info, use el comando pinfo. pinfo se abre en el directorio
superior.

116 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Figura 4.1: Visor de documentos de pinfo Info, directorio superior

La documentación de Info es integral y tiene hipervínculos. Es posible generar páginas de Info


en varios formatos. Por el contrario, las páginas de manual están optimizadas para la impresión.
El formato de Info es más flexible que las páginas de manual, lo que permite realizar análisis
minuciosos de comandos y conceptos complejos. Al igual que las páginas de manual, los nodos de
Info se leen desde la línea de comandos mediante el uso del comando pinfo.

Una página de manual típica tiene una pequeña cantidad de contenido que se centra en un
tema, comando, herramienta o archivo en particular. La documentación de Info es un documento
integral. Info proporciona las siguientes mejoras:

• Un solo documento para un sistema grande que contiene toda la información necesaria para ese
sistema

• Hipervínculos

• Un índice completo y navegable del documento

• Una búsqueda de texto completa de todo el documento.

Algunos comandos y utilidades tienen páginas de man y documentación de Info; por lo general, la
documentación de Info incluye más detalles. Compare las diferencias en la documentación de tar
con los comandos man y pinfo:

[user@host ~]$ man tar


[user@host ~]$ pinfo tar

El lector de pinfo es más avanzado que el comando info original. Para explorar un tema
específico, use el comando pinfo topic. El comando pinfo sin un argumento abre el directorio
superior. La documentación nueva se pone a disposición en pinfo cuando se instalan sus
paquetes de software.

nota
Si no existe ningún tema de Info en el sistema para una entrada particular que
solicitó, Info buscará una página de manual coincidente y la mostrará en su lugar.

RH124-RHEL8.2-es-1-20200928 117
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Comparación entre la navegación por GNU Info y las


páginas de manual
El comando pinfo y el comando man utilizan teclas de navegación un tanto distintas. La siguiente
tabla compara las teclas de navegación para ambos comandos:

Comandos pinfo y man: comparación de enlaces claves

Navegación pinfo man

Avanzar (abajo) una pantalla AvPág o Espacio AvPág o Espacio

Retroceder (arriba) una pantalla RePág o b RePág o b

Mostrar el directorio de temas d -

Avanzar (abajo) la mitad de una pantalla - d

Mostrar el nodo principal de un tema u -

Mostrar la parte superior (arriba) de un tema INICIO g

Retroceder (arriba) la mitad de una pantalla - u

Avanzar (abajo) al siguiente hipervínculo Flecha abajo -

Abrir el tema en la posición del cursor Intro -

Avanzar (abajo) una línea - Flecha abajo


o Intro

Retroceder (arriba) al hipervínculo anterior Flecha arriba -

Retroceder (arriba) una línea - Flecha arriba

Buscar un patrón /secuencia /secuencia

Mostrar siguiente nodo (capítulo) en tema n -

Repetir la búsqueda anterior hacia delante / luego Intro n


(abajo)

Mostrar nodo anterior (capítulo) en tema p -

Repetir la búsqueda anterior hacia atrás - N


(arriba)

Salir del programa q q

118 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Referencias
pinfo info (Info: Una introducción)

pinfo pinfo (Documentación para pinfo)

El proyecto GNU
http://www.gnu.org/gnu/thegnuproject.html

Páginas de manual pinfo(1) e info(1)

RH124-RHEL8.2-es-1-20200928 119
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Ejercicio Guiado

Leer documentación de Info


En este ejercicio, buscará información almacenada en documentos de GNU Info navegando
esos documentos con herramientas de línea de comandos.

Resultados
Deberá ser capaz de navegar la documentación de GNU Info con herramientas de línea de
comandos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab help-info start.

[student@workstation ~]$ lab help-info start

1. En workstation, inicie pinfo sin ningún argumento.

[student@workstation ~]$ pinfo

2. Navegue hasta el tema Common options (Opciones comunes).


Use Flecha arriba o Flecha abajo hasta que se resalte (coreutils) Common
options.

Figura 4.2: Documentación de Bash

3. Presione Intro para ver este tema.

Figura 4.3: Tema de Info Common options

120 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

4. Navegue por este tema de Info. Aprenda si las opciones con estilo prolongado pueden
abreviarse.
Use las teclas RePág y AvPág para navegar por el tema. Efectivamente, muchos programas
permiten que se abrevien las opciones prolongadas.

5. Determine el significado de los símbolos -- cuando se usan como argumentos de


comandos.
Los símbolos -- señalan el final de las opciones del comando y el inicio de los argumentos
del comando en el caso de comandos complejos en los que posiblemente el analizador de
la línea de comandos de la shell no haga correctamente la distinción.

6. Sin salir de pinfo, desplácese hacia arriba hasta el nodo GNU Coreutils
Presione u para desplazarse hacia arriba hasta el nodo superior del tema.

7. Vuelva al tema de nivel superior.


Presione u nuevamente. Observe que cuando se posiciona en la parte superior del nodo
de un tema, el desplazamiento hacia arriba lo regresa al directorio de temas. De manera
alternativa, si presiona d desde cualquier nivel o tema, se desplazará directamente al
directorio de temas.

8. Busque el patrón coreutils y seleccione el tema.


Presione / seguida del patrón de búsqueda “coreutils”. Con el tema resaltado, presione
Intro.

Figura 4.4: Resultado de la búsqueda

9. En el menú de la parte superior, ubique y seleccione Output of entire files (Salida


de archivos enteros) presionando n. Navegue por el tema.
Use Intro para seleccionar cat invocation (invocación de cat). Navegue por el tema
con las teclas de flechas.

10. Suba dos niveles para volver a GNU Coreutils. Vaya a Summarizing files (Resumir
archivos).
Presione Intro para seleccionar el tema y, luego, explore el tema.

11. Presione q para salir de pinfo.

12. Use el comando pinfo nuevamente y especifique coreutils como el tema de destino
desde la línea de comandos.

[student@workstation ~]$ pinfo coreutils

13. Seleccione el tema Disk usage (Uso de disco).


Presione Flecha abajo para resaltar Disk usage (Uso de disco) y, luego, presione
Intro para seleccionar este tema.

14. Lea los subtemas df invocation (invocación de df) y du invocation (invocación de


du).
Utilice las teclas de flecha para resaltar un tema, RePág y AvPág para navegar por el texto;
luego, presione u para subir un nivel. Presione q para salir cuando termine.

RH124-RHEL8.2-es-1-20200928 121
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Finalizar
En workstation, ejecute el script lab help-info finish para terminar este ejercicio.

[student@workstation ~]$ lab help-info finish

Esto concluye el ejercicio guiado.

122 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Trabajo de laboratorio

Obtener ayuda en Red Hat


Enterprise Linux
Lista de verificación de rendimiento
En este ejercicio de laboratorio, buscará información para ayudarlo a completar tareas en
páginas de manual y documentos de GNU Info.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Encuentre los comandos relevantes buscando en las páginas de manual y en los nodos de
Info.

• Aprenda opciones nuevas para comandos de documentación que se usan con frecuencia.

• Use herramientas adecuadas para ver e imprimir documentación y otros archivos que no
son texto.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab help-review start.

[student@workstation ~]$ lab help-review start

1. En workstation, determine cómo preparar una página de manual para su impresión.


Específicamente, determine qué formato o lenguaje de representación se usa para imprimir.
2. Cree un archivo de salida con formato de la página de manual passwd. Ponga al archivo el
nombre passwd.ps. Determine el formato del contenido del archivo. Investigue el contenido
del archivo passwd.ps.

nota
Cree una salida con formato de la página de manual passwd con el siguiente
comando:

[student@workstation $]$ man -t passwd > passwd.ps

El símbolo > redirige el contenido de la página de manual al archivo passwd.ps.


Este comando se enseña en más detalle en un capítulo posterior.

3. Use man para aprenderse los comandos que se usan para ver e imprimir archivos en formato
PostScript.
4. Aprenda a usar el visor de evince(1) en modo de vista previa. Además, determine la manera
de abrir un documento a partir de una página específica.

RH124-RHEL8.2-es-1-20200928 123
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

5. Vea su archivo en formato PostScript con las diversas opciones evince que investigó. Cierre
su archivo de documento cuando termine.
6. Use el comando man para investigar lp(1) y determinar cómo imprimir cualquier documento
a partir de una página específica. Sin ingresar ningún comando (ya que no hay ninguna
impresora), aprenda la sintaxis, en un comando, para imprimir solo las páginas 2 y 3 de su
archivo en formato PostScript.
7. Use pinfo para buscar información sobre el visor evince en la documentación de GNU
Info.
8. Use Firefox para abrir el directorio de documentación de paquetes del sistema y navegue por
el subdirectorio de paquetes man-db. Vea los manuales provistos.
9. Use el navegador Firefox para localizar y navegar por el subdirectorio de paquetes
initscripts. Vea el archivo sysconfig.txt, en el que se describen opciones de
configuración del sistema importantes almacenadas en el directorio /etc/sysconfig.

Evaluación
En workstation, ejecute lab help-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab help-review grade

Finalizar
En workstation, ejecute el script lab help-review finish para terminar este ejercicio.

[student@workstation ~]$ lab help-review finish

Esto concluye el trabajo de laboratorio.

124 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Solución

Obtener ayuda en Red Hat


Enterprise Linux
Lista de verificación de rendimiento
En este ejercicio de laboratorio, buscará información para ayudarlo a completar tareas en
páginas de manual y documentos de GNU Info.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Encuentre los comandos relevantes buscando en las páginas de manual y en los nodos de
Info.

• Aprenda opciones nuevas para comandos de documentación que se usan con frecuencia.

• Use herramientas adecuadas para ver e imprimir documentación y otros archivos que no
son texto.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab help-review start.

[student@workstation ~]$ lab help-review start

1. En workstation, determine cómo preparar una página de manual para su impresión.


Específicamente, determine qué formato o lenguaje de representación se usa para imprimir.

1.1. Use el comando man man para determinar cómo preparar una página de manual para
su impresión.

[student@worksation ~]$ man man


...output omitted...

Presione q para salir de la página de manual.

nota
man usa -t a fin de preparar una página del manual para su impresión usando
PostScript.

2. Cree un archivo de salida con formato de la página de manual passwd. Ponga al archivo el
nombre passwd.ps. Determine el formato del contenido del archivo. Investigue el contenido
del archivo passwd.ps.

RH124-RHEL8.2-es-1-20200928 125
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

nota
Cree una salida con formato de la página de manual passwd con el siguiente
comando:

[student@workstation $]$ man -t passwd > passwd.ps

El símbolo > redirige el contenido de la página de manual al archivo passwd.ps.


Este comando se enseña en más detalle en un capítulo posterior.

2.1. Use el comando man -t para crear un archivo con formato de la página de manual
passwd.

[student@workstation ~]$ man -t passwd > passwd.ps


[student@workstation ~]$ ls -al
...output omitted...
-rw-rw-r--. 1 student student 19947 Feb 26 11:14 passwd.ps
...output omitted...

2.2. Use el comando file para determinar el formato del contenido del archivo.

[student@workstation ~]$ file /home/student/passwd.ps


passwd.ps: PostScript document text conforming DSC level 3.0

2.3. Use el comando less para ver el archivo /home/student/passwd.ps.

[student@workstation ~]$ less /home/student/passwd.ps


%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Tue Feb 26 11:14:40 2019
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Symbol
%%DocumentSuppliedResources: procset grops 1.22 3
...output omitted...

nota
La salida de file afirma que el archivo está en formato PostScript, y usted lo ha
confirmado al ver su contenido. Observe las líneas del encabezado de información
de PostScript. Use q para salir del comando less.

3. Use man para aprenderse los comandos que se usan para ver e imprimir archivos en formato
PostScript.

3.1. Use man para aprenderse los comandos que se usan para ver e imprimir archivos en
formato PostScript.

126 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

[student@workstation ~]# man -k postscript viewer


evince (1) - GNOME document viewer
evince-previewer (1) - show a printing preview of PostScript and PDF documents
evince-thumbnailer (1) - create png thumbnails from PostScript and PDF documents
gcm-viewer (1) - GNOME Color Manager Profile Viewer Tool
gnome-logs (1) - log viewer for the systemd journal
grops (1) - PostScript driver for groff
pango-view (1) - Pango text viewer
pluginviewer (8) - list loadable SASL plugins and their properties

nota
Si usa varias palabras con la opción -k, se encuentran páginas de manual que
coinciden con cualquier palabra; las que contienen "postscript" o "visor" en sus
descripciones. Observe los comandos evince(1) en la salida.

4. Aprenda a usar el visor de evince(1) en modo de vista previa. Además, determine la manera
de abrir un documento a partir de una página específica.

4.1. Use el comando man evince para aprender a usar el visor en modo de vista previa.

[student@workstation ~]$ man evince


...output omitted...

Presione q para salir de la página de manual.

nota
La opción -w (o --preview) abre evince en modo de vista previa. La opción -i
se usa para especificar una página de inicio.

5. Vea su archivo en formato PostScript con las diversas opciones evince que investigó. Cierre
su archivo de documento cuando termine.

5.1. Use el comando evince para abrir /home/student/passwd.ps.

[student@workstation ~]$ evince /home/student/passwd.ps

5.2. Use el comando evince -w /home/student/passwd.ps para abrir el archivo en


modo de vista previa.

[student@workstation ~]$ evince -w /home/student/passwd.ps

5.3. Use el comando evince -i 3 /home/student/passwd.ps para abrir el archivo en


la página 3.

[student@workstation ~]$ evince -i 3 /home/student/passwd.ps

RH124-RHEL8.2-es-1-20200928 127
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

nota
Mientras que el modo evince normal permite una visualización en pantalla
completa y con estilo de presentación, el modo de vista previa evince resulta útil
para tareas rápidas de navegación e impresión. Observe el icono de impresión en
la parte superior.

6. Use el comando man para investigar lp(1) y determinar cómo imprimir cualquier documento
a partir de una página específica. Sin ingresar ningún comando (ya que no hay ninguna
impresora), aprenda la sintaxis, en un comando, para imprimir solo las páginas 2 y 3 de su
archivo en formato PostScript.

6.1. Use el comando man lp para determinar cómo imprimir páginas específicas de un
documento.

[student@workstation ~]$ man lp


...output omitted...

Presione q para salir de la página de manual.

nota
En lp(1), aprendió que la opción -P permite especificar páginas. El comando lp
envía la solicitud de impresión a la cola de la impresora predeterminada, y envía solo
el rango de páginas que empieza en 2 y termina en 3. Por lo tanto, una respuesta
válida es lp passwd.ps -P 2-3.

7. Use pinfo para buscar información sobre el visor evince en la documentación de GNU
Info.

7.1. Use pinfo command para buscar información sobre el visor evince en la
documentación de GNU Info.

[student@workstation ~]$ pinfo evince

nota
Observe que, en su lugar, aparece la página de manual evince(1). El visor de
documentos pinfo busca la página de manual relevante cuando no existe ningún
nodo de documentación de GNU pertinente al tema solicitado. Presione q para salir.

8. Use Firefox para abrir el directorio de documentación de paquetes del sistema y navegue por
el subdirectorio de paquetes man-db. Vea los manuales provistos.

8.1. Use firefox /usr/share/doc para ver la documentación del sistema. Vaya al
subdirectorio man-db. Haga clic en los manuales para verlos.

[student@workstation ~]$ firefox /usr/share/doc

128 RH124-RHEL8.2-es-1-20200928
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

nota
Se pueden crear marcadores para todos los directorios de uso frecuente. Después
de navegar al directorio man-db, haga clic para abrir y ver la versión del texto
del manual; luego, ciérrelo. Haga clic para abrir la versión de PostScript. Como
se observó anteriormente, evince es el visor predeterminado del sistema para
documentos en formato PDF y PostScript. Es posible que desee regresar a estos
documentos en el futuro para obtener más conocimientos sobre man. Cuando
termine, cierre el visor evince.

9. Use el navegador Firefox para localizar y navegar por el subdirectorio de paquetes


initscripts. Vea el archivo sysconfig.txt, en el que se describen opciones de
configuración del sistema importantes almacenadas en el directorio /etc/sysconfig.

9.1. Use el navegador Firefox para localizar el subdirectorio de paquetes initscripts.


Observe la conveniencia que ofrece un navegador a la hora de localizar y visualizar
documentación del sistema local. Cierre el documento y Firefox cuando termine.

Evaluación
En workstation, ejecute lab help-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab help-review grade

Finalizar
En workstation, ejecute el script lab help-review finish para terminar este ejercicio.

[student@workstation ~]$ lab help-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 129
capítulo 4 | Obtener ayuda en Red Hat Enterprise Linux

Resumen
En este capítulo, aprendió lo siguiente:

• Las páginas de manual se visualizan con el comando man y proporcionan información sobre los
componentes de un sistema Linux, como archivos, comandos y funciones.

• Por convención, cuando se hace referencia a una página de manual, el nombre de una página va
seguido de su número de sección entre paréntesis.

• Los documentos Info se visualizan con el comando pinfo y están formados por una colección
de nodos de hipertexto, que proporcionan información sobre los paquetes de software como un
todo.

• Las teclas de navegación que utilizan man y pinfo son un tanto distintas.

130 RH124-RHEL8.2-es-1-20200928
capítulo 5

Creación, visualización y edición


de archivos de texto
Meta Crear, visualizar y editar archivos de texto desde
una salida de comando o en un editor de texto.

Objetivos • Guardar la salida de comando o los errores


en un archivo con la redirección de shell y
procesar la salida de comando a través de
varios programas de línea de comandos con las
tuberías.
• Crear y editar archivos de texto con el editor
vim.
• Usar las variables de shell para facilitar la
ejecución de comandos, y editar los scripts de
arranque de Bash para configurar las variables
de shell y del entorno a fin de modificar el
comportamiento de la shell y de los programas
ejecutados desde la shell.

Secciones • Redireccionamiento de la salida a un archivo o


programa (y cuestionario)
• Edición de archivos de texto desde el prompt
de shell (y ejercicio guiado)
• Modificación del entorno de shell (y ejercicio
guiado)

Trabajo de Creación, visualización y edición de archivos de


texto
laboratorio

RH124-RHEL8.2-es-1-20200928 131
capítulo 5 | Creación, visualización y edición de archivos de texto

Redireccionamiento de la salida a un
archivo o programa

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de guardar la salida o los errores en un archivo
con la redirección de shell y procesar la salida de comando a través de varios programas de línea
de comandos con las tuberías.

Entrada estándar, salida estándar y error estándar


Un programa o proceso en ejecución debe leer entradas de alguna parte y escribir salidas en
alguna parte. Un comando ejecutado desde el prompt de shell normalmente lee su entrada desde
el teclado y envía su salida a su ventana de terminal.

Un proceso usa canales numerados denominados descriptores de archivo para recibir entradas y
enviar salidas. Todos los procesos comienzan con al menos tres descriptores de archivo. Entrada
estándar(canal 0) lee la entrada desde el teclado. Salida estándar(canal 1) envía la salida normal
al terminal. Error estándar(canal 2) envía mensajes de error al terminal. Si un programa abre
conexiones independientes para otros archivos, puede usar descriptores de archivo con números
superiores.

Figura 5.1: Canales de E/S de un proceso (descriptores de archivo)

Canales (descriptores de archivo)

Número Nombre de canal Descripción Conexión Uso


predeterminada

0 stdin Entrada estándar Teclado Solo lectura

1 stdout Salida estándar Terminal Solo escritura

2 stderr Error estándar Terminal Solo escritura

Más filename Otros archivos Ninguno Lectura y escritura


de 3

132 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Redireccionamiento de la salida a un archivo


Redireccionamiento de E/S cambia la forma en la que el proceso obtiene su entrada o salida.
En lugar de obtener la entrada del teclado, o enviar la salida y los errores al terminal, el
proceso lee o escribe en los archivos. El redireccionamiento le permite guardar en un archivo
mensajes que normalmente se envían a la ventana del terminal. Alternativamente, puede usar
el redireccionamiento para descartar la salida o los errores, de manera que no se muestren en el
terminal ni se guarden.

El redireccionamiento de stdout evita que la salida de un proceso aparezca en el terminal. Como


se puede ver en la siguiente tabla, el redireccionamiento de únicamente stdout no evita que los
mensajes de error stderr aparezcan en el terminal. Si el archivo no existe, se creará. Si el archivo
existe y el redireccionamiento no es uno que se agregue al archivo, el contenido del archivo se
sobrescribirá.

Si desea descartar mensajes, el archivo especial /dev/null descarta discretamente la salida del
canal redirigida a él y es siempre un archivo vacío.

Operadores de redireccionamiento de salida

Uso Explicación Ayuda visual

redirigir
stdout para
> archivo
sobrescribir
un archivo

redirigir
stdout para
>> archivo
agregar a
un archivo

redirigir
stderr para
2> archivo
sobrescribir
un archivo

descartar
mensajes
de error de
2> /dev/null stderr
mediante el
redireccionamiento
a /dev/null

> archivo 2>&1 redirigir


stdout y
stderr para
&> archivo sobrescribir el
mismo archivo

RH124-RHEL8.2-es-1-20200928 133
capítulo 5 | Creación, visualización y edición de archivos de texto

Uso Explicación Ayuda visual

>> redirigir
archivo 2>&1 stdout y
stderr para
agregar al
&>> archivo
mismo archivo

Importante
El orden de las operaciones de redireccionamiento es importante. La siguiente
secuencia redirige la salida estándar a file y luego redirige el error estándar al
mismo lugar que la salida estándar (file).

> file 2>&1

Sin embargo, la siguiente secuencia realiza el redireccionamiento en el orden


opuesto. Redirige el error estándar al lugar predeterminado para la salida estándar
(la ventana de terminal, de modo que no hay cambios) y, luego, redirige solo la
salida estándar a file.

2>&1 > file

Por esto, algunas personas prefieren usar los operadores de redireccionamiento


fusionados:

&>archivo en lugar de >archivo 2>&1

&>>archivo en lugar de >>archivo 2>&1


(en Bash 4/RHEL 6 y
posteriores)

Sin embargo, otros administradores de sistemas y programadores que también


usan otras shells relacionadas con bash (denominadas shells compatibles con
Bourne) para los scripts de comandos piensan que se deben evitar los operadores
de redireccionamiento fusionados más nuevos, dado que no están estandarizados ni
implementados en todas aquellas shells y tienen otras limitaciones.

Los autores de este curso tienen una postura neutral respecto de este tema, y es
probable que se encuentren ambas sintaxis en el campo.

Ejemplos de redireccionamiento de salidas


El uso del redireccionamiento permite simplificar muchas tareas de administración de rutina. Use
la tabla anterior como ayuda mientras analiza los siguientes ejemplos:

• Guarde una marca de tiempo para su posterior consulta.

[user@host ~]$ date > /tmp/saved-timestamp

• Copie las últimas 100 líneas de un archivo de registro en otro archivo.

134 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

[user@host ~]$ tail -n 100 /var/log/dmesg > /tmp/last-100-boot-messages

• Concatenar cuatro archivos en uno.

[user@host ~]$ cat file1 file2 file3 file4 > /tmp/all-four-in-one

• Enumere los nombres de archivo regulares y ocultos del directorio de inicio en un archivo.

[user@host ~]$ ls -a > /tmp/my-file-names

• Adjunte la salida a un archivo existente.

[user@host ~]$ echo "new line of information" >> /tmp/many-lines-of-information


[user@host ~]$ diff previous-file current-file >> /tmp/tracking-changes-made

• Los siguientes comandos generan mensajes de error porque algunos directorios del sistema
son inaccesibles para los usuarios normales. Observe cómo se redirigen los mensajes de error.
Redirija los errores a un archivo mientras se visualiza la salida de un comando normal en el
terminal.

[user@host ~]$ find /etc -name passwd 2> /tmp/errors

• Guarde la salida de un proceso y los mensajes de error en archivos separados.

[user@host ~]$ find /etc -name passwd > /tmp/output 2> /tmp/errors

• Omita y descarte los mensajes de error.

[user@host ~]$ find /etc -name passwd > /tmp/output 2> /dev/null

• Almacene la salida y los errores generados en forma conjunta.

[user@host ~]$ find /etc -name passwd &> /tmp/save-both

• Adjunte la salida y los errores generados en un archivo existente.

[user@host ~]$ find /etc -name passwd >> /tmp/save-both 2>&1

Construcción de tuberías
Una tubería es una secuencia de uno o más comandos separados por el carácter de barra vertical
(|). Una tubería conecta la salida estándar del primer comando con la entrada estándar del
siguiente comando.

RH124-RHEL8.2-es-1-20200928 135
capítulo 5 | Creación, visualización y edición de archivos de texto

stdout stdin

Figura 5.8: Tubería de E/S de proceso

Las tuberías permiten que la salida de un proceso sea manipulada y formateada por otros
procesos antes de su salida al terminal. Una imagen mental útil es imaginar que los datos "fluyen"
a través de la tubería de un proceso a otro, y que se alteran levemente por cada comando de la
tubería por la que pasan.

nota
Las tuberías y el redireccionamiento de E/S manipulan la salida y la entrada
estándar. El redireccionamiento envía la salida estándar a archivos o recibe la
entrada estándar de estos. Las tuberías envían la salida estándar de un proceso a la
entrada estándar de otro proceso.

Ejemplos de tuberías
Este ejemplo toma la salida del comando ls y usa less para mostrarla en el terminal de a una
pantalla por vez.

[user@host ~]$ ls -l /usr/bin | less

La salida del comando ls se canaliza a wc -l, que cuenta la cantidad de líneas recibidas de ls y
la imprime en el terminal.

[user@host ~]$ ls | wc -l

En esta tubería, head enviará las primeras 10 líneas de salida de ls -t, y el resultado final se
redirigirá a un archivo.

[user@host ~]$ ls -t | head -n 10 > /tmp/ten-last-changed-files

Tuberías, redireccionamiento y el comando tee


Cuando el redireccionamiento se combina con una tubería, la shell configura toda la tubería y
luego redirige la entrada/salida. Si el redireccionamiento de la salida se usa en el medio de una
tubería, la salida irá al archivo y no al siguiente comando de la tubería.

En este ejemplo, la salida del comando ls irá al archivo, y less no mostrará nada en el terminal.

[user@host ~]$ ls > /tmp/saved-output | less

El comando tee supera esta limitación. En una tubería, tee copia la entrada estándar a la salida
estándar y además redirige la salida estándar a los archivos denominados como argumentos
para el comando. Si se imaginan los datos como agua que fluye a través de una tubería, se puede
visualizar tee como una junta en "T" en la tubería que envía la salida en dos direcciones.

136 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Figura 5.9: Tubería de E/S de proceso con tee

Ejemplos de tuberías que usan el comando tee


Este ejemplo redirigirá la salida del comando ls al archivo y la pasará a less para que se muestre
en el terminal de a una pantalla por vez.

[user@host ~]$ ls -l | tee /tmp/saved-output | less

Si tee se usa al final de una tubería, la salida final de un comando se puede guardar y enviar al
terminal al mismo tiempo.

[user@host ~]$ ls -t | head -n 10 | tee /tmp/ten-last-changed-files

Importante
El error estándar puede redirigirse por una tubería, pero no se pueden usar los
operadores de redireccionamiento fusionados (&> y &>>) para esto.

La siguiente es la manera correcta de redirigir la salida y el error estándares a través


de una tubería:

[user@host ~]$ find -name / passwd 2>&1 | less

Referencias
info bash (Manual de referencia de Bash para GNU)

• Sección 3.2.2: Tuberías

• Sección 3.6: Redireccionamientos

info coreutils 'tee invocation' (Manual de GNU coreutils)

• Sección 17.1: Redireccionamiento de la salida a varios archivos o procesos

Páginas del manual: bash(1), cat(1), head(1), less(1), mail(1), tee(1), tty(1), wc(1)

RH124-RHEL8.2-es-1-20200928 137
capítulo 5 | Creación, visualización y edición de archivos de texto

Cuestionario

Redireccionamiento de la salida a un
archivo o programa
Elija la respuesta correcta de las siguientes preguntas:

1. ¿Qué respuesta muestra la salida a un terminal e ignora todos los errores?


a. &>archivo
b. 2> &>archivo
c. 2>/dev/null
d. 1>/dev/null

2. ¿Qué respuesta envía la salida a un archivo y envía los errores a un archivo diferente?
a. >archivo 2>archivo2
b. >archivo 1>archivo2
c. >archivo &2>archivo2
d. | tee file

3. ¿Qué respuesta envía tanto la salida como los errores a un archivo, lo crea o
sobreescribe su contenido?
a. | tee file
b. 2 &>archivo
c. 1 &>archivo
d. &>archivo

4. ¿Qué respuesta envía la salida y los errores al mismo archivo para garantizar que se
preserve el contenido existente del archivo?
a. >archivo 2>archivo2
b. &>archivo
c. >>archivo 2>&1
d. >>archivo 1>&1

5. ¿Qué respuesta descarta todos los mensajes que normalmente se envían al terminal?
a. >archivo 2>archivo2
b. &>/dev/null
c. &>/dev/null 2>archivo
d. &>archivo

138 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

6. ¿Qué respuesta envía la salida tanto a la pantalla como a un archivo al mismo tiempo?
a. &>/dev/null
b. >archivo 2>archivo2
c. | tee archivo
d. | < archivo

7. ¿Qué respuesta guarda la salida en un archivo y descarta los mensajes de error?


a. &>archivo
b. | tee archivo 2> /dev/null
c. > archivo 1> /dev/null
d. > archivo 2> /dev/null

RH124-RHEL8.2-es-1-20200928 139
capítulo 5 | Creación, visualización y edición de archivos de texto

Solución

Redireccionamiento de la salida a un
archivo o programa
Elija la respuesta correcta de las siguientes preguntas:

1. ¿Qué respuesta muestra la salida a un terminal e ignora todos los errores?


a. &>archivo
b. 2> &>archivo
c. 2>/dev/null
d. 1>/dev/null

2. ¿Qué respuesta envía la salida a un archivo y envía los errores a un archivo diferente?
a. >archivo 2>archivo2
b. >archivo 1>archivo2
c. >archivo &2>archivo2
d. | tee file

3. ¿Qué respuesta envía tanto la salida como los errores a un archivo, lo crea o
sobreescribe su contenido?
a. | tee file
b. 2 &>archivo
c. 1 &>archivo
d. &>archivo

4. ¿Qué respuesta envía la salida y los errores al mismo archivo para garantizar que se
preserve el contenido existente del archivo?
a. >archivo 2>archivo2
b. &>archivo
c. >>archivo 2>&1
d. >>archivo 1>&1

5. ¿Qué respuesta descarta todos los mensajes que normalmente se envían al terminal?
a. >archivo 2>archivo2
b. &>/dev/null
c. &>/dev/null 2>archivo
d. &>archivo

140 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

6. ¿Qué respuesta envía la salida tanto a la pantalla como a un archivo al mismo tiempo?
a. &>/dev/null
b. >archivo 2>archivo2
c. | tee archivo
d. | < archivo

7. ¿Qué respuesta guarda la salida en un archivo y descarta los mensajes de error?


a. &>archivo
b. | tee archivo 2> /dev/null
c. > archivo 1> /dev/null
d. > archivo 2> /dev/null

RH124-RHEL8.2-es-1-20200928 141
capítulo 5 | Creación, visualización y edición de archivos de texto

Edición de archivos de texto desde el


prompt de shell

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de crear y editar archivos de texto desde la
línea de comandos con el editor vim.

Editar archivos con Vim


Un principio clave de diseño de Linux es que la configuración y la información habitualmente se
almacenan en archivos basados en texto. Estos archivos se pueden estructurar de varias maneras,
como listas de configuraciones, en formatos tipo INI, como XML o YAML estructurados, etc. Sin
embargo, la ventaja de los archivos de texto es que se pueden ver y editar con cualquier editor de
texto simple.

Vim es una versión mejorada del editor vi que se distribuye con los sistemas Linux y UNIX. Vim
es altamente configurable y eficaz para usuarios avanzados; incluye funciones como edición en
pantalla partida, formateo de color y resaltado para la edición de texto.

¿Por qué aprender Vim?


Debe saber cómo usar al menos un editor de texto que se puede utilizar desde un prompt de shell
de solo texto. Así, puede editar archivos de configuración basados en texto desde una ventana
de terminal o desde inicios de sesión remotos a través de ssh o de la consola web. Entonces no
necesitará acceso a un escritorio gráfico para editar archivos en un servidor, y de hecho, es posible
que ese servidor no necesite ejecutar un entorno de escritorio gráfico.

Pero entonces, ¿por qué aprender Vim en lugar de otras opciones posibles? La razón clave es que
Vim casi siempre está instalado en un servidor, si hay un editor de texto. Esto se debe a que vi se
especificó a través del estándar POSIX que Linux y muchos otros sistemas operativos tipo UNIX
cumplen en gran parte.

Además, Vim se utiliza a menudo como la implementación de vi en otros sistemas operativos o


distribuciones comunes. Por ejemplo, macOS actualmente incluye una instalación ligera de Vim
de forma predeterminada. Por lo tanto, las habilidades de Vim que aprenda para Linux también
podrían ayudarlo a resolver cosas en otro lugar.

Inicio de Vim
Vim se puede instalar en Red Hat Enterprise Linux de dos maneras diferentes. Esto puede afectar
las funciones y los comandos Vim que tiene disponibles.

Es posible que su servidor solo tenga instalado el paquete vim-minimal. Esta es una instalación
muy ligera que incluye solo el conjunto de características principales y el comando vi básico. En
este caso, puede abrir un archivo para editarlo con vi filename y tendrá disponibles todas las
funciones básicas que se analizan en esta sección.

Alternativamente, su servidor puede tener el instalado el paquete vim-enhanced. Esto proporciona


un conjunto de características mucho más completo, un sistema de ayuda en línea, y un programa
tutorial. Para iniciar Vim en este modo mejorado, utiliza el comando vim.

142 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

[user@host ~]$ vim filename

De cualquier manera, las características principales que analizaremos en esta sección funcionarán
con ambos comandos.

nota
Si vim-enhanced está instalado, los usuarios normales tendrán un conjunto de alias
de shell, de manera que si ejecutan el comando vi, obtendrán automáticamente
el comando vim en su lugar. Esto no se aplica a root y otros usuarios con UID por
debajo de 200 (que utilizan los servicios del sistema).

Si está editando archivos como el usuario root y espera que vi se ejecute en modo
mejorado, esto puede ser una sorpresa. Del mismo modo, si vim-enhanced está
instalado y un usuario normal quiere el vi simple por algún motivo, es posible que
necesiten utilizar \vi para anular el alias temporalmente.

Los usuarios avanzados pueden usar \vi --version y vim --version para
comparar los conjuntos de características de los dos comandos.

Modos de operación de Vim


Una característica inusual de Vim es que tiene varios modos de operación, incluido el modo de
comandos, el modo de comandos ampliado, el modo de edición y el modo visual. Según el modo, es
posible que emita comandos, edite texto o trabaje con bloques de texto en el modo visual. Como
usuario nuevo de Vim, siempre debe estar al tanto del modo actual, ya que las pulsaciones de
teclas tienen diferentes efectos en los diferentes modos.

Figura 5.10: Cambio entre modos de Vim

Cuando se abre Vim por primera vez, arranca en el modo de comandos, usado para navegar,
cortar y pegar, y otro tipo de manipulación de texto. Ingrese en cada uno de los otros modos con
pulsaciones de tecla de caracteres únicos para acceder a funciones de edición específicas:

• Al pulsar la tecla i se ingresa al modo de inserción, en el cual todo el texto ingresado se


convierte en contenido de archivo. Al presionar Esc se vuelve al modo de comandos.

RH124-RHEL8.2-es-1-20200928 143
capítulo 5 | Creación, visualización y edición de archivos de texto

• Al pulsar la tecla v se ingresa al modo visual, en el cual se pueden seleccionar varios caracteres
para la manipulación de texto. Utilice Shift+V (Mayús V) para líneas múltiples y Ctrl+V para
seleccionar en bloque. La misma pulsación de tecla utilizada para ingresar al modo visual (v,
Shift+V (Mayús V) o Ctrl+V) se utiliza para salir.

• Al pulsar la tecla : se inicia el modo de comandos ampliado para tareas como la escritura del
archivo (para guardarlo) y la salida del editor Vim.

nota
Si no está seguro del modo en que está Vim, puede probar y presionar Esc un par
de veces para volver al modo de comandos. Presionar Esc en modo de comandos
es inofensivo, por lo que no hay inconveniente con un par de pulsaciones de teclas
adicionales.

Flujo de trabajo mínimo y básico de Vim


Vim tiene pulsaciones de teclas eficaces, coordinadas para tareas de edición avanzadas. Aunque
se las considera útiles con la práctica, las capacidades de Vim pueden abrumar a los nuevos
usuarios.

La tecla i pone a Vim en modo de inserción. Todo el texto ingresado después de esto se trata
como contenido del archivo hasta que salga del modo de inserción. Al pulsar la tecla Esc, se sale
del modo de inserción y se vuelve al modo de comandos de Vim. La tecla u deshace la edición
más reciente. Presione la tecla x para borrar un solo carácter. El comando :w escribe (guarda)
el archivo y permanece en el modo de comandos para seguir editando. El comando :wq escribe
(guarda) el archivo y sale de Vim. El comando :q! sale de Vim y descarta todos los cambios que
se realizaron al archivo desde la última escritura. El usuario de Vim debe aprender estos comandos
para realizar cualquier tarea de edición.

Reorganización de texto existente


En Vim, a la opción de copiar y pegar se la conoce como yank and put (extraer y colocar),
mediante el uso de los caracteres de comando y y p. Comience por colocar el cursor en el primer
carácter que se seleccionará; luego, ingrese al modo visual. Use las teclas de fechas para expandir
la selección visual. Cuando esté listo, presione y para extraer la selección en la memoria. Coloque
el cursor en la nueva ubicación y, luego, presione p para colocar la selección en la posición del
cursor.

Modo visual en Vim


El modo visual es una excelente manera de resaltar y manipular texto. Hay tres pulsaciones de
tecla:

• Modo de caracteres: v

• Modo de líneas: Shift+v (Mayús v)

• Modo de bloques: Ctrl+v

El modo de caracteres resalta oraciones en un bloque de texto. La palabra VISUAL aparecerá en la


parte inferior de la pantalla. Presione v para entrar en el modo de caracteres visuales. Con Shift
+v (Mayús v) ingresa en el modo de líneas. En la parte inferior de la pantalla aparecerá VISUAL
LINE (LÍNEA VISUAL).

144 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

El modo de bloques visuales es ideal para manipular archivos de datos. Desde el cursor, presione
Ctrl+v para entrar al bloque visual. En la parte inferior de la pantalla aparecerá VISUAL BLOCK
(BLOQUE VISUAL). Utilice las teclas de flecha para resaltar la sección que desea cambiar.

nota
Vim tiene numerosas capacidades, pero primero debe dominar el flujo de trabajo
básico. No es necesario que entienda rápidamente todo el editor y sus capacidades.
Familiarícese con esos conceptos básicos a través de la práctica y, luego, expanda
su vocabulario de Vim aprendiendo más comandos de Vim (pulsaciones de teclas).

El ejercicio para esta sección le presentará el comando vimtutor. Este tutorial, que
se incluye con vim-enhanced , es una excelente manera de aprender la funcionalidad
principal de Vim.

Referencias
Página del manual: vim(1)

El comando :help en vim (si el paquete vim-enhanced está instalado).

Editor Vim
http://www.vim.org/

Primeros pasos con el modo visual de Vim


https://opensource.com/article/19/2/getting-started-vim-visual-mode

RH124-RHEL8.2-es-1-20200928 145
capítulo 5 | Creación, visualización y edición de archivos de texto

Ejercicio Guiado

Edición de archivos de texto desde el


prompt de shell
En este ejercicio, usará vimtutor para practicar técnicas básicas de edición en el editor vim.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Editar archivos con Vim.

• Volverse más competente en el uso de Vim con vimtutor.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab edit-vim start. Este script verifica que el
servidor de destino está en ejecución.

[student@workstation ~]$ lab edit-vim start

1. Use el comando ssh para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Abra vimtutor. Lea la pantalla de bienvenida y realice la Lección 1.1.

[student@servera ~]$ vimtutor

En la presentación se utilizan las teclas de flecha del teclado para la navegación. Cuando
vi se desarrolló por primera vez, los usuarios no podían confiar en tener teclas de flecha o
asignaciones de teclado que funcionaran para que las teclas de flecha movieran el cursor.
Por lo tanto, vi se diseñó originalmente para mover el cursor con comandos mediante las
teclas de caracteres estándar, como las agrupadas convenientemente H, J, K, and L.
A continuación se incluye una manera de recordarlas:
hang atrás, jump abajo, kick arriba, leap adelante.

3. En la ventana vimtutor, realice la Lección 1.2.


En esta lección, se enseña a salir sin necesidad de conservar los cambios no deseados. Se
pierden todos los cambios. A veces, esto es preferible antes que dejar un archivo vital en un
estado incorrecto.

4. En la ventana vimtutor, realice la Lección 1.3.

146 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Vim ofrece pulsaciones de teclas rápidas y eficientes para eliminar una cantidad exacta de
palabras, líneas, oraciones y párrafos. Sin embargo, las tareas de edición pueden realizarse
usando x para la eliminación de un único carácter.

5. En la ventana vimtutor, realice la Lección 1.4.


Para la mayoría de las tareas de edición, la primera tecla que se presiona es i.

6. En la ventana vimtutor, realice la Lección 1.5.


En la clase, solo el comando i (insertar) se enseñó como la tecla para ingresar al modo
de edición. En esta lección de vimtutor se demuestra el uso de otras teclas disponibles
para cambiar la posición del cursor cuando se ingresa al modo de inserción. En el modo de
inserción, todo el texto escrito es contenido de archivo.

7. En la ventana vimtutor, realice la Lección 1.6.


Escriba :wq para guardar el archivo y salir del editor.

8. En la ventana vimtutor, lea el Resumen de la Lección 1.


El comando vimtutor incluye seis lecciones más de varios pasos. Estas lecciones no se
asignan como parte de este curso, pero puede explorarlas por su cuenta para aprender
más.

9. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab edit-vim finish para terminar este ejercicio.

[student@workstation ~]$ lab edit-vim finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 147
capítulo 5 | Creación, visualización y edición de archivos de texto

Modificación del entorno de shell

Objetivos
Tras finalizar esta sección deberá ser capaz de usar las variables de shell para facilitar la ejecución
de comandos y editar los scripts de arranque de Bash para configurar las variables de shell y del
entorno a fin de modificar el comportamiento de la shell y de los programas ejecutados desde la
shell.

Uso de variables de shell


La shell Bash permite configurar variables de shell que facilitan la ejecución de comandos o la
modificación del comportamiento de la shell. También puede exportar variables de shell como
variables de entorno, que se copian automáticamente a los programas que se ejecutan desde
esa shell cuando se inician. Puede usar variables para facilitar la ejecución de un comando con un
argumento largo, o para aplicar una configuración común a los comandos que se ejecutan desde
esa shell.

Las variables de shell corresponden únicamente a una sesión de shell en particular. Si tiene dos
ventanas de terminal abiertas o dos sesiones de inicio de sesión independientes en el mismo
servidor remoto, está ejecutando dos shells. Cada shell tiene su propio conjunto de valores para
sus variables de shell.

Asignación de valores a variables


Asigne un valor a una variable de shell con la siguiente sintaxis:

VARIABLENAME=value

Los nombres de las variables pueden incluir letras mayúsculas o minúsculas, dígitos y el carácter
de guion bajo (_). Por ejemplo, los siguientes comandos establecen variables de shell:

[user@host ~]$ COUNT=40


[user@host ~]$ first_name=John
[user@host ~]$ file1=/tmp/abc
[user@host ~]$ _ID=RH123

Recuerde que este cambio solo afecta a la shell en la que se ejecuta el comando sin afectar a las
demás shells que pueda estar ejecutando en ese servidor.

Puede usar el comando set para enumerar todas las variables de shell que están configuradas
actualmente. (También enumera todas las funciones de shell, que se pueden ignorar). Esta lista es
tan larga que quizá prefiera canalizar la salida al comando less para poder verla una página por
vez.

148 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

[user@host ~]$ set | less


BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:
force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASHRCSOURCED=Y
...output omitted...

Recuperar valores con la expansión de variable


Puede usar la expansión de variable para referirse al valor de una variable que ha configurado.
Para ello, anteponga un símbolo de dólar ($) al nombre de la variable. En el siguiente ejemplo,
el comando echo imprime el resto de la línea de comandos ingresada, pero después de que se
realiza la expansión de variable.

Por ejemplo, el siguiente comando establece la variable COUNT en 40.

[user@host ~]$ COUNT=40

Si ingresa el comando echo COUNT, se imprimirá la cadena COUNT .

[user@host ~]$ echo COUNT


COUNT

Pero si ingresa el comando echo $COUNT, imprimirá el valor de la variable COUNT .

[user@host ~]$ echo $COUNT


40

Un ejemplo más práctico podría ser usar una variable para referirse a un nombre de archivo largo
para varios comandos.

[user@host ~]$ file1=/tmp/tmp.z9pXW0HqcC


[user@host ~]$ ls -l $file1
-rw-------. 1 student student 1452 Jan 22 14:39 /tmp/tmp.z9pXW0HqcC
[user@host ~]$ rm $file1
[user@host ~]$ ls -l $file1
total 0

RH124-RHEL8.2-es-1-20200928 149
capítulo 5 | Creación, visualización y edición de archivos de texto

Importante
Si hay algún carácter final junto al nombre de la variable, es posible que deba
proteger el nombre de la variable con llaves. Siempre puede usar llaves en la
expansión de variable, pero también verá muchos ejemplos en los que no son
necesarias y se omiten.

En el siguiente ejemplo, el primer comando echo intenta expandir la variable


inexistente COUNTx, lo que no produce un error, sino que no produce nada.

[user@host ~]$ echo Repeat $COUNTx


Repeat
[user@host ~]$ echo Repeat ${COUNT}x
Repeat 40x

Configuración de Bash con variables de shell


Algunas variables de shell se configuran cuando se inicia Bash, pero se pueden modificar para
ajustar el comportamiento de la shell.

Por ejemplo, dos variables de shell que afectan el historial de shell y el comando history son
HISTFILE y HISTFILESIZE. Si HISTFILE está configurado, especifica la ubicación del archivo
donde se guardará el historial de shell al salir. De manera predeterminada, se usa el archivo
~/.bash_history del usuario. La variable HISTFILESIZE especifica cuántos comandos deben
guardarse en ese archivo del historial.

Otro ejemplo es PS1, una variable de shell que controla el aspecto del prompt de shell. Si cambia
este valor, cambiará el aspecto del prompt de shell. Una serie de expansiones de caracteres
especiales compatibles con el prompt se enumeran en la sección "PROMPTING" (Pedido de
confirmación) de la página del manual bash(1).

[user@host ~]$ PS1="bash\$ "


bash$ PS1="[\u@\h \W]\$ "
[user@host ~]$

Dos ítems que se deben tener en cuenta sobre el ejemplo anterior: primero, debido a que el valor
establecido por PS1 es un prompt, casi siempre es preferible finalizar el prompt con un espacio
final. Segundo, siempre que el valor de una variable contenga algún tipo de espacio, incluido un
espacio, una tabulación o un retorno, el valor debe estar entre comillas, ya sea simples o dobles;
esto no es opcional. Se producirán resultados inesperados si se omiten las comillas. Examine el
ejemplo de PS1 anterior y tenga en cuenta que cumple con la recomendación (espacio final) y la
regla (comillas).

Configuración de programas con variables de entorno


La shell proporciona un entorno a los programas que se ejecutan desde esa shell. Entre otras
cosas, este entorno incluye información sobre el directorio de trabajo actual en el sistema
de archivos, las opciones de línea de comandos que pasan al programa y los valores de las
variables de entorno. Los programas pueden usar estas variables de entorno para cambiar su
comportamiento o su configuración predeterminada.

Las variables de shell que no son variables de entorno solo puede usarlas la shell. Las variables de
entorno pueden usarlas la shell y los programas ejecutados desde esa shell.

150 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

nota
HISTFILE, HISTFILESIZE y PS1, estudiadas en la sección anterior, no deben
exportarse como variables de entorno, ya que solo las usa la propia shell y no los
programas que se ejecutan desde la shell.

Puede convertir cualquier variable definida en la shell en una variable de entorno marcándola para
exportación con el comando export.

[user@host ~]$ EDITOR=vim


[user@host ~]$ export EDITOR

Puede configurar y exportar una variable en un solo paso:

[user@host ~]$ export EDITOR=vim

Las aplicaciones y las sesiones usan estas variables para determinar su comportamiento. Por
ejemplo, la shell configura automáticamente la variable HOME con el nombre de archivo del
directorio de inicio del usuario cuando se inicia. Esto se puede usar para ayudar a los programas a
determinar dónde guardar los archivos.

Otro ejemplo es LANG, que establece la configuración regional. Esto ajusta el idioma preferido
para la salida del programa; el conjunto de caracteres; el formato de fechas, números y moneda; y
el orden de clasificación de los programas. Si se configura en en_US.UTF-8, la configuración local
utilizará el inglés de EE. UU. con codificación de caracteres Unicode UTF-8. Si está configurado en
otra opción, por ejemplo. fr_FR.UTF-8 utilizará el francés y la codificación Unicode UTF-8.

[user@host ~]$ date


Tue Jan 22 16:37:45 CST 2019
[user@host ~]$ export LANG=fr_FR.UTF-8
[user@host ~]$ date
mar. janv. 22 16:38:14 CST 2019

Otra variable importante del entorno es PATH. La variable PATH contiene una lista de directorios
separados por dos puntos que contienen programas:

[user@host ~]$ echo $PATH


/home/user/.local/bin:/home/user/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/
bin:/usr/local/sbin:/usr/sbin

Cuando ejecuta un comando como ls, la shell busca el archivo ejecutable ls en cada uno de esos
directorios en orden, y ejecuta el primer archivo coincidente que encuentra. (En un sistema típico,
este archivo es /usr/bin/ls).

Puede agregar fácilmente directorios adicionales al final de su PATH . Por ejemplo, quizás tenga
scripts o programas ejecutables que desea ejecutar como comandos regulares en /home/user/
sbin . Puede agregar /home/user/sbin hasta el final de su PATH para la sesión actual de esta
forma:

[user@host ~]$ export PATH=${PATH}:/home/user/sbin

RH124-RHEL8.2-es-1-20200928 151
capítulo 5 | Creación, visualización y edición de archivos de texto

Para enumerar todas las variables de entorno de una shell en particular, ejecute el comando env:

[user@host ~]$ env


...output omitted...
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=host.example.com
XDG_SESSION_ID=4
...output omitted...

Configuración del editor de texto predeterminado


La variable de entorno EDITOR especifica el programa que desea usar como editor de texto
predeterminado para programas de línea de comandos. Muchos programas usan vi o vim si no se
especifica otro valor, pero puede anular esta preferencia si es necesario:

[user@host ~]$ export EDITOR=nano

Importante
Por convención, las variables de entorno y las variables de shell que se configuran
automáticamente por la shell tienen nombres con todos los caracteres en
mayúsculas. Para configurar sus propias variables, es posible que desee usar
nombres compuestos por caracteres en minúscula para evitar los nombres
duplicados.

Configuración automática de variables


Si desea configurar automáticamente las variables de shell o de entorno cuando se inicia su shell,
puede editar los scripts de arranque de Bash. Cuando se inicia Bash, se ejecutan varios archivos de
texto con comandos de shell que inicializan el entorno de shell.

Los scripts exactos que se ejecutan dependen de cómo se inició la shell, si se trata de una shell
interactiva con inicio de sesión, una shell interactiva sin inicio de sesión o un script de shell.

Suponiendo que se cuenta con los archivos predeterminados /etc/profile, /etc/bashrc y


~/.bash_profile, si desea realizar un cambio en su cuenta de usuario que afecte a todos sus
prompts de shell interactivos al inicio, edite el archivo ~/.bashrc. Por ejemplo, puede configurar
el editor predeterminado de esa cuenta en nano editando el archivo para que diga:

# .bashrc

# Source global definitions


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

# User specific environment


PATH="$HOME/.local/bin:$HOME/bin:$PATH"
export PATH

152 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

# User specific aliases and functions


export EDITOR=nano

nota
La mejor manera de ajustar la configuración que afecta a todas las cuentas de
usuario es agregando un archivo con un nombre que termina en .sh que contiene
los cambios al directorio /etc/profile.d. Para hacer esto, debe iniciar sesión
como el usuario root.

Deshacer la configuración y la exportación de variables


Para deshacer por completo la configuración y la exportación de una variable, use el comando
unset:

[user@host ~]$ echo $file1


/tmp/tmp.z9pXW0HqcC
[user@host ~]$ unset file1
[user@host ~]$ echo $file1

[user@host ~]$

Para deshacer la exportación de una variable sin deshacer la configuración, use el comando
export -n:

[user@host ~]$ export -n PS1

Referencias
Páginas de manual: bash(1), env(1), builtins(1)

RH124-RHEL8.2-es-1-20200928 153
capítulo 5 | Creación, visualización y edición de archivos de texto

Ejercicio Guiado

Modificación del entorno de Shell


En este ejercicio, usará las variables de shell y la expansión de variables para ejecutar
comandos y configurar una variable de entorno a fin de establecer el editor predeterminado
para las nuevas shells.

Resultados:
Usted deberá ser capaz de realizar lo siguiente:

• Editar el perfil de usuario.

• Crear una variable de shell.

• Crear una variable de entorno.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab edit-shell start. Este script verifica que el
servidor de destino está en ejecución.

[student@workstation ~]$ lab edit-shell start

1. Cambie la variable de shell PS1 del usuario student a [\u@\h \t \w]$ (recuerde poner
el valor de PSI entre comillas y colocar un espacio final después del símbolo de dólar). Esto
agregará el tiempo al prompt.

1.1. En workstation, use el comando ssh para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

1.2. Utilice Vim para editar el archivo de configuración ~/.bashrc.

[student@servera ~]$ vim ~/.bashrc

1.3. Agregue la variable de shell PS1 y su valor en el archivo ~/.bashrc. Recuerde incluir
un espacio al final del valor configurado y ponga el valor completo entre comillas,
incluido el espacio final.

...output omitted...
# User specific environment and startup programs
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
PS1='[\u@\h \t \w]$ '
export PATH

154 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

1.4. Salga de servera y vuelva a iniciar sesión usando el comando ssh para actualizar el
prompt de comandos.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$ ssh student@servera
...output omitted...
[student@servera 14:45:05 ~]$

2. Asigne un valor a una variable de shell local. Los nombres de las variables pueden incluir
letras mayúsculas o minúsculas, dígitos y el carácter de guion bajo. Recupere el valor de la
variable.

2.1. Cree una nueva variable llamada file con un valor de tmp.zdkei083. El archivo
tmp.zdkei083 existe en el directorio de inicio de student.

[student@servera 14:47:05 ~]$ file=tmp.zdkei083

2.2. Recupere el valor de la variable file.

[student@servera 14:48:35 ~]$ echo $file


tmp.zdkei083

2.3. Use el nombre de la variable file y el comando ls -l para enumerar el archivo


tmp.zdkei083. Use el comando rm y el nombre de la variable file para eliminar el
archivo tmp.zdkei083. Confirme que se ha eliminado.

[student@servera 14:59:07 ~]$ ls -l $file


-rw-rw-r--. 1 student student 0 Jan 23 14:59 tmp.zdkei083
[student@servera 14:59:10 ~]$ rm $file
[student@servera 14:59:15 ~]$ ls -l $file
ls: cannot access 'tmp.zdkei083': No such file or directory

3. Asigne un valor a la variable editor. Use un comando para hacer que la variable sea una
variable de entorno.

[student@servera 14:46:40 ~]$ export EDITOR=vim


[student@servera 14:46:55 ~]$ echo $EDITOR
vim

4. Salga de servera.

[student@servera 14:47:11 ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab edit-shell finish para terminar este ejercicio.

RH124-RHEL8.2-es-1-20200928 155
capítulo 5 | Creación, visualización y edición de archivos de texto

[student@workstation ~]$ lab edit-shell finish

Esto concluye el ejercicio guiado.

156 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Trabajo de laboratorio

Creación, visualización y edición de


archivos de texto
Lista de verificación de rendimiento
En este trabajo de laboratorio editará un archivo de texto con el editor vim.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Usar Vim para editar archivos.

• Usar el modo visual para simplificar la edición de archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab edit-review start.

[student@workstation ~]$ lab edit-review start

1. Redirija un listado extenso de todo el contenido del directorio de inicio de student, incluidos
los directorios y archivos ocultos, a un archivo denominado editing_final_lab.txt.
2. Edite el archivo con Vim.
3. Elimine las primeras tres líneas. Ingrese al modo visual basado en líneas con una V mayúscula.
4. Elimine las columnas de la primera línea. Ingrese al modo visual con la v minúscula. La v
minúscula selecciona únicamente los caracteres de una sola línea. Se deben eliminar las
columnas posteriores a -rw-.
5. Elimine las columnas y el punto posterior ( ".") en las líneas restantes. Utilice el modo de
bloque visual. Ingrese en el modo de bloque visual con la secuencia de control Ctrl+V. Use
esta secuencia de teclas para seleccionar un bloque de caracteres en varias líneas. Se deben
eliminar las columnas posteriores a -rw-.
6. Utilice el modo de bloque visual para eliminar la cuarta columna.
7. Use el modo de bloque visual para eliminar la columna de hora, pero deje el mes y el día en
todas las líneas.
8. Elimine las filas Desktop y Public. Ingrese al modo de línea visual con una V mayúscula.
9. Use el comando :wq para guardar y cerrar el archivo. Realice una copia de respaldo con la
fecha (en segundos) para crear un nombre de archivo único.
El siguiente comando copy es muy extenso y debe ingresarse en una sola línea.
10. Agregue una línea discontinua al archivo. La línea discontinua debe contener al menos 12
guiones.
El siguiente comando echo es muy extenso y debe ingresarse en una sola línea.

RH124-RHEL8.2-es-1-20200928 157
capítulo 5 | Creación, visualización y edición de archivos de texto

11. Adjunte una lista de directorios del directorio Documents. Enumere el listado de directorios
en el terminal y envíelo al archivo editing_final_lab.txt con una línea de comandos.
12. Confirme que el listado de directorios esté en la parte inferior del archivo de trabajo de
laboratorio.

Evaluación
En workstation, ejecute el comando lab edit-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab edit-review grade

Finalizar
En workstation, ejecute el script lab edit-review finish para terminar este ejercicio.

[student@workstation ~]$ lab edit-review finish

Esto concluye el trabajo de laboratorio.

158 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Solución

Creación, visualización y edición de


archivos de texto
Lista de verificación de rendimiento
En este trabajo de laboratorio editará un archivo de texto con el editor vim.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Usar Vim para editar archivos.

• Usar el modo visual para simplificar la edición de archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab edit-review start.

[student@workstation ~]$ lab edit-review start

1. Redirija un listado extenso de todo el contenido del directorio de inicio de student, incluidos
los directorios y archivos ocultos, a un archivo denominado editing_final_lab.txt.

nota
La salida puede no coincidir exactamente con los ejemplos mostrados.

En workstation, desde el directorio de inicio de student, utilice el comando


ls -al para redirigir una lista larga de todo el contenido a un archivo llamado
editing_final_lab.txt.

[student@workstation ~]$ ls -al > editing_final_lab.txt

2. Edite el archivo con Vim.

[student@workstation ~]$ vim editing_final_lab.txt

3. Elimine las primeras tres líneas. Ingrese al modo visual basado en líneas con una V mayúscula.
Utilice las teclas de flecha para ubicar el cursor en el primer carácter de la primera fila.
Ingrese al modo visual basado en líneas con Shift+V (Mayús V). Desplácese hacia abajo
usando la tecla de flecha dos veces para seleccionar las primeras tres filas. Elimine las filas
con x.

RH124-RHEL8.2-es-1-20200928 159
capítulo 5 | Creación, visualización y edición de archivos de texto

4. Elimine las columnas de la primera línea. Ingrese al modo visual con la v minúscula. La v
minúscula selecciona únicamente los caracteres de una sola línea. Se deben eliminar las
columnas posteriores a -rw-.
Utilice las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese al modo visual
con la v minúscula. Use las teclas de flecha para ubicar el cursor en el último carácter. Elimine
la selección con x.

5. Elimine las columnas y el punto posterior ( ".") en las líneas restantes. Utilice el modo de
bloque visual. Ingrese en el modo de bloque visual con la secuencia de control Ctrl+V. Use

160 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

esta secuencia de teclas para seleccionar un bloque de caracteres en varias líneas. Se deben
eliminar las columnas posteriores a -rw-.
Utilice las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese en el modo
visual con la secuencia de control Ctrl+V. Utilice las teclas de flecha para ubicar el cursor en
el último carácter de la columna de la última línea. Elimine la selección con x.

6. Utilice el modo de bloque visual para eliminar la cuarta columna.


Utilice las teclas de flecha para ubicar el cursor en el primer carácter de la cuarta columna.
Ingrese al modo de bloque visual con Ctrl+V. Utilice las teclas de flecha para ubicar el cursor
en el último carácter y la última fila de la cuarta columna. Elimine la selección con x.

RH124-RHEL8.2-es-1-20200928 161
capítulo 5 | Creación, visualización y edición de archivos de texto

7. Use el modo de bloque visual para eliminar la columna de hora, pero deje el mes y el día en
todas las líneas.
Utilice las teclas de flecha para ubicar el cursor en el primer carácter. Ingrese al modo de
bloque visual con Ctrl+V. Use las teclas de flecha para ubicar el cursor en el último carácter
y la última fila de la columna de hora. Elimine la selección con x.

8. Elimine las filas Desktop y Public. Ingrese al modo de línea visual con una V mayúscula.
Use las teclas de flecha para ubicar el cursor en cualquier carácter de la fila Desktop. Ingrese
el modo visual con la V mayúscula. Se selecciona la línea completa. Elimine la selección con x.
Repita estos pasos para la fila Public.

162 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

9. Use el comando :wq para guardar y cerrar el archivo. Realice una copia de respaldo con la
fecha (en segundos) para crear un nombre de archivo único.

El siguiente comando copy es muy extenso y debe ingresarse en una sola línea.

[student@workstation ~]$ cp editing_final_lab.txt


editing_final_lab_$(date +%s).txt

10. Agregue una línea discontinua al archivo. La línea discontinua debe contener al menos 12
guiones.
El siguiente comando echo es muy extenso y debe ingresarse en una sola línea.

[student@workstation ~]$ echo "----------------------------------------"


>> editing_final_lab.txt

11. Adjunte una lista de directorios del directorio Documents. Enumere el listado de directorios
en el terminal y envíelo al archivo editing_final_lab.txt con una línea de comandos.

[student@workstation ~]$ ls Documents/ | tee -a editing_final_lab.txt


lab_review.txt

12. Confirme que el listado de directorios esté en la parte inferior del archivo de trabajo de
laboratorio.

[student@workstation ~]$ cat editing_final_lab.txt


-rw- 1 student 310 Jan 21 .bash_history
-rw- 1 student 18 Oct 12 .bash_logout
-rw- 1 student 141 Oct 12 .bash_profile
-rw- 1 student 312 Oct 12 .bashrc
drwx 8 student 201 Jan 14 .cache
drwx 10 student 203 Jan 14 .config
drwx 2 student 6 Jan 14 Documents
drwx 2 student 6 Jan 14 Downloads

RH124-RHEL8.2-es-1-20200928 163
capítulo 5 | Creación, visualización y edición de archivos de texto

-rw- 1 student 0 Jan 22 editing_final_lab.txt


-rw- 1 student 16 Jan 14 .esd_auth
-rw- 1 student 310 Jan 14 .ICEauthority
drwx 3 student 19 Jan 14 .local
drwx 2 student 6 Jan 14 Music
drwx 2 student 6 Jan 14 Pictures
drwx 3 student 19 Jan 14 .pki
drwx 2 student 73 Jan 14 .ssh
drwx 2 student 6 Jan 14 Templates
drwx 2 student 6 Jan 14 Videos
-rw- 1 student 1095 Jan 14 .viminfo
------------------------------------
lab_review.txt

Evaluación
En workstation, ejecute el comando lab edit-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab edit-review grade

Finalizar
En workstation, ejecute el script lab edit-review finish para terminar este ejercicio.

[student@workstation ~]$ lab edit-review finish

Esto concluye el trabajo de laboratorio.

164 RH124-RHEL8.2-es-1-20200928
capítulo 5 | Creación, visualización y edición de archivos de texto

Resumen
En este capítulo, aprendió lo siguiente:

• Los programas o procesos en ejecución tienen tres canales de comunicación estándar: entrada
estándar, salida estándar y error estándar.

• Puede utilizar el redireccionamiento de E/S para leer la entrada estándar de un archivo o escribir
la salida o los errores de un proceso en un archivo.

• Las tuberías se pueden usar para conectar la salida estándar de un proceso a la entrada
estándar de otro proceso, y se pueden usar para formatear la salida o crear comandos
complejos.

• Debe saber cómo utilizar al menos un editor de texto de línea de comandos y, por lo general,
Vim está instalado.

• Las variables de shell pueden facilitar la ejecución de comandos y corresponden únicamente a


una sesión de shell en particular.

• Las variables de entorno pueden ayudarlo a configurar el comportamiento de la shell o los


procesos que inicia.

RH124-RHEL8.2-es-1-20200928 165
166 RH124-RHEL8.2-es-1-20200928
capítulo 6

Administración de usuarios y
grupos locales
Meta Crear, administrar y eliminar usuarios y grupos
locales y administrar políticas de contraseña
locales.

Objetivos • Describir el propósito de los usuarios y grupos


en un sistema Linux.
• Cambiar a la cuenta de superusuario para
administrar un sistema Linux y otorgar a otros
usuarios acceso de superusuario a través del
comando sudo.
• Crear, modificar y eliminar cuentas de usuario
definidas a nivel local.
• Crear, modificar y eliminar cuentas de grupo
definidas a nivel local.
• Establecer una política de administración de
contraseñas para los usuarios, y bloquear y
desbloquear manualmente las cuentas de los
usuarios.

Secciones • Descripción de conceptos de usuarios y grupos


(y cuestionario)
• Obtención de acceso de superusuario (y
ejercicio guiado)
• Administración de cuentas de usuarios locales
(y ejercicio guiado)
• Administración de cuentas de grupos locales (y
ejercicio guiado)
• Administración de contraseñas de usuarios (y
ejercicio guiado)

Trabajo de Administración de usuarios y grupos de Linux


locales
laboratorio

RH124-RHEL8.2-es-1-20200928 167
capítulo 6 | Administración de usuarios y grupos locales

Descripción de conceptos de usuarios y


grupos

Objetivos
Después de completar esta sección, debe poder describir el propósito de los usuarios y grupos en
un sistema Linux.

¿Qué es un usuario?
Una cuenta de usuario se utiliza para proporcionar límites de seguridad entre diferentes personas y
programas que pueden ejecutar comandos.

Los usuarios tienen nombres de usuario para identificarlos como usuarios humanos y facilitar
el trabajo con ellos. Internamente, el sistema distingue las cuentas de usuario por el número de
identificación único que se les asigna, el ID de usuario o UID. Si las personas utilizan una cuenta
de usuario, generalmente se le asignará una contraseña secreta que el usuario utilizará para
demostrar que es el usuario autorizado real al iniciar sesión.

Las cuentas de usuario son fundamentales para la seguridad del sistema. Cada proceso (programa
en ejecución) en el sistema se ejecuta como un usuario particular. Cada archivo tiene un usuario
particular como su propietario. La propiedad del archivo ayuda al sistema a aplicar el control
de acceso para los usuarios de los archivos. El usuario asociado con un proceso de ejecución
determina los archivos y directorios accesibles para ese proceso.

Hay tres tipos principales de cuenta de usuario: el superusuario, el usuario del sistema y el usuario
normal.

• La cuenta de superusuario es para la administración del sistema. El nombre del superusuario es


root y la cuenta tiene UID 0. El superusuario tiene acceso completo al sistema.

• El sistema tiene cuentas de usuario del sistema que utilizan los procesos que proporcionan
servicios de soporte. Estos procesos, o daemons por lo general no necesitan ejecutarse como
superusuario. Son cuentas asignadas sin privilegios que les permiten proteger sus archivos y
otros recursos entre sí y de los usuarios habituales del sistema. Los usuarios no inician sesión de
forma interactiva mediante una cuenta de usuario del sistema.

• La mayoría de los usuarios tienen cuentas de usuario normal que utilizan para su trabajo diario.
Al igual que los usuarios del sistema, los usuarios normales tienen acceso limitado al sistema.

Puede utilizar el comando id para mostrar información acerca del usuario con sesión iniciada
actualmente.

[user01@host ~]$ id
uid=1000(user01) gid=1000(user01) groups=1000(user01)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Para ver información básica sobre otro usuario, envíe el nombre de usuario al comando id como
argumento.

168 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

[user01@host]$ id user02
uid=1002(user02) gid=1001(user02) groups=1001(user02)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Para ver el propietario de un archivo, use el comando ls -l. Para ver el propietario de un
directorio, use el comando ls -ld. En la siguiente salida, la tercera columna muestra el nombre
de usuario.

[user01@host ~]$ ls -l file1


-rw-rw-r--. 1 user01 user01 0 Feb 5 11:10 file1
[user01@host]$ ls -ld dir1
drwxrwxr-x. 2 user01 user01 6 Feb 5 11:10 dir1

Para ver la información del proceso, use el comando ps. La opción predeterminada es mostrar
solo los procesos que están en la shell actual. Agregue la opción a para ver todos los procesos con
un terminal. Para ver el usuario relacionado con un proceso, incluya la opción u. En la siguiente
salida, la primera columna muestra el nombre de usuario.

[user01@host]$ ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 777 0.0 0.0 225752 1496 tty1 Ss+ 11:03 0:00 /sbin/agetty -o -
p -- \u --noclear tty1 linux
root 780 0.0 0.1 225392 2064 ttyS0 Ss+ 11:03 0:00 /sbin/agetty -o -
p -- \u --keep-baud 115200,38400,9600
user01 1207 0.0 0.2 234044 5104 pts/0 Ss 11:09 0:00 -bash
user01 1319 0.0 0.2 266904 3876 pts/0 R+ 11:33 0:00 ps au

En la salida de los comandos anteriores, se muestran los usuarios por nombre, pero, internamente,
el sistema operativo usa los UID para realizar un seguimiento de los usuarios. La asignación de
nombres de usuario a UID se define en las bases de datos de la información de la cuenta. De forma
predeterminada, los sistemas usan el archivo /etc/passwd para almacenar información sobre los
usuarios locales.

Cada linea del archivo /etc/passwd contiene información sobre un usuario. Se divide en siete
campos separados por dos puntos. Este es un ejemplo de una línea de /etc/passwd:

user01: x: 1000: 1000: User One: /home/user01: /bin/bash

Nombre de usuario para este usuario (user01).


La contraseña del usuario se almacenaba aquí en formato cifrado. Se trasladó al archivo /
etc/shadow, que se analizará más adelante. Este campo siempre debe ser X.
El número de UID para esta cuenta de usuario (1000).
El número de GID para el grupo principal de esta cuenta de usuario (1000). Los grupos se
analizarán más adelante en esta sección.
El nombre real para este usuario. (User One).
El directorio de inicio de este usuario. (/home/user01). Este es el directorio de trabajo
inicial cuando se inicia la shell y contiene los datos del usuario y los parámetros de
configuración.
El programa de shell predeterminado para este usuario, que se ejecuta al iniciar sesión (/
bin/bash). Para un usuario normal, por lo general este es el programa que proporciona
el prompt de línea de comando del usuario. Un usuario del sistema podría usar /sbin/
nologin si no se permiten inicios de sesión interactivos para ese usuario.

RH124-RHEL8.2-es-1-20200928 169
capítulo 6 | Administración de usuarios y grupos locales

¿Qué es un grupo?
Un grupo es una colección de usuarios que necesitan compartir el acceso a archivos y otros
recursos del sistema. Los grupos se pueden utilizar para otorgar acceso a los archivos a un
conjunto de usuarios en lugar de a un solo usuario.

Como los usuarios, los grupos tienen nombres de grupo para facilitar el trabajo con ellos.
Internamente, el sistema distingue los grupos por el número de identificación único que se les
asigna, el ID de grupo o GID.

La asignación de nombres de grupo a GID se define en las bases de datos de la información de


la cuenta de grupo. De forma predeterminada, los sistemas usan el archivo /etc/group para
almacenar información sobre los grupos locales.

Cada linea del archivo /etc/group contiene información sobre un grupo. Cada entrada de grupo
se divide en cuatro campos separados con dos puntos. Este es un ejemplo de una línea de /etc/
group:

group01: x: 10000: user01,user02,user03

Nombre de grupo para este grupo (group01).


Campo de contraseña de grupo obsoleto. Este campo siempre debe ser X.
El número de GID para este grupo (10000).
Una lista de usuarios que son miembros de este grupo como grupo adicional (user01 ,
user02 , user03). Los grupos principales (o predeterminados) y adicionales se analizarán
más adelante en esta sección.

Grupos principales y grupos adicionales


Cada usuario tiene exactamente un grupo principal. Para usuarios locales, este es el grupo
enumerado por número de GID en el archivo /etc/passwd. De forma predeterminada, este es el
grupo que será propietario de los nuevos archivos creados por el usuario.

Normalmente, cuando crea un nuevo usuario normal, se crea un nuevo grupo con el mismo nombre
que ese usuario. Ese grupo se usa como el grupo principal del nuevo usuario, y ese usuario es
el único miembro de este grupo privado de usuarios. Se deduce que esto ayuda a simplificar la
administración de los permisos de archivos, que se analizará más adelante en este curso.

Los usuarios también pueden tener grupos adicionales. La pertenencia a grupos adicionales se
determina a través del archivo /etc/group. A los usuarios se les otorga acceso a los archivos en
función de si alguno de sus grupos tiene acceso. No importa si el grupo o los grupos que tienen
acceso son principales o adicionales para el usuario.

Por ejemplo, si el usuario user01 tiene un grupo principal usero01 y grupos adicionales wheel y
webadmin, entonces ese usuario puede leer archivos legibles para cualquiera de esos tres grupos.

El comando id también se puede utilizar para averiguar sobre la membresía de grupo de un


usuario.

[user03@host ~]$ id
uid=1003(user03) gid=1003(user03) groups=1003(user03),10(wheel),10000(group01)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

170 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

En el ejemplo anterior, user03 tiene el grupo user03 como su grupo principal (gid). El elemento
groups enumera todos los grupos de este usuario, y además del grupo principal user03, el
usuario tiene los grupos wheel y group01 como grupos adicionales.

Referencias
Páginas del manual: id(1), passwd(5) y group(5)

info libc (Manual de referencia de la biblioteca GNU C)

• Sección 30: Usuarios y grupos

(Tenga en cuenta que el paquete glibc-devel se debe haber instalado para que este
nodo de información esté disponible).

RH124-RHEL8.2-es-1-20200928 171
capítulo 6 | Administración de usuarios y grupos locales

Cuestionario

Descripción de conceptos de usuarios y


grupos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué ítem representa un número que identifica al usuario en el nivel más fundamental?
a. usuario principal
b. UID
c. GID
d. nombredeusuario

2. ¿Qué ítem representa el programa que proporciona el prompt de línea de comandos del
usuario?
a. shell principal
b. directorio de inicio
c. shell de inicio de sesión
d. nombre de comando

3. ¿Qué ítem o archivo representa la ubicación de la información del grupo local?


a. directorio de inicio
b. /etc/passwd
c. /etc/GID
d. /etc/group

4. ¿Qué ítem o archivo representa la ubicación de los archivos personales del usuario?
a. directorio de inicio
b. shell de inicio de sesión
c. /etc/passwd
d. /etc/group

5. ¿Qué ítem representa un número que identifica al grupo en el nivel más fundamental?
a. grupo principal
b. UID
c. GID
d. groupid

172 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

6. ¿Qué ítem o archivo representa la ubicación de la información de la cuenta de usuario


local?
a. directorio de inicio
b. /etc/passwd
c. /etc/UID
d. /etc/group

7. ¿Cuál es el cuarto campo del archivo /etc/passwd?


a. directorio de inicio
b. UID
c. shell de inicio de sesión
d. grupo principal

RH124-RHEL8.2-es-1-20200928 173
capítulo 6 | Administración de usuarios y grupos locales

Solución

Descripción de conceptos de usuarios y


grupos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué ítem representa un número que identifica al usuario en el nivel más fundamental?
a. usuario principal
b. UID
c. GID
d. nombredeusuario

2. ¿Qué ítem representa el programa que proporciona el prompt de línea de comandos del
usuario?
a. shell principal
b. directorio de inicio
c. shell de inicio de sesión
d. nombre de comando

3. ¿Qué ítem o archivo representa la ubicación de la información del grupo local?


a. directorio de inicio
b. /etc/passwd
c. /etc/GID
d. /etc/group

4. ¿Qué ítem o archivo representa la ubicación de los archivos personales del usuario?
a. directorio de inicio
b. shell de inicio de sesión
c. /etc/passwd
d. /etc/group

5. ¿Qué ítem representa un número que identifica al grupo en el nivel más fundamental?
a. grupo principal
b. UID
c. GID
d. groupid

174 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

6. ¿Qué ítem o archivo representa la ubicación de la información de la cuenta de usuario


local?
a. directorio de inicio
b. /etc/passwd
c. /etc/UID
d. /etc/group

7. ¿Cuál es el cuarto campo del archivo /etc/passwd?


a. directorio de inicio
b. UID
c. shell de inicio de sesión
d. grupo principal

RH124-RHEL8.2-es-1-20200928 175
capítulo 6 | Administración de usuarios y grupos locales

Obtención de acceso de superusuario

Objetivos
Después de completar esta sección, podrá cambiar a la cuenta de superusuario para administrar
un sistema Linux y otorgar a otros usuarios acceso de superusuario a través del comando sudo.

El superusuario
La mayoría de los sistemas operativos tienen una especie de superusuario; un usuario que tiene
todo el poder sobre el sistema. En Red Hat Enterprise Linux, este es el usuario root. Este usuario
tiene el poder de anular los privilegios normales del sistema de archivos, y se usa para manejar y
administrar el sistema. Para realizar tareas, como la instalación o eliminación de software, y para
administrar los directorios y los archivos del sistema, los usuarios deben aumentar sus privilegios al
usuario root.

El usuario root solo entre los usuarios normales puede controlar la mayoría de los dispositivos,
pero hay algunas excepciones. Por ejemplo, los usuarios normales pueden controlar dispositivos
desmontables, como dispositivos USB. Por lo tanto, los usuarios normales pueden agregar y
eliminar archivos y administrar de otro modo un dispositivo desmontable, pero solo el usuario
root puede administrar los discos duros "fijos" de manera predeterminada.

Sin embargo, este privilegio ilimitado viene acompañado de una responsabilidad. El usuario
root tiene poder ilimitado para dañar el sistema: eliminar archivos y directorios, eliminar cuentas
de usuarios, agregar puertas traseras, etc. Si la cuenta del usuario root está comprometida,
alguien más tendrá control administrativo del sistema. A lo largo de este curso, se les indicará a los
administradores que inicien sesión como usuario normal y que escalen los privilegios a root solo
cuando sea necesario.

La cuenta root en Linux es casi equivalente a la cuenta de administrador local en Microsoft


Windows. En Linux, la mayoría de los administradores del sistema inician sesión en el sistema como
un usuario sin privilegios y usan distintas herramientas para ganar privilegios de usuario root
temporalmente.

Advertencia
Una práctica habitual en Microsoft Windows en el pasado era que el usuario
administrador local inicie sesión en forma directa para que realice las tareas de
administrador del sistema. Aunque esto es posible en Linux, Red Hat recomienda
que los administradores del sistema no inicien sesión directamente como root. En
su lugar, los administradores de sistema deben iniciar sesión como usuario normal y
usar otros mecanismos (su, sudo o PolicyKit, por ejemplo) para obtener privilegios
de superusuario temporalmente.

Mediante el inicio de sesión como superusuario, todo el entorno de escritorio se


ejecuta sin necesidad con privilegios administrativos. En esa situación, cualquier
vulnerabilidad de la seguridad, que normalmente pudiera comprometer solo la
cuenta del usuario, tiene el potencial de comprometer a todo el sistema.

176 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Intercambio de usuarios
El comando su le permite a los usuarios cambiar a una cuenta de usuario diferente. Si ejecuta
su desde una cuenta de usuario normal, se le solicitará la contraseña de la cuenta a la que desea
cambiar. Cuando root ejecuta su, no es necesario introducir la contraseña del usuario.

[user01@host ~]$ su - user02


Password:
[user02@host ~]$

Si omite el nombre de usuario, el comando su o su - intenta cambiar a root de forma


predeterminada.

[user01@host ~]$ su -
Password:
[root@host ~]#

El comando su inicia una shell sin inicio de sesión, mientras que el comando su - (con la opción
de guion) inicia una shell de inicio de sesión. La diferencia principal entre los dos comandos es que
su - establece el entorno de la shell como si iniciara una sesión nueva como ese usuario, mientras
que su simplemente inicia una shell como ese usuario, pero usa la configuración de entorno del
usuario original.

En la mayoría de los casos, los administradores deben ejecutar su - para obtener una shell con
la configuración de entorno normal del usuario de destino. Si desea obtener más información,
consulte la página del manual bash(1).

nota
El comando su se usa frecuentemente para obtener una interfaz de línea de
comandos (prompt de shell) que se ejecuta como otro usuario, generalmente root.
Sin embargo, con la opción -c, se puede usar como la utilidad de Windows runas
para ejecutar un programa arbitrario como otro usuario. Ejecute info su para ver
más detalles.

Ejecución de comandos con sudo


En algunos casos, la cuenta de usuario root puede no tener una contraseña válida por razones
de seguridad. En este caso, los usuarios no pueden iniciar sesión en el sistema como root
directamente con una contraseña, y su no se puede usar para obtener una shell interactiva. Una
herramienta que se puede utilizar para conseguir acceso de root en este caso es sudo .

A diferencia de su, sudo por lo general requiere que un usuario ingrese su propia contraseña para
la autenticación y no la contraseña de la cuenta a la que intenta acceder. Es decir, los usuarios que
utilizan sudo para ejecutar comandos como root no necesitan saber la contraseña root. En su
lugar, utilizan sus propias contraseñas para autenticar el acceso.

Además, sudo se puede configurar para permitir que usuarios específicos ejecuten cualquier
comando como otro usuario, o solo algunos comandos como ese usuario.

Por ejemplo, cuando sudo se configura para permitir al usuario user01 ejecutar el comando
usermod como root, el usuario user01 puede ejecutar el siguiente comando a fin de bloquear o
desbloquear una cuenta de usuario:

RH124-RHEL8.2-es-1-20200928 177
capítulo 6 | Administración de usuarios y grupos locales

[user01@host ~]$ sudo usermod -L user02


[sudo] password for user01:
[user01@host ~]$ su - user02
Password:
su: Authentication failure
[user01@host ~]$

Si un usuario intenta ejecutar un comando como otro usuario, y la configuración de sudo no lo


permite, el comando se bloqueará, el intento se registrará y, de forma predeterminada, se enviará
un correo electrónico al usuario root.

[user02@host ~]$ sudo tail /var/log/secure


[sudo] password for user02:
user02 is not in the sudoers file. This incident will be reported.
[user02@host ~]$

Un beneficio adicional de usar sudo es que todos los comandos ejecutados se registran de
manera predeterminada en /var/log/secure.

[user01@host ~]$ sudo tail /var/log/secure


...output omitted...
Feb 6 20:45:46 host sudo[2577]: user01 : TTY=pts/0 ; PWD=/home/user01 ;
USER=root ; COMMAND=/sbin/usermod -L user02
...output omitted...

En Red Hat Enterprise Linux 7 y Red Hat Enterprise Linux 8, todos los miembros del grupo
wheel pueden usar sudo para ejecutar comandos como cualquier usuario, incluido el usuario
root. Se le pedirá al usuario que ingrese su propia contraseña. Este es un cambio de Red Hat
Enterprise Linux 6 y versiones anteriores, donde los usuarios que eran miembros del grupo wheel
no obtenían este acceso administrativo de manera predeterminada.

Advertencia
RHEL 6 no otorgó ningún privilegio especial al grupo wheel de manera
predeterminada. Es probable que los sitios que estuvieron usando este grupo para
un propósito no estándar se sorprendan cuando RHEL 7 y RHEL 8 otorguen en
forma automática y a todos los miembros de wheel privilegios totales de sudo.
Esto podría provocar que usuarios no autorizados obtengan acceso administrativo a
los sistemas RHEL 7 y RHEL 8.

Históricamente, los sistemas similares a Unix usan la membresía en el grupo wheel


para otorgar o controlar el acceso como superusuario.

Obtención de una shell de root interactiva con sudo


Si hay una cuenta de usuario no administrativo en el sistema que puede usar sudo para ejecutar
el comando su, puede ejecutar sudo su - desde esa cuenta para obtener una shell de usuario
root interactiva. Esto funciona porque sudo ejecutará su - como root y root no necesita
ingresar una contraseña para usar su.

Otra forma de acceder a la cuenta root con sudo es usar el comando sudo -i. Esto cambiará
a la cuenta root y ejecutará la shell predeterminada de ese usuario (generalmente bash) y los

178 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

scripts de inicio de sesión de shell asociados. Si solo desea ejecutar la shell, puede utilizar el
comando sudo -s.

Por ejemplo, un administrador puede obtener una shell interactiva como root en una instancia
de AWS EC2 al usar una autenticación de clave pública de SSH para iniciar sesión como el usuario
normal ec2-user y, luego, ejecutar sudo -i para obtener la shell del usuario root.

[ec2-user@host ~]$ sudo -i


[sudo] password for ec2-user:
[root@host ~]#

El comando sudo su - y sudo -i no se comportan exactamente igual. Esto se analizará


brevemente al final de la sección.

Configuración de sudo
El archivo de configuración principal para sudo es /etc/sudoers. Para evitar problemas si varios
administradores intentan editarlo al mismo tiempo, solo debe editarse con el comando especial
visudo.

Por ejemplo, la siguiente línea del archivo /etc/sudoers habilita el acceso sudo para miembros
del grupo wheel.

%wheel ALL=(ALL) ALL

En esta línea, %wheel es el usuario o grupo al que se aplica la regla. Un % especifica que este es
un grupo, el grupo wheel. El ALL=(ALL) especifica que en cualquier host que pueda tener
este archivo, wheel puede ejecutar cualquier comando. El ALL final especifica que wheel puede
ejecutar esos comandos como cualquier usuario en el sistema.

De forma predeterminada, /etc/sudoers también incluye el contenido de cualquier archivo


del directorio /etc/sudoers.d como parte del archivo de configuración. Esto permite que un
administrador agregue acceso sudo para un usuario simplemente al colocar un archivo apropiado
en ese directorio.

nota
La utilización de archivos adicionales en el directorio /etc/sudoers.d es
conveniente y simple. Puede habilitar o deshabilitar el acceso sudo simplemente al
copiar un archivo en el directorio o eliminándolo de él.

En este curso, creará y eliminará archivos en el directorio /etc/sudoers.d para


configurar acceso sudo para usuarios y grupos.

Para habilitar acceso sudo completo para el usuario user01, puede crear /etc/sudoers.d/
user01 con el siguiente contenido.

user01 ALL=(ALL) ALL

Para habilitar acceso sudo completo para el grupo group01, puede crear /etc/sudoers.d/
group01 con el siguiente contenido:

RH124-RHEL8.2-es-1-20200928 179
capítulo 6 | Administración de usuarios y grupos locales

%group01 ALL=(ALL) ALL

También es posible configurar sudo para permitir que un usuario ejecute comandos como otro
usuario sin ingresar su contraseña.

ansible ALL=(ALL) NOPASSWD:ALL

Si bien otorgar este nivel de acceso a un usuario o grupo implica riesgos de seguridad
evidentes, se usa con frecuencia en instancias de la nube, máquinas virtuales y sistemas de
aprovisionamiento para facilitar la configuración de servidores. La cuenta con este acceso se debe
proteger cuidadosamente y puede requerir autenticación de clave pública de SSH para que un
usuario que se encuentra en un sistema remoto pueda acceder a ella.

Por ejemplo, la AMI oficial de Red Hat Enterprise Linux en Amazon Web Services Marketplace se
envía con las contraseñas de los usuarios root y ec2-user bloqueadas. La cuenta de usuario
ec2-user está configurada para permitir el acceso interactivo remoto a través de la autenticación
de clave pública de SSH. El usuario ec2-user también puede ejecutar cualquier comando
como root sin contraseña debido a que la última línea del archivo /etc/sudoers de AMI está
configurada de la siguiente manera:

ec2-user ALL=(ALL) NOPASSWD: ALL

El requisito de ingresar una contraseña para sudo puede volverse a habilitar o pueden hacerse
otros cambios para reforzar la seguridad como parte del proceso de configuración del sistema.

180 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

nota
En este curso, puede ver el uso de sudo su - en lugar de sudo -i. Ambos
comandos funcionan, pero hay algunas diferencias sutiles entre ellos.

El comando sudo su - configura el entorno de root exactamente igual que un


inicio de sesión normal porque el comando su - ignora las configuraciones que
realizó sudo y configura el entorno desde cero.

La configuración predeterminada del comando sudo -i en realidad establece


algunos detalles del entorno del usuario root de manera diferente al inicio de
sesión normal. Por ejemplo, establece la variable de entorno PATH con pequeñas
diferencias. Esto afecta el lugar donde la shell buscará los comandos.

Puede hacer que sudo -i se comporte más como su - mediante la edición de /


etc/sudoers con visudo. Encuentre la línea

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

y reemplácela con las siguientes dos líneas:

Defaults secure_path = /usr/local/bin:/usr/bin


Defaults>root secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

Para la mayoría de los propósitos, esta no es una gran diferencia. Sin embargo, por
razones de consistencia de la configuración de PATH en los sistemas con el archivo
/etc/sudoers predeterminado, los autores de este curso utilizan sudo -i en los
ejemplos y los ejercicios.

Referencias
Páginas del manual: su(1), sudo(8), visudo(8) y sudoers(5)

info libc persona (Manual de referencia de la biblioteca GNU C)

• Sección 30.2: "The Persona of a Process"

(Tenga en cuenta que el paquete glibc-devel se debe haber instalado para que este
nodo de información esté disponible).

RH124-RHEL8.2-es-1-20200928 181
capítulo 6 | Administración de usuarios y grupos locales

Ejercicio Guiado

Obtención de acceso de superusuario


En este ejercicio, practicará cambiar a la cuenta root y ejecutar comandos como root.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Usar sudo para cambiar a root y acceder a la shell interactiva como root sin tener que
saber la contraseña del superusuario.

• Explicar cómo su y su - pueden afectar al entorno de la shell al ejecutar o no ejecutar los


scripts de inicio de sesión.

• Usar sudo para ejecutar otros comandos como root.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-sudo start para comenzar el ejercicio. Este


script crea las cuentas de usuario y los archivos necesarios para configurar el entorno
correctamente.

[student@workstation ~]$ lab users-sudo start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Explore el entorno de la shell de student. Visualice la información del usuario y del grupo
actual, y muestre el directorio de trabajo actual. También vea las variables de entorno que
especifican el directorio de inicio del usuario y las ubicaciones de los archivos ejecutables
del usuario.

2.1. Ejecute id para ver la información del usuario y grupo actual.

[student@servera ~]$ id
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

2.2. Ejecute pwd para ver el directorio de trabajo actual.

[student@servera ~]$ pwd


/home/student

182 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

2.3. Imprima los valores de las variables HOME y PATH para determinar el directorio de
inicio y la ruta de los archivos ejecutables del usuario, respectivamente.

[student@servera ~]$ echo $HOME


/home/student
[student@servera ~]$ echo $PATH
/home/student/.local/bin:/home/student/bin:/usr/local/bin:/usr/bin:/usr/local/
sbin:/usr/sbin

3. Cambie a root en una shell sin inicio de sesión y explore el nuevo entorno de la shell.

3.1. Ejecute sudo su en el prompt de shell para convertirse en el usuario root.

[student@servera ~]$ sudo su


[sudo] password for student: student
[root@servera student]#

3.2. Ejecute id para ver la información del usuario y grupo actual.

[root@servera student]# id
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

3.3. Ejecute pwd para ver el directorio de trabajo actual.

[root@servera student]# pwd


/home/student

3.4. Imprima los valores de las variables HOME y PATH para determinar el directorio de
inicio y la ruta de los archivos ejecutables del usuario, respectivamente.

[root@servera student]# echo $HOME


/root
[root@servera student]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

Si ya tiene experiencia con Linux y el comando su, es posible que haya esperado que
el uso de su sin la opción del guion (-) para convertirse en root le haría mantener
el PATH actual de student. Eso no sucedió. Como verá en el siguiente paso, este
tampoco es el PATH habitual para root.
¿Qué sucedió? La diferencia es que no ejecutó su directamente. En cambio, ejecutó
su como root mediante sudo porque no cuenta con la contraseña del superusuario.
El comando sudo inicialmente anula la variable PATH del entorno inicial por razones
de seguridad. Cualquier comando que se ejecute después de la anulación inicial
todavía puede actualizar la variable PATH, como verá en los siguientes pasos.

3.5. Salga de la shell del usuario root para volver a la shell del usuario student.

[root@servera student]# exit


exit
[student@servera ~]$

RH124-RHEL8.2-es-1-20200928 183
capítulo 6 | Administración de usuarios y grupos locales

4. Cambie a root en una shell de inicio de sesión y explore el nuevo entorno de la shell.

4.1. Ejecute sudo su - en el prompt de shell para convertirse en el usuario root.

[student@servera ~]$ sudo su -


[root@servera ~]#

Observe la diferencia en el prompt de shell en comparación con el de sudo su en el


paso anterior.
sudo puede o no pedirle la contraseña de student, según el período de espera de
sudo. El período de espera predeterminado es de cinco minutos. Si se ha autenticado
en sudo en los últimos cinco minutos, sudo no le pedirá la contraseña. Si han pasado
más de cinco minutos desde que se autenticó en sudo, necesita ingresar student
como la contraseña para autenticarse en sudo.

4.2. Ejecute id para ver la información del usuario y grupo actual.

[root@servera ~]# id
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

4.3. Ejecute pwd para ver el directorio de trabajo actual.

[root@servera ~]# pwd


/root

4.4. Imprima los valores de las variables HOME y PATH para determinar el directorio de
inicio y la ruta de los archivos ejecutables del usuario, respectivamente.

[root@servera ~]# echo $HOME


/root
[root@servera ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Como en el paso anterior, después de que sudo restableció la variable PATH en la


configuración del entorno de shell del usuario student, el comando su - ejecutó los
scripts de inicio de sesión de la shell para root y estableció la variable PATH con otro
valor. El comando su sin la opción de guion (-) no hizo eso.

4.5. Salga de la shell del usuario root para volver a la shell del usuario student.

[root@servera ~]# exit


logout
[student@servera ~]$

5. Verifique que el usuario operator1 esté configurado para ejecutar cualquier comando
como cualquier usuario que use sudo.

[student@servera ~]$ sudo cat /etc/sudoers.d/operator1


operator1 ALL=(ALL) ALL

184 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

6. Conviértase en operator1 y vea el contenido de /var/log/messages. Copie /etc/


motd a /etc/motdOLD y elimínelo (/etc/motdOLD). Estas operaciones requieren
derechos administrativos, por lo que debe usar sudo para ejecutar esos comandos como
el superusuario. No cambie a root usando sudo su o sudo su -. Use redhat como la
contraseña de operator1.

6.1. Cambie a operator1.

[student@servera ~]$ su - operator1


Password: redhat
[operator1@servera ~]$

6.2. Intente ver las últimas cinco líneas de /var/log/messages sin usar sudo. Debería
fallar.

[operator1@servera ~]$ tail -5 /var/log/messages


tail: cannot open '/var/log/messages' for reading: Permission denied

6.3. Intente ver las últimas cinco líneas de /var/log/messages con sudo. Debería
funcionar.

[operator1@servera ~]$ sudo tail -5 /var/log/messages


[sudo] password for operator1: redhat
Jan 23 15:53:36 servera su[2304]: FAILED SU (to operator1) student on pts/1
Jan 23 15:53:51 servera su[2307]: FAILED SU (to operator1) student on pts/1
Jan 23 15:53:58 servera su[2310]: FAILED SU (to operator1) student on pts/1
Jan 23 15:54:12 servera su[2322]: (to operator1) student on pts/1
Jan 23 15:54:25 servera su[2353]: (to operator1) student on pts/1

nota
La salida anterior puede diferir en su sistema.

6.4. Intente hacer una copia de /etc/motd como /etc/motdOLD sin usar sudo. Debería
fallar.

[operator1@servera ~]$ cp /etc/motd /etc/motdOLD


cp: cannot create regular file '/etc/motdOLD': Permission denied

6.5. Intente hacer una copia de /etc/motd como /etc/motdOLD con sudo. Debería
funcionar.

[operator1@servera ~]$ sudo cp /etc/motd /etc/motdOLD


[operator1@servera ~]$

6.6. Intente eliminar /etc/motdOLD sin usar sudo. Debería fallar.

RH124-RHEL8.2-es-1-20200928 185
capítulo 6 | Administración de usuarios y grupos locales

[operator1@servera ~]$ rm /etc/motdOLD


rm: remove write-protected regular empty file '/etc/motdOLD'? y
rm: cannot remove '/etc/motdOLD': Permission denied
[operator1@servera ~]$

6.7. Intente eliminar /etc/motdOLD con sudo. Debería funcionar.

[operator1@servera ~]$ sudo rm /etc/motdOLD


[operator1@servera ~]$

6.8. Salga de la shell del usuario operator1 para volver a la shell del usuario student.

[operator1@servera ~]$ exit


logout
[student@servera ~]$

6.9. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab users-sudo finish para terminar este ejercicio. Este script
elimina las cuentas de usuario y los archivos creados al inicio del ejercicio para garantizar que el
entorno esté limpio.

[student@workstation ~]$ lab users-sudo finish

Esto concluye el ejercicio guiado.

186 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Administración de cuentas de usuarios


locales

Objetivos
Tras finalizar esta sección, deberá poder crear, modificar y eliminar cuentas de usuarios locales.

Administración de usuarios locales


Se puede usar una serie de herramientas de la línea de comandos para administrar cuentas de
usuarios locales.

Creación de usuarios desde la línea de comandos

• El comando useradd username crea un nuevo usuario llamado username. Configura el


directorio de inicio del usuario y la información de la cuenta, y crea un grupo privado para el
usuario denominado username. En este punto la cuenta no tiene configurada una contraseña
válida y el usuario no puede iniciar sesión hasta que se defina una.

• El comando useradd --help muestra las opciones básicas que pueden usarse para anular los
valores predeterminados. En la mayoría de los casos, las mismas opciones pueden usarse con el
comando usermod para modificar un usuario existente.

• Algunos valores predeterminados, como el rango de números UID válidos y las reglas de
vigencia de contraseñas predeterminadas, se leen desde el archivo /etc/login.defs. Los
valores incluidos en este archivo solo se usan durante la creación de usuarios nuevos. Un cambio
en este archivo no afectará a los usuarios existentes.

Modificación de usuarios existentes desde la línea de comandos

• El comando usermod --help muestra las opciones básicas que pueden usarse para modificar
una cuenta. Algunas opciones comunes incluyen las siguientes:

RH124-RHEL8.2-es-1-20200928 187
capítulo 6 | Administración de usuarios y grupos locales

Opciones de usermod: Uso

-c, --comment COMMENT Agregar el nombre real del usuario en el campo de


comentarios.

-g, --gid GROUP Especificar el grupo principal para la cuenta de usuario.

-G, --groups GROUPS Especificar una lista de grupos adicionales separados por
comas para la cuenta de usuario.

-a, --append Se utiliza con la opción -G para agregar los grupos


adicionales al conjunto actual de membresías de grupo
del usuario en lugar de reemplazar el conjunto de grupos
adicionales con un nuevo conjunto.

-d, --home HOME_DIR Especificar un directorio de inicio particular para la cuenta de


usuario.

-m, --move-home Mover el directorio de inicio del usuario a una nueva


ubicación. Debe usarse con la opción -d.

-s, --shell SHELL Especificar una shell de inicio de sesión particular para la
cuenta de usuario.

-L, --lock Bloquear la cuenta de usuario.

-U, --unlock Desbloquear la cuenta de usuario.

Eliminación de usuarios desde la línea de comandos

• El comando userdel username elimina los detalles de user01 de /etc/passwd, pero deja
el directorio de inicio del usuario intacto.

• El comando userdel -r username elimina los detalles de username de /etc/passwd, así


como el directorio de inicio del usuario.

188 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Advertencia
Cuando se elimina un usuario con userdel sin la opción -r especificada, el sistema
tendrá archivos que pertenecen a un UID no asignado. Esto también puede suceder
cuando un archivo, que tiene un usuario eliminado como su propietario, existe fuera
del directorio de inicio de ese usuario. Esta situación puede hacer que se filtre
información y causar otros problemas de seguridad.

En Red Hat Enterprise Linux 7 y Red Hat Enterprise Linux 8, el comando useradd
asigna a los nuevos usuarios el primer UID libre mayor o igual a 1000, a menos que
especifique explícitamente uno mediante la opción -u.

Así es como puede ocurrir que se filtre información. Si el primer UID libre ha sido
asignado previamente a una cuenta de usuario que ha sido eliminada del sistema, el
UID del usuario anterior se reasignará al nuevo usuario y le dará al nuevo usuario la
propiedad de los archivos restantes del usuario anterior.

A continuación se demuestra esta situación:

[root@host ~]# useradd user01


[root@host ~]# ls -l /home
drwx------. 3 user01 user01 74 Feb 4 15:22 user01
[root@host ~]# userdel user01
[root@host ~]# ls -l /home
drwx------. 3 1000 1000 74 Feb 4 15:22 user01
[root@host ~]# useradd user02
[root@host ~]# ls -l /home
drwx------. 3 user02 user02 74 Feb 4 15:23 user02
drwx------. 3 user02 user02 74 Feb 4 15:22 user01

Observe que user02 ahora es propietario de todos los archivos que pertenecieron
a user01.

Según la situación, una solución a este problema es eliminar todos los archivos
que no pertenecen a nadie del sistema cuando se elimina el usuario que los creó.
Otra solución es asignar manualmente los archivos que no pertenecen a nadie a
otro usuario. El usuario root puede utilizar el comando find / -nouser -o -
nogroup para encontrar todos los archivos y directorios que no pertenecen a nadie.

Configuración de contraseñas desde la línea de comandos

• El comando passwd username define la contraseña inicial o cambia la contraseña existente de


username.

• El usuario root puede definir una contraseña en cualquier valor. Aparecerá un mensaje si la
contraseña no cumple con los criterios mínimos recomendados, seguido de un prompt para que
vuelva a ingresar la contraseña nueva y todos los símbolos se actualizarán correctamente.

RH124-RHEL8.2-es-1-20200928 189
capítulo 6 | Administración de usuarios y grupos locales

[root@host ~]# passwd user01


Changing password for user user01.
New password: redhat
BAD PASSWORD: The password fails the dictionary check - it is based on a
dictionary word
Retype new password: redhat
passwd: all authentication tokens updated successfully.
[root@host ~]#

• Un usuario normal debe elegir una contraseña de al menos ocho caracteres y que no se base en
una palabra del diccionario, el nombre de usuario o la contraseña anterior.

Rangos de UID

Red Hat Enterprise Linux usa números y rangos de números de UID específicos con fines
específicos.

• UID 0 se asigna siempre a la cuenta de superusuario: root.

• UID 1-200 es un rango de "usuarios del sistema" que Red Hat asignó estadísticamente a
procesos del sistema.

• UID 201-999 es un rango de "usuarios del sistema" usado por procesos del sistema que no
tienen archivos en el sistema de archivos. Por lo general, se asignan dinámicamente del pool
(conjunto) disponible cuando el software que los necesita está instalado. Los programas se
ejecutan como estos usuarios del sistema "sin privilegios" para limitar el acceso únicamente a los
recursos que necesitan para funcionar.

• UID 1000+ es el rango disponible para la asignación a usuarios regulares.

nota
Antes de RHEL 7, la convención consistía en que UID 1-499 se usaba para usuarios
del sistema y UID 500+ para usuarios regulares. Los rangos predeterminados
usados por useradd y groupadd pueden modificarse en el archivo /etc/
login.defs.

Referencias
Páginas del manual: useradd(8), usermod(8), userdel(8)

190 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Ejercicio Guiado

Administración de cuentas de usuarios


locales
En este ejercicio, creará varios usuarios en su sistema y establecerá contraseñas para esos
usuarios.

Resultados
Deberá poder configurar un sistema Linux con cuentas de usuario adicionales.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-manage start para comenzar el ejercicio. Este


script asegura que el entorno esté configurado correctamente.

[student@workstation ~]$ lab users-manage start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En servera, cambie a root con sudo, lo que convierte el entorno de shell al del usuario
root.

[student@servera ~]$ sudo su -


[sudo] password for student: student
[root@servera ~]#

3. Cree el usuario operator1 y confirme que existe en el sistema.

[root@servera ~]# useradd operator1


[root@servera ~]# tail /etc/passwd
...output omitted...
operator1:x:1002:1002::/home/operator1:/bin/bash

4. Establezca la contraseña para operator1 como redhat.

RH124-RHEL8.2-es-1-20200928 191
capítulo 6 | Administración de usuarios y grupos locales

[root@servera ~]# passwd operator1


Changing password for user operator1.
New password: redhat
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: redhat
passwd: all authentication tokens updated successfully.

5. Cree los usuarios adicionales denominados operator2 y operator3. Establezca sus


contraseñas como redhat.

5.1. Agregue el usuario operator2. Establezca la contraseña para operator2 como


redhat.

[root@servera ~]# useradd operator2


[root@servera ~]# passwd operator2
Changing password for user operator2.
New password: redhat
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: redhat
passwd: all authentication tokens updated successfully.

5.2. Agregue el usuario operator3. Establezca la contraseña para operator3 como


redhat .

[root@servera ~]# useradd operator3


[root@servera ~]# passwd operator3
Changing password for user operator3.
New password: redhat
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: redhat
passwd: all authentication tokens updated successfully.

6. Actualice las cuentas de usuario operator1 y operator2 para incluir los comentarios
Operator One y Operator Two, respectivamente. Verifique que los comentarios se
hayan agregado correctamente.

6.1. Ejecute usermod -c para actualizar los comentarios de la cuenta de usuario


operator1.

[root@servera ~]# usermod -c "Operator One" operator1

6.2. Ejecute usermod -c para actualizar los comentarios de la cuenta de usuario


operator2.

[root@servera ~]# usermod -c "Operator Two" operator2

6.3. Confirme que los comentarios para cada uno de los usuarios operator1 y
operator2 se reflejen en los registros de usuario.

192 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

[root@servera ~]# tail /etc/passwd


...output omitted...
operator1:x:1002:1002:Operator One:/home/operator1:/bin/bash
operator2:x:1003:1003:Operator Two:/home/operator2:/bin/bash
operator3:x:1004:1004::/home/operator3:/bin/bash

7. Elimine el usuario operator3 junto con cualquier dato personal del usuario. Confirme que
el usuario se ha eliminado con éxito.

7.1. Elimine el usuario operator3 del sistema.

[root@servera ~]# userdel -r operator3

7.2. Confirme que operator3 se ha eliminado con éxito.

[root@servera ~]# tail /etc/passwd


...output omitted...
operator1:x:1002:1002:Operator One:/home/operator1:/bin/bash
operator2:x:1003:1003:Operator Two:/home/operator2:/bin/bash

Tenga en cuenta que la salida anterior no muestra la información de la cuenta de


usuario de operator3.

7.3. Salga de la shell del usuario root para volver a la shell del usuario student.

[root@servera ~]# exit


logout
[student@servera ~]$

7.4. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab users-manage finish para terminar este ejercicio. Este script
asegura que el entorno esté limpio.

[student@workstation ~]$ lab users-manage finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 193
capítulo 6 | Administración de usuarios y grupos locales

Administración de cuentas de grupos


locales

Objetivos
Tras finalizar esta sección, los estudiantes deberán ser capaces de crear, modificar y eliminar
cuentas de grupos locales.

Administración de grupos locales


Para que un usuario pueda agregarse a un grupo, primero debe crearse el grupo. Se emplean
diversas herramientas de la línea de comandos para administrar cuentas de grupos locales.

Creación de grupos desde la línea de comandos

• El comando groupadd crea grupos. Sin opciones, el comando groupadd emplea el siguiente
GID disponible de un rango especificado en el archivo /etc/login.defs mientras crea los
grupos.

• La opción -g especifica un GID particular para que el grupo use.

[user01@host ~]$ sudo groupadd -g 10000 group01


[user01@host ~]$ tail /etc/group
...output omitted...
group01:x:10000:

nota
Dada la creación automática de grupos privados de usuarios (GID 1000+),
generalmente se recomienda establecer aparte un rango de GID para su uso con los
grupos adicionales. Un rango más alto evitará una colisión con un grupo del sistema
(GID 0-999).

• La opción -r crea un grupo del sistema usando un GID del rango de GID de sistema válidos
incluidos en el archivo /etc/login.defs. Los ítems de configuración SYS_GID_MIN y
SYS_GID_MAX en /etc/login.defs definen el rango de GID del sistema.

[user01@host ~]$ sudo groupadd -r group02


[user01@host ~]$ tail /etc/group
...output omitted...
group01:x:10000:
group02:x:988:

Modificación de grupos existentes desde la línea de comandos

• El comando groupmod cambia las propiedades de un grupo existente. La opción -n especifica


un nuevo nombre para el grupo.

194 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

[user01@host ~]$ sudo groupmod -n group0022 group02


[user01@host ~]$ tail /etc/group
...output omitted...
group0022:x:988:

Observe que el nombre del grupo se actualiza a group0022 desde group02.

• La opción -g especifica un nuevo GID.

[user01@host ~]$ sudo groupmod -g 20000 group0022


[user01@host ~]$ tail /etc/group
...output omitted...
group0022:x:20000:

Tenga en cuenta que el GID se actualiza a 20000 desde 988.

Eliminación de grupos desde la línea de comandos

• El comando groupdel elimina grupos.

[user01@host ~]$ sudo groupdel group0022

nota
No puede eliminar un grupo si es el grupo principal de cualquier usuario existente.
Como en el caso de userdel, controle todos los sistemas de archivos para
asegurarse de que en el sistema no quede ningún archivo que sea propiedad del
grupo.

Cambio de membresía de grupo desde la línea de comandos

• La membresía de un grupo se controla con la administración de usuarios. Use el comando


usermod -g para cambiar el grupo principal de un usuario.

[user01@host ~]$ id user02


uid=1006(user02) gid=1008(user02) groups=1008(user02)
[user01@host ~]$ sudo usermod -g group01 user02
[user01@host ~]$ id user02
uid=1006(user02) gid=10000(group01) groups=10000(group01)

• Use el comando usermod -aG para agregar un usuario a un grupo adicional.

[user01@host ~]$ id user03


uid=1007(user03) gid=1009(user03) groups=1009(user03)
[user01@host ~]$ sudo usermod -aG group01 user03
[user01@host ~]$ id user03
uid=1007(user03) gid=1009(user03) groups=1009(user03),10000(group01)

RH124-RHEL8.2-es-1-20200928 195
capítulo 6 | Administración de usuarios y grupos locales

Importante
El uso de la opción -a hace que usermod funcione en modo adición. Sin -a, el
usuario se eliminará de cualquiera de sus grupos adicionales actuales que no estén
incluidos en la lista de la opción -G.

Referencias
Páginas del manual: group(5), groupadd(8), groupdel(8) y usermod(8)

196 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Ejercicio Guiado

Administración de cuentas de grupos


locales
En este ejercicio, creará grupos, los usará como grupos adicionales para algunos usuarios sin
cambiar los grupos principales de esos usuarios y configurará uno de los grupos con acceso
sudo para ejecutar comandos como root.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear grupos y usarlos como grupos adicionales.

• Configurar acceso sudo para un grupo.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-group-manage start para comenzar el ejercicio.


Este script crea las cuentas de usuario necesarias para configurar el entorno correctamente.

[student@workstation ~]$ lab users-group-manage start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En servera, cambie a root con sudo, heredando todo el entorno del usuario root.

[student@servera ~]$ sudo su -


[sudo] password for student: student
[root@servera ~]#

3. Cree el grupo adicional operators con el GID de 30000.

[root@servera ~]# groupadd -g 30000 operators

4. Cree admin como un grupo adicional.

[root@servera ~]# groupadd admin

5. Verifique que el grupo adicional operators y el grupo adicional admin existan.

RH124-RHEL8.2-es-1-20200928 197
capítulo 6 | Administración de usuarios y grupos locales

[root@servera ~]# tail /etc/group


...output omitted...
operators:x:30000:
admin:x:30001:

6. Asegúrese de que los usuarios operator1, operator2 y operator3 pertenecen al grupo


operators.

6.1. Agregue operator1, operator2 y operator3 a operators.

[root@servera ~]# usermod -aG operators operator1


[root@servera ~]# usermod -aG operators operator2
[root@servera ~]# usermod -aG operators operator3

6.2. Confirme que los usuarios se agregaron correctamente al grupo.

[root@servera ~]# id operator1


uid=1002(operator1) gid=1002(operator1) groups=1002(operator1),30000(operators)
[root@servera ~]# id operator2
uid=1003(operator2) gid=1003(operator2) groups=1003(operator2),30000(operators)
[root@servera ~]# id operator3
uid=1004(operator3) gid=1004(operator3) groups=1004(operator3),30000(operators)

7. Asegúrese de que los usuarios sysadmin1, sysadmin2 y sysadmin3 pertenecen al grupo


admin. Habilite los derechos administrativos para todos los miembros del grupo admin.
Verifique que cualquier miembro de admin pueda ejecutar comandos administrativos.

7.1. Agregue sysadmin1, sysadmin2 y sysadmin3 a admin.

[root@servera ~]# usermod -aG admin sysadmin1


[root@servera ~]# usermod -aG admin sysadmin2
[root@servera ~]# usermod -aG admin sysadmin3

7.2. Confirme que los usuarios se agregaron correctamente al grupo.

[root@servera ~]# id sysadmin1


uid=1005(sysadmin1) gid=1005(sysadmin1) groups=1005(sysadmin1),30001(admin)
[root@servera ~]# id sysadmin2
uid=1006(sysadmin2) gid=1006(sysadmin2) groups=1006(sysadmin2),30001(admin)
[root@servera ~]# id sysadmin3
uid=1007(sysadmin3) gid=1007(sysadmin3) groups=1007(sysadmin3),30001(admin)

7.3. Examine /etc/group para comprobar las membresías de grupo adicionales.

[root@servera ~]# tail /etc/group


...output omitted...
operators:x:30000:operator1,operator2,operator3
admin:x:30001:sysadmin1,sysadmin2,sysadmin3

198 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

7.4. Cree el archivo /etc/sudoers.d/admin para que los miembros de admin tengan
privilegios administrativos completos.

[root@servera ~]# echo "%admin ALL=(ALL) ALL" >> /etc/sudoers.d/admin

7.5. Cambie a sysadmin1 (un miembro de admin) y asegúrese de poder ejecutar un


comando sudo como sysadmin1.

[root@servera ~]# su - sysadmin1


[sysadmin1@servera ~]$ sudo cat /etc/sudoers.d/admin
[sudo] password for sysadmin1: redhat
%admin ALL=(ALL) ALL

7.6. Salga de la shell del usuario sysadmin1 para volver a la shell del usuario root.

[sysadmin1@servera ~]$ exit


logout
[root@servera ~]#

7.7. Salga de la shell del usuario root para volver a la shell del usuario student.

[root@servera ~]# exit


logout
[student@servera ~]$

7.8. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab users-group-manage finish para terminar este ejercicio.
Este script elimina las cuentas de usuario creadas al inicio del ejercicio.

[student@workstation ~]$ lab users-group-manage finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 199
capítulo 6 | Administración de usuarios y grupos locales

Administración de contraseñas de
usuarios

Objetivos
Después de completar esta sección, deberá ser capaz de establecer una política de administración
de contraseñas para los usuarios, así como de bloquear y desbloquear manualmente las cuentas
de los usuarios.

Contraseñas ocultas y política de contraseñas


En algún momento, las contraseñas cifradas se almacenaban en el archivo /etc/passwd de
lectura global. Se pensaba que esta ubicación era bastante segura hasta que los ataques de
diccionarios a contraseñas cifradas se volvieron frecuentes. En ese punto, las contraseñas cifradas
se trasladaron a un archivo /etc/shadow independiente que solo es legible para root. Este
nuevo archivo también permitió la implementación de características de vigencia y caducidad de
la contraseña.

Como en el caso de /etc/passwd, cada usuario tiene una línea en el archivo /etc/shadow. A
continuación se muestra una línea de muestra de /etc/shadow con sus nueve campos separados
por dos puntos.

user03: $6$CSsX...output omitted...: 17933: 0: 99999: 7: 2: 18113:

Nombre de usuario de la cuenta a la que pertenece esta contraseña.


La contraseña cifrada del usuario. El formato de las contraseñas cifradas se describe más
adelante en esta sección.
La fecha en la que se cambió la contraseña por última vez. Esto se establece en días desde
1970-01-01 y se calcula en la zona horaria UTC.
El número mínimo de días que deben transcurrir desde el último cambio de contraseña antes
de que el usuario pueda volver a cambiarla.
El número máximo de días que pueden transcurrir sin un cambio de contraseña antes de que
la contraseña caduque. Un campo vacío significa que no caduca según el tiempo transcurrido
desde el último cambio.
Período de advertencia. Se advertirá al usuario sobre la caducidad de una contraseña cuando
inicie sesión para este número de días antes de la fecha límite.
Periodo de inactividad. Una vez que la contraseña haya caducado, se seguirá aceptando para
iniciar sesión durante esta cantidad de días. Una vez transcurrido este período, la cuenta se
bloqueará.
El día en que caduca la cuenta. Esto se establece en días desde 1970-01-01 y se calcula en la
zona horaria UTC. Un campo vacío significa que no caduca en una fecha en particular.
Por lo general, el último campo está vacío y se reserva para su uso en el futuro.

Formato de una contraseña cifrada


El campo de contraseña cifrada almacena tres datos: el algoritmo de hash utilizado, el valor
aleatorio y el hash cifrado. Cada dato está delimitado por el signo $.

$ 6$ CSsXcYG1L/4ZfHr/$ 2W6evvJahUfzfHpc9X.45Jc6H30E...output omitted...

200 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

El algoritmo de hash utilizado para esta contraseña. El número 6 indica que es un hash
SHA-512, el predeterminado en Red Hat Enterprise Linux 8. Un 1 indicaría MD5, un SHA-256
5.
El valor aleatorio utilizado para cifrar la contraseña. Originalmente, se elige al azar.
El hash cifrado de la contraseña del usuario. El valor aleatorio y la contraseña no cifrada se
combinan y se cifran para generar este hash cifrado de la contraseña.

El motivo principal para combinar un valor aleatorio con la contraseña es defenderse contra los
ataques mediante listas de hash de contraseñas calculadas previamente. La adición de valores
aleatorios cambia los hash resultantes, lo que permite que la lista previamente calculada sea inútil.
Si un atacante puede obtener una copia de un archivo /etc/shadow que usa valores aleatorios,
necesitará adivinar la contraseña por la fuerza y requerirá más tiempo y esfuerzo.

Verificación de contraseña
Cuando un usuario intenta iniciar sesión, el sistema busca la entrada correspondiente al usuario en
/etc/shadow, combina el valor aleatorio del usuario con la contraseña sin cifrar que se ingresó y
los cifra usando el algoritmo de hash especificado. Si el resultado coincide con el hash cifrado, el
usuario ingresó la contraseña correcta. Si el resultado no coincide con el hash cifrado, el usuario
ingresó una contraseña incorrecta y el intento de inicio de sesión falla. Este método permite que el
sistema determine si el usuario ingresó la contraseña correcta sin almacenarla en una forma que se
puede usar en el inicio de sesión.

Configuración de vigencia de contraseñas


En el siguiente diagrama, se indican los parámetros de vigencia de contraseñas relevantes que
pueden ajustarse mediante el comando chage para implementar una política de vigencia de
contraseñas.

[user01@host ~]$ sudo chage -m 0 -M 90 -W 7 -I 14 user03

El comando chage anterior usa las opciones -m, -M, -W y -I para establecer la vigencia mínima,
la vigencia máxima, el período de advertencia y el período de inactividad de la contraseña del
usuario, respectivamente.

El comando chage -d 0 user03 obliga al usuario user03 a actualizar su contraseña en el


siguiente inicio de sesión.

El comando chage -l user03 muestra los detalles de vigencia de la contraseña de user03.

RH124-RHEL8.2-es-1-20200928 201
capítulo 6 | Administración de usuarios y grupos locales

El comando chage -E 2019-08-05 user03 hace que la cuenta del usuario user03 caduque
el 2019-08-05 (en formato AAAA-MM-DD).

nota
El comando date puede usarse para calcular una fecha en el futuro. La opción -u
informa la hora en UTC.

[user01@host ~]$ date -d "+45 days" -u


Thu May 23 17:01:20 UTC 2019

Edite los ítems de configuración de vigencia de la contraseña en el archivo /etc/login.defs


para establecer las políticas predeterminadas de vigencia de la contraseña. PASS_MAX_DAYS
define la vigencia máxima predeterminada de la contraseña. PASS_MIN_DAYS define la vigencia
mínima predeterminada de la contraseña. PASS_WARN_AGE define el período de advertencia
predeterminado de la contraseña. Cualquier cambio en las políticas de vigencia predeterminadas
de la contraseña será efectivo solo para usuarios nuevos. Los usuarios existentes seguirán usando
la configuración de vigencia de la contraseña anterior en lugar de las nuevas.

Restricción de acceso
Puede usar el comando chage para establecer las fechas de vencimiento de la cuenta. Cuando
se alcanza la fecha, el usuario no puede iniciar sesión en el sistema de manera interactiva. El
comando usermod puede bloquear una cuenta con la opción -L.

[user01@host ~]$ sudo usermod -L user03


[user01@host ~]$ su - user03
Password: redhat
su: Authentication failure

Si un usuario se va de la empresa, el administrador puede bloquear una cuenta y determinar su


caducidad con un único comando usermod. La fecha debe indicarse como la cantidad de días
desde 1970-01-01 o en el formato AAAA-MM-DD.

[user01@host ~]$ sudo usermod -L -e 2019-10-05 user03

El comando usermod anterior usa la opción -e para establecer la fecha de vencimiento de la


cuenta para la cuenta de usuario dada. La opción -L bloquea la contraseña del usuario.

El bloqueo de la cuenta evita que el usuario logre la autenticación con una contraseña en el
sistema. Esta es la forma recomendada de evitar que un empleado que se fue de la empresa
acceda a su cuenta. Si el empleado regresa, la cuenta puede desbloquearse con usermod -U. Si
la cuenta también caducó, asegúrese de modificar, además, la fecha de caducidad.

La shell nologin
La shell nologin actúa como una shell de reemplazo para las cuentas de usuario que no están
destinadas a iniciar sesión de forma interactiva en el sistema. Desde el punto de vista de la
seguridad, se recomienda deshabilitar el inicio de sesión de una cuenta en el sistema, cuando
la cuenta no lo requiere. Por ejemplo, un servidor de correo puede necesitar una cuenta para
almacenar correos y una contraseña para que el usuario realice la autenticación con un cliente

202 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

de correo usado para recuperar correo. Dicho usuario no debe iniciar sesión directamente en el
sistema.

Ante una situación como la anterior, una solución común es definir la shell de inicio de sesión del
usuario en /sbin/nologin. Si el usuario intenta iniciar sesión en el sistema directamente, la shell
nologin cierra la conexión.

[user01@host ~]$ usermod -s /sbin/nologin user03


[user01@host ~]$ su - user03
Last login: Wed Feb 6 17:03:06 IST 2019 on pts/0
This account is currently not available.

Importante
La shell nologin evita el uso interactivo del sistema, pero no evita todo el acceso.
Los usuarios pueden, de todas maneras, realizar la autenticación y cargar o
recuperar archivos a través de aplicaciones, como aplicaciones web, programas de
transferencia de archivos o lectores de correo si utilizan la contraseña del usuario
para autenticarse.

Referencias
Páginas del manual: chage(1), usermod(8), shadow(5), crypt(3)

RH124-RHEL8.2-es-1-20200928 203
capítulo 6 | Administración de usuarios y grupos locales

Ejercicio Guiado

Administración de contraseñas de
usuarios
En este ejercicio de laboratorio, configurará políticas de contraseña para varios usuarios.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Forzar un cambio de contraseña cuando el usuario inicia sesión en el sistema por primera
vez.

• Forzar un cambio de contraseña cada 90 días.

• Configurar la cuenta para que caduque 180 días a partir del día actual.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-pw-manage start para comenzar el ejercicio.


Este script crea las cuentas de usuario y los archivos necesarios para garantizar la
configuración correcta del entorno.

[student@workstation ~]$ lab users-pw-manage start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En servera, explore el bloqueo y desbloqueo de cuentas de usuario como student.

2.1. Como student, bloquee la cuenta operator1 con derechos administrativos.

[student@servera ~]$ sudo usermod -L operator1


[sudo] password for student: student

2.2. Intente iniciar sesión como operator1. Debería fallar.

[student@servera ~]$ su - operator1


Password: redhat
su: Authentication failure

2.3. Desbloquee la cuenta operator1.

204 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

[student@servera ~]$ sudo usermod -U operator1

2.4. Intente iniciar sesión como operator1 nuevamente. Debería funcionar.

[student@servera ~]$ su - operator1


Password: redhat
...output omitted...
[operator1@servera ~]$

2.5. Salga de la shell del usuario operator1 para volver a la shell del usuario student.

[operator1@servera ~]$ exit


logout

3. Cambie la política de contraseña para operator1 a fin de solicitar una contraseña


nueva cada 90 días. Confirme que la vigencia de la contraseña se haya establecido
correctamente.

3.1. Establezca la vigencia máxima de la contraseña del usuario operator1 en 90 días.

[student@servera ~]$ sudo chage -M 90 operator1

3.2. Verifique que la contraseña del usuario operator1 caduque 90 días después de que
se modifica.

[student@servera ~]$ sudo chage -l operator1


Last password change : Jan 25, 2019
Password expires : Apr 25, 2019
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7

4. Fuerce un cambio de contraseña en el primer inicio de sesión en la cuenta de operator1.

[student@servera ~]$ sudo chage -d 0 operator1

5. Inicie sesión como operator1 y cambie la contraseña a forsooth123. Después de


configurar la contraseña, vuelva a la shell del usuario student.

5.1. Inicie sesión como operator1 y cambie la contraseña a forsooth123 cuando se le


solicite.

RH124-RHEL8.2-es-1-20200928 205
capítulo 6 | Administración de usuarios y grupos locales

[student@servera ~]$ su - operator1


Password: redhat
You are required to change your password immediately (administrator enforced)
Current password: redhat
New password: forsooth123
Retype new password: forsooth123
...output omitted...
[operator1@servera ~]$

5.2. Salga de la shell del usuario operator1 para volver a la shell del usuario student.

[operator1@servera ~]$ exit


logout

6. Configure la cuenta de operator1 para que caduque 180 días a partir del día actual.
Consejo: date -d "+180 days" le da la fecha y la hora 180 días a partir de la fecha y la
hora actuales.

6.1. Determine la fecha de vencimiento en 180 días. Use el formato %F con el comando
date para obtener el valor exacto.

[student@servera ~]$ date -d "+180 days" +%F


2019-07-24

Puede obtener un valor diferente para usar en el siguiente paso según la fecha y la
hora actuales en su sistema.

6.2. Configure la cuenta para que caduque en la fecha que se muestra en el paso anterior.

[student@servera ~]$ sudo chage -E 2019-07-24 operator1

6.3. Verifique que la fecha de vencimiento de la cuenta se haya establecido


correctamente.

[student@servera ~]$ sudo chage -l operator1


Last password change : Jan 25, 2019
Password expires : Apr 25, 2019
Password inactive : never
Account expires : Jul 24, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7

7. Establezca las contraseñas para que caduquen 180 días a partir de la fecha actual para
todos los usuarios. Use los derechos administrativos para editar el archivo de configuración.

7.1. Establezca PASS_MAX_DAYS en 180 en /etc/login.defs. Use los derechos


administrativos al abrir el archivo con el editor de texto. Puede usar el comando sudo
vim /etc/login.defs para realizar este paso.

206 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

...output omitted...
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be
# used.
# PASS_MIN_DAYS Minimum number of days allowed between
# password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a
# password expires.
#
PASS_MAX_DAYS 180
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
...output omitted...

Importante
La contraseña predeterminada y la configuración de caducidad de la cuenta serán
efectivas para los nuevos usuarios, pero no para los usuarios existentes.

7.2. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab users-pw-manage finish para terminar este ejercicio. Este
script elimina las cuentas de usuario y los archivos creados al inicio del ejercicio para garantizar
que el entorno esté limpio.

[student@workstation ~]$ lab users-pw-manage finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 207
capítulo 6 | Administración de usuarios y grupos locales

Trabajo de laboratorio

Administración de usuarios y grupos


locales
Lista de verificación de rendimiento
En este trabajo de laboratorio, definirá una política de contraseña local predeterminada,
creará un grupo adicional de tres usuarios, permitirá que el grupo use sudo para ejecutar
comandos como root y modificará la política de contraseña de un usuario.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Establecer una política de vigencia de contraseña predeterminada de la contraseña del


usuario local.

• Crear un grupo y usar el grupo como grupo adicional para los nuevos usuarios.

• Crear tres nuevos usuarios con el nuevo grupo como su grupo adicional.

• Configurar los miembros del grupo adicional para ejecutar cualquier comando como
cualquier usuario que use sudo.

• Establecer una política de vigencia de contraseña específica del usuario.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-review start para comenzar el ejercicio. Este


script crea los archivos necesarios para garantizar la configuración correcta del entorno.

[student@workstation ~]$ lab users-review start

1. Desde workstation, abra una sesión de SSH en serverb como student.


2. En serverb, asegúrese de que los usuarios creados recientemente tengan contraseñas que
se deben cambiar cada 30 días.
3. Cree el nuevo grupo denominado consultants con un GID de 35000.
4. Configure los derechos administrativos para que todos los miembros de consultants
puedan ejecutar cualquier comando como cualquier usuario.
5. Cree los usuarios consultant1, consultant2 y consultant3 con consultants como
su grupo adicional.
6. Configure las cuentas consultant1, consultant2 y consultant3 para que venzan en
90 días a partir del día actual.
7. Cambie la política de contraseña para la cuenta consultant2 a fin de solicitar una
contraseña nueva cada 15 días.

208 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

8. Además, fuerce a los usuarios consultant1, consultant2 y consultant3 a cambiar sus


contraseñas en el primer inicio de sesión.

Evaluación
En workstation, ejecute el comando lab users-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab users-review grade

Finalizar
En workstation, ejecute lab users-review finish para terminar este trabajo de
laboratorio. Este script elimina las cuentas de usuario y los archivos creados durante el trabajo de
laboratorio para garantizar que el entorno esté limpio.

[student@workstation ~]$ lab users-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 209
capítulo 6 | Administración de usuarios y grupos locales

Solución

Administración de usuarios y grupos


locales
Lista de verificación de rendimiento
En este trabajo de laboratorio, definirá una política de contraseña local predeterminada,
creará un grupo adicional de tres usuarios, permitirá que el grupo use sudo para ejecutar
comandos como root y modificará la política de contraseña de un usuario.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Establecer una política de vigencia de contraseña predeterminada de la contraseña del


usuario local.

• Crear un grupo y usar el grupo como grupo adicional para los nuevos usuarios.

• Crear tres nuevos usuarios con el nuevo grupo como su grupo adicional.

• Configurar los miembros del grupo adicional para ejecutar cualquier comando como
cualquier usuario que use sudo.

• Establecer una política de vigencia de contraseña específica del usuario.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab users-review start para comenzar el ejercicio. Este


script crea los archivos necesarios para garantizar la configuración correcta del entorno.

[student@workstation ~]$ lab users-review start

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. En serverb, asegúrese de que los usuarios creados recientemente tengan contraseñas que
se deben cambiar cada 30 días.

2.1. Establezca PASS_MAX_DAYS en 30 en /etc/login.defs. Use los derechos


administrativos al abrir el archivo con el editor de texto. Puede usar el comando sudo
vim /etc/login.defs para realizar este paso. Use student como la contraseña
cuando sudo le solicita que ingrese la contraseña del usuario student.

210 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

...output omitted...
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be
# used.
# PASS_MIN_DAYS Minimum number of days allowed between
# password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a
# password expires.
#
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
...output omitted...

3. Cree el nuevo grupo denominado consultants con un GID de 35000.

[student@serverb ~]$ sudo groupadd -g 35000 consultants

4. Configure los derechos administrativos para que todos los miembros de consultants
puedan ejecutar cualquier comando como cualquier usuario.

4.1. Cree el nuevo archivo /etc/sudoers.d/consultants y agregue el siguiente


contenido. Puede usar el comando sudo vim /etc/sudoers.d/consultants
para realizar este paso.

%consultants ALL=(ALL) ALL

5. Cree los usuarios consultant1, consultant2 y consultant3 con consultants como


su grupo adicional.

[student@serverb ~]$ sudo useradd -G consultants consultant1


[student@serverb ~]$ sudo useradd -G consultants consultant2
[student@serverb ~]$ sudo useradd -G consultants consultant3

6. Configure las cuentas consultant1, consultant2 y consultant3 para que venzan en


90 días a partir del día actual.

6.1. Determine la fecha de vencimiento en 90 días. Puede obtener un valor diferente a la


siguiente salida, según la fecha y la hora actuales en su sistema.

[student@serverb ~]$ date -d "+90 days" +%F


2019-04-28

6.2. Configure la fecha de vencimiento de las cuentas consultant1, consultant2 y


consultant3 con el mismo valor determinado en el paso anterior.

RH124-RHEL8.2-es-1-20200928 211
capítulo 6 | Administración de usuarios y grupos locales

[student@serverb ~]$ sudo chage -E 2019-04-28 consultant1


[student@serverb ~]$ sudo chage -E 2019-04-28 consultant2
[student@serverb ~]$ sudo chage -E 2019-04-28 consultant3

7. Cambie la política de contraseña para la cuenta consultant2 a fin de solicitar una


contraseña nueva cada 15 días.

[student@serverb ~]$ sudo chage -M 15 consultant2

8. Además, fuerce a los usuarios consultant1, consultant2 y consultant3 a cambiar sus


contraseñas en el primer inicio de sesión.

8.1. Establezca el último día del cambio de contraseña en 0 para que los usuarios se vean
obligados a cambiar la contraseña cuando inicien sesión en el sistema por primera vez.

[student@serverb ~]$ sudo chage -d 0 consultant1


[student@serverb ~]$ sudo chage -d 0 consultant2
[student@serverb ~]$ sudo chage -d 0 consultant3

8.2. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.

Evaluación
En workstation, ejecute el comando lab users-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab users-review grade

Finalizar
En workstation, ejecute lab users-review finish para terminar este trabajo de
laboratorio. Este script elimina las cuentas de usuario y los archivos creados durante el trabajo de
laboratorio para garantizar que el entorno esté limpio.

[student@workstation ~]$ lab users-review finish

Esto concluye el trabajo de laboratorio.

212 RH124-RHEL8.2-es-1-20200928
capítulo 6 | Administración de usuarios y grupos locales

Resumen
En este capítulo, aprendió lo siguiente:

• Hay tres tipos principales de cuenta de usuario: el superusuario, el usuario del sistema y el
usuario normal.

• Un usuario debe tener un grupo principal y puede ser miembro de uno o más grupos adicionales.

• Los tres archivos críticos que contienen información de usuarios y grupos son /etc/passwd , /
etc/group y /etc/shadow.

• Los comandos su y sudose pueden utilizar para ejecutar comandos como superusuario.

• Los comandos useradd , usermod y userdel se pueden utilizar para administrar usuarios.

• Los comandos groupadd , groupmod y groupdel se pueden utilizar para administrar grupos.

• El comando chage se puede utilizar para configurar y ver la configuración de caducidad de la


contraseña de los usuarios.

RH124-RHEL8.2-es-1-20200928 213
214 RH124-RHEL8.2-es-1-20200928
capítulo 7

Control de acceso a los archivos


Meta Configurar los permisos del sistema de archivos
Linux en los archivos e interpretar los efectos
de seguridad de los distintos parámetros de
configuración de permisos.

Objetivos • Enumerar los permisos del sistema de archivos


en archivos y directorios, e interpretar el efecto
de esos permisos en el acceso de los usuarios y
grupos.
• Cambiar los permisos y la propiedad de los
archivos con las herramientas de línea de
comandos.
• Controlar los permisos predeterminados de
los nuevos archivos creados por los usuarios,
explicar el efecto de los permisos especiales
y usar permisos especiales y permisos
predeterminados para configurar el propietario
del grupo de archivos creados en un directorio
en particular.

Secciones • Interpretación de los permisos del sistema de


archivos de Linux (y cuestionario)
• Administración de los permisos del sistema de
archivos de la línea de comandos (y ejercicio
guiado)
• Administración de permisos predeterminados y
acceso a archivos (y ejercicio guiado)

Trabajo de Control de acceso a los archivos


laboratorio

RH124-RHEL8.2-es-1-20200928 215
capítulo 7 | Control de acceso a los archivos

Interpretación de los permisos del


sistema de archivos de Linux

Objetivos
Tras completar esta sección, deberá poder enumerar los permisos del sistema de archivos en
archivos y directorios, e interpretar el efecto de esos permisos en el acceso de los usuarios y
grupos.

Permisos del sistema de archivos de Linux


Los permisos de archivos controlan el acceso a los archivos. Los permisos de archivos de Linux son
simples pero flexibles, lo que hace que sean fáciles de comprender y de aplicar y, al mismo tiempo,
permiten gestionar fácilmente los casos más normales de permisos.

Los archivos tienen tres categorías de usuario a las que se les aplican permisos. El propietario del
archivo es un usuario que normalmente es quien lo creó. También es posible que el propietario
del archivo sea un solo grupo, generalmente el grupo primario del usuario que creó el archivo,
pero esto se puede cambiar. Pueden establecerse diferentes permisos para el usuario o grupo
propietario y para otros usuarios del sistema que no sean el usuario o un miembro del grupo
propietario.

Los permisos más específicos tienen prioridad. Los permisos de usuario anulan los permisos de
grupo, lo cual anula los permisos de otros.

En Figura 7.1, joshua es un miembro de los grupos joshua y web, y allison es miembro de los
grupos allison, wheel y web. Cuando joshua y allison necesitan colaborar, los archivos
deben asociarse con el grupo web y los permisos del grupo deben permitir el acceso deseado.

Figura 7.1: Ejemplo de pertenencia a un grupo para facilitar la colaboración

Se utilizan tres categorías de permisos: lectura, escritura y ejecución. En la siguiente tabla, se


explica cómo estos permisos afectan el acceso a archivos y directorios.

Efectos de los permisos en archivos y directorios

Permiso Efecto en los archivos Efecto en los directorios

r (lectura) Puede leerse el contenido El contenido del directorio (nombres de


del archivo. archivo) puede detallarse.

w (escritura) Puede cambiarse el Cualquier archivo en el directorio puede


contenido del archivo. crearse o eliminarse.

216 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Permiso Efecto en los archivos Efecto en los directorios

x (ejecución) Los archivos pueden El directorio puede convertirse en el directorio


ejecutarse como comandos. de trabajo actual. (Usted puede cd en él, pero
también se requiere permiso de lectura para
enumerar los archivos que se encuentran allí).

Los usuarios normalmente poseen permisos tanto de lectura como de ejecución en los directorios
de solo lectura, por lo que pueden enumerar el directorio y tener acceso completo de solo lectura
a su contenido. Si un usuario solo posee acceso de lectura en un directorio, los nombres de los
archivos dentro de este pueden enumerarse, pero no estará disponible otra información, incluidos
permisos o marcas de tiempo, y tampoco se podrá acceder a ellos. Si un usuario solo tiene acceso
de ejecución en un directorio, no puede enumerar nombres de archivo en el directorio. Si el usuario
conoce el nombre de un archivo para el cual tiene permiso de lectura, puede acceder al contenido
de ese archivo desde fuera del directorio al especificar explícitamente el nombre de archivo
relativo.

Todo usuario que sea propietario o cuente con permisos de escritura para el directorio donde se
encuentra el archivo puede quitar un archivo, sin importar la propiedad ni los permisos del archivo
en sí. Esto puede anularse con un permiso especial, el sticky bit, que trataremos más adelante en
este capítulo.

nota
Los permisos de archivos Linux funcionan de manera diferente al sistema de
permisos del sistema de archivos NTFS para Microsoft Windows.

En Linux, los permisos se aplican solo al archivo o directorio en el que están


configurados. Es decir, los permisos en un directorio no se heredan de forma
automática por los subdirectorios o los archivos que se encuentran en él. Sin
embargo, los permisos de un directorio pueden bloquear el acceso al contenido del
directorio según qué tan restrictivos sean.

El permiso de lectura en un directorio de Linux es casi equivalente a Mostrar el


contenido de la carpeta en Windows.

El permiso de escritura en un directorio de Linux es equivalente a Modify


(Modificación) en Windows. Esto implica la posibilidad de eliminar archivos y
subdirectorios. En Linux, si escritura y sticky bit están establecidos en un
directorio, solo el propietario del archivo o subdirectorio puede eliminarlos, lo que se
asemeja al comportamiento del permiso de escritura de Windows.

El usuario root en Linux posee los permisos equivalentes a Full Control (Control
total) de Windows en todos los archivos. Sin embargo, el usuario root puede tener
acceso restringido por la política de SELinux del sistema que utiliza contextos de
seguridad del proceso y de los archivos. SELinux se analizará en un curso posterior.

Visualización de permisos y propiedades de archivos y


directorios
La opción -l del comando ls muestra información detallada sobre permisos y propiedad:

RH124-RHEL8.2-es-1-20200928 217
capítulo 7 | Control de acceso a los archivos

[user@host~]$ ls -l test
-rw-rw-r--. 1 student student 0 Feb 8 17:36 test

Utilice la opción -d para mostrar información detallada sobre un directorio, y no sobre su


contenido.

[user@host ~]$ ls -ld /home


drwxr-xr-x. 5 root root 4096 Jan 31 22:00 /home

El primer carácter del listado extenso representa el tipo de archivo, que se interpreta de la
siguiente manera:

• - es un archivo regular.
• d es un directorio.
• l es un enlace blando.
• Otros caracteres representan dispositivos de hardware (b y c) u otros archivos con fines
específicos (p y s).

Los siguientes nueve caracteres son los permisos de archivo. Se encuentran en tres conjuntos
de tres caracteres: permisos que se aplican al usuario que es propietario del archivo, al grupo
que es propietario del archivo y a todos los demás usuarios. Si el conjunto muestra rwx, esa
categoría tiene los tres permisos: lectura, escritura y ejecución. Si se ha reemplazado una letra por
-, entonces esa categoría no tiene ese permiso.

Después del recuento de enlaces, el primer nombre especifica el usuario que es propietario del
archivo, y el segundo nombre el grupo que es propietario del archivo.

Por lo tanto, en el ejemplo anterior, los permisos para el usuario student se especifican mediante
el primer conjunto de tres caracteres. El usuario student tiene permisos de lectura y escritura
para test, pero no de ejecución.

El grupo student se especifica mediante el segundo conjunto de tres caracteres: también tiene
permisos de lectura y escritura en test, pero no de ejecución.

Los permisos de cualquier otro usuario se especifican mediante el tercer conjunto de tres
caracteres: solo tienen permiso de lectura para test.

Se aplica el conjunto de permisos más específicos. Por lo tanto, si el usuario student tiene
diferentes permisos que el grupo student, y el usuario student también es miembro de ese
grupo, entonces los permisos del usuario serán los que se apliquen.

Ejemplos de efectos de permisos


Los siguientes ejemplos ayudarán a ilustrar cómo interactúan los permisos de archivos. Para estos
ejemplos, tenemos cuatro usuarios con las siguientes membresías de grupo:

Usuario Membresías de grupo

operator1 operator1, consultant1

database1 database1, consultant1

database2 database2, operator2

contractor1 contractor1, operator2

218 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Esos usuarios trabajarán con archivos en el directorio dir. Este es un listado extenso de los
archivos en ese directorio:

[database1@host dir]$ ls -la


total 24
drwxrwxr-x. 2 database1 consultant1 4096 Apr 4 10:23 .
drwxr-xr-x. 10 root root 4096 Apr 1 17:34 ..
-rw-rw-r--. 1 operator1 operator1 1024 Apr 4 11:02 lfile1
-rw-r--rw-. 1 operator1 consultant1 3144 Apr 4 11:02 lfile2
-rw-rw-r--. 1 database1 consultant1 10234 Apr 4 10:14 rfile1
-rw-r-----. 1 database1 consultant1 2048 Apr 4 10:18 rfile2

La opción -a muestra los permisos de los archivos ocultos, incluidos los archivos especiales
utilizados para representar el directorio y su directorio principal. En este ejemplo, . refleja los
permisos de dir, y .. los permisos de su directorio principal.

¿Cuáles son los permisos de rfile1? El usuario que es propietario del archivo (database1)
tiene permisos de lectura y escritura, pero no de ejecución. El grupo que es propietario del archivo
(consultant1) tiene permisos de lectura y escritura, pero no de ejecución. Todos los otros
usuarios tienen permiso de lectura, pero no de escritura ni ejecución.

La siguiente tabla muestra algunos de los efectos de este conjunto de permisos para estos
usuarios:

Efecto Fundamentación

El usuario operator1 puede cambiar el El usuario operator1 es miembro del grupo


contenido de rfile1. consultant1, y ese grupo tiene permisos de
lectura y escritura respecto de rfile1.

El usuario database1 puede ver y modificar El usuario database1 es propietario del


el contenido de rfile2. archivo y tiene permisos de lectura y de
escritura a rfile2.

El usuario operator1 puede visualizar el El usuario operator1 es miembro del grupo


contenido de rfile2, pero no modificarlo (no consultant1, y ese grupo tiene solamente
lo puede borrar ni recrear). permiso de lectura respecto de rfile2.

Los usuarios database2 y contractor1 no Rigen permisos de otros para los usuarios
tienen acceso al contenido de rfile2. database2 y contractor1, y dichos
permisos no incluyen permisos de lectura ni
escritura.

operator1 es el único usuario que puede El usuario y el grupo operator1 tienen


modificar el contenido de lfile1 (pero no lo permiso de escritura en el archivo, pero otros
puede borrar ni recrear). usuarios no lo tienen. Sin embargo, el único
miembro del grupo operator1 es el usuario
operator1.

El usuario database2 puede cambiar el El usuario database2 no es el usuario que es


contenido de lfile2. propietario del archivo y no está en el grupo
consultant1; por ende, rigen permisos de
otros. Estos otorgan permiso de escritura.

RH124-RHEL8.2-es-1-20200928 219
capítulo 7 | Control de acceso a los archivos

Efecto Fundamentación

El usuario database1 puede ver el contenido El usuario database1 es miembro del grupo
de lfile2, pero no puede modificar el consultant1, y ese grupo tiene solamente
contenido de lfile2 (no lo puede borrar ni permiso de lectura respecto de lfile2. Si
recrear). bien otro tiene permiso de escritura, los
permisos del grupo tienen prioridad.

El usuario database1 puede eliminar lfile1 El usuario database1 tiene permisos de


y lfile2. escritura en el directorio que contiene ambos
archivos (que se muestra en .) y, como tal,
puede eliminar cualquier archivo de ese
directorio. Esto rige de esta manera incluso si
database1 no tiene permiso de escritura en
el archivo en sí.

Referencias
Página de manual: ls(1)

info coreutils (GNU Coreutils)

• Sección 13: Cambiar atributos de archivos

220 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Cuestionario

Interpretación de los permisos del


sistema de archivos de Linux
Revise la siguiente información y úsela para responder las preguntas del cuestionario.

El sistema tiene cuatro usuarios asignados a los siguientes grupos:

• El usuario consultant1 está en los grupos consultant1 y database1.


• El usuario operator1 está en los grupos operator1 y database1.
• El usuario contractor1 está en los grupos contractor1 y contractor3.
• El usuario operator2 está en los grupos operator2 y contractor3.

El directorio actual (.) contiene cuatro archivos con la siguiente información de permisos:

drwxrwxr-x. operator1 database1 .


-rw-rw-r--. consultant1 consultant1 lfile1
-rw-r--rw-. consultant1 database1 lfile2
-rw-rw-r--. operator1 database1 rfile1
-rw-r-----. operator1 database1 rfile2

1. ¿Qué archivo regular es propiedad de operator1 y legible por todos los usuarios?
a. lfile1
b. lfile2
c. rfile1
d. rfile2

2. ¿Qué archivo puede ser modificado por el usuario contractor1?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

3. ¿Qué archivo no puede ser leído por el usuario operator2?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

RH124-RHEL8.2-es-1-20200928 221
capítulo 7 | Control de acceso a los archivos

4. Qué archivo tiene la propiedad de grupo de consultant1?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

5. ¿Qué archivos pueden ser eliminados por el usuario operator1?


a. rfile1
b. rfile2
c. Todas las anteriores.
d. Ninguna de las anteriores.

6. ¿Qué archivos pueden ser eliminados por el usuario operator2?


a. lfile1
b. lfile2
c. Todas las anteriores.
d. Ninguna de las anteriores.

222 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Solución

Interpretación de los permisos del


sistema de archivos de Linux
Revise la siguiente información y úsela para responder las preguntas del cuestionario.

El sistema tiene cuatro usuarios asignados a los siguientes grupos:

• El usuario consultant1 está en los grupos consultant1 y database1.


• El usuario operator1 está en los grupos operator1 y database1.
• El usuario contractor1 está en los grupos contractor1 y contractor3.
• El usuario operator2 está en los grupos operator2 y contractor3.

El directorio actual (.) contiene cuatro archivos con la siguiente información de permisos:

drwxrwxr-x. operator1 database1 .


-rw-rw-r--. consultant1 consultant1 lfile1
-rw-r--rw-. consultant1 database1 lfile2
-rw-rw-r--. operator1 database1 rfile1
-rw-r-----. operator1 database1 rfile2

1. ¿Qué archivo regular es propiedad de operator1 y legible por todos los usuarios?
a. lfile1
b. lfile2
c. rfile1
d. rfile2

2. ¿Qué archivo puede ser modificado por el usuario contractor1?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

3. ¿Qué archivo no puede ser leído por el usuario operator2?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

RH124-RHEL8.2-es-1-20200928 223
capítulo 7 | Control de acceso a los archivos

4. Qué archivo tiene la propiedad de grupo de consultant1?


a. lfile1
b. lfile2
c. rfile1
d. rfile2

5. ¿Qué archivos pueden ser eliminados por el usuario operator1?


a. rfile1
b. rfile2
c. Todas las anteriores.
d. Ninguna de las anteriores.

6. ¿Qué archivos pueden ser eliminados por el usuario operator2?


a. lfile1
b. lfile2
c. Todas las anteriores.
d. Ninguna de las anteriores.

224 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Administración de permisos del sistema


de archivos desde la línea de comandos

Objetivos
Tras finalizar esta sección, deberá poder cambiar los permisos y la propiedad de los archivos
usando herramientas de la línea de comandos.

Cambio de permisos de archivos y directorios


El comando usado para cambiar los permisos desde la línea de comandos es chmod, que significa
"change mode", en español cambiar modo (los permisos también se conocen como el mode de un
archivo). El comando chmod tiene una instrucción de permiso seguida de una lista de archivos o
directorios para cambio. La instrucción de permiso puede ser emitida simbólicamente (el método
simbólico) o numéricamente (el método numérico).

Cómo cambiar los permisos con el método simbólico


chmod WhoWhatWhich file|directory

• Who es u, g, o, a (para usuario, grupo, otros, todos)

• What es +, -, = (para agregar, eliminar, establecer exactamente)

• Which es br, w, x (para leer, escribir, ejecutar)

El método simbólico de cambiar los permisos del archivo usa letras para representar los distintos
grupos de permisos: u para usuario, g para grupo, o para otros y a para todos.

Con el método simbólico, no es necesario establecer un grupo completamente nuevo de permisos.


En su lugar, puede cambiar uno o más permisos existentes. Use + o - para agregar o eliminar
permisos, respectivamente, o use = para reemplazar todo el conjunto de un grupo de permisos.

Los permisos en sí están representados por una única letra: r para leer, w para escribir y x para
ejecutar. Cuando use chmod para cambiar los permisos con el método simbólico, el uso de una X
mayúscula como indicador de permiso agregará permiso de ejecución únicamente si el archivo es
un directorio o si ya tiene el permiso de ejecución establecido para usuario, grupo u otros.

RH124-RHEL8.2-es-1-20200928 225
capítulo 7 | Control de acceso a los archivos

nota
El comando chmod admite la opción -R para establecer permisos de manera
recursiva en los archivos, en todo el árbol de directorios. Cuando usa la opción -
R, puede ser útil para establecer permisos de manera simbólica mediante el uso
de la opción X. Esto permite ejecutar (buscar) permisos para establecer en los
directorios de modo que se pueda acceder a su contenido, sin cambiar los permisos
en la mayoría de los archivos. Sin embargo, tenga cuidado con la opción X, porque si
un archivo tiene un permiso de ejecución establecido, X establecerá el permiso de
ejecución especificado en ese archivo también. Por ejemplo, el siguiente comando
establece de manera recursiva el acceso de lectura y de escritura en demodir
y todos sus procesos secundarios para el propietario del grupo, pero solo aplica
permisos de ejecución de grupo a directorios y archivos que ya tienen permisos de
ejecución establecidos para usuario, grupo u otros.

[root@host opt]# chmod -R g+rwX demodir

Ejemplos

• Elimine el permiso de lectura y escritura para el grupo y otros respecto de file1:

[user@host ~]$ chmod go-rw file1

• Agregue un permiso de ejecución para todos respecto de file2:

[user@host ~]$ chmod a+x file2

Cómo cambiar los permisos con el método numérico


En el siguiente ejemplo, el carácter # representa un dígito.

chmod ### file|directory

• Cada dígito representa permisos para un nivel de acceso: usuario, grupo, otros.

• El dígito se calcula sumando los números para cada permiso que desea agregar, 4 para lectura, 2
para escritura y 1 para ejecución.

Al usar el método numérico, los permisos son representados por un número octal de tres dígitos
(o cuatro, al establecer permisos avanzados). Un octal de un único dígito puede representar
cualquier valor de 0 a 7.

En la representación de permisos octal (numérica) de tres dígitos, cada dígito representa un nivel
de acceso, de izquierda a derecha: usuario, grupo y otros. Para determinar cada dígito:

1. Comience con 0.
2. Si el permiso de lectura debe estar presente para este nivel de acceso, agregue 4.
3. Si el permiso de escritura debe estar presente, agregue 2.
4. Si el permiso de ejecución debe estar presente, agregue 1.

Examine los permisos -rwxr-x---. Para el usuario, rwx se calcula como 4+2+1=7. Para el grupo,
r-x se calcula como 4+0+1=5, y para otros usuarios, --- se representa con 0. Si reunimos estos
tres, la representación numérica de esos permisos es 750.

226 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Este cálculo también se puede realizar en dirección opuesta. Veamos los permisos 640. Para
los permisos de usuario, 6 representa leer (4) y escribir (2), que se ve como rw-. Para la parte
de grupo, 4 solo incluye leer (4) y se ve como r--. El 0 para otros no nos proporciona permisos
(---), por lo que el conjunto final de permisos simbólicos para este archivo es -rw-r-----.

Los administradores experimentados a menudo usan permisos numéricos, ya que son más breves
para escribir y pronunciar, al tiempo que le proporcionan el control total de todos los permisos.

Ejemplos

• Establezca permisos de lectura y escritura para usuario, permiso de lectura para grupo y otros
respecto de samplefile:

[user@host ~]$ chmod 644 samplefile

• Establezca permisos de lectura, escritura y ejecución para usuario, permisos de lectura y


ejecución para grupo y ningún permiso para otros respecto de sampledir:

[user@host ~]$ chmod 750 sampledir

Cambio de la propiedad de grupo o de usuario de un


archivo o directorio
Un archivo creado recientemente es propiedad del usuario que lo crea. De manera
predeterminada, los archivos nuevos son propiedad del grupo, que es el grupo principal del usuario
que crea el archivo. En Red Hat Enterprise Linux, el grupo principal de un usuario suele ser un
grupo privado que solamente tiene a ese usuario como miembro. Para otorgar acceso a un archivo
según la membresía de grupo, es posible que sea necesario cambiar el grupo que es propietario
del archivo.

Solo el usuario root puede cambiar el usuario que es propietario de un archivo. No obstante, la
propiedad del grupo puede establecerla el usuario root o el propietario del archivo. root puede
otorgar propiedad de archivo a cualquier grupo, mientras que los usuarios normales pueden hacer
que un grupo sea propietario de un archivo solo si son miembros de ese grupo.

La propiedad del archivo se puede cambiar con el comando chown (cambiar propietario). Por
ejemplo, para otorgarle propiedad del archivo test_file al usuario student, use el siguiente
comando:

[root@host ~]# chown student test_file

Se puede usar chown con la opción -R para cambiar recursivamente la propiedad de un árbol
de directorios completo. El siguiente comando otorga propiedad de test_dir y de todos los
archivos y subdirectorios incluidos dentro a student:

[root@host ~]# chown -R student test_dir

El comando chown también se puede usar para cambiar el propietario del grupo de un archivo,
anteponiendo el nombre del grupo con dos puntos (:). Por ejemplo, el siguiente comando cambia
la propiedad del grupo del directorio test_dir a admins:

[root@host ~]# chown :admins test_dir

RH124-RHEL8.2-es-1-20200928 227
capítulo 7 | Control de acceso a los archivos

El comando chown también se puede usar para cambiar el propietario y el grupo al mismo tiempo.
Para ello, puede usar la sintaxis owner:group. Por ejemplo, para cambiar la propiedad de test_dir
a visitor y el grupo a guests, use el siguiente comando:

[root@host ~]# chown visitor:guests test_dir

En lugar de usar chown, algunos usuarios cambian la propiedad del grupo usando el comando
chgrp. Este comando funciona igual que chown, excepto que solo se usa para cambiar la
propiedad del grupo, y no es necesario colocar los dos puntos (:) antes del nombre del grupo.

Importante
Puede encontrar ejemplos de los comandos chown con una sintaxis alternativa que
separa al propietario y al grupo con un punto en lugar de dos puntos:

[root@host ~]# chown owner.group filename

No debe usar esta sintaxis. Use siempre dos puntos.

Un punto es un carácter válido en un nombre de usuario, lo que no es el caso de los


dos puntos. Si el usuario enoch.root, el usuario enoch y el grupo root existen en
el sistema, el resultado de chown enoch.root filename será que filename
será propiedad del usuario enoch.root. Es posible que haya estado intentando
establecer la propiedad del archivo para el usuario enoch y el grupo root. Esto
puede ser confuso.

Si usa siempre la sintaxis de dos puntos chown al configurar el usuario y el grupo al


mismo tiempo, los resultados son siempre fáciles de predecir.

Referencias
Páginas del manual: ls(1), chmod(1), chown(1) y chgrp(1)

228 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Ejercicio Guiado

Administración de permisos del sistema


de archivos desde la línea de comandos
En este ejercicio, usará los permisos del sistema de archivos para crear un directorio en el
que todos los miembros de un grupo particular puedan agregar y eliminar archivos.

Resultados
Deberá poder crear un directorio de colaboración al que puedan acceder todos los
miembros de un grupo en particular.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab perms-cli start. El script de inicio crea un


grupo llamado consultants y dos usuarios llamados consultant1 y consultant2.

[student@workstation ~]$ lab perms-cli start

1. En workstation, use el comando ssh para iniciar sesión en servera con el usuario
student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cambie al usuario root usando redhat como contraseña.

[student@servera ~]$ su -
Password: redhat
[root@servera ~]#

3. Use el comando mkdir para crear el directorio /home/consultants.

[root@servera ~]# mkdir /home/consultants

4. Use el comando chown para cambiar la propiedad del grupo del directorio consultants a
consultants.

[root@servera ~]# chown :consultants /home/consultants

RH124-RHEL8.2-es-1-20200928 229
capítulo 7 | Control de acceso a los archivos

5. Asegúrese de que los permisos del grupo consultants permitan a los miembros del
grupo crear archivos en el directorio /home/consultants y eliminarlos de este. Los
permisos deben impedir que otros accedan a los archivos.

5.1. Use el comando ls para confirmar que los permisos del grupo consultants
permitan a los miembros del grupo crear archivos en el directorio /home/
consultants y eliminarlos de este.

[root@servera ~]# ls -ld /home/consultants


drwxr-xr-x. 2 root consultants 6 Feb 1 12:08 /home/consultants

Tenga en cuenta que el grupo consultants actualmente no tiene permiso de


escritura.

5.2. Use el comando chmod para agregar permiso de escritura al grupo consultants.

[root@servera ~]# chmod g+w /home/consultants


[root@servera ~]# ls -ld /home/consultants
drwxrwxr-x. 2 root consultants 6 Feb 1 13:21 /home/consultants

5.3. Use el comando chmod para impedir que otros accedan a los archivos del directorio /
home/consultants.

[root@servera ~]# chmod 770 /home/consultants


[root@servera ~]# ls -ld /home/consultants
drwxrwx---. 2 root consultants 6 Feb 1 12:08 /home/consultants/

6. Salga de la shell root y cambie al usuario consultant1. La contraseña es redhat.

[root@servera ~]# exit


logout
[student@servera ~]$
[student@servera ~]$ su - consultant1
Password: redhat

7. Diríjase al directorio /home/consultants y cree un archivo llamado consultant1.txt.

7.1. Use el comando cd para cambiar el directorio /home/consultants.

[consultant1@servera ~]$ cd /home/consultants

7.2. Use el comando touch para crear un archivo vacío con el nombre
consultant1.txt.

[consultant1@servera consultants]$ touch consultant1.txt

8. Use el comando ls -l para registrar las propiedades de grupo y de usuario


predeterminadas del nuevo archivo y sus permisos.

[consultant1@servera consultants]$ ls -l consultant1.txt


-rw-rw-r--. 1 consultant1 consultant1 0 Feb 1 12:53 consultant1.txt

230 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

9. Asegúrese de que todos los miembros del grupo consultants puedan editar el archivo
consultant1.txt. Cambie la propiedad del grupo del archivo consultant1.txt a
consultants.

9.1. Use el comando chown para cambiar la propiedad del grupo del archivo
consultant1.txt a consultants.

[consultant1@servera consultants]$ chown :consultants consultant1.txt

9.2. Use el comando ls con la opción -l para registrar la nueva propiedad del archivo
consultant1.txt.

[consultant1@servera consultants]$ ls -l consultant1.txt


-rw-rw-r--. 1 consultant1 consultants 0 Feb 1 12:53 consultant1.txt

10. Salga de la shell y cambie al usuario consultant2. La contraseña es redhat.

[consultant1@servera consultants]$ exit


logout
[student@servera ~]$ su - consultant2
Password: redhat
[consultant2@servera ~]$

11. Diríjase al directorio /home/consultants. Asegúrese de que el usuario consultant2


puede agregar contenido al archivo consultant1.txt. Salga de la shell.

11.1. Use el comando cd para cambiar el directorio /home/consultants. Use el


comando echo para agregar texto al archivo consultant1.txt.

[consultant2@servera ~]$ cd /home/consultants/


[consultant2@servera consultants]$ echo "text" >> consultant1.txt
[consultant2@servera consultants]$

11.2. Use el comando cat para verificar que el texto se haya agregado al archivo
consultant1.txt.

[consultant2@servera consultants]$ cat consultant1.txt


text
[consultant2@servera consultants]$

11.3. Salga de la shell.

[consultant2@servera consultants]$ exit


logout
[student@servera ~]$

12. Cierre sesión en servera.

RH124-RHEL8.2-es-1-20200928 231
capítulo 7 | Control de acceso a los archivos

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab perms-cli finish para terminar este ejercicio.

[student@workstation ~]$ lab perms-cli finish

Esto concluye el ejercicio guiado.

232 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Administración de permisos
predeterminados y acceso a archivos

Objetivos
Tras finalizar esta sección, los estudiantes deberán ser capaces de realizar lo siguiente:

• Controlar los permisos predeterminados de los nuevos archivos creados por los usuarios.

• Explicar el efecto de los permisos especiales.

• Usar permisos especiales y permisos predeterminados para establecer el propietario del grupo
de archivos creados en un directorio en particular.

Permisos especiales
Los permisos especiales constituyen un cuarto tipo de permiso, además del usuario básico, grupo
y otros tipos. Como su nombre lo indica, estos permisos proporcionan funciones adicionales
relacionadas con el acceso más allá de lo que permiten los tipos de permisos básicos. En esta
sección, se detalla el impacto de los permisos especiales, que se resumen en la siguiente tabla.

Efectos de los permisos especiales en archivos y directorios

Permiso Efecto en los archivos Efecto en los directorios


especial

u+s (suid) El archivo se ejecuta como el usuario No hay efectos.


propietario, no como el usuario que
lo ejecutó.

g+s (sgid) El archivo se ejecuta como el grupo Los archivos creados recientemente
propietario. en el directorio han establecido
al propietario del grupo para que
coincida con el propietario del grupo
del directorio.

o+t (sticky) No hay efectos. Los usuarios con acceso de escritura


en el directorio solo pueden
eliminar los archivos de los que
son propietarios, pero no pueden
eliminar ni forzar el guardado de
archivos cuyos propietarios sean
otros usuarios.

El permiso setuid en un archivo ejecutable significa que los comandos se ejecutan como el usuario
que es propietario del archivo, no como el usuario que ejecutó el comando. Un ejemplo de este
caso es el comando passwd:

[user@host ~]$ ls -l /usr/bin/passwd


-rwsr-xr-x. 1 root root 35504 Jul 16 2010 /usr/bin/passwd

RH124-RHEL8.2-es-1-20200928 233
capítulo 7 | Control de acceso a los archivos

En una larga lista, puede identificar los permisos setuid con una s minúscula, donde normalmente
esperaría ver la x (el propietario ejecuta los permisos). Si el propietario no posee permisos de
ejecución, será reemplazada por una S mayúscula.

El permiso especial setgid en un directorio significa que los archivos creados en el directorio
heredarán la propiedad de grupos del directorio, en lugar de heredarla del usuario que la creó. Esto
generalmente se usa en directorios colaborativos grupales para poder cambiar automáticamente
un archivo del grupo privado predeterminado al grupo compartido, o si los archivos de un
directorio deben pertenecer siempre a un grupo específico. Un ejemplo de esto es el directorio /
run/log/journal:

[user@host ~]$ ls -ld /run/log/journal


drwxr-sr-x. 3 root systemd-journal 60 May 18 09:15 /run/log/journal

Si se configura setgid en un archivo ejecutable, los comandos se ejecutan como el grupo que
posee ese archivo, no como el usuario que ejecutó el comando, de manera similar a como funciona
setuid. Un ejemplo de este caso es el comando locate:

[user@host ~]$ ls -ld /usr/bin/locate


-rwx--s--x. 1 root slocate 47128 Aug 12 17:17 /usr/bin/locate

En una larga lista, puede identificar los permisos setgid con una s minúscula, donde normalmente
esperaría ver la x (el grupo ejecuta los permisos). Si el grupo no posee permisos de ejecución, será
reemplazada por una S mayúscula.

Por último, el sticky bit para un directorio establece una restricción especial en la eliminación de
archivos. Solo el propietario del archivo (y root) puede borrar archivos dentro del directorio. Un
ejemplo es /tmp:

[user@host ~]$ ls -ld /tmp


drwxrwxrwt. 39 root root 4096 Feb 8 20:52 /tmp

En una larga lista, puede identificar los permisos sticky con una s minúscula, donde normalmente
esperaría ver la x (otro ejecuta los permisos). Si otra persona no posee permisos de ejecución, se
reemplazará por una S mayúscula.

Establecer permisos especiales

• Simbólicamente: setuid = u+s; setgid = g+s; sticky = o+t

• Numéricamente (cuarto dígito precedente): setuid = 4; setgid = 2; sticky = 1

Ejemplos

• Agregue el setgid bit en directory:

[user@host ~]# chmod g+s directory

• Establezca el setgid bit y agregue permisos de lectura/escritura/ejecución para el usuario y


grupo, sin acceso para otros, en directory:

[user@host ~]# chmod 2770 directory

234 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Permisos predeterminados de archivos


Cuando crea un archivo o directorio nuevo, se les asignan permisos iniciales. Hay dos cosas que
afectan estos permisos iniciales. En primer lugar, si está creando un archivo o directorio regulares.
En segundo lugar, hay que tener en cuenta el umask actual.

Si crea un nuevo directorio, el sistema operativo comienza asignándole permisos octales 0777
(drwxrwxrwx). Si crea un nuevo archivo regular, el sistema operativo le asigna permisos octales
(-rw-rw-rw-). Siempre debe agregar explícitamente el permiso de ejecución a un archivo
regular. Esto hace que sea más difícil para un atacante comprometer un servicio de red para que
cree un nuevo archivo y lo ejecute inmediatamente como un programa.

Sin embargo, la sesión de shell también establecerá un umask para restringir aún más los permisos
que se establecen inicialmente. Es una máscara de bits octal usada para borrar los permisos de
archivos y directorios nuevos creados por el proceso. Si se establece un bit en el umask, el permiso
correspondiente se elimina en los archivos nuevos. Por ejemplo, el umask 0002 borra el bit de
escritura para otros usuarios. Los ceros iniciales indican que los permisos especiales, de usuario y
de grupo no están borrados. Un umask de 0077 borra los permisos de todo el grupo y de otros de
los archivos creados recientemente.

El comando umask sin argumentos mostrará el valor actual del umask de shell:

[user@host ~]$ umask


0002

Use el comando umask con un argumento numérico único para cambiar el umask de la shell actual.
El argumento numérico debe ser un valor octal que se corresponda con el valor del umask nuevo.
Puede omitir los ceros iniciales en el umask.

Los valores de umask predeterminados del sistema para usuarios de shell Bash se definen
en los archivos /etc/profile y /etc/bashrc. Los usuarios pueden anular los valores
predeterminados del sistema en sus archivos .bash_profile y .bashrc en sus directorios de
inicio.

Ejemplo de umask
El siguiente ejemplo explica cómo el umask afecta los permisos de los archivos y directorios.
Observe los permisos predeterminados de umask para archivos y directorios en la shell actual.
Tanto el propietario como el grupo tienen permiso de lectura y escritura en los archivos, y otros
tienen permiso de lectura. Tanto el propietario como el grupo tienen permisos de lectura, escritura
y ejecución en los directorios. El único permiso para otros es el de lectura.

[user@host ~]$ umask


0002
[user@host ~]$ touch default
[user@host ~]$ ls -l default.txt
-rw-rw-r--. 1 user user 0 May 9 01:54 default.txt
[user@host ~]$ mkdir default
[user@host ~]$ ls -ld default
drwxrwxr-x. 2 user user 0 May 9 01:54 default

Al establecer el valor de umask en 0, los permisos del archivo para otros cambian de lectura a
lectura y escritura. Los permisos del directorio para otros cambios de lectura y ejecución para
lectura, escritura y ejecución.

RH124-RHEL8.2-es-1-20200928 235
capítulo 7 | Control de acceso a los archivos

[user@host ~]$ umask 0


[user@host ~]$ touch zero.txt
[user@host ~]$ ls -l zero.txt
-rw-rw-rw-. 1 user user 0 May 9 01:54 zero.txt
[user@host ~]$ mkdir zero
[user@host ~]$ ls -ld zero
drwxrwxrwx. 2 user user 0 May 9 01:54 zero

Para enmascarar todos los permisos de archivos y directorios para otros, establezca el valor de
umask en 007.

[user@host ~]$ umask 007


[user@host ~]$ touch seven.txt
[user@host ~]$ ls -l seven.txt
-rw-rw----. 1 user user 0 May 9 01:55 seven.txt
[user@host ~]$ mkdir seven
[user@host ~]$ ls -ld seven
drwxrwx---. 2 user user 0 May 9 01:54 seven

Un umask de 027 garantiza que los nuevos archivos tengan permisos de lectura y escritura para
el usuario y permisos de lectura para el grupo. Los nuevos directorios tienen acceso de lectura y
escritura para el grupo y no tienen permisos para otros.

[user@host ~]$ umask 027


[user@host ~]$ touch two-seven.txt
[user@host ~]$ ls -l two-seven.txt
-rw-r-----. 1 user user 0 May 9 01:55 two-seven.txt
[user@host ~]$ mkdir two-seven
[user@host ~]$ ls -ld two-seven
drwxr-x---. 2 user user 0 May 9 01:54 two-seven

El umask predeterminado para usuarios se establece mediante los scripts de inicio de shell. De
manera predeterminada, si la UID de su cuenta es 200 o más y su nombre de usuario y nombre
de grupo primario son los mismos, se le asignará un umask de 002. De lo contrario, su umask será
022.

Como usuario root, puede cambiarlo al agregar un script de inicio de shell llamado /etc/
profile.d/local-umask.sh, que se parece al resultado en este ejemplo:

[root@host ~]# cat /etc/profile.d/local-umask.sh


# Overrides default umask configuration
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 007
else
umask 022
fi

El ejemplo anterior establecerá el umask en 007 para los usuarios con una UID mayor que 199
y con un nombre de usuario y un nombre de grupo primario iguales, y en 022 para todos los
demás. Si solo deseara establecer el umask para todos en 022, puede crear ese archivo solo con el
siguiente contenido:

236 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

# Overrides default umask configuration


umask 022

Para asegurarse de que los cambios globales de umask surtan efecto, debe cerrar sesión en la
shell y volver a iniciar sesión. Hasta ese momento, el umask configurado en la shell actual sigue
vigente.

Referencias
Páginas del manual: bash(1), ls(1), chmod(1) y umask(1)

RH124-RHEL8.2-es-1-20200928 237
capítulo 7 | Control de acceso a los archivos

Ejercicio Guiado

Administración de permisos
predeterminados y acceso a archivos
En este ejercicio, controlará los permisos de los nuevos archivos creados en un directorio
mediante el uso de la configuración de umask y el permiso setgid.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear un directorio compartido en el que los archivos nuevos pasan automáticamente a


ser propiedad del grupo operators.

• Probar diversos valores de configuración de umask.

• Ajustar los permisos predeterminados para usuarios específicos.

• Confirmar que el ajuste sea correcto.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab perms-default start. El comando ejecuta


un script de inicio que determina si servera es accesible en la red. El script también crea el
grupo operators y el usuario operator1 en servera.

[student@workstation ~]$ lab perms-default start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando su para cambiar al usuario operator1 usando redhat como contraseña.

[student@servera ~]$ su - operator1


Password: redhat
[operator1@servera ~]$

3. Use el comando umask para registrar el valor de umask predeterminado del usuario
operator1.

[operator1@servera ~]$ umask


0002

238 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

4. Cree un nuevo directorio denominado /tmp/shared. En el directorio /tmp/shared, cree


un archivo denominado defaults. Observe los permisos predeterminados.

4.1. Use el comando mkdir para crear el directorio /tmp/shared. Use el comando ls -
ld para enumerar los permisos del nuevo directorio.

[operator1@servera ~]$ mkdir /tmp/shared


[operator1@servera ~]$ ls -ld /tmp/shared
drwxrwxr-x. 2 operator1 operator1 6 Feb 4 14:06 /tmp/shared

4.2. Use el comando touch para crear un archivo denominado defaults en el directorio
/tmp/shared.

[operator1@servera ~]$ touch /tmp/shared/defaults

4.3. Use el comando ls -l para enumerar los permisos del nuevo archivo.

[operator1@servera ~]$ ls -l /tmp/shared/defaults


-rw-rw-r--. 1 operator1 operator1 0 Feb 4 14:09 /tmp/shared/defaults

5. Cambie la propiedad del grupo de /tmp/shared a operators. Confirme la nueva


propiedad y los permisos.

5.1. Use el comando chown para cambiar la propiedad del grupo del directorio /tmp/
shared a operators.

[operator1@servera ~]$ chown :operators /tmp/shared

5.2. Use el comando ls -ld para enumerar los permisos del directorio /tmp/shared.

[operator1@servera ~]$ ls -ld /tmp/shared


drwxrwxr-x. 2 operator1 operators 22 Feb 4 14:09 /tmp/shared

5.3. Use el comando touch para crear un archivo denominado group en el directorio /
tmp/shared. Use el comando ls -l para enumerar los permisos del archivo.

[operator1@servera ~]$ touch /tmp/shared/group


[operator1@servera ~]$ ls -l /tmp/shared/group
-rw-rw-r--. 1 operator1 operator1 0 Feb 4 17:00 /tmp/shared/group

nota
El propietario del grupo del archivo /tmp/shared/group no es operators, sino
operator1.

6. Asegúrese de que los archivos creados en el directorio /tmp/shared son propiedad del
grupo operators.

6.1. Use el comando chmod para establecer el ID de grupo al grupo operators para el
directorio /tmp/shared.

RH124-RHEL8.2-es-1-20200928 239
capítulo 7 | Control de acceso a los archivos

[operator1@servera ~]$ chmod g+s /tmp/shared

6.2. Use el comando touch para crear un nuevo archivo denominado


operations_database.txt en el directorio /tmp/shared.

[operator1@servera ~]$ touch /tmp/shared/operations_database.txt

6.3. Use el comando ls -l para verificar que el grupo operators es el propietario del
grupo para el nuevo archivo.

[operator1@servera ~]$ ls -l /tmp/shared/operations_database.txt


-rw-rw-r--. 1 operator1 operators 0 Feb 4 16:11 /tmp/shared/
operations_database.txt

7. Cree un nuevo archivo en el directorio /tmp/shared denominado


operations_network.txt. Registre la propiedad y los permisos. Cambie el umask para
operator1. Cree un nuevo archivo llamado operations_production.txt. Registre la
propiedad y los permisos del archivo operations_production.txt.

7.1. Use el comando touch para crear un archivo denominado


operations_network.txt en el directorio /tmp/shared.

[operator1@servera ~]$ touch /tmp/shared/operations_network.txt

7.2. Use el comando ls -l para enumerar los permisos del archivo


operations_network.txt.

[operator1@servera ~]$ ls -l /tmp/shared/operations_network.txt


-rw-rw-r--. 1 operator1 operators 5 Feb 0 15:43 /tmp/shared/
operations_network.txt

7.3. Use el comando umask para cambiar el umask para el usuario operator1 a 027. Use
el comando umask para confirmar el cambio.

[operator1@servera ~]$ umask 027


[operator1@servera ~]$ umask
0027

7.4. Use el comando touch para crear un nuevo archivo denominado


operations_production.txt en el directorio /tmp/shared/. Use el comando
ls -l para garantizar que los archivos nuevos se crean con acceso de solo lectura
para el grupo operators y sin acceso para otros usuarios.

[operator1@servera ~]$ touch /tmp/shared/operations_production.txt


[operator1@servera ~]$ ls -l /tmp/shared/operations_production.txt
-rw-r-----. 1 operator1 operators 0 Feb 0 15:56 /tmp/shared/
operations_production.txt

8. Abra una nueva ventana de terminal e inicie sesión en servera como operator1.

240 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

[student@workstation ~]$ ssh operator1@servera


...output omitted...
[operator1@servera ~]$

9. Enumere el valor de umask para operator1.

[operator1@servera ~]$ umask


0002

10. Cambie el valor predeterminado de umask para el usuario operator1. El nuevo valor
de umask prohíbe el acceso a los usuarios que no pertenezcan al grupo. Confirme que el
umask haya cambiado.

10.1. Use el comando echo para cambiar valor de umask predeterminado para el usuario
operator1 a 007.

[operator1@servera ~]$ echo "umask 007" >> ~/.bashrc


[operator1@servera ~]$ cat ~/.bashrc
# .bashrc

# Source global definitions


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

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions


umask 007

10.2. Cierre la sesión y vuelva a iniciar sesión como el usuario operator1. Use el comando
umask para confirmar que el cambio es permanente.

[operator1@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$ ssh operator1@servera
...output omitted...
[operator1@servera ~]$ umask
0007

11. En servera, salga de todas las shells del usuario operator1 y de student.

Advertencia
Salga de todas las shells que fueron abiertas por operator1. Si no sale de todas las
shells, el script de finalización fallará.

RH124-RHEL8.2-es-1-20200928 241
capítulo 7 | Control de acceso a los archivos

[operator1@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab perms-default finish para terminar este ejercicio.

[student@workstation ~]$ lab perms-default finish

Esto concluye el ejercicio guiado.

242 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Trabajo de laboratorio

Control de acceso a los archivos


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará permisos en los archivos y configurará un
directorio que los usuarios de un grupo particular pueden usar para compartir archivos en el
sistema de archivos local.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear un directorio donde los usuarios puedan trabajar de forma conjunta en los archivos.

• Crear archivos que se asignan automáticamente a la propiedad del grupo.

• Crear archivos a los que no se pueda acceder fuera del grupo.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab perms-review start. El comando ejecuta


un script de inicio que determina si serverb es accesible en la red. El script también crea el
grupo techdocs y tres usuarios denominados tech1, tech2 y database1.

[student@workstation ~]$ lab perms-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Cambie al
usuario root en serverb con la contraseña redhat.
2. Cree un directorio denominado /home/techdocs.
3. Cambie la propiedad del directorio /home/techdocs al grupo techdocs.
4. Verifique que los usuarios en el grupo techdocs no puedan crear archivos en el directorio /
home/techdocs.
5. Establezca permisos en el directorio /home/techdocs. En el directorio /home/techdocs,
configure setgid (2), permisos de lectura/escritura/ejecución (7) para el propietario/usuario
y grupo, y ningún permiso (0) para otros usuarios.
6. Verifique que los permisos hayan sido establecidos correctamente.
7. Confirme que los usuarios en el grupo techdocs ahora pueden crear y editar archivos en
el directorio /home/techdocs. Los usuarios que no forman parte del grupo techdocs no
pueden editar ni crear archivos en el directorio /home/techdocs. Los usuarios tech1 y
tech2 están en el grupo techdocs. El usuario database1 no está en ese grupo.
8. Modifique los scripts de inicio de sesión globales. Los usuarios normales deberían tener una
configuración de umask que evite que otros visualicen o modifiquen los archivos y directorios
nuevos.
9. Cierre sesión en serverb.

RH124-RHEL8.2-es-1-20200928 243
capítulo 7 | Control de acceso a los archivos

[student@serverb ~]$ exit


logout
Connection to serverb closed.

Evaluación
En workstation, ejecute el script lab perms-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab perms-review grade

Finalizar
En workstation, ejecute el script lab perms-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab perms-review finish

Esto concluye el trabajo de laboratorio.

244 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Solución

Control de acceso a los archivos


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará permisos en los archivos y configurará un
directorio que los usuarios de un grupo particular pueden usar para compartir archivos en el
sistema de archivos local.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear un directorio donde los usuarios puedan trabajar de forma conjunta en los archivos.

• Crear archivos que se asignan automáticamente a la propiedad del grupo.

• Crear archivos a los que no se pueda acceder fuera del grupo.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab perms-review start. El comando ejecuta


un script de inicio que determina si serverb es accesible en la red. El script también crea el
grupo techdocs y tres usuarios denominados tech1, tech2 y database1.

[student@workstation ~]$ lab perms-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Cambie al
usuario root en serverb con la contraseña redhat.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$ su -
Password: redhat
[root@serverb ~]#

2. Cree un directorio denominado /home/techdocs.

2.1. Use el comando mkdir para crear un directorio denominado /home/techdocs.

[root@serverb ~]# mkdir /home/techdocs

3. Cambie la propiedad del directorio /home/techdocs al grupo techdocs.

3.1. Use el comando chown para cambiar la propiedad del grupo para el directorio /home/
techdocs al grupo techdocs.

[root@serverb ~]# chown :techdocs /home/techdocs

RH124-RHEL8.2-es-1-20200928 245
capítulo 7 | Control de acceso a los archivos

4. Verifique que los usuarios en el grupo techdocs no puedan crear archivos en el directorio /
home/techdocs.

4.1. Use el comando su para cambiar al usuario tech1.

[root@serverb ~]# su - tech1


[tech1@serverb ~]$

4.2. Use touch para crear un archivo denominado techdoc1.txt en el directorio /home/
techdocs.

[tech1@serverb ~]$ touch /home/techdocs/techdoc1.txt


touch: cannot touch '/home/techdocs/techdoc1.txt': Permission denied

nota
Tenga en cuenta que si bien el directorio /home/techdocs es propiedad de
techdocs y tech1 es parte del grupo techdocs, no es posible crear un nuevo
archivo en ese directorio. Esto es porque el grupo techdocs no tiene permiso de
escritura. Use el comando ls -ld para mostrar los permisos.

[tech1@serverb ~]$ ls -ld /home/techdocs/


drwxr-xr-x. 2 root techdocs 6 Feb 5 16:05 /home/techdocs/

5. Establezca permisos en el directorio /home/techdocs. En el directorio /home/techdocs,


configure setgid (2), permisos de lectura/escritura/ejecución (7) para el propietario/usuario
y grupo, y ningún permiso (0) para otros usuarios.

5.1. Salga de la shell del usuario tech1.

[tech1@serverb ~]$ exit


logout
[root@serverb ~]#

5.2. Use el comando chmod para establecer el permiso del grupo para el directorio /home/
techdocs. En el directorio /home/techdocs, configure setgid (2), permisos de
lectura/escritura/ejecución (7) para el propietario/usuario y grupo, y ningún permiso
(0) para otros usuarios.

[root@serverb ~]# chmod 2770 /home/techdocs

6. Verifique que los permisos hayan sido establecidos correctamente.

[root@serverb ~]# ls -ld /home/techdocs


drwxrws---. 2 root techdocs 6 Feb 4 18:12 /home/techdocs/

Tenga en cuenta que el grupo techdocs ahora tiene permiso de escritura.


7. Confirme que los usuarios en el grupo techdocs ahora pueden crear y editar archivos en
el directorio /home/techdocs. Los usuarios que no forman parte del grupo techdocs no
pueden editar ni crear archivos en el directorio /home/techdocs. Los usuarios tech1 y
tech2 están en el grupo techdocs. El usuario database1 no está en ese grupo.

246 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

7.1. Cambie al usuario tech1. Use touch para crear un archivo denominado
techdoc1.txt en el directorio /home/techdocs. Salga de la shell del usuario
tech1.

[root@serverb ~]# su - tech1


[tech1@serverb ~]$ touch /home/techdocs/techdoc1.txt
[tech1@serverb ~]$ ls -l /home/techdocs/techdoc1.txt
-rw-rw-r--. 1 tech1 techdocs 0 Feb 5 16:42 /home/techdocs/techdoc1.txt
[tech1@serverb ~]$ exit
logout
[root@serverb ~]#

7.2. Cambie al usuario tech2. Use el comando echo para agregar contenido al archivo Use
the echo command to add some content to the /home/techdocs/techdoc1.txt.
Salga de la shell del usuario tech2.

[root@serverb ~]# su - tech2


[tech2@serverb ~]$ cd /home/techdocs
[tech2@serverb techdocs]$ echo "This is the first tech doc." > techdoc1.txt
[tech2@serverb techdocs]$ exit
logout
[root@serverb ~]#

7.3. Cambie al usuario database1. Use el comando echo para anexar contenido al
archivo Use the echo command to add some content to the /home/techdocs/
techdoc1.txt. Tenga en cuenta que obtendrá un mensaje de Permiso denegado.
Use el comando ls -l para confirmar que database1 no tiene acceso al archivo.
Salga de la shell del usuario database1.
El siguiente comando echo es muy extenso y debe ingresarse en una sola línea.

[root@serverb ~]# su - database1


[database1@serverb ~]$ echo "This is the first tech doc." >> /home/techdocs/
techdoc1.txt
-bash: /home/techdocs/techdoc1.txt: Permission denied
[database1@serverb ~]$ ls -l /home/techdocs/techdoc1.txt
ls: cannot access '/home/techdocs/techdoc1.txt': Permission denied
[database1@serverb ~]$ exit
logout
[root@serverb ~]#

8. Modifique los scripts de inicio de sesión globales. Los usuarios normales deberían tener una
configuración de umask que evite que otros visualicen o modifiquen los archivos y directorios
nuevos.

8.1. Determine el umask del usuario student. Utilice el comando su - student para
cambiar a la shell de inicio de sesión de student. Salga de la shell cuando termine.

RH124-RHEL8.2-es-1-20200928 247
capítulo 7 | Control de acceso a los archivos

[root@serverb ~]# su - student


[student@serverb ~]$ umask
0002
[student@serverb ~]$ exit
logout
[root@serverb ~]#

8.2. Cree el archivo /etc/profile.d/local-umask.sh con el siguiente contenido para


establecer el unmask en 007 para los usuarios con un UID mayor que 199 y con un
nombre de usuario y nombre de grupo primario iguales y en 022 para todos los demás:

# Overrides default umask configuration


if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 007
else
umask 022
fi

8.3. Cierre sesión en la shell y vuelva a iniciar sesión como student para verificar que el
umask global haya cambiado a 007.

[root@serverb ~]# exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation ~]$ ssh student@serverb
...output omitted...
[student@serverb ~]$ umask
0007

9. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.

Evaluación
En workstation, ejecute el script lab perms-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab perms-review grade

Finalizar
En workstation, ejecute el script lab perms-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab perms-review finish

248 RH124-RHEL8.2-es-1-20200928
capítulo 7 | Control de acceso a los archivos

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 249
capítulo 7 | Control de acceso a los archivos

Resumen
En este capítulo, aprendió lo siguiente:

• Los archivos tienen tres categorías a las que se le aplican permisos. Un archivo es propiedad
de un usuario, un único grupo y otros usuarios. Se aplicarán los permisos más específicos. Los
permisos de usuario anulan los permisos de grupo, y los permisos de grupo anulan los permisos
de otros.

• El comando ls con la opción -l expande la lista del archivo para incluir tanto los permisos de un
archivo como su propiedad.

• El comando chmod cambia los permisos de archivo desde la línea de comandos. Hay dos
métodos para representar permisos: el método simbólico (letras) y el método numérico
(dígitos).

• El comando chown cambia la propiedad del archivo. La opción -R cambia recursivamente la


propiedad de un árbol de directorios.

• El comando umask sin argumentos muestra el valor actual de umask de la shell. Todos los
procesos del sistema tienen un umask. Los valores de umask predeterminados para Bash se
definen en los archivos /etc/profile y /etc/bashrc.

250 RH124-RHEL8.2-es-1-20200928
capítulo 8

Monitoreo y administración de
procesos Linux
Meta Evaluar y controlar los procesos que se ejecutan en
un sistema Red Hat Enterprise Linux.

Objetivos • Obtener información sobre los programas


que se ejecutan en el sistema para poder
determinar el estado, el uso de los recursos y la
propiedad para poder controlarlos.
• Usar el control de trabajo Bash para gestionar
múltiples procesos iniciados desde la misma
sesión de terminal.
• Controlar y finalizar los procesos que no están
asociados con su shell y forzar la finalización de
las sesiones y los procesos de los usuarios.
• Describir qué es el promedio de carga y
determinar los procesos responsables del alto
uso de recursos en un servidor.

Secciones • Lista de procesos (y cuestionario)


• Control de trabajos (y ejercicio guiado)
• Finalización de procesos (y ejercicio guiado)
• Monitoreo de actividades del proceso (y
ejercicio guiado)

Trabajo de Monitoreo y administración de procesos Linux


laboratorio

RH124-RHEL8.2-es-1-20200928 251
capítulo 8 | Monitoreo y administración de procesos Linux

Lista de procesos

Objetivos
Tras completar esta sección, deberá poder obtener información acerca de los programas que se
ejecutan en el sistema para poder determinar el estado, el uso de los recursos y la propiedad, y
controlarlos.

Definición de un proceso
Un proceso es una instancia de un programa ejecutable que se inició y se encuentra en
funcionamiento. Un proceso consta de lo siguiente:

• Un espacio de direcciones que incluye la memoria asignada

• Características de seguridad, que incluyen credenciales y privilegios de propiedad

• Uno o más subprocesos de ejecución de código de programa

• Estado del proceso

El entorno de un proceso incluye lo siguiente:

• Variables locales y globales

• Un contexto de programación actual

• Recursos asignados del sistema, como descriptores de archivos y puertos de red

Un proceso (principal) existente duplica su propio espacio de direcciones (fork) para crear
una nueva estructura de proceso (secundaria). Se asigna una identificación de proceso (PID)
única a cada proceso nuevo para su rastreo y por motivos de seguridad. La PID y la identificación
del proceso principal (PPID) son elementos del entorno del proceso nuevo. Cualquier proceso
puede crear un proceso secundario. Todos los procesos derivan del primer proceso de sistemas,
systemd, en un sistema Red Hat Enterprise Linux 8.

Figura 8.1: Ciclo de vida de un proceso

A través del proceso de bifurcación, un proceso secundario hereda identidades de seguridad,


descriptores de archivos actuales y anteriores, privilegios de recursos y puertos, variables de
entorno y código de programa. Luego, un proceso secundario puede ejecutar su propio código de
programa. Normalmente, un proceso principal se encuentra inactivo mientras se ejecuta el proceso
secundario, lo que establece que una solicitud (espera) se señale cuando finalice el proceso
secundario. Tras su finalización, el proceso secundario ya ha cerrado o descartado sus recursos

252 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

y su entorno. El único recurso restante, llamado zombi, es una entrada en la tabla de procesos. El
proceso principal, que se señala como activo una vez que finaliza el proceso secundario, limpia
la tabla de procesos de la entrada del proceso secundario y libera el último recurso del proceso
secundario. El proceso principal continúa con la ejecución de su propio código de programa.

Descripción de los estados del proceso


En un sistema operativo de funciones múltiples, cada CPU (o núcleo de CPU) puede trabajar en
un proceso en un momento dado. Mientras se ejecuta un proceso, sus requisitos inmediatos en
cuanto a asignación de recursos y tiempo de la CPU cambian. Los procesos reciben un estado, que
cambia en la medida en que las circunstancias así lo exijan.

Figura 8.2: Estados de los procesos de Linux

Los estados de los procesos de Linux se ilustran en el diagrama anterior y se describen en la


siguiente tabla.

Estados de los procesos de Linux

Nombre Indicador Nombre y descripción del estado definido por el kernel

TASK_RUNNING: El proceso se está ejecutando en una CPU o se


encuentra en espera de su ejecución. El proceso puede estar ejecutando
En
R rutinas del usuario o rutinas del kernel (llamadas del sistema); también
ejecución
puede estar en cola y listo cuando esté en el estado En ejecución (o
Ejecutable).

RH124-RHEL8.2-es-1-20200928 253
capítulo 8 | Monitoreo y administración de procesos Linux

Nombre Indicador Nombre y descripción del estado definido por el kernel

TASK_INTERRUPTIBLE: El proceso se encuentra en espera de que se dé


cierta condición, como una solicitud de hardware, el acceso a un recurso
S
del sistema o una señal. Cuando un evento o una señal cumplen con la
condición, el proceso regresa al estado En ejecución.

TASK_UNINTERRUPTIBLE: Este proceso también se encuentra En espera,


pero a diferencia del estado S, no responde a las señales. Solo se usa
D
cuando la interrupción del proceso puede dar lugar a un estado imprevisto
del dispositivo.
En
TASK_KILLABLE: Igual al estado D ininterrumpido, solo que modificado
espera
para permitir que la tarea en espera responda a la señal de anulación (salida
K
completa). Las utilidades con frecuencia muestran procesos anulables
como procesos con estado D.

TASK_REPORT_IDLE: Un subconjunto del estado D. El kernel


no cuenta estos procesos cuando calcula el promedio de carga.
Usado para subprocesos de kernel. Se establecen los indicadores
I
TASK_UNINTERRUPTABLE y TASK_NOLOAD. De manera similar a
TASK_KILLABLE, también es un subconjunto del estado D. Acepta señales
fatales.

TASK_STOPPED: El proceso se ha detenido (suspendido), generalmente


T porque otro usuario u otro proceso lo señalizó. Otra señal puede hacer que
el proceso continúe (se reanude) y regrese al estado En ejecución.
Detenido
TASK_TRACED: Un proceso que se está depurando también se encuentra
T
temporalmente detenido y comparte el mismo indicador de estado T.

EXIT_ZOMBIE: Un proceso secundario señala su proceso principal cuando


Z
finaliza. Se liberan todos los recursos, menos la identidad del proceso (PID).
Zombi
EXIT_DEAD: Cuando el proceso principal limpia (obtiene) la estructura del
X proceso secundario restante, el proceso se libera completamente. Este
estado nunca se observará en utilidades de listas de procesos.

Por qué los estados de los procesos son importantes


Al solucionar problemas de un sistema, es importante comprender cómo se comunica el kernel
con los procesos y cómo los procesos se comunican entre sí. En la creación del proceso, el sistema
asigna un estado al proceso. La columna S del comando top o la columna STAT de ps muestra
el estado de cada proceso. En un sistema de una sola CPU, solo se puede ejecutar un proceso a
la vez. Es posible ver varios procesos con un estado de R. Sin embargo, no todos se ejecutarán
consecutivamente, algunos de ellos estarán en estado en espera.

[user@host ~]$ top


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 244344 13684 9024 S 0.0 0.7 0:02.46 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
...output omitted...

254 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

[user@host ~]$ ps aux


USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...output omitted...
root 2 0.0 0.0 0 0 ? S 11:57 0:00 [kthreadd]
student 3448 0.0 0.2 266904 3836 pts/0 R+ 18:07 0:00 ps aux
...output omitted...

El proceso se puede suspender, detener, reanudar, finalizar e interrumpir mediante el uso de


señales. Las señales se analizan en más detalle posteriormente en este capítulo. Las señales
pueden ser usadas por otros procesos, por el propio kernel o por usuarios conectados al sistema.

Lista de procesos
El comando ps se usa para elaborar una lista de los procesos actuales. Puede proporcionar
información detallada de los procesos, que incluye:

• La identificación del usuario (UID) que determina los privilegios del proceso

• La identificación del proceso (PID) única

• La CPU y el tiempo real empleado

• La cantidad de memoria que el proceso ha asignado en diversas ubicaciones

• La ubicación del proceso stdout, conocido como terminal de control

• El estado del proceso actual

Importante
La versión de ps de Linux admite tres formatos de opciones:

• Opciones UNIX (POSIX), que pueden agruparse y deben estar precedidas por un
guion

• Opciones BSD, que pueden agruparse y no deben usarse con un guion

• Opciones extensas GNU, que están precedidas por dos guiones

Por ejemplo, ps -aux no es igual a ps aux.

Quizás el conjunto de opciones más común, aux, muestra todos los procesos, incluidos los
procesos sin un terminal de control. Una lista extensa (opciones lax) proporciona detalles más
técnicos, pero puede visualizarse más rápidamente porque no realiza la búsqueda de nombre
de usuario. La sintaxis de UNIX similar usa las opciones -ef para la visualización de todos los
procesos.

[user@host ~]$ ps aux


USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 51648 7504 ? Ss 17:45 0:03 /usr/lib/systemd/
syst
root 2 0.0 0.0 0 0 ? S 17:45 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 17:45 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 17:45 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 17:45 0:00 [migration/0]

RH124-RHEL8.2-es-1-20200928 255
capítulo 8 | Monitoreo y administración de procesos Linux

...output omitted...
[user@host ~]$ ps lax
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 51648 7504 ep_pol Ss ? 0:03 /usr/lib/
systemd/
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 20 0 0 0 smpboo S ? 0:00 [ksoftirqd/0]
1 0 5 2 0 -20 0 0 worker S< ? 0:00 [kworker/0:0H]
1 0 7 2 -100 - 0 0 smpboo S ? 0:00 [migration/0]
...output omitted...
[user@host ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:45 ? 00:00:03 /usr/lib/systemd/systemd --
switched-ro
root 2 0 0 17:45 ? 00:00:00 [kthreadd]
root 3 2 0 17:45 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 17:45 ? 00:00:00 [kworker/0:0H]
root 7 2 0 17:45 ? 00:00:00 [migration/0]
...output omitted...

De manera predeterminada, el comando ps sin opciones selecciona todos los procesos que tienen
la misma identificación de usuario efectivo (EUID) que el usuario actual y que están asociados con
la misma terminal en la que se invocó ps.

• Los procesos entre corchetes (normalmente en la parte superior de la lista) son subprocesos del
kernel programados.

• Los zombis se enumeran como exiting o defunct.

• La salida de ps se muestra una vez. Use top para una visualización del proceso que se actualiza
dinámicamente.

• ps se puede mostrar en formato de árbol para que pueda ver las relaciones entre el proceso
principal y los procesos secundarios.

• La salida predeterminada se ordena por número de ID de proceso. A primera vista, esto puede
parecer un orden cronológico. Sin embargo, el kernel vuelve a usar los ID de proceso, por lo
que el orden es menos estructurado de lo que parece. Para ordenar, use las opciones -O o --
sort. El orden de visualización coincide con el de la tabla de procesos del sistema, que vuelve
a usar las filas de la tabla, ya que ciertos procesos finalizan y otros nuevos se crean. La salida
puede aparecer en orden cronológico, pero esto no es seguro, a menos que se usen las opciones
explícitas -O o --sort.

Referencias
info libc signal (Manual de referencia de la biblioteca GNU C)

• Sección 24: Manejo de señales

info libc processes (Manual de referencia de la biblioteca GNU C)

• Sección 26: Procesos

Páginas de manual: ps(1) y signal(7)

256 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Cuestionario

Lista de procesos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué estado representa un proceso que se ha detenido o suspendido?


a. D
b. R
c. S
d. T
e. Z

2. ¿Qué estado representa un proceso que ha liberado todos sus recursos excepto su PID?
a. D
b. R
c. S
d. T
e. Z

3. ¿Qué proceso usa un recurso principal para duplicar y crear un nuevo proceso
secundario?
a. exec
b. fork
c. zombie
d. syscall
e. reap

4. ¿Qué estado representa un proceso que está inactivo hasta que se cumple alguna
condición?
a. D
b. R
c. S
d. T
e. Z

RH124-RHEL8.2-es-1-20200928 257
capítulo 8 | Monitoreo y administración de procesos Linux

Solución

Lista de procesos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué estado representa un proceso que se ha detenido o suspendido?


a. D
b. R
c. S
d. T
e. Z

2. ¿Qué estado representa un proceso que ha liberado todos sus recursos excepto su PID?
a. D
b. R
c. S
d. T
e. Z

3. ¿Qué proceso usa un recurso principal para duplicar y crear un nuevo proceso
secundario?
a. exec
b. fork
c. zombie
d. syscall
e. reap

4. ¿Qué estado representa un proceso que está inactivo hasta que se cumple alguna
condición?
a. D
b. R
c. S
d. T
e. Z

258 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Control de trabajos

Objetivos
Tras completar esta sección, deberá poder usar el control de trabajo Bash para gestionar múltiples
procesos iniciados desde la misma sesión de terminal.

Descripción de trabajos y sesiones


Control de trabajos es una característica de la shell que permite ejecutar y administrar múltiples
comandos desde una sola instancia de shell.

Un trabajo está asociado con cada tubería ingresada en un prompt de shell. Todos los procesos
en esa tubería son parte del trabajo y son miembros del mismo grupo de procesos. Si se ingresa
solo un comando en un prompt de shell, puede considerarse como una “tubería” mínima de un
comando, lo que crea un trabajo con un solo miembro.

Solo un trabajo puede leer entradas y señales generadas por el teclado desde una ventana de
terminal específica por vez. Los procesos que son parte de ese trabajo son procesos en primer
plano de dicha terminal de control.

Un proceso en segundo plano de dicho terminal de control es un miembro de cualquier otro


trabajo asociado con ese terminal. Los procesos en segundo plano de un terminal no pueden
leer entradas ni recibir interrupciones generadas por el teclado desde el terminal, pero pueden
escribir en el terminal. Un trabajo en segundo plano puede detenerse (suspenderse) o puede
estar ejecutándose. Si un trabajo que se está ejecutando en segundo plano intenta leer desde el
terminal, se suspenderá automáticamente.

Cada terminal es su propia sesión, y puede tener un proceso en primer plano y cualquier cantidad
de procesos en segundo plano independientes. Un trabajo es parte de exactamente una sesión, la
que pertenece a su terminal de control.

El comando ps muestra el nombre del dispositivo del terminal de control de un proceso en la


columna TTY. Algunos procesos, como daemons del sistema, son iniciados por el sistema y no
desde un prompt de shell. Estos procesos no tienen un terminal de control, no son miembros de un
trabajo y no pueden colocarse en primer plano. El comando ps muestra un signo de pregunta (?)
en la columna TTY para estos procesos.

Realización de trabajos en segundo plano


Cualquier comando o tubería puede iniciarse en segundo plano si se anexa el signo ampersand
(&) al final de la línea de comandos. La shell Bash muestra un número de trabajo (exclusivo de la
sesión) y el identificador de proceso del proceso secundario nuevo. La shell no espera que finalice
el proceso secundario, sino que muestra el prompt de shell.

[user@host ~]$ sleep 10000 &


[1] 5947
[user@host ~]$

RH124-RHEL8.2-es-1-20200928 259
capítulo 8 | Monitoreo y administración de procesos Linux

nota
Cuando una línea de comandos que contiene una tubería se envía a un segundo
plano mediante el uso de un signo, el PID del último comando de la tubería se usa
como salida. Todos los procesos de la tubería continúan siendo miembros de ese
trabajo.

[user@host ~]$ example_command | sort | mail -s "Sort output" &


[1] 5998

Puede visualizar la lista de trabajos que Bash está rastreando para una sesión en particular con el
comando jobs.

[user@host ~]$ jobs


[1]+ Running sleep 10000 &
[user@host ~]$

Un trabajo en segundo plano se puede colocar en primer plano con el comando fg con su ID de
trabajo (%número de trabajo).

[user@host ~]$ fg %1
sleep 10000

En el ejemplo anterior, el comando sleep se está ejecutando en primer plano en la terminal de


control. La shell se encuentra nuevamente en espera de que se retire el proceso secundario.

Para enviar un proceso en primer plano a segundo plano, presione primero la solicitud de
suspensión generada por el teclado (Ctrl+z) en la terminal.

sleep 10000
^Z
[1]+ Stopped sleep 10000
[user@host ~]$

El trabajo se colocará inmediatamente en segundo plano y se suspenderá.

El comando ps j muestra información relacionada con los trabajos. La PID es la única ID de


proceso del proceso. La PPID es el identificador de proceso del proceso principal de este proceso,
el proceso que lo comenzó (bifurcó). La PGID es el identificador de proceso del líder del grupo de
procesos, generalmente el primer proceso en la tubería del trabajo. La SID es el identificador de
proceso del líder de sesión, que (para un trabajo) es generalmente la shell interactiva que se está
ejecutando en su terminal de control. Dado que el comando sleep de ejemplo está suspendido
actualmente, su estado de proceso es T.

[user@host ~]$ ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
2764 2768 2768 2768 pts/0 6377 Ss 1000 0:00 /bin/bash
2768 5947 5947 2768 pts/0 6377 T 1000 0:00 sleep 10000
2768 6377 6377 2768 pts/0 6377 R+ 1000 0:00 ps j

260 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Para iniciar el proceso suspendido que se está ejecutando en segundo plano, use el comando bg
con la misma ID de trabajo.

[user@host ~]$ bg %1
[1]+ sleep 10000 &

La shell emitirá una advertencia al usuario que intente salir de una ventana de terminal (sesión)
con trabajos suspendidos. Si el usuario vuelve a intentar salir de inmediato, los trabajos
suspendidos se anulan.

nota
Observe el signo + después de [1] en los ejemplos anteriores. El signo + indica que
este trabajo es el trabajo predeterminado actual. Es decir, si se usa un comando que
espera un argumento de número de trabajo % y este no se proporciona, entonces la
acción se realiza en el trabajo con el indicador +.

Referencias
Página de información Bash (Manual de referencia de BASH para GNU)
https://www.gnu.org/software/bash/manual

• Sección 7: Control de trabajos

Páginas de manual: bash(1), builtins(1), ps(1), sleep(1)

RH124-RHEL8.2-es-1-20200928 261
capítulo 8 | Monitoreo y administración de procesos Linux

Ejercicio Guiado

Control de trabajos
En este ejercicio, iniciará, suspenderá, ejecutará en segundo plano y en primer plano varios
procesos usando el control de trabajos.

Resultados
Deberá poder usar el control de trabajos para suspender y reiniciar los procesos de usuario.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab processes-control start. Este script


asegura que servera está disponible.

[student@workstation ~]$ lab processes-control start

1. En workstation, abra dos ventanas de terminal una al lado de la otra. En esta sección,
estos dos terminales se denominan izquierda y derecha. En cada terminal, use el comando
ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En la ventana izquierda, cree un nuevo directorio denominado /home/student/bin. En el


nuevo directorio, cree un script de shell denominado control. Haga el script ejecutable.

2.1. Use el comando mkdir para crear un nuevo directorio denominado /home/
student/bin.

[student@servera ~]$ mkdir /home/student/bin

2.2. Use el comando vim para crear un script denominado control en el directorio /
home/student/bin. Para ingresar al modo interactivo Vim, pulse la tecla i. Use el
comando :wq para guardar el archivo.

[student@servera ~]$ vim /home/student/bin/control


#!/bin/bash
while true; do
echo -n "$@ " >> ~/control_outfile
sleep 1
done

262 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

nota
El script control se ejecuta hasta que termine. Adjunta argumentos de línea de
comandos al archivo ~/control_outfile una vez por segundo.

2.3. Use el comando chmod para hacer que el archivo control sea ejecutable.

[student@servera ~]$ chmod +x /home/student/bin/control

3. Ejecute el script control. El script anexa continuamente la palabra "técnico" y un espacio


al archivo ~/control_outfile a intervalos de un segundo.

nota
Puede ejecutar su script control porque se encuentra en su PATH, y se ha hecho
ejecutable.

[student@servera ~]$ control technical

4. En la shell de terminal derecha, use el comando tail con la opción -f para confirmar que
el nuevo proceso se escriba en el archivo /home/student/control_outfile.

[student@servera ~]$ tail -f ~/control_outfile


technical technical technical technical
...output omitted...

5. En la shell de terminal izquierda, presione Ctrl+z para suspender el proceso en ejecución.


La shell devuelve la ID de trabajo entre corchetes. En la ventana derecha, confirme que se
haya detenido la salida del proceso.

^Z
[1]+ Stopped control technical
[student@servera ~]$

technical technical technical technical


...no further output...

6. En la shell de terminal izquierda, vea la lista jobs. Recuerde que el signo + indica el trabajo
predeterminado. Reinicie el trabajo en segundo plano. En la shell de terminal derecha,
confirme que la salida del proceso esté de nuevo activa.

6.1. Con el comando jobs, vea la lista de trabajos.

[student@servera ~]$ jobs


[1]+ Stopped control technical

6.2. Con el comando bg, reinicie el trabajo control en segundo plano.

RH124-RHEL8.2-es-1-20200928 263
capítulo 8 | Monitoreo y administración de procesos Linux

[student@servera ~]$ bg
[1]+ control technical &

6.3. Use el comando jobs para confirmar que el trabajo control se está ejecutando otra
vez.

[student@servera ~]$ jobs


[1]+ Running control technical &

6.4. En la shell de terminal derecha, confirme que el comando tail está produciendo la
salida.

...output omitted...
technical technical technical technical technical technical technical technical

7. En la shell de terminal izquierda, inicie dos procesos control más para anexar al archivo
~/output. Use el signo (&) para iniciar los procesos en segundo plano. Reemplace
technical con documents y, luego, con database. Reemplazar los argumentos ayuda a
diferenciar los tres procesos.

[student@servera ~]$ control documents &


[2] 6579
[student@servera ~]$
[student@servera ~]$ control database &
[3] 6654

nota
El número de trabajo de cada proceso nuevo se imprime entre corchetes. El
segundo número es el número de ID de proceso (PID) único de todo el sistema para
el proceso.

8. En la shell de terminal izquierda, use el comando jobs para ver los tres procesos en
ejecución. En la shell de terminal derecha, confirme que los tres procesos se estén
adjuntando al archivo.

[student@servera ~]$ jobs


[1] Running control technical &
[2]- Running control documents &
[3]+ Running control database &

...output omitted...
technical documents database technical documents database technical documents
database technical documents database
...output omitted...

9. Suspenda el proceso control technical. Confirme que se haya suspendido. Finalice el


proceso control documents y confirme que ha sido terminado.

264 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

9.1. En la shell de terminal izquierda, use el comando fg con la ID de trabajo para poner
en primer plano el proceso control technical. Presione Ctrl+z para suspender
el proceso. Use el comando jobs para confirmar que el proceso está suspendido.

[student@servera ~]$ fg %1
control technical
^Z
[1]+ Stopped control technical
[student@servera ~]$ jobs
[1]+ Stopped control technical
[2] Running control documents &
[3]- Running control database &

9.2. En la shell de terminal derecha, confirme que el proceso control technical ya no


está enviando la salida.

database documents database documents database


...no further output...

9.3. En la shell de terminal izquierda, use el comando fg con la ID de trabajo para poner
en primer plano el proceso control documents. Presione Ctrl+c para finalizar el
proceso. Use el comando jobs para confirmar que el proceso está finalizado.

[student@servera ~]$ fg %2
control documents
^C
[student@servera ~]$ jobs
[1]+ Stopped control technical
[3]- Running control database &

9.4. En la shell de terminal derecha, confirme que el proceso control documents ya no


está enviando la salida.

...output omitted...
database database database database database database database database
...no further output...

10. En la ventana izquierda, use el comando ps con la opción jT para ver los trabajos restantes.
Los trabajos suspendidos tiene el estado T. Los otros trabajos en segundo plano están
inactivos (S).

[student@servera ~]$ ps jT
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
27277 27278 27278 27278 pts/1 28702 Ss 1000 0:00 -bash
27278 28234 28234 27278 pts/1 28702 T 1000 0:00 /bin/bash /home/student/
bin/control technical
27278 28251 28251 27278 pts/1 28702 S 1000 0:00 /bin/bash /home/student/
bin/control database
28234 28316 28234 27278 pts/1 28702 T 1000 0:00 sleep 1
28251 28701 28251 27278 pts/1 28702 S 1000 0:00 sleep 1
27278 28702 28702 27278 pts/1 28702 R+ 1000 0:00 ps jT

RH124-RHEL8.2-es-1-20200928 265
capítulo 8 | Monitoreo y administración de procesos Linux

11. En la ventana izquierda, use el comando jobs para visualizar los trabajos actuales. Finalice
el proceso control database y confirme que ha sido terminado.

[student@servera ~]$ jobs


[1]+ Stopped control technical
[3]- Running control database &

Use el comando fg con la ID de trabajo para poner en primer plano el proceso control
database. Presione Ctrl+c para finalizar el proceso. Use el comando jobs para confirmar
que el proceso está finalizado.

[student@servera ~]$ fg %3
control database
^C
[student@servera ~]$ jobs
[1]+ Stopped control technical

12. En la shell de terminal derecha, use el comando, use el comando Ctrl+c para detener el
comando tail. Con el comando rm, elimine el archivo ~/control_outfile.

...output omitted...
Ctrl+c
[student@servera ~]$ rm ~/control_outfile

13. Cierre sesión en servera en ambas terminales.

[student@servera ~]$ exit


logout
Connection to servera closed.

[student@servera ~]$ exit


logout
Connection to servera closed.

Finalizar
En workstation, ejecute el script lab processes-control finish para terminar este
ejercicio.

[student@workstation ~]$ lab processes-control finish

Esto concluye el ejercicio guiado.

266 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Finalización de procesos

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Use comandos para finalizar procesos y comunicarse con ellos.

• Defina las características de un proceso daemon.

• Terminar sesiones y procesos de usuario.

Control de procesos con señales


Una señal es la interrupción de software que se envía a un proceso. Indica eventos de informe a un
programa que está en ejecución. Los eventos que generan una señal pueden ser un error, evento
externo (una solicitud de entrada o salida o un temporizador vencido), o el uso explícito de un
comando emisor de señal o secuencia de teclado.

La siguiente tabla enumera las señales fundamentales usadas por los administradores del sistema
para la administración de procesos de rutina. Puede referirse a las señales ya sea por su nombre
abreviado (HUP) o nombre propio (SIGHUP).

Señales fundamentales de administración de procesos

Nombre
Número de señal Definición Propósito
abreviado

Se usa para informar la


finalización del proceso de
control de una terminal.
Además, se usa para
1 HUP Colgar
solicitar que se reinicie el
proceso (volver a cargar
la configuración) sin
finalización.

Provoca la finalización del


programa. Puede bloquearse
Interrupción
2 INT o manipularse. Enviado al
del teclado
presionar una secuencia de
teclas INTR (Ctrl+c).

Es similar a SIGINT, pero


añade el volcado de un
Salida del proceso en la finalización.
3 QUIT
teclado Enviado al presionar una
secuencia de teclas QUIT
(Ctrl+\).

RH124-RHEL8.2-es-1-20200928 267
capítulo 8 | Monitoreo y administración de procesos Linux

Nombre
Número de señal Definición Propósito
abreviado

Provoca la finalización
Finalización,
abrupta del programa. No se
9 KILL no se puede
puede bloquear, ignorar ni
bloquear.
manipular; siempre es grave.

Provoca la finalización del


programa. A diferencia de
SIGKILL, puede bloquearse,
ignorarse o manipularse.
15 predeterminado TÉRMINO Terminar
Es la manera “correcta” de
solicitar la finalización de un
programa; hace posible la
autolimpieza.

Se envía a un proceso para


que se reinicie, en caso
de que esté detenido. No
n° CONT Continuar
puede bloquearse. Aún si se
manipula, reinicia siempre el
proceso.

Detener, no Suspende el proceso.


apartado STOP se puede No puede bloquearse ni
bloquear. manipularse.

A diferencia de SIGSTOP,
puede bloquearse, ignorarse
Detención
508 TSTP o manipularse. Enviado al
del teclado
presionar una secuencia de
teclas SUSP (Ctrl+z).

nota
Los números de señal varían en las distintas plataformas de hardware de Linux,
pero los nombres y los significados de las señales están estandarizados. Para el uso
del comando, se aconseja usar los nombres de señal en lugar de los números. Los
números analizados en esta sección son para los sistemas x86_64.

Cada señal tiene una acción predeterminada que, por lo general, es una de las siguientes:

• Term: provoca que un programa finalice (se cierre) de inmediato.

• Core: provoca que un programa guarde una imagen de la memoria (volcado central) y que, a
continuación, finalice.

• Stop: provoca que un programa deje de ejecutarse (se suspenda) y espere para continuar (se
reinicie).

Los programas pueden estar preparados para reaccionar ante señales de eventos esperadas
mediante la implementación de rutinas de controlador que ignoren, reemplacen o amplíen la
acción predeterminada de una señal.

268 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Comandos para el envío de señales mediante una solicitud


explícita
Usted indica el proceso en primer plano actual mediante la escritura de una secuencia de control
de teclado para suspender (Ctrl+z), finalizar (Ctrl+c), o realizar un volcado central (Ctrl+\)
del proceso. Sin embargo, usará comandos emisores de señales para enviar señales a un proceso
en segundo plano o a procesos de una sesión diferente.

Las señales se pueden especificar como opciones por nombre (por ejemplo, -HUP o -SIGHUP)
o por número (el -1 relacionado). Los usuarios pueden finalizar sus propios procesos, pero se
necesitan privilegios de root para finalizar procesos que son propiedad de otros usuarios.

El comando kill envía una señal a un proceso mediante un número de PID. A pesar de su
nombre, el comando kill puede usarse para enviar cualquier señal y no solo aquellas para finalizar
programas. Puede usar el comando kill -l para enumerar los nombres y números de todas las
señales disponibles.

[user@host ~]$ kill -l


1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
...output omitted...
[user@host ~]$ ps aux | grep job
5194 0.0 0.1 222448 2980 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job1
5199 0.0 0.1 222448 3132 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job2
5205 0.0 0.1 222448 3124 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job3
5430 0.0 0.0 221860 1096 pts/1 S+ 16:41 0:00 grep --color=auto job
[user@host ~]$ kill 5194
[user@host ~]$ ps aux | grep job
user 5199 0.0 0.1 222448 3132 pts/1 S 16:39 0:00 /bin/bash /home/
user/bin/control job2
user 5205 0.0 0.1 222448 3124 pts/1 S 16:39 0:00 /bin/bash /home/
user/bin/control job3
user 5783 0.0 0.0 221860 964 pts/1 S+ 16:43 0:00 grep --color=auto
job
[1] Terminated control job1
[user@host ~]$ kill -9 5199
[user@host ~]$ ps aux | grep job
user 5205 0.0 0.1 222448 3124 pts/1 S 16:39 0:00 /bin/bash /home/
user/bin/control job3
user 5930 0.0 0.0 221860 1048 pts/1 S+ 16:44 0:00 grep --color=auto
job
[2]- Killed control job2
[user@host ~]$ kill -SIGTERM 5205
user 5986 0.0 0.0 221860 1048 pts/1 S+ 16:45 0:00 grep --color=auto
job
[3]+ Terminated control job3

El comando killall puede señalar varios procesos según su nombre de comando.

RH124-RHEL8.2-es-1-20200928 269
capítulo 8 | Monitoreo y administración de procesos Linux

[user@host ~]$ ps aux | grep job


5194 0.0 0.1 222448 2980 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job1
5199 0.0 0.1 222448 3132 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job2
5205 0.0 0.1 222448 3124 pts/1 S 16:39 0:00 /bin/bash /home/user/bin/
control job3
5430 0.0 0.0 221860 1096 pts/1 S+ 16:41 0:00 grep --color=auto job
[user@host ~]$ killall control
[1] Terminated control job1
[2]- Terminated control job2
[3]+ Terminated control job3
[user@host ~]$

Use pkill para enviar una señal a uno o más procesos que coincidan con los criterios de
selección. Los criterios de selección pueden ser un nombre de comando, un proceso que es
propiedad de un usuario específico o todos los procesos del sistema. El comando pkill incluye
criterios de selección avanzados:

• Command: procesos con un nombre de comando que coincide con un patrón.


• UID: procesos que son propiedad de una cuenta de usuario de Linux, efectiva o real.
• GID: procesos que son propiedad de una cuenta de grupo de Linux, efectiva o real.
• Parent: procesos secundarios de un proceso principal específico.
• Terminal: procesos que se ejecutan en una terminal de control específica.

[user@host ~]$ ps aux | grep pkill


user 5992 0.0 0.1 222448 3040 pts/1 S 16:59 0:00 /bin/bash /home/
user/bin/control pkill1
user 5996 0.0 0.1 222448 3048 pts/1 S 16:59 0:00 /bin/bash /home/
user/bin/control pkill2
user 6004 0.0 0.1 222448 3048 pts/1 S 16:59 0:00 /bin/bash /home/
user/bin/control pkill3
[user@host ~]$ pkill control
[1] Terminated control pkill1
[2]- Terminated control pkill2
[user@host ~]$ ps aux | grep pkill
user 6219 0.0 0.0 221860 1052 pts/1 S+ 17:00 0:00 grep --color=auto
pkill
[3]+ Terminated control pkill3
[user@host ~]$ ps aux | grep test
user 6281 0.0 0.1 222448 3012 pts/1 S 17:04 0:00 /bin/bash /home/
user/bin/control test1
user 6285 0.0 0.1 222448 3128 pts/1 S 17:04 0:00 /bin/bash /home/
user/bin/control test2
user 6292 0.0 0.1 222448 3064 pts/1 S 17:04 0:00 /bin/bash /home/
user/bin/control test3
user 6318 0.0 0.0 221860 1080 pts/1 S+ 17:04 0:00 grep --color=auto
test
[user@host ~]$ pkill -U user
[user@host ~]$ ps aux | grep test
user 6870 0.0 0.0 221860 1048 pts/0 S+ 17:07 0:00 grep --color=auto
test
[user@host ~]$

270 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Cierre de sesión de usuarios en forma administrativa


Es posible que deba cerrar la sesión de otros usuarios por diversos motivos. Para nombrar algunas
de las muchas posibilidades: el usuario cometió una infracción de seguridad; el usuario puede
haber abusado de los recursos; el usuario puede tener un sistema que no responde; o el usuario
tiene acceso inadecuado a los materiales. En estos casos, es posible que tenga que finalizar de
forma administrativa su sesión mediante el uso de señales.

Para cerrar la sesión de un usuario, primero identifique la sesión de inicio de sesión que se
finalizará. Use el comando w para enumerar los inicios de sesión de usuario y los procesos actuales
en ejecución. Observe que las columnas TTY y FROM para determinar las sesiones a cerrar.

Todas las sesiones de inicio de sesión de usuario están asociadas a un dispositivo terminal (TTY).
Si el nombre del dispositivo tiene el formato pts/N, se trata de una pseudoterminal asociada con
una ventana de terminal gráfica o sesión de inicio de sesión remota. Si tiene el formato ttyN, el
usuario se encuentra en una consola del sistema, consola alternativa u otro dispositivo terminal
conectado directamente.

[user@host ~]$ w
12:43:06 up 27 min, 5 users, load average: 0.03, 0.17, 0.66
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 12:26 14:58 0.04s 0.04s -bash
bob tty3 12:28 14:42 0.02s 0.02s -bash
user pts/1 desk.example.com 12:41 2.00s 0.03s 0.03s w
[user@host ~]$

Averigüe cuánto tiempo un usuario estuvo en el sistema con la hora de inicio de sesión. Para cada
sesión, los recursos de CPU consumidos por los trabajos actuales, incluidas las tareas en segundo
plano y los procesos secundarios, se encuentran en la columna JCPU. El consumo de CPU del
proceso de primer plano actual está en la columna PCPU.

Los procesos y las sesiones pueden señalizarse en forma individual o colectiva. Para finalizar todos
los procesos de un usuario, use el comando pkill. Debido a que el proceso inicial en una sesión
de inicio de sesión (líder de sesión) está diseñado para manipular las solicitudes de finalización
de sesión e ignorar las señales de teclado involuntarias, la finalización de los procesos y shells de
inicio de sesión de un usuario requiere del uso de la señal SIGKILL.

Importante
Los administradores suelen utilizar SIGKILL con demasiada rapidez.

Ya que la señal SIGKILL no puede manipularse ni ignorarse, siempre es grave. Sin


embargo, obliga a la finalización sin permitir que el proceso terminado ejecute
rutinas de autolimpieza. Se recomienda enviar primero SIGTERM, a continuación
intentar con SIGINT y, solo si falla en ambos casos, intentar con SIGKILL.

Primero identifique los números de PID que se finalizarán mediante pgrep, que funciona como
pkill, incluido el uso de las mismas opciones, excepto que pgrep enumera procesos, en lugar de
finalizarlos.

RH124-RHEL8.2-es-1-20200928 271
capítulo 8 | Monitoreo y administración de procesos Linux

[root@host ~]# pgrep -l -u bob


6964 bash
6998 sleep
6999 sleep
7000 sleep
[root@host ~]# pkill -SIGKILL -u bob
[root@host ~]# pgrep -l -u bob
[root@host ~]#

Cuando los procesos que requieren atención están en la misma sesión de inicio de sesión, es
probable que no sea necesario finalizar todos los procesos de un usuario. Determine el terminal
de control para la sesión con el comando w y, a continuación, finalice solo los procesos que hagan
referencia a la misma ID de terminal. A menos que se especifique SIGKILL, el líder de sesión (en
este caso, la shell de inicio de sesión Bash) manipula y supera en forma correcta la solicitud de
finalización, pero finalizan todos los demás procesos de sesión.

[root@host ~]# pgrep -l -u bob


7391 bash
7426 sleep
7427 sleep
7428 sleep
[root@host ~]# w -h -u bob
bob tty3 18:37 5:04 0.03s 0.03s -bash
[root@host ~]# pkill -t tty3
[root@host ~]# pgrep -l -u bob
7391 bash
[root@host ~]# pkill -SIGKILL -t tty3
[root@host ~]# pgrep -l -u bob
[root@host ~]#

Puede aplicarse el mismo proceso selectivo de finalización con las relaciones de proceso principal
y secundario. Use el comando pstree para visualizar un árbol de proceso para el sistema o un
solo usuario. Use la PID del proceso principal para finalizar todos los procesos secundarios que
haya creado. Esta vez, la shell de inicio de sesión Bash principal sobrevive porque la señal se dirige
solo a sus procesos secundarios.

[root@host ~]# pstree -p bob


bash(8391)─┬─sleep(8425)
├─sleep(8426)
└─sleep(8427)
[root@host ~]# pkill -P 8391
[root@host ~]# pgrep -l -u bob
bash(8391)
[root@host ~]# pkill -SIGKILL -P 8391
[root@host ~]# pgrep -l -u bob
bash(8391)
[root@host ~]#

272 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Referencias
info libc signal (Manual de referencia de la biblioteca GNU C)

• Sección 24: Manejo de señales

info libc processes (Manual de referencia de la biblioteca GNU C)

• Sección 26: Procesos

Paginas del manual: kill(1), killall(1), pgrep(1), pkill(1), pstree(1),


signal(7) y w(1)

RH124-RHEL8.2-es-1-20200928 273
capítulo 8 | Monitoreo y administración de procesos Linux

Ejercicio Guiado

Finalización de procesos
En este ejercicio, usará señales para gestionar y detener procesos.

Resultados
Deberá poder iniciar y detener varios procesos de shell.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab processes-kill start. Este comando


ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab processes-kill start

1. En workstation, abra dos ventanas de terminal una al lado de la otra. En esta sección,
estas terminales se denominan izquierda y derecha. En cada terminal, use el comando ssh
para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En la ventana izquierda, cree un nuevo directorio denominado /home/student/bin. En el


nuevo directorio, cree un script de shell denominado killing. Haga el script ejecutable.

2.1. Use el comando mkdir para crear un nuevo directorio denominado /home/
student/bin.

[student@servera ~]$ mkdir /home/student/bin

2.2. Use el comando vim para crear un script denominado killing en el directorio /
home/student/bin. Presione la tecla i para ingresar al modo interactivo Vim. Use
el comando :wq para guardar el archivo.

[student@servera ~]$ vim /home/student/bin/killing


#!/bin/bash
while true; do
echo -n "$@ " >> ~/killing_outfile
sleep 5
done

274 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

nota
El script killing se ejecuta hasta que termine. Adjunta argumentos de línea de
comandos a ~/killing_outfile una vez cada 5 segundos.

2.3. Use el comando chmod para hacer que el archivo killing sea ejecutable.

[student@servera ~]$ chmod +x /home/student/bin/killing

3. En la shell de terminal izquierda, use el comando cd para cambiar al directorio /home/


student/bin/. Inicie tres procesos killing con los argumentos network, interface
y connection, respectivamente. Inicie tres procesos denominados network, interface
y connection. Use el signo (&) para iniciar los procesos en segundo plano.

[student@servera ~]$ cd /home/student/bin


[student@servera bin]$ killing network &
[1] 3460
[student@servera bin]$ killing interface &
[2] 3482
[student@servera bin]$ killing connection &
[3] 3516

Sus procesos tendrán diferentes números PID.

4. En la shell de terminal derecha, use el comando tail con la opción -f para confirmar que
los tres procesos se estén adjuntando al archivo /home/student/killing_outfile.

[student@servera ~]$ tail -f ~/killing_outfile


network interface network connection interface network connection interface
network
...output omitted...

5. En la shell de terminal izquierda, use el comando jobs para enumerar los trabajos.

[student@servera bin]$ jobs


[1] Running killing network &
[2]- Running killing interface &
[3]+ Running killing connection &

6. Use señales para suspender el proceso network. Confirme que el proceso network está
detenido. En la shell de terminal derecha, confirme que el proceso network ya no está
anexando la salida a ~/killing_output.

6.1. Use kill con la opción -SIGSTOP para detener el proceso network. Ejecute jobs
para confirmar que se ha detenido.

RH124-RHEL8.2-es-1-20200928 275
capítulo 8 | Monitoreo y administración de procesos Linux

[student@servera bin]$ kill -SIGSTOP %1


[1]+ Stopped killing network
[student@servera bin]$ jobs
[1]+ Stopped killing network
[2] Running killing interface &
[3]- Running killing connection &

6.2. En la shell de terminal derecha, observe la salida del comando tail. Confirme que la
palabra network ya no se está anexando al archivo ~/killing_outfile.

...output omitted...
interface connection interface connection interface connection interface

7. En la shell de terminal izquierda, finalice el proceso interface mediante señales.


Confirme que el proceso interface haya desaparecido. En la shell de terminal derecha,
confirme que la salida del proceso interface ya no está anexado al archivo ~/
killing_outfile.

7.1. Use el comando kill con la opción -SIGTERM para finalizar el proceso de
interface. Ejecute el comando jobs para confirmar que ha sido finalizado.

[student@servera bin]$ kill -SIGTERM %2


[student@servera bin]$ jobs
[1]+ Stopped killing network
[2] Terminated killing interface
[3]- Running killing connection &

7.2. En la shell de terminal derecha, observe la salida del comando tail. Confirme que la
palabra interface ya no se está anexando al archivo ~/killing_outfile.

...output omitted...
connection connection connection connection connection connection connection
connection

8. En la shell de terminal izquierda, reanude el proceso network mediante señales. Confirme


que el proceso network se esté ejecutando. En la ventana derecha, confirme que la
salida del proceso network se está anexando al archivo ~/killing_outfile.

8.1. Use el comando kill con -SIGCONT para reanudar el proceso network. Ejecute el
comando jobs para confirmar que el proceso se está ejecutando.

[student@servera bin]$ kill -SIGCONT %1


[student@servera bin]$ jobs
[1]+ Running killing network &
[3]- Running killing connection &

8.2. En la shell de terminal derecha, observe la salida del comando tail. Confirme que la
palabra network se está anexando al archivo ~/killing_outfile.

276 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

...output omitted...
network connection network connection network connection network connection
network connection

9. En la shell de terminal izquierda, finalice los dos trabajos restantes. Confirme que no
queden trabajos y que se haya detenido la salida.

9.1. Use el comando kill con la opción -SIGTERM para finalizar el proceso interface.
Use el mismo comando para finalizar el proceso connection.

[student@servera bin]$ kill -SIGTERM %1


[student@servera bin]$ kill -SIGTERM %3
[1]+ Terminated killing network
[student@servera bin]$ jobs
[3]+ Terminated killing connection

10. En la shell de terminal izquierda, enumere los procesos tail que se están ejecutando en
todas las shells de terminales abiertas. Finalizar la ejecución de comandos tail. Confirme
que el proceso ya no se está ejecutando.

10.1. Use el comando ps con la opción -ef para enumerar todos los procesos tail en
ejecución. Refine la búsqueda con el comando grep.

[student@servera bin]$ ps -ef | grep tail


student 4581 31358 0 10:02 pts/0 00:00:00 tail -f killing_outfile
student 4869 2252 0 10:33 pts/1 00:00:00 grep --color=auto tail

10.2. Use el comando pkill con la opción -SIGTERM para finalizar todos los procesos
tail. Use ps para confirmar que ya no está presente.

[student@servera bin]$ pkill -SIGTERM tail


[student@servera bin]$ ps -ef | grep tail
student 4874 2252 0 10:36 pts/1 00:00:00 grep --color=auto tail

10.3. En la shell de terminal derecha, confirme que el comando tail ya no se está


ejecutando.

...output omitted...
network connection network connection network connection Terminated
[student@servera ~]$

11. Salga de ambas ventanas de terminal. Si no sale de todas las sesiones, el script de
finalización fallará.

[student@servera bin]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

RH124-RHEL8.2-es-1-20200928 277
capítulo 8 | Monitoreo y administración de procesos Linux

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab processes-kill finish para terminar este ejercicio.

[student@workstation ~]$ lab processes-kill finish

Esto concluye el ejercicio guiado.

278 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Monitoreo de la actividad de procesos

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de describir qué es el promedio de carga y
determinar los procesos responsables del alto uso de recursos en un servidor.

Descripción del promedio de carga


El promedio de carga es una medida proporcionada por el kernel de Linux que es una forma
sencilla de representar la carga percibida del sistema a lo largo del tiempo. Puede usarse como
un indicador aproximado de cuántas solicitudes de recursos del sistema están pendientes y para
determinar si la carga del sistema aumenta o disminuye con el tiempo.

Cada cinco segundos, el kernel recoge la cantidad de carga actual en función de la cantidad de
procesos en estados ejecutables e ininterrumpidos. Este número se acumula y se informa como un
promedio móvil exponencial en los últimos 1, 5 y 15 minutos.

Comprensión del cálculo del promedio de carga Linux


El promedio de carga representa la carga del sistema percibida durante un período. Linux lo
calcula al informar cuántos procesos están listos para ejecutarse en una CPU y cuántos procesos
están esperando que se complete la E/S del disco o de la red.

• La cantidad de carga es un promedio en ejecución de la cantidad de procesos que están listos


para ejecutarse (estado en proceso R) o la cantidad de procesos que están esperando a que
finalice la E/S (estado en proceso D).

• Algunos sistemas UNIX solo tienen en cuenta la utilización de la CPU o la longitud de la cola de
ejecución para indicar la carga del sistema. Linux también incluye la utilización del disco o de la
red porque eso puede tener un impacto tan significativo en el rendimiento del sistema como la
carga de la CPU. Cuando haya promedios altos de carga con actividad mínima de CPU, se debe
examinar la actividad del disco y de la red.

El promedio de carga es una medida aproximada de cuántos procesos están actualmente


esperando a que se complete una solicitud antes de poder ejecutar otra tarea. La solicitud puede
ser tiempo de CPU para ejecutar el proceso. Como alternativa, la solicitud puede ser para que
se complete una operación crítica de E/S del disco, y el proceso no se puede ejecutar en la CPU
hasta que la solicitud se complete, incluso si la CPU está inactiva. De cualquier manera, la carga
del sistema se ve afectada, y el sistema parece funcionar más lentamente porque los procesos
están esperando para ejecutarse.

Interpretación de los valores que se muestran del promedio de


carga
El comando uptime es una forma de mostrar el promedio de carga actual. Imprime la hora
actual, cuánto tiempo ha estado funcionando la máquina, cuántas sesiones de usuario se están
ejecutando y el promedio de carga actual.

[user@host ~]$ uptime


15:29:03 up 14 min, 2 users, load average: 2.92, 4.48, 5.20

RH124-RHEL8.2-es-1-20200928 279
capítulo 8 | Monitoreo y administración de procesos Linux

Los tres valores del promedio de carga representan la carga durante los últimos 1, 5 y 15 minutos.
Una rápida mirada indica si la carga del sistema parece estar subiendo o bajando.

Si el promedio de carga aumenta principalmente debido a procesos que están esperando a la


CPU, puede calcular el valor de carga aproximado por CPU para determinar si el sistema está
experimentando una espera significativa.

El comando lscpu puede ayudarlo a determinar cuántas CPU tiene un sistema.

En el siguiente ejemplo, el sistema es un sistema de un solo socket de doble núcleo con dos
hyperthreads por núcleo. En términos generales, Linux tratará esto como un sistema de cuatro
CPU para fines de programación.

[user@host ~]$ lscpu


Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
...output omitted...

Imagine por un momento que la única contribución a la cantidad de carga proviene de procesos
que necesitan tiempo de CPU. Puede entonces dividir los valores promedios de carga que se
muestran por el número de CPU lógicas en el sistema. Un valor por debajo de 1 indica utilización
de recursos satisfactoria y tiempos de espera mínimos. Un valor por encima de 1 indica saturación
de recursos y cierta cantidad de retraso en el procesamiento.

# From lscpu, the system has four logical CPUs, so divide by 4:


# load average: 2.92, 4.48, 5.20
# divide by number of logical CPUs: 4 4 4
# ---- ---- ----
# per-CPU load average: 0.73 1.12 1.30
#
# This system's load average appears to be decreasing.
# With a load average of 2.92 on four CPUs, all CPUs were in use ~73% of the time.
# During the last 5 minutes, the system was overloaded by ~12%.
# During the last 15 minutes, the system was overloaded by ~30%.

Una cola de CPU inactiva tiene una cantidad de carga de 0. Cada proceso que espera a una CPU
agrega un recuento de 1 a la cantidad de carga. Si un proceso se está ejecutando en una CPU, la
cantidad de carga es 1, es decir, el recurso (la CPU) está en uso, pero no hay solicitudes en espera.
Si ese proceso se está ejecutando durante un minuto entero, su contribución al promedio de carga
de un minuto será 1.

Sin embargo, los procesos en suspensión ininterrumpida para E/S críticas debido a un disco o
recurso de red ocupados se incluyen también en el recuento y aumentan el promedio de carga.
Si bien no es una indicación de la utilización de la CPU, estos procesos se agregan al recuento de
la cola porque están esperando recursos y no pueden ejecutarse en una CPU hasta que obtienen
esos recursos. Esto sigue siendo una carga del sistema debido a las limitaciones de recursos que
están haciendo que los procesos no se ejecuten.

280 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Hasta que no se produce una saturación del recurso, un promedio de carga se mantiene por
debajo de 1, dado que las tareas rara vez son encontradas en las colas de espera. El promedio de
carga solo aumenta cuando la saturación del recurso provoca que las solicitudes se mantengan en
fila y sean contadas por la rutina del cálculo de carga. Cuando la utilización del recurso se aproxima
al 100 %, cada solicitud adicional comienza a experimentar un tiempo de espera del servicio.

Existen algunas otras herramientas que informan el promedio de carga, incluyendo w y top.

Monitoreo del proceso en tiempo real


El programa top es una vista dinámica de los procesos del sistema, que muestra un encabezado
del resumen seguido de un proceso o lista de subprocesos similares a la información de ps. A
diferencia de la salida de ps estática, top continuamente se actualiza a un intervalo configurable y
ofrece capacidades de reorganización, ordenado y resaltado de columnas. Las configuraciones del
usuario se pueden guardar y hacer persistentes.

Las columnas de salidas predeterminadas se diferencian de otras herramientas de recursos en:

• La ID del proceso (PID).

• El nombre de usuario (USER) es el propietario del proceso.

• La memoria virtual (VIRT) es toda la memoria que está usando el proceso, incluido el conjunto
residente, las bibliotecas compartidas y cualquier página de memoria asignada o intercambiada.
(Con la etiqueta VSZ en el comando ps).

• La memoria residente (RES) es la memoria física que usa el proceso, incluido cualquier objeto
residente compartido. (Con la etiqueta RSS en el comando ps).

• El estado del proceso S se muestra como:

– D = Suspensión ininterrumpida

– R = En ejecución o ejecutable

– S = En espera

– T = Detenido o en seguimiento

– Z = Zombi

• El tiempo de CPU (TIME) es el tiempo total de procesamiento desde que comenzó el proceso.
Se puede alternar para incluir el tiempo acumulativo de todos los procesos secundarios.

• El nombre del comando de proceso (COMMAND).

Pulsaciones de tecla fundamentales en top

Tecla Propósito

?oh Ayudar en pulsaciones de tecla interactiva.

l, t, m Alternar entre carga, subprocesos y líneas de encabezado de la memoria.

1 Alternar mostrando CPU individuales o un resumen de todas las CPU en el


encabezado.

s (1) Cambiar la tasa de actualización (pantalla) en segundos decimales (p. ej., 0.5, 1,
5).

RH124-RHEL8.2-es-1-20200928 281
capítulo 8 | Monitoreo y administración de procesos Linux

Tecla Propósito

b Alternar resaltado reverso para procesos en ejecución; solo negrita de


manera predeterminada.

Cambio + Permite el uso de negrita en la visualización, en el encabezado y en los


segundo procesos en ejecución.

Shift+h Alternar subprocesos; mostrar resumen del proceso o subprocesos


individuales.

u, Shift+u Filtrar por cualquier nombre de usuario (eficaz, real).

Shift+m Ordenar procesos enumerados por uso de memoria, en orden decreciente.

Shift+p Ordenar procesos enumerados por utilización del procesador, en orden


decreciente.

k (1) Eliminar un proceso. Cuando se le solicite, ingrese PID; luego, signal.

r (1) Ejecute el comando renice para un proceso. Cuando se le solicite, ingrese PID;
luego, nice_value.

Shift+w Escriba (guarde) la configuración actual de la visualización para usar en el


próximo reinicio de top.

q Salir.

f Administre las columnas al habilitar o deshabilitar los campos. También le


permite configurar el campo de ordenamiento para top.
(1)
Nota: No está disponible si top se inicia en modo seguro. Ver top(1).

Referencias
Páginas de manual: ps(1), top(1), uptime(1) y w(1)

282 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Ejercicio Guiado

Monitoreo de la actividad de procesos


En este ejercicio, usará el comando top para examinar dinámicamente los procesos en
ejecución y controlarlos.

Resultados
Deberá poder gestionar los procesos en tiempo real.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab processes-monitor start. El comando


ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab processes-monitor start

1. En workstation, abra dos ventanas de terminal una al lado de la otra. Estas terminales se
denominan izquierda y derecha. En cada terminal, use el comando ssh para iniciar sesión en
servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. En la shell de terminal izquierda, cree un nuevo directorio denominado /home/student/


bin. En el nuevo directorio, cree un script de shell denominado monitor, que genera carga
artificial de la CPU. Asegúrese de que el script sea ejecutable.

2.1. Use el comando mkdir para crear un nuevo directorio denominado /home/
student/bin.

[student@servera ~]$ mkdir /home/student/bin

2.2. Cree un script denominado monitor en el directorio /home/student/bin, con el


siguiente contenido:

#!/bin/bash
while true; do
var=1
while [[ var -lt 60000 ]]; do
var=$(($var+1))
done
sleep 1
done

RH124-RHEL8.2-es-1-20200928 283
capítulo 8 | Monitoreo y administración de procesos Linux

El script monitor se ejecuta hasta que termine. Genera carga artificial de CPU
al realizar sesenta mil problemas de suma. Luego se inactiva durante un segundo,
restablece la variable y se repite.

2.3. Use el comando chmod para hacer que el archivo monitor sea ejecutable.

[student@servera ~]$ chmod a+x /home/student/bin/monitor

3. En la shell de terminal derecha, ejecute la utilidad top. Modifique el tamaño de la ventana


para que sea lo más alta posible.

[student@servera ~]$ top


top - 12:13:03 up 11 days, 58 min, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.4 total, 1377.3 free, 193.9 used, 258.2 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1476.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


5861 root 20 0 0 0 0 I 0.3 0.0 0:00.71 kworker/1:3-
events
6068 student 20 0 273564 4300 3688 R 0.3 0.2 0:00.01 top
1 root 20 0 178680 13424 8924 S 0.0 0.7 0:04.03 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
...output omitted...

4. En la shell de terminal izquierda, use el comando lscpu para determinar la cantidad de


CPU lógicas de esta máquina virtual.

[student@servera ~]$ lscpu


Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
...output omitted...

5. En la shell de terminal izquierda, ejecute una sola instancia del archivo ejecutable monitor.
Use el signo (&) para iniciar el proceso en segundo plano.

[student@servera ~]$ monitor &


[1] 6071

6. En la shell de terminal derecha, observe la pantalla de top. Presione las teclas l, t y m


en forma individual para alternar la carga, los subprocesos y las líneas del encabezado de
memoria. Después de observar este comportamiento, asegúrese de que se muestren todos
los encabezados.

7. Anote la ID de proceso (PID) para monitor. Observe el porcentaje de CPU para el


proceso, que se espera que sea alrededor del 15 % o el 25 %.

284 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

[student@servera ~]$ top


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
071 student 20 0 222448 2964 2716 S 18.7 0.2 0:27.35 monitor
...output omitted...

Observe los promedios de carga. El promedio de carga de un minuto actualmente es


inferior al valor de 1. El valor observado puede estar afectado por la contención del recurso
desde otra máquina virtual o el host virtual.

top - 12:23:45 up 11 days, 1:09, 3 users, load average: 0.21, 0.14, 0.05

8. En la shell de terminal izquierda, ejecute una segunda instancia de monitor. Use el signo
(&) para iniciar el proceso en segundo plano.

[student@servera ~]$ monitor &


[2] 6498

9. En la shell de terminal derecha, anote el ID de proceso (PID) para el segundo proceso de


monitor. Observe el porcentaje de CPU para el proceso, que también se espera que sea
entre el 15 % y el 25 %.

[student@servera ~]$ top


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6071 student 20 0 222448 2964 2716 S 19.0 0.2 1:36.53 monitor
6498 student 20 0 222448 2996 2748 R 15.7 0.2 0:16.34 monitor
...output omitted...

Observe de nuevo el promedio de carga de un minuto, que todavía es inferior a 1. Es


importante esperar al menos un minuto para permitir que el cálculo se adapte a la carga de
trabajo nueva.

top - 12:27:39 up 11 days, 1:13, 3 users, load average: 0.36, 0.25, 0.11

10. En la shell de terminal izquierda, ejecute una tercera instancia de monitor. Use el signo (&)
para iniciar el proceso en segundo plano.

[student@servera ~]$ monitor &


[3] 6881

RH124-RHEL8.2-es-1-20200928 285
capítulo 8 | Monitoreo y administración de procesos Linux

11. En la shell de terminal derecha, anote el ID de proceso (PID) para el tercer proceso de
monitor. Observe el porcentaje de CPU para el proceso, que también se espera que sea
entre el 15 % y el 25 %.

[student@servera ~]$ top


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6881 student 20 0 222448 3032 2784 S 18.6 0.2 0:11.48 monitor
6498 student 20 0 222448 2996 2748 S 15.6 0.2 0:47.86 monitor
6071 student 20 0 222448 2964 2716 S 18.1 0.2 2:07.86 monitor

Para que el promedio de carga sea superior a 1, debe iniciar más procesos de monitor.
La configuración del aula tiene 2 CPU, por lo que solo 3 procesos no son suficientes para
alterarla. Inicie tres procesos de monitor más. Observe de nuevo el promedio de carga
de un minuto, que ahora se espera que sea superior a 1. Es importante esperar al menos un
minuto para permitir que el cálculo se adapte a la carga de trabajo nueva.

[student@servera ~]$ monitor &


[4] 10708
[student@servera ~]$ monitor &
[5] 11122
[student@servera ~]$ monitor &
[6] 11338

top - 12:42:32 up 11 days, 1:28, 3 users, load average: 1.23, 2.50, 1.54

12. Una vez que haya finalizado de observar los valores promedio de carga, finalice cada uno
de los procesos monitor desde top.

12.1. En la shell de terminal derecha, presione k. Observe el prompt que está debajo de los
encabezados y arriba de las columnas.

...output omitted...
PID to signal/kill [default pid = 11338]

12.2. El prompt ha elegido el proceso monitor en la parte superior de la lista. Presione


Enter para finalizar el proceso.

...output omitted...
Send pid 11338 signal [15/sigterm]

12.3. Presione Enter de nuevo para confirmar la señal SIGTERM 15.

Confirme que el proceso seleccionado ya no se observe en top. Si la PID no se modifica,


repita estos pasos de finalización, sustituya la señal SIGKILL 9 cuando se le solicite.

6498 student 20 0 222448 2996 2748 R 22.9 0.2 5:31.47 monitor


6881 student 20 0 222448 3032 2784 R 21.3 0.2 4:54.47 monitor
11122 student 20 0 222448 2984 2736 R 15.3 0.2 2:32.48 monitor
6071 student 20 0 222448 2964 2716 S 15.0 0.2 6:50.90 monitor
10708 student 20 0 222448 3032 2784 S 14.6 0.2 2:53.46 monitor

286 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

13. Repita el paso anterior para cada instancia de monitor restante. Confirme que no quede
ningún proceso monitor en top.

14. En la shell de terminal derecha, presione q para salir de top. Salga de servera en ambas
ventanas de terminal.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab processes-monitor finish para terminar este
ejercicio.

[student@workstation ~]$ lab processes-monitor finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 287
capítulo 8 | Monitoreo y administración de procesos Linux

Trabajo de laboratorio

Monitoreo y administración de procesos


Linux
Lista de verificación de rendimiento
En este ejercicio de laboratorio, localizará y administrará los procesos que usan la mayoría de
los recursos en un sistema.

Resultados
Debe poder administrar procesos utilizando top como herramienta de administración de
procesos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab processes-review start. Este comando


ejecuta un script de inicio para determinar si el host serverb es accesible en la red.

[student@workstation ~]$ lab processes-review start

1. En workstation, abra dos ventanas de terminal una al lado de la otra. En esta sección,
estas terminales se denominan izquierda y derecha. En cada ventana de terminal, inicie sesión
en serverb como el usuario student.
Cree un script llamado process101, que generará carga artificial de la CPU. Cree el script
en el directorio /home/student/bin.

#!/bin/bash
while true; do
var=1
while [[ var -lt 50000 ]]; do
var=$(($var+1))
done
sleep 1
done

2. En la ventana derecha, ejecute la utilidad top.


3. En la shell de terminal izquierda, determine la cantidad de CPU lógicas de la máquina virtual.
Ejecute el script process101 en segundo plano.
4. En la shell de terminal derecha, observe la pantalla de top. Alterne entre cargas, subprocesos
y memoria. Anote la ID de proceso (PID) para process101. Observe el porcentaje de CPU.
Debería rondar entre el 10 % y 15 %. Asegúrese de que top muestra el uso de la CPU una vez
que haya visto la carga, los subprocesos y la memoria.
5. Desactive el uso de negrita en la pantalla. Guarde esta configuración para volver a usarla
cuando se reinicie top. Confirme que los cambios están guardados.

288 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

6. Copie el script process101 en un archivo nuevo llamado process102. Edite el script para
crear más carga artificial de la CPU. Incremente la carga de cincuenta mil a cien mil. Inicie el
proceso process102 en segundo plano.
7. En la shell de terminal derecha, confirme que el proceso se está ejecutando y que usa la
mayoría de los recursos de la CPU. La carga debe ser del 25 % al 35 %.
8. El promedio de carga todavía es inferior a 1. Copie process101 a un nuevo script
denominado process103. Incremente el recuento de sumas a ochocientos mil. Inicie
process103 en segundo plano. Confirme que el promedio de carga sea superior a 1. El
promedio de carga puede tardar unos minutos en cambiar.
9. En la shell de terminal izquierda, conviértase en root. Suspenda el proceso process101.
Enumere los trabajos restantes. Observe que el estado del proceso process101 ahora es T.
10. Reanude el proceso process101.
11. Finalice process101, process102 y process103 mediante la línea de comandos.
Confirme que los procesos ya no se muestren en top.
12. En la shell de terminal izquierda, salga del usuario root. En la shell de terminal derecha,
detenga el comando top. Salga de serverb en ambas ventanas.

Evaluación
En workstation, ejecute el script lab processes-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab processes-review grade

Finalizar
En workstation, ejecute el script lab processes-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab processes-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 289
capítulo 8 | Monitoreo y administración de procesos Linux

Solución

Monitoreo y administración de procesos


Linux
Lista de verificación de rendimiento
En este ejercicio de laboratorio, localizará y administrará los procesos que usan la mayoría de
los recursos en un sistema.

Resultados
Debe poder administrar procesos utilizando top como herramienta de administración de
procesos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab processes-review start. Este comando


ejecuta un script de inicio para determinar si el host serverb es accesible en la red.

[student@workstation ~]$ lab processes-review start

1. En workstation, abra dos ventanas de terminal una al lado de la otra. En esta sección,
estas terminales se denominan izquierda y derecha. En cada ventana de terminal, inicie sesión
en serverb como el usuario student.
Cree un script llamado process101, que generará carga artificial de la CPU. Cree el script
en el directorio /home/student/bin.

#!/bin/bash
while true; do
var=1
while [[ var -lt 50000 ]]; do
var=$(($var+1))
done
sleep 1
done

1.1. En workstation, abra dos ventanas de terminal una al lado de la otra. En cada
terminal, use el comando ssh para iniciar sesión en serverb como el usuario
student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. En la shell de terminal izquierda, use el comando mkdir para crear el directorio /home/
student/bin.

290 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

[student@serverb ~]$ mkdir /home/student/bin

1.3. En la shell de terminal izquierda, use el comando vim para crear el script process101.
Presione la tecla i para ingresar al modo interactivo. Escriba :wq para guardar el
archivo.

[student@serverb ~]$ vim /home/student/bin/process101


#!/bin/bash
while true; do
var=1
while [[ var -lt 50000 ]]; do
var=$(($var+1))
done
sleep 1
done

1.4. Use el comando chmod para hacer que el archivo process101 sea ejecutable.

[student@serverb ~]$ chmod +x /home/student/bin/process101

2. En la ventana derecha, ejecute la utilidad top.

2.1. En la ventana derecha, ejecute la utilidad top. Modifique el tamaño de la ventana para
que sea lo más alta posible.

[student@serverb ~]$ top


top - 13:47:06 up 19 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 110 total, 1 running, 109 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 3.1 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.4 total, 1439.1 free, 171.9 used, 218.4 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1499.6 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND


1 root 20 0 178536 13488 8996 S 0.0 0.7 0:01.15 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-
kblockd
...output omitted...

3. En la shell de terminal izquierda, determine la cantidad de CPU lógicas de la máquina virtual.


Ejecute el script process101 en segundo plano.

3.1. Use el comando grep para determinar la cantidad de CPU lógicas.

[student@serverb ~]$ grep "model name" /proc/cpuinfo | wc -l


2

3.2. Use el comando cd para cambiar al directorio /home/student/bin. Ejecute el script


process101 en segundo plano.

RH124-RHEL8.2-es-1-20200928 291
capítulo 8 | Monitoreo y administración de procesos Linux

[student@serverb ~]$ cd /home/student/bin


[student@serverb bin]$ process101 &
[1] 1180

4. En la shell de terminal derecha, observe la pantalla de top. Alterne entre cargas, subprocesos
y memoria. Anote la ID de proceso (PID) para process101. Observe el porcentaje de CPU.
Debería rondar entre el 10 % y 15 %. Asegúrese de que top muestra el uso de la CPU una vez
que haya visto la carga, los subprocesos y la memoria.

4.1. Presione Shift+m.

top - 13:56:24 up 28 min, 2 users, load average: 0.21, 0.08, 0.02


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.8 us, 1.3 sy, 0.0 ni, 92.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.4 total, 1438.1 free, 172.7 used, 218.6 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1498.7 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


705 root 20 0 409956 34880 33620 S 0.0 1.9 0:00.04 sssd_nss
706 root 20 0 454304 34472 14304 S 0.0 1.8 0:00.62 firewalld
725 root 20 0 611348 28244 14076 S 0.0 1.5 0:00.27 tuned
663 polkitd 20 0 1907312 23876 16040 S 0.0 1.3 0:00.04 polkitd
718 root 20 0 600316 17176 14832 S 0.0 0.9 0:00.06 NetworkManager
...output omitted...

nota
Tenga en cuenta que cuando top se cambia al modo memory, process101 ya no es
el primer proceso. Puede presionar Shift+p para volver al uso de la CPU.

4.2. Presione m.

top - 09:32:52 up 20:05, 2 users, load average: 0.18, 0.10, 0.03


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.8/1.5 9[||||||||| ]
MiB Mem : 18.3/1829.4 [||||||||||||||||||| ]
MiB Swap: 0.0/1024.0 [ ]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
705 root 20 0 409956 34880 33620 S 0.0 1.9 0:00.04 sssd_nss
706 root 20 0 454304 34472 14304 S 0.0 1.8 0:00.62 firewalld
725 root 20 0 611348 28244 14076 S 0.0 1.5 0:00.30 tuned
663 polkitd 20 0 1907312 23876 16040 S 0.0 1.3 0:00.04 polkitd
718 root 20 0 600316 17176 14832 S 0.0 0.9 0:00.07 NetworkManager
...output omitted...

4.3. Presione t.

Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie


%Cpu(s): 7.8/1.5 9[||||||||| ]
MiB Mem : 1829.4 total, 1436.7 free, 173.7 used, 219.0 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1497.7 avail Mem

292 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


1180 student 20 0 222448 3056 2808 S 12.0 0.2 1:59.94 process101
705 root 20 0 409956 34880 33620 S 0.0 1.9 0:00.04 sssd_nss
706 root 20 0 454304 34472 14304 S 0.0 1.8 0:00.62 firewalld
725 root 20 0 611348 28244 14076 S 0.0 1.5 0:00.30 tuned
663 polkitd 20 0 1907312 23876 16040 S 0.0 1.3 0:00.04 polkitd
718 root 20 0 600316 17176 14832 S 0.0 0.9 0:00.07 NetworkManager
...output omitted...

4.4. Presione Shift+p.

top - 09:35:48 up 20:08, 2 users, load average: 0.10, 0.10, 0.04


Tasks: 110 total, 4 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.8 us, 1.0 sy, 0.0 ni, 92.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 18.3/1829.4 [||||||||||||||||||| ]
MiB Swap: 0.0/1024.0 [ ]

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


27179 student 20 0 222448 3060 2812 R 15.6 0.2 1:13.47 process101
...output omitted...

5. Desactive el uso de negrita en la pantalla. Guarde esta configuración para volver a usarla
cuando se reinicie top. Confirme que los cambios están guardados.

5.1. Presione Shift+b para desactivar el uso de negrita.

top - 19:40:30 up 6:12, 2 users, load average: 0.11, 0.12, 0.09


Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.6/1.5 9[||||||||| ]
MiB Mem : 18.2/1829.4 [||||||||||||||||||| ]
MiB Swap: 0.0/1024.0 [ ]

5.2. Presione Shift+w para guardar esta configuración. La configuración predeterminada


se almacena en toprc en el directorio /home/student/.config/procps. En la
shell de terminal izquierda, confirme que el archivo toprc existe.

[student@serverb bin]$ ls -l /home/student/.config/procps/toprc


-rw-rw-r--. 1 student student 966 Feb 18 19:45 /home/student/.config/procps/toprc

5.3. En la shell de terminal derecha, salga de top y, luego, reinícielo. Confirme que la nueva
pantalla usa la configuración guardada.

top - 00:58:21 up 43 min, 2 users, load average: 0.29, 0.28, 0.20


Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 11.0/1.8 13[||||||||||||| ]
MiB Mem : 18.7/1829.0 [||||||||||||||||||| ]
MiB Swap: 0.0/0.0 [ ]

6. Copie el script process101 en un archivo nuevo llamado process102. Edite el script para
crear más carga artificial de la CPU. Incremente la carga de cincuenta mil a cien mil. Inicie el
proceso process102 en segundo plano.

RH124-RHEL8.2-es-1-20200928 293
capítulo 8 | Monitoreo y administración de procesos Linux

6.1. En la shell de terminal izquierda, use el comando cp para copiar process101 en


process102.

[student@serverb bin]$ cp process101 process102

6.2. Use el comando vim para editar el script process102. Incremente los problemas de
suma de cincuenta mil a cien mil. Ingrese al modo interactivo mediante el uso de la i.
Escriba :wq para guardar el archivo.

[student@serverb bin]$ vim process102


#!/bin/bash
while true; do
var=1
while [[ var -lt 100000 ]]; do
var=$(($var+1))
done
sleep 1
done

6.3. Inicie el proceso process102 en segundo plano.

[student@serverb bin]$ process102 &


[2] 20723

6.4. Use el comando jobs para confirmar que ambos procesos se ejecutan en segundo
plano.

[student@serverb bin]$ jobs


[1]- Running process101 &
[2]+ Running process102 &

7. En la shell de terminal derecha, confirme que el proceso se está ejecutando y que usa la
mayoría de los recursos de la CPU. La carga debe ser del 25 % al 35 %.

7.1. En la shell de terminal derecha, confirme que el proceso se está ejecutando y que usa
la mayoría de los recursos de la CPU. La carga debe ser del 25 % al 35 %.

top - 20:14:16 up 6:46, 2 users, load average: 0.58, 0.34, 0.18


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
499 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
st
500 MiB Mem : 1829.4 total, 1428.7 free, 179.0 used, 221.8 buff/cache
501 MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1492.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


20723 student 20 0 222448 3016 2764 S 24.7 0.2 0:53.28 process102
1180 student 20 0 222448 3056 2808 S 12.0 0.2 58:01.56 process101
...output omitted...

294 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

nota
Si no ve process101 y process102 en la parte superior de la lista de procesos,
presione Shift+p para garantizar que top está ordenado por la utilización de la
CPU.

8. El promedio de carga todavía es inferior a 1. Copie process101 a un nuevo script


denominado process103. Incremente el recuento de sumas a ochocientos mil. Inicie
process103 en segundo plano. Confirme que el promedio de carga sea superior a 1. El
promedio de carga puede tardar unos minutos en cambiar.

8.1. En la shell de terminal derecha, confirme que el promedio de carga sea inferior a 1.

top - 20:24:13 up 6:56, 2 users, load average: 0.43, 0.41, 0.29


...output omitted...

8.2. En la shell de terminal izquierda, use el comando cp para copiar process101 a un


nuevo script denominado process103.

[student@serverb bin]$ cp process101 process103

8.3. En la shell de terminal izquierda, use el comando vim para editar el script process103.
Incremente el recuento de sumas a ochocientos mil. Ingrese al modo interactivo
mediante la tecla i. Escriba :wq para guardar el archivo.

[student@serverb bin]$ vim process103


#!/bin/bash
while true; do
var=1
while [[ var -lt 800000 ]]; do
var=$(($var+1))
done
sleep 1
done

8.4. Inicie process103 en segundo plano. El uso de la CPU oscila entre el 60 % y 85 %.

[student@serverb bin]$ process103 &


[3] 22751

8.5. Confirme que los tres trabajos se ejecutan en segundo plano.

[student@serverb bin]$ jobs


[1] Running process101 &
[2]- Running process102 &
[3]+ Running process103 &

8.6. En la ventana de terminal derecha, confirme que el promedio de carga sea superior a 1.

top - 20:45:34 up 7:17, 2 users, load average: 1.10, 0.90, 0.64

RH124-RHEL8.2-es-1-20200928 295
capítulo 8 | Monitoreo y administración de procesos Linux

9. En la shell de terminal izquierda, conviértase en root. Suspenda el proceso process101.


Enumere los trabajos restantes. Observe que el estado del proceso process101 ahora es T.

9.1. Use el comando su - para convertirse en root. La contraseña es redhat.

[student@serverb bin]$ su -
Password: redhat

9.2. Use el comando pkill con la opción -SIGSTOP para suspender el proceso
process101.

[root@serverb ~]# pkill -SIGSTOP process101

9.3. En la shell de terminal derecha, confirme que process101 ya no se está ejecutando.

top - 20:52:01 up 7:24, 2 users, load average: 1.19, 1.19, 0.89


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
499 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
st
500 MiB Mem : 1829.4 total, 1428.7 free, 179.0 used, 221.8 buff/cache
501 MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1492.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


24043 student 20 0 222448 2992 2744 R 66.1 0.2 6:59.50 process103
20723 student 20 0 222448 3016 2764 R 29.9 0.2 11:04.84 process102
...output omitted...

9.4. En la shell de terminal izquierda, ejecute el comando ps jT para ver los trabajos
restantes.

[root@serverb ~]# ps jT
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
...output omitted...
27138 1180 1180 27138 pts/0 28558 T 1000 3:06 /bin/bash /home/student/
bin/process101
27138 20723 20723 27138 pts/0 28558 R 1000 1:23 /bin/bash /home/student/
bin/process102
27138 24043 24043 27138 pts/0 28558 R 1000 2:35 /bin/bash /home/student/
bin/process103
...output omitted...

Tenga en cuenta que process101 tiene un estado de T. Esto denota que el proceso
está actualmente suspendido.

10. Reanude el proceso process101.

10.1. En la shell de terminal izquierda, use el comando pkill con la opción -SIGCONTpara
reanudar el proceso process101.

[root@serverb ~]# pkill -SIGCONT process101

10.2. En la shell de terminal derecha, confirme que el proceso se está ejecutando otra vez.

296 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

top - 20:57:02 up 7:29, 2 users, load average: 1.14, 1.20, 0.99


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.4 total, 1428.7 free, 179.0 used, 221.8 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1492.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


24043 student 20 0 222448 2992 2744 R 66.8 0.2 10:40.61 process103
20723 student 20 0 222448 3016 2764 S 24.9 0.2 12:25.10 process102
1180 student 20 0 222448 3056 2808 S 17.9 0.2 64:07.99 process101

11. Finalice process101, process102 y process103 mediante la línea de comandos.


Confirme que los procesos ya no se muestren en top.

11.1. En la shell de terminal izquierda, use el comando pkill para finalizar process101,
process102 y process103.

[root@serverb ~]# pkill process101


[root@serverb ~]# pkill process102
[root@serverb ~]# pkill process103

11.2. En la shell de terminal derecha, confirme que los procesos ya no aparecen en top.

top - 21:05:06 up 7:37, 2 users, load average: 1.26, 1.29, 1.12


Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
499 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
st
500 MiB Mem : 1829.4 total, 1428.7 free, 179.0 used, 221.8 buff/cache
501 MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1492.1 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


1 root 20 0 178536 13488 8996 S 0.0 0.7 0:01.21 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
...output omitted...

12. En la shell de terminal izquierda, salga del usuario root. En la shell de terminal derecha,
detenga el comando top. Salga de serverb en ambas ventanas.

12.1. Use el comando exit para cerrar sesión del usuario root.

[root@serverb ~]# exit


logout
[1] Terminated process101
[2] Terminated process102
[3]- Terminated process103

12.2. Salga de todas las ventanas de terminal.

[student@serverb bin]$ exit


[student@workstation ~]$

RH124-RHEL8.2-es-1-20200928 297
capítulo 8 | Monitoreo y administración de procesos Linux

12.3. En la shell de terminal derecha, presione q para salir de top. Use el comando exit para
cerrar sesión.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab processes-review grade para confirmar que ha realizado
correctamente este ejercicio.

[student@workstation ~]$ lab processes-review grade

Finalizar
En workstation, ejecute el script lab processes-review finish para terminar el trabajo de
laboratorio.

[student@workstation ~]$ lab processes-review finish

Esto concluye el trabajo de laboratorio.

298 RH124-RHEL8.2-es-1-20200928
capítulo 8 | Monitoreo y administración de procesos Linux

Resumen
En este capítulo, aprendió lo siguiente:

• Un proceso es una instancia en ejecución de un programa ejecutable. A los procesos se


les asigna un estado, que pueden ser: en ejecución, en espera, detenido o zombi. Se usa el
comando ps para mostrar los procesos.

• Cada terminal es su propia sesión, y puede tener un proceso en primer plano y procesos en
segundo plano independientes. El comando jobs muestra los procesos dentro de una sesión de
terminal.

• Una señal es una interrupción de software que informa eventos a un programa en ejecución. Los
comandos kill, pkill y killall usan señales para controlar los procesos.

• El promedio de carga es una estimación de cuán ocupado está el sistema. Para mostrar los
valores promedio de carga, puede usar el comando top, uptime o w.

RH124-RHEL8.2-es-1-20200928 299
300 RH124-RHEL8.2-es-1-20200928
capítulo 9

Control de servicios y daemons


Meta Controlar y monitorear los servicios de red y los
daemons del sistema con Systemd.

Objetivos • Enumerar daemons del sistema y los servicios


de red iniciados por el servicio systemd y las
unidades socket.
• Controlar los daemons del sistema y los
servicios de red con systemctl.

Secciones • Identificación de procesos del sistema iniciados


en forma automática (y ejercicio guiado)
• Control de servicios del sistema (y ejercicio
guiado)

Trabajo de Control de servicios y daemons


laboratorio

RH124-RHEL8.2-es-1-20200928 301
capítulo 9 | Control de servicios y daemons

Identificación de procesos del sistema


iniciados en forma automática

Objetivos
Tras finalizar esta sección, deberá ser capaz de enumerar los daemons del sistema y los servicios
de red iniciados por el servicio systemd y las unidades socket.

Introducción a systemd
El daemon de systemd administra el inicio para Linux, incluido el inicio del servicio y la gestión de
servicios en general. Activa los recursos del sistema, los daemons del servidor y otros procesos,
tanto en el momento del arranque como en un sistema que está en funcionamiento.

Los daemons son procesos que esperan o se ejecutan en segundo plano y realizan diversas tareas.
Generalmente, los daemons se inician automáticamente en el momento del arranque y continúan
ejecutándose hasta que se apaga el sistema o son detenidos manualmente. Por convención, los
nombres de muchos programas daemon finalizan con la letra d.

A menudo, un servicio en el contexto de systemd hace referencia a uno o más daemons, pero
iniciar o detener un servicio puede, en cambio, hacer una modificación por única vez en el estado
del sistema, que no implica dejar un proceso daemon en ejecución después de esto (que se
denomina oneshot).

En Red Hat Enterprise Linux, el primer proceso que se inicia (PID 1) es systemd. Estas son algunas
de las funciones que proporciona systemd:

• Capacidades de paralelización (inicio de múltiples servicios de forma simultánea), que


aumentan la velocidad de arranque de un sistema.

• Inicio a pedido de los daemons sin necesidad de otro servicio.

• Gestión automática de dependencias del servicio, que puede evitar largos tiempos de espera.
Por ejemplo, un servicio que depende de una red no intentará iniciarse hasta que la red esté
disponible.

• Método para realizar el seguimiento de los procesos relacionados en forma conjunta con el uso
de los grupos de control de Linux.

Descripción de las unidades de servicio


systemd usa unidades para administrar diferentes tipos de objetos. A continuación, se enumeran
algunos de los tipos de unidades más usados:

• Las unidades de servicio tienen una extensión .service y representan servicios del sistema.
Este tipo de unidad se usa para iniciar los daemons usados con más frecuencia, como un
servidor web.

• Las unidades socket tienen una extensión .socket y representan sockets de comunicación
entre procesos (IPC) que systemd debe monitorear. Si un cliente se conecta al socket,
systemd iniciará un daemon y le pasará la conexión. Las unidades socket se usan para demorar
el inicio de un servicio en el momento del arranque y para iniciar servicios usados con menos
frecuencia a pedido.

302 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

• Las unidades de ruta tienen una extensión .path y se usan para demorar la activación de un
servicio hasta que ocurra un cambio en el sistema de archivos específico. Esto se usa con más
frecuencia en servicios que usan directorios de cola, como los sistemas de impresión.

El comando systemctl se usa para gestionar unidades. Por ejemplo, el comando systemctl -
t help permite visualizar los tipos de unidad disponibles.

Importante
Cuando usa systemctl, puede abreviar los nombres de las unidades, las entradas
de árbol de proceso y las descripciones de unidad.

Enumeración de unidades de servicio


Se emplea el comando systemctl para analizar el estado actual del sistema. Por ejemplo, el
siguiente comando enumera todas las unidades de servicio cargadas actualmente y ordena la
salida por páginas con less.

[root@host ~]# systemctl list-units --type=service


UNIT LOAD ACTIVE SUB DESCRIPTION
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
...output omitted...

La salida anterior limita el tipo de unidad enumerada en las unidades de servicio con la opción --
type=service. La salida tiene las siguientes columnas:

Columnas en la salida del comando systemctl list-units

UNIT (UNIDAD)
El nombre de la unidad de servicio.

LOAD (CARGA)
Se detalla si systemd analizó adecuadamente la configuración de la unidad y cargó la unidad
en la memoria.

ACTIVE (ACTIVO)
El estado de activación de alto nivel de la unidad. Esta información indica si la unidad se ha
iniciado de forma satisfactoria.

SUB
El estado de activación de bajo nivel de la unidad. Esta información proporciona datos más
detallados sobre la unidad. La información varía según el tipo de unidad, el estado y cómo se
ejecuta la unidad.

DESCRIPTION (DESCRIPCIÓN)
La descripción breve de la unidad.

De manera predeterminada, el comando systemctl list-units --type=service enumera


solamente las unidades de servicio con estados de activación active (activos). La opción --all
enumera todas las unidades de servicio, independientemente de los estados de activación. Use la
opción --state= para filtrar los valores en los campos LOAD, ACTIVE o SUB.

RH124-RHEL8.2-es-1-20200928 303
capítulo 9 | Control de servicios y daemons

[root@host ~]# systemctl list-units --type=service --all


UNIT LOAD ACTIVE SUB DESCRIPTION
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing ...
auth-rpcgss-module.service loaded inactive dead Kernel Module ...
chronyd.service loaded active running NTP client/server
cpupower.service loaded inactive dead Configure CPU power ...
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
● display-manager.service not-found inactive dead display-manager.service
...output omitted...

El comando systemctl sin ningún argumento enumera las unidades que están cargadas y
activas.

[root@host ~]# systemctl


UNIT LOAD ACTIVE SUB DESCRIPTION
proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary...
sys-devices-....device loaded active plugged Virtio network...
sys-subsystem-net-devices-ens3.deviceloaded active plugged Virtio network...
...
-.mount loaded active mounted Root Mount
boot.mount loaded active mounted /boot
...
systemd-ask-password-plymouth.path loaded active waiting Forward Password...
systemd-ask-password-wall.path loaded active waiting Forward Password...
init.scope loaded active running System and Servi...
session-1.scope loaded active running Session 1 of...
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing...
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
...output omitted...

Con el comando systemctl list-units, se visualizan las unidades que el servicio systemd
intenta analizar y cargar en la memoria; no se visualizan los servicios instalados no habilitados.
Para ver el estado de todos los archivos de unidad instalados, use el comando systemctl list-
unit-files. Por ejemplo:

[root@host ~]# systemctl list-unit-files --type=service


UNIT FILE STATE
arp-ethers.service disabled
atd.service enabled
auditd.service enabled
auth-rpcgss-module.service static
[email protected] enabled
blk-availability.service disabled
...output omitted...

En la salida del comando systemctl list-units-files, las entradas válidas para el campo
STATE son enabled (habilitado), disabled (deshabilitado), static (estático) y masked
(enmascarado).

304 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Visualización de los estados de servicio


Visualice el estado de una unidad específica con systemctl status name.type. Si no se
proporciona el tipo de unidad, systemctl mostrará el estado de una unidad de servicio, en caso
de que exista una.

[root@host ~]# systemctl status sshd.service


● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
enabled)
Active: active (running) since Thu 2019-02-14 12:07:45 IST; 7h ago
Main PID: 1073 (sshd)
CGroup: /system.slice/sshd.service
└─1073 /usr/sbin/sshd -D ...

Feb 14 11:51:39 host.example.com systemd[1]: Started OpenSSH server daemon.


Feb 14 11:51:39 host.example.com sshd[1073]: Could not load host key: /et...y
Feb 14 11:51:39 host.example.com sshd[1073]: Server listening on 0.0.0.0 ....
Feb 14 11:51:39 host.example.com sshd[1073]: Server listening on :: port 22.
Feb 14 11:53:21 host.example.com sshd[1270]: error: Could not load host k...y
Feb 14 11:53:22 host.example.com sshd[1270]: Accepted password for root f...2
...output omitted...

Con este comando, se visualiza el estado actual del servicio. Los significados de los campos son
los siguientes:

Información de la unidad de servicio

Campo Descripción

Loaded (Cargado) Si la unidad de servicio está cargada en la


memoria.

Active (Activo) Si la unidad de servicio se está ejecutando


y, de ser así, cuánto tiempo ha estado
funcionando.

Main PID (ID de proceso principal) El ID de proceso principal del servicio, incluido
el nombre del comando.

Status (Estado) Información adicional sobre el servicio.

En la salida del estado, se pueden encontrar varias palabras clave que indican el estado del
servicio:

Estados de servicio en la salida de systemctl

Palabra clave Descripción

loaded (cargado) Se procesó el archivo de configuración de la unidad.

active (running) (activo [en En ejecución con uno o más procesos en curso.
ejecución])

RH124-RHEL8.2-es-1-20200928 305
capítulo 9 | Control de servicios y daemons

Palabra clave Descripción

active (exited) (activo Se completó correctamente la configuración de una sola vez.


[cerrado])

active (waiting) (activo [en En ejecución, pero a la espera de un evento.


espera])

inactive (inactivo) Detenido.

enabled (habilitado) Se inicia en el momento del arranque.

disabled (deshabilitado) No se inicia en el momento del arranque.

static (estático) No puede habilitarse, pero puede iniciarse por una unidad
habilitada en forma automática.

nota
El comando systemctl status NAME reemplaza al comando service NAME
status que se usaba en Red Hat Enterprise Linux 6 y versiones anteriores.

Verificación del estado de un servicio


El comando systemctl proporciona métodos para verificar los estados específicos de un
servicio. Por ejemplo, use el siguiente comando para verificar que la unidad de servicio se
encuentre activa (en ejecución) en ese momento:

[root@host ~]# systemctl is-active sshd.service


active

El comando devuelve el estado de la unidad de servicio, el cual generalmente es active (activo)


o inactive (inactivo).

Ejecute el siguiente comando para verificar si una unidad de servicio está habilitada para iniciarse
automáticamente durante el arranque del sistema:

[root@host ~]# systemctl is-enabled sshd.service


enabled

El comando informa si la unidad de servicio está habilitada para iniciarse en el momento del
arranque, lo cual generalmente se informa como estado enabled (habilitado) o disabled
(deshabilitado).

Para verificar si la unidad falló durante el arranque, ejecute el siguiente comando:

[root@host ~]# systemctl is-failed sshd.service


active

El comando informa que el estado es active (activo) si está funcionando correctamente o


failed (con errores) si se ha producido un error durante el arranque. En caso de que la unidad se
haya detenido, informa que el estado es unknown (desconocido) o inactive (inactivo).

306 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Para enumerar todas las unidades que han presentado un error, ejecute el comando systemctl
--failed --type=service.

Referencias
Páginas del manual systemd(1), systemd.unit(5), systemd.service(5),
systemd.socket(5) y systemctl(1)

Para obtener más información, consulte el capítulo Administración de servicios


con systemd de la Guía de configuración básica de sistemas de Red Hat Enterprise
Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/managing-services-with-
systemd_configuring-basic-system-settings#managing-services-with-
systemd_configuring-basic-system-settings

RH124-RHEL8.2-es-1-20200928 307
capítulo 9 | Control de servicios y daemons

Ejercicio Guiado

Identificación de procesos del sistema


iniciados en forma automática
En este ejercicio, enumerará las unidades de servicio instaladas e identificará qué servicios
están actualmente habilitados y activos en un servidor.

Resultados
Deberá ser capaz de enumerar las unidades de servicio instaladas e identificar los servicios
activos y habilitados en el sistema.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab services-identify start. El comando


ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab services-identify start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Enumere todas las unidades de servicio instaladas en servera.

[student@servera ~]$ systemctl list-units --type=service


UNIT LOAD ACTIVE SUB DESCRIPTION
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
...output omitted...

Presione q para salir del comando.

3. Enumere todas las unidades socket, activas e inactivas, en servera.

[student@servera ~]$ systemctl list-units --type=socket --all


UNIT LOAD ACTIVE SUB DESCRIPTION
dbus.socket loaded active running D-Bus System Message Bus Socket

308 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

dm-event.socket loaded active listening Device-mapper event daemon FIFOs


lvm2-lvmpolld.socket loaded active listening LVM2 poll daemon socket
...output omitted...
systemd-udevd-control.socket loaded active running udev Control Socket
systemd-udevd-kernel.socket loaded active running udev Kernel Socket

LOAD = Reflects whether the unit definition was properly loaded.


ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.

12 loaded units listed.


To show all installed unit files use 'systemctl list-unit-files'.

4. Explore el estado del servicio chronyd. Este servicio se usa para la sincronización del
tiempo en red (NTP).

4.1. Visualice el estado del servicio chronyd. Observe la ID del proceso de todos los
daemons activos.

[student@servera ~]$ systemctl status chronyd


● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor
preset: enabled)
Active: active (running) since Wed 2019-02-06 12:46:57 IST; 4h 7min ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 684 ExecStartPost=/usr/libexec/chrony-helper update-daemon
(code=exited, status=0/SUCCESS)
Process: 673 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/
SUCCESS)
Main PID: 680 (chronyd)
Tasks: 1 (limit: 11406)
Memory: 1.5M
CGroup: /system.slice/chronyd.service
└─680 /usr/sbin/chronyd

... servera.lab.example.com systemd[1]: Starting NTP client/server...


...output omitted...
... servera.lab.example.com systemd[1]: Started NTP client/server.
... servera.lab.example.com chronyd[680]: Source 172.25.254.254 offline
... servera.lab.example.com chronyd[680]: Source 172.25.254.254 online
... servera.lab.example.com chronyd[680]: Selected source 172.25.254.254

Presione q para salir del comando.

4.2. Confirme que el daemon enumerado esté funcionando. En el comando anterior,


la salida de la ID del proceso asociada con el servicio chronyd es 680. La ID del
proceso puede diferir en su sistema.

[student@servera ~]$ ps -p 680


PID TTY TIME CMD
680 ? 00:00:00 chronyd

RH124-RHEL8.2-es-1-20200928 309
capítulo 9 | Control de servicios y daemons

5. Explore el estado del servicio sshd. Este servicio se usa para una comunicación cifrada
segura entre sistemas.

5.1. Determine si el servicio sshd está habilitado para que se inicie en el arranque del
sistema.

[student@servera ~]$ systemctl is-enabled sshd


enabled

5.2. Determine si el servicio sshd está activo sin mostrar toda la información de estado.

[student@servera ~]$ systemctl is-active sshd


active

5.3. Visualice el estado del servicio sshd.

[student@servera ~]$ systemctl status sshd


● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
enabled)
Active: active (running) since Wed 2019-02-06 12:46:58 IST; 4h 21min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 720 (sshd)
Tasks: 1 (limit: 11406)
Memory: 5.8M
CGroup: /system.slice/sshd.service
└─720 /usr/sbin/sshd -D [email protected],
[email protected],aes256-ctr,
aes256-cbc,[email protected],aes128-ctr,
aes128-cbc [email protected],hmac-sha>

... servera.lab.example.com systemd[1]: Starting OpenSSH server daemon...


... servera.lab.example.com sshd[720]: Server listening on 0.0.0.0 port 22.
... servera.lab.example.com systemd[1]: Started OpenSSH server daemon.
... servera.lab.example.com sshd[720]: Server listening on :: port 22.
...output omitted...
... servera.lab.example.com sshd[1380]: pam_unix(sshd:session): session opened for
user student by (uid=0)

Presione q para salir del comando.

6. Enumere los estados habilitados y deshabilitados de todas las unidades de servicio.

[student@servera ~]$ systemctl list-unit-files --type=service


UNIT FILE STATE
arp-ethers.service disabled
atd.service enabled
auditd.service enabled
auth-rpcgss-module.service static
[email protected] enabled
blk-availability.service disabled
[email protected] static

310 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

chrony-wait.service disabled
chronyd.service enabled
...output omitted...

Presione q para salir del comando.

7. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab services-identify finish para terminar este
ejercicio.

[student@workstation ~]$ lab services-identify finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 311
capítulo 9 | Control de servicios y daemons

Control de servicios del sistema

Objetivos
Tras finalizar esta sección, deberá ser capaz de controlar los daemons del sistema y los servicios
de red con systemctl.

Iniciar y detener servicios


Los servicios se deben detener o iniciar manualmente por varios motivos: es posible que el
servicio se deba actualizar, quizás sea necesario modificar el archivo de configuración, es posible
que sea necesario desinstalar un servicio, o bien, es posible que un administrador deba iniciar
manualmente un servicio que se usa con poca frecuencia.

Para iniciar un servicio, primero verifique que no se esté ejecutando con systemctl status.
A continuación, use el comando systemctl start como el usuario root (usando sudo si es
necesario). En el siguiente ejemplo, se muestra cómo iniciar el servicio sshd.service:

[root@host ~]# systemctl start sshd.service

El servicio systemd busca archivos .service para la gestión del servicio en comandos a falta
del tipo de servicio con el nombre del servicio. Por lo tanto, el comando anterior se puede ejecutar
como:

[root@host ~]# systemctl start sshd

Para detener un servicio que se encuentra actualmente en ejecución, use el argumento stop
con el comando systemctl. En el siguiente ejemplo, se muestra cómo detener el servicio
sshd.service:

[root@host ~]# systemctl stop sshd.service

Reinicio y recarga de servicios


Durante el reinicio de un servicio en ejecución, el servicio se detiene y, luego, se inicia. Al reiniciar
el servicio, la ID del proceso cambia, y una nueva ID del proceso se asocia durante el arranque.
Para reiniciar un servicio en ejecución, use el argumento restart con el comando systemctl.
En el siguiente ejemplo, se muestra cómo reiniciar el servicio sshd.service:

[root@host ~]# systemctl restart sshd.service

Algunos servicios tienen la capacidad de volver a cargar sus archivos de configuración sin
necesidad de reiniciar. Este proceso se llama recarga del servicio. La recarga de un servicio no
cambia la ID del proceso asociada con diversos procesos del servicio. Para recargar un servicio
en ejecución, use el argumento reload con el comando systemctl. En el siguiente ejemplo, se
muestra cómo volver a cargar el servicio sshd.service después de modificar la configuración:

312 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

[root@host ~]# systemctl reload sshd.service

En caso de que no esté seguro de si el servicio cuenta con la funcionalidad para volver a cargar los
cambios del archivo de configuración, use el argumento reload-or-restart con el comando
systemctl. El comando vuelve a cargar los cambios de configuración si la funcionalidad de
recarga está disponible. De lo contrario, el comando reinicia el servicio para implementar los
nuevos cambios de configuración:

[root@host ~]# systemctl reload-or-restart sshd.service

Enumeración de dependencias de la unidad


Algunos servicios requieren que otros servicios se ejecuten primero, lo que hace que dependan
de los otros servicios. Otros servicios no se inician en el momento del arranque, sino solo cuando
se solicita. En ambos casos, systemd y systemctl inician los servicios según sea necesario, ya
sea para resolver la dependencia o para iniciar un servicio que se usa con poca frecuencia. Por
ejemplo, si el servicio de impresión CUPS no se está ejecutando, y se coloca un archivo en el
directorio de la cola de impresión, el sistema iniciará los daemons o comandos relacionados con
CUPS para ejecutar la tarea de impresión.

[root@host ~]# systemctl stop cups.service


Warning: Stopping cups, but it can still be activated by:
cups.path
cups.socket

Para detener por completo los servicios de impresión en un sistema, detenga las tres unidades. Al
deshabilitar el servicio, se deshabilitarán las dependencias.

Con el comando systemctl list-dependencies UNIT, se visualiza una asignación de


jerarquía de las dependencias para iniciar la unidad de servicio. Para enumerar dependencias
inversas (unidades que dependen de la unidad especificada), use la opción --reverse con el
comando.

[root@host ~]# systemctl list-dependencies sshd.service


sshd.service
● ├─system.slice
● ├─sshd-keygen.target
● │ ├─[email protected]
● │ ├─[email protected]
● │ └─[email protected]
● └─sysinit.target
...output omitted...

Enmascarar servicios y quitar máscara de servicios


En ocasiones, es posible que en un sistema haya diferentes servicios instalados que se encuentran
en conflicto. Por ejemplo, existen varios métodos para administrar los servidores de correo
(postfix y sendmail, por ejemplo). Enmascarar un servicio evita que un administrador inicie
accidentalmente un servicio que se encuentra en conflicto con otros. El enmascaramiento crea
un enlace en los directorios de configuración que se conecta con el archivo /dev/null, el cual
impide que el servicio se inicie.

RH124-RHEL8.2-es-1-20200928 313
capítulo 9 | Control de servicios y daemons

[root@host ~]# systemctl mask sendmail.service


Created symlink /etc/systemd/system/sendmail.service → /dev/null.

[root@host ~]# systemctl list-unit-files --type=service


UNIT FILE STATE
...output omitted...
sendmail.service masked
...output omitted...

El intento de iniciar una unidad de servicio enmascarada falla y arroja la siguiente salida:

[root@host ~]# systemctl start sendmail.service


Failed to start sendmail.service: Unit sendmail.service is masked.

Use el comando systemctl unmask para desenmascarar la unidad de servicio.

[root@host ~]# systemctl unmask sendmail


Removed /etc/systemd/system/sendmail.service.

Importante
Un servicio deshabilitado se puede iniciar manualmente o por medio de otros
archivos de la unidad, pero no se inicia automáticamente en el arranque. Un servicio
enmascarado no se inicia de forma manual ni automática.

Habilitación de servicios para que se inicien o se


detengan en el arranque
El inicio de un servicio en un sistema en funcionamiento no garantiza que el servicio se inicie
automáticamente cuando se vuelva a arrancar el sistema. De manera similar, el detenimiento de
un servicio en un sistema en funcionamiento no evita que se reinicie cuando se vuelva a arrancar
el sistema. Si crea enlaces en los directorios de configuración de systemd, habilita la opción
para que el servicio se inicie en el arranque. Estos enlaces se crean y se quitan con los comandos
systemctl.

Para iniciar un servicio en el arranque, use el comando systemctl enable.

[root@root ~]# systemctl enable sshd.service


Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/
lib/systemd/system/sshd.service.

El comando anterior crea un enlace simbólico desde el archivo de la unidad de servicio,


normalmente en el directorio /usr/lib/systemd/system, que se conecta con la ubicación
en el disco donde systemd busca archivos, que se encuentra en el directorio /etc/systemd/
system/TARGETNAME.target.wants. La habilitación de un servicio no inicia el servicio en la
sesión actual. Para iniciar el servicio y habilitarlo para que se inicie automáticamente durante el
arranque, ejecute los comandos systemctl start y systemctl enable.

314 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Para que el servicio no se inicie automáticamente, use el siguiente comando que quita el enlace
simbólico creado al habilitar un servicio. Tenga en cuenta que la deshabilitación de un servicio no
detiene el servicio.

[root@host ~]# systemctl disable sshd.service


Removed /etc/systemd/system/multi-user.target.wants/sshd.service.

Para verificar si el servicio está habilitado o deshabilitado, use el comando systemctl is-
enabled.

Resumen de comandos systemctl


Los servicios pueden iniciarse y detenerse en un sistema en funcionamiento, y habilitarse o
deshabilitarse para que se inicien automáticamente durante el proceso de arranque.

Comandos útiles para la gestión de servicios

Tarea Comando

Ver información detallada sobre el estado de systemctl status UNIT


una unidad.

Detener un servicio en un sistema en systemctl stop UNIT


funcionamiento.

Iniciar un servicio en un sistema en systemctl start UNIT


funcionamiento.

Reiniciar un servicio en un sistema en systemctl restart UNIT


funcionamiento.

Volver a cargar el archivo de configuración de systemctl reload UNIT


un servicio en ejecución.

Deshabilitar completamente el inicio (tanto systemctl mask UNIT


manual como durante el proceso de arranque)
de un servicio.

Poner un servicio enmascarado a disposición. systemctl unmask UNIT

Configurar un servicio para que se inicie systemctl enable UNIT


durante el proceso de arranque.

Deshabilitar el inicio de un servicio durante el systemctl disable UNIT


proceso de arranque.

Enumerar unidades necesarias y deseadas por systemctl list-dependencies UNIT


la unidad especificada.

RH124-RHEL8.2-es-1-20200928 315
capítulo 9 | Control de servicios y daemons

Referencias
Páginas del manual systemd(1), systemd.unit(5), systemd.service(5),
systemd.socket(5) y systemctl(1)

Para obtener más información, consulte el capítulo Administración de servicios del


sistema de la Guía de configuración básica de sistemas de Red Hat Enterprise Linux 8
en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/managing-services-
with-systemd_configuring-basic-system-settings#managing-system-
services_managing-services-with-systemd

316 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Ejercicio Guiado

Control de servicios del sistema


En este ejercicio, usará systemctl para detener, iniciar, reiniciar, volver a cargar, habilitar y
deshabilitar un servicio gestionado por systemd.

Resultados
Deberá ser capaz de usar el comando systemctl para controlar los servicios gestionados
por systemd.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab services-control start. Este comando


ejecuta un script de inicio que determina si el host servera es accesible en la red. El script
también asegura que los servicios sshd y chronyd se estén ejecutando en servera.

[student@workstation ~]$ lab services-control start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Ejecute los comandos systemctl restart y systemctl reload en el servicio sshd.


Observe los diferentes resultados que obtiene al ejecutar estos comandos.

2.1. Visualice el estado del servicio sshd. Tenga en cuenta la ID del proceso del daemon
sshd.

[student@servera ~]$ systemctl status sshd


● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
enabled)
Active: active (running) since Wed 2019-02-06 23:50:42 EST; 9min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 759 (sshd)
Tasks: 1 (limit: 11407)
Memory: 5.9M
...output omitted...

Presione q para salir del comando.

RH124-RHEL8.2-es-1-20200928 317
capítulo 9 | Control de servicios y daemons

2.2. Reinicie el servicio sshd y visualice el estado. La ID del proceso del daemon debe
cambiar.

[student@servera ~]$ sudo systemctl restart sshd


[sudo] password for student: student
[student@servera ~]$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
enabled)
Active: active (running) since Wed 2019-02-06 23:50:42 EST; 9min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1132 (sshd)
Tasks: 1 (limit: 11407)
Memory: 5.9M
...output omitted...

En la salida anterior, observe que la ID del proceso cambió de 759 a 1132 (es probable
que los números en su sistema sean diferentes). Presione q para salir del comando.

2.3. Vuelva a cargar el servicio sshd y visualice el estado. La ID del proceso del daemon
no debe cambiar, y las conexiones no deben estar interrumpidas.

[student@servera ~]$ sudo systemctl reload sshd


[student@servera ~]$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
enabled)
Active: active (running) since Wed 2019-02-06 23:50:42 EST; 9min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1132 (sshd)
Tasks: 1 (limit: 11407)
Memory: 5.9M
...output omitted...

Presione q para salir del comando.

3. Verifique que el servicio chronyd se esté ejecutando.

[student@servera ~]$ systemctl status chronyd


● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor
preset: enabled)
Active: active (running) since Wed 2019-02-06 23:50:38 EST; 1h 25min ago
...output omitted...

Presione q para salir del comando.

4. Detenga el servicio sshd y visualice el estado.

[student@servera ~]$ sudo systemctl stop chronyd


[student@servera ~]$ systemctl status chronyd
● chronyd.service - NTP client/server

318 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor


preset: enabled)
Active: inactive (dead) since Thu 2019-02-07 01:20:34 EST; 44s ago
...output omitted...
... servera.lab.example.com chronyd[710]: System clock wrong by 1.349113 seconds,
adjustment started
... servera.lab.example.com systemd[1]: Stopping NTP client/server...
... servera.lab.example.com systemd[1]: Stopped NTP client/server.

Presione q para salir del comando.

5. Determine si el servicio chronyd está habilitado para iniciarse en el arranque del sistema.

[student@server ~]$ systemctl is-enabled chronyd


enabled

6. Reinicie servera y, a continuación, visualice el estado del servicio chronyd.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

Inicie sesión con el usuario student en servera y visualice el estado del servicio
chronyd.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$ systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor
preset: enabled)
Active: active (running) since Thu 2019-02-07 01:48:26 EST; 5min ago
...output omitted...

Presione q para salir del comando.

7. Deshabilite el servicio chronyd para que no se inicie en el arranque del sistema y, luego,
visualice el estado del servicio.

[student@servera ~]$ sudo systemctl disable chronyd


[sudo] password for student: student
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[student@servera ~]$ systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor
preset: enabled)
Active: active (running) since Thu 2019-02-07 01:48:26 EST; 5min ago
...output omitted...

Presione q para salir del comando.

RH124-RHEL8.2-es-1-20200928 319
capítulo 9 | Control de servicios y daemons

8. Reinicie servera y, a continuación, visualice el estado del servicio chronyd.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

Inicie sesión con el usuario student en servera y visualice el estado del servicio
chronyd.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$ systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor
preset: enabled)
Active: inactive (dead)
Docs: man:chronyd(8)
man:chrony.conf(5)

9. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab services-control finish para terminar este
ejercicio.

[student@workstation ~]$ lab services-control finish

Esto concluye el ejercicio guiado.

320 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Trabajo de laboratorio

Control de servicios y daemons


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará varios servicios para habilitarlos o deshabilitarlos,
ejecutarlos o detenerlos, según la especificación que se le proporcione.

Resultados
Deberá ser capaz de habilitar, deshabilitar, iniciar y detener servicios.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab services-review start. Este comando


ejecuta un script de inicio que determina si el host serverb es accesible en la red. El script
también asegura que los servicios psacct y rsyslog estén configurados apropiadamente
en serverb.

[student@workstation ~]$ lab services-review start

1. En serverb, inicie el servicio psacct.


2. Configure el servicio psacct para que se inicie en el arranque del sistema.
3. Detenga el servicio rsyslog.
4. Configure el servicio rsyslog para que no se inicie en el momento de arranque del sistema.
5. Reinicie serverb antes de evaluar el trabajo de laboratorio.

Evaluación
En workstation, ejecute el script lab services-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab services-review grade

Finalizar
En workstation, ejecute el script lab services-review finish para terminar este trabajo
de laboratorio.

[student@workstation ~]$ lab services-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 321
capítulo 9 | Control de servicios y daemons

Solución

Control de servicios y daemons


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará varios servicios para habilitarlos o deshabilitarlos,
ejecutarlos o detenerlos, según la especificación que se le proporcione.

Resultados
Deberá ser capaz de habilitar, deshabilitar, iniciar y detener servicios.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab services-review start. Este comando


ejecuta un script de inicio que determina si el host serverb es accesible en la red. El script
también asegura que los servicios psacct y rsyslog estén configurados apropiadamente
en serverb.

[student@workstation ~]$ lab services-review start

1. En serverb, inicie el servicio psacct.

1.1. Use el comando ssh para iniciar sesión en serverb como el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando systemctl para verificar el estado del servicio psacct. Tenga en
cuenta que psacct se encuentra detenido y deshabilitado, por lo que no se inicia en el
momento del arranque.

[student@serverb ~]$ systemctl status psacct


● psacct.service - Kernel process accounting
Loaded: loaded (/usr/lib/systemd/system/psacct.service; disabled; vendor
preset: disabled)
Active: inactive (dead)

1.3. Inicie el servicio psacct.

[student@serverb ~]$ sudo systemctl start psacct


[sudo] password for student: student
[student@serverb ~]$

1.4. Verifique que el servicio psacct se esté ejecutando.

322 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

[student@serverb ~]$ systemctl is-active psacct


active

2. Configure el servicio psacct para que se inicie en el arranque del sistema.

2.1. Habilite el servicio psacct para que se inicie en el arranque del sistema.

[student@serverb ~]$ sudo systemctl enable psacct


Created symlink /etc/systemd/system/multi-user.target.wants/psacct.service → /usr/
lib/systemd/system/psacct.service.

2.2. Verifique que el servicio psacct esté habilitado para iniciarse en el arranque del
sistema.

[student@serverb ~]$ systemctl is-enabled psacct


enabled

3. Detenga el servicio rsyslog.

3.1. Use el comando systemctl para verificar el estado del servicio rsyslog. Tenga
en cuenta que el servicio rsyslog está en ejecución y habilitado para iniciarse en el
momento del arranque.

[student@serverb ~]$ systemctl status rsyslog


● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor
preset: enabled)
Active: active (running) since Fri 2019-02-08 10:16:00 IST; 2h 34min ago
...output omitted...

Presione q para salir del comando.

3.2. Detenga el servicio rsyslog.

[student@serverb ~]$ sudo systemctl stop rsyslog


[sudo] password for student: student
[student@serverb ~]$

3.3. Verifique que el servicio rsyslog se encuentre detenido.

[student@serverb ~]$ systemctl is-active rsyslog


inactive

4. Configure el servicio rsyslog para que no se inicie en el momento de arranque del sistema.

4.1. Deshabilite el servicio rsyslog para que no se inicie en el momento de arranque del
sistema.

[student@serverb ~]$ sudo systemctl disable rsyslog


Removed /etc/systemd/system/syslog.service.
Removed /etc/systemd/system/multi-user.target.wants/rsyslog.service.

RH124-RHEL8.2-es-1-20200928 323
capítulo 9 | Control de servicios y daemons

4.2. Verifique que el inicio de rsyslog en el arranque del sistema se encuentre


deshabilitado.

[student@serverb ~]$ systemctl is-enabled rsyslog


disabled

5. Reinicie serverb antes de evaluar el trabajo de laboratorio.

[student@serverb ~]$ sudo systemctl reboot


Connection to serverb closed by remote host.
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab services-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab services-review grade

Finalizar
En workstation, ejecute el script lab services-review finish para terminar este trabajo
de laboratorio.

[student@workstation ~]$ lab services-review finish

Esto concluye el trabajo de laboratorio.

324 RH124-RHEL8.2-es-1-20200928
capítulo 9 | Control de servicios y daemons

Resumen
En este capítulo, aprendió lo siguiente:

• systemd proporciona un método para activar los recursos del sistema, los daemons del
servidor y otros procesos, tanto en el momento del arranque como en un sistema que está en
funcionamiento.

• Se utiliza systemctl para iniciar, detener, volver a cargar, habilitar y deshabilitar servicios.

• Se utiliza el comando systemctl status para determinar el estado de los daemons del
sistema y los servicios de red iniciados por systemd.

• El comando systemctl list-dependencies enumera todas las unidades de servicio de las


que depende una unidad de servicio específica.

• systemd puede enmascarar una unidad de servicio para que no se ejecute ni siquiera para dar
respuesta a las dependencias.

RH124-RHEL8.2-es-1-20200928 325
326 RH124-RHEL8.2-es-1-20200928
capítulo 10

Configuración y seguridad de
SSH
Meta Configurar un servicio seguro de línea de
comandos en sistemas remotos con OpenSSH.

Objetivos • Iniciar sesión en un sistema remoto y ejecutar


comandos con ssh.
• Configurar la autenticación basada en claves
para que una cuenta de usuario inicie sesión
en sistemas remotos de forma segura y sin una
contraseña.
• Restringir los inicios de sesión directos como
root y deshabilitar la autenticación basada en
contraseñas para el servicio OpenSSH.

Secciones • Acceso a la línea de comandos remota con SSH


(y ejercicio guiado)
• Configuración de autenticación basada en
claves de SSH (y ejercicio guiado)
• Personalización de la configuración del servicio
OpenSSH (y ejercicio guiado)

Trabajo de Configuración y seguridad de SSH


laboratorio

RH124-RHEL8.2-es-1-20200928 327
capítulo 10 | Configuración y seguridad de SSH

Acceso a la línea de comandos remota


con SSH

Objetivos
Tras finalizar esta sección, deberá poder iniciar sesión en un sistema remoto y ejecutar comandos
a través de ssh.

¿Qué es OpenSSH?
OpenSSH implementa el protocolo Secure Shell o SSH en los sistemas de Red Hat
Enterprise Linux. El protocolo SSH permite que los sistemas se comuniquen de forma cifrada y
segura a través de una red insegura.

Puede usar el comando ssh para crear una conexión segura a un sistema remoto, autenticarse
como un usuario específico y obtener una sesión de shell interactiva en el sistema remoto como
ese usuario. También puede usar el comando ssh para ejecutar un comando individual en el
sistema remoto sin acceder a la shell interactiva.

Ejemplos de Secure Shell


Con el siguiente comando ssh, podría iniciar sesión en el servidor remoto remotehost utilizando
el mismo nombre de usuario que el usuario local actual. En este ejemplo, el sistema remoto le
solicita que se autentique con la contraseña de ese usuario.

[user01@host ~]$ ssh remotehost


user01@remotehost's password: redhat
...output omitted...
[user01@remotehost ~]$

Puede usar el comando exit para cerrar sesión en el sistema remoto.

[user01@remotehost ~]$ exit


logout
Connection to remotehost closed.
[user01@host ~]$

Con el siguiente comando ssh, podría iniciar sesión en el servidor remoto remotehost utilizando
el nombre de usuario user02. Una vez más, el sistema remoto le solicita que se autentique con la
contraseña de ese usuario.

[user01@host ~]$ ssh user02@remotehost


user02@remotehost's password: shadowman
...output omitted...
[user02@remotehost ~]$

Este comando ssh ejecutaría el comando hostname en el sistema remoto remotehost como el
usuario user02 sin acceder a la shell interactiva remota.

328 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

[user01@host ~]$ ssh user02@remotehost hostname


user02@remotehost's password: shadowman
remotehost.lab.example.com
[user01@host ~]$

Tenga en cuenta que el comando anterior mostró el resultado en el terminal del sistema local.

Identificación de usuarios remotos


Con el comando w, se muestra una lista de usuarios actualmente con sesión activa en el equipo.
Esto es especialmente útil para mostrar qué usuarios están con sesión activa con ssh, desde qué
ubicaciones remotas y qué están haciendo.

[user01@host ~]$ ssh user01@remotehost


user01@remotehost's password: redhat
[user01@remotehost ~]$ w
16:13:38 up 36 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user02 pts/0 172.25.250.10 16:13 7:30 0.01s 0.01s -bash
user01 pts/1 172.25.250.10 16:24 3.00s 0.01s 0.00s w
[user02@remotehost ~]$

En la salida anterior, se muestra que el usuario user02 ha iniciado sesión en el sistema en la


pseudoterminal 0 a las 16:13 el día de hoy desde el host con la dirección IP 172.25.250.10,
y que ha estado inactivo en el prompt de shell durante siete minutos y treinta segundos. En la
salida anterior, también se muestra que el usuario user01 ha iniciado sesión en el sistema en la
pseudoterminal 1 y que ha estado inactivo hace tres segundos tras ejecutar el comando w.

Claves de host SSH


SSH asegura la comunicación a través del cifrado con clave pública. Cuando un cliente SSH se
conecta a un servidor SSH, el servidor le envía una copia de su clave pública al cliente antes
de que este inicie sesión. Esto se usa con el fin de establecer el cifrado seguro para el canal de
comunicación y autenticar el servidor para el cliente.

Cuando un usuario usa el comando ssh para conectarse a un servidor SSH, el comando
verifica si tiene una copia de la clave pública para ese servidor en sus archivos de hosts locales
conocidos. El administrador del sistema puede tenerla configurada previamente en /etc/ssh/
ssh_known_hosts, o el usuario puede tener un archivo ~/.ssh/known_hosts en su directorio
de inicio que contiene la clave.

Si el cliente tiene una copia de la clave, ssh comparará la clave de los archivos de hosts conocidos
para ese servidor con el que recibió. Si las claves no coinciden, el cliente supone que el tráfico
de red al servidor sufre un secuestro o que el servidor está en riesgo, y solicita al usuario que
confirme si desea continuar o interrumpir la conexión.

nota
Defina el parámetro StrictHostKeyChecking en sí en el archivo ~/.ssh/
config específico del usuario o /etc/ssh/ssh_config de todo el sistema para
que el comando ssh siempre interrumpa la conexión SSH si las claves públicas no
coinciden.

RH124-RHEL8.2-es-1-20200928 329
capítulo 10 | Configuración y seguridad de SSH

Si el cliente no tiene una copia de la clave pública en sus archivos de hosts conocidos, el comando
ssh le preguntará si desea iniciar sesión de todos modos. Si lo hace, se guardará una copia de
la clave pública en su archivo ~/.ssh/known_hosts para que la identidad del servidor pueda
confirmarse automáticamente en el futuro.

[user01@host ~]$ ssh newhost


The authenticity of host 'remotehost (172.25.250.12)' can't be established.
ECDSA key fingerprint is SHA256:qaS0PToLrqlCO2XGklA0iY7CaP7aPKimerDoaUkv720.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'newhost,172.25.250.12' (ECDSA) to the list of known
hosts.
user01@newhost's password: redhat
...output omitted...
[user01@newhost ~]$

Gestión de claves de hosts conocidas para SSH


Si se cambia la clave pública de un servidor porque la clave se perdió debido a una falla del disco
duro, o se reemplazó por algún motivo legítimo, deberá editar los archivos de hosts conocidos
para asegurarse de que la entrada de la clave pública anterior se reemplace con una entrada con la
nueva clave pública para iniciar sesión sin errores.

Las claves públicas se almacenan en el /etc/ssh/ssh_known_hosts y el archivo ~/.ssh/


known_hosts de cada usuario en el cliente SSH. Cada clave está en una línea. El primer campo es
una lista de nombres de host y direcciones IP que comparten esa clave pública. El segundo campo
es el algoritmo de cifrado para la clave. El último campo es la clave en sí.

[user01@host ~]$ cat ~/.ssh/known_hosts


remotehost,172.25.250.11 ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOsEi0e+FlaNT6jul8Ag5Nj
+RViZl0yE2w6iYUr+1fPtOIF0EaOgFZ1LXM37VFTxdgFxHS3D5WhnIfb+68zf8+w=

Cada servidor SSH remoto al que se conecte almacena su clave pública en el directorio /etc/ssh
en archivos con la extensión .pub.

[user01@remotehost ~]$ ls /etc/ssh/*key.pub


/etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ed25519_key.pub /etc/ssh/
ssh_host_rsa_key.pub

nota
Es una buena práctica agregar entradas que hagan coincidir los archivos
ssh_host_*key.pub de un servidor con su archivo ~/.ssh/known_hosts o el
archivo /etc/ssh/ssh_known_hosts en todo el sistema.

330 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Referencias
Páginas de manual ssh(1), w(1) y hostname(1)

Para obtener más información, consulte el capítulo Uso de comunicaciones seguras


entre dos sistemas con OpenSSH en la Guía de Seguridad de redes de Red Hat
Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/securing_networks/index#using-secure-communications-between-two-
systems-with-openssh_securing-networks

RH124-RHEL8.2-es-1-20200928 331
capítulo 10 | Configuración y seguridad de SSH

Ejercicio Guiado

Acceso a la línea de comandos remota


En este ejercicio, iniciará sesión en un sistema remoto como usuarios diferentes y ejecutará
los comandos.

Resultados
Usted debe poder realizar lo siguiente:

• Iniciar sesión en un sistema remoto.

• Ejecutar comandos con OpenSSH secure shell.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab ssh-access start para comenzar el ejercicio. Este script
asegura que el entorno esté configurado correctamente.

[student@workstation ~]$ lab ssh-access start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Abra una sesión de SSH en serverb como student. Acepte la clave de host. Use la
contraseña student cuando se le solicite la contraseña para el usuario student en
serverb.

[student@servera ~]$ ssh student@serverb


The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:ERTdjooOIrIwVSZQnqD5or+JbXfidg0udb3DXBuHWzA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'serverb,172.25.250.11' (ECDSA) to the list of known
hosts.
student@serverb's password: student
...output omitted...
[student@serverb ~]$

La clave de host se registra en el archivo /home/student/.ssh/known_hosts en


servera para identificar a serverb porque el usuario student ha iniciado la conexión
SSH desde servera. Si el archivo /home/student/.ssh/known_hosts ya no existe, se
crea un archivo nuevo que contiene la entrada nueva. El comando ssh no se puede ejecutar
en forma correcta si el host remoto tiene otra clave que no es la que está registrada.

332 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

3. Ejecute el comando w para mostrar los usuarios que actualmente han iniciado sesión en
serverb.

[student@serverb ~]$ w
18:49:29 up 2:55, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
student pts/0 172.25.250.10 18:33 0.00s 0.01s 0.00s w

En la salida anterior, se indica que el usuario student ha iniciado sesión en el sistema


desde el host con una dirección IP 172.25.250.10, que corresponde a servera en la red
del aula.

nota
La dirección IP de un sistema identifica el sistema en una red. Aprenderá acerca de
las direcciones IP en el capítulo posterior.

4. Salga de la shell del usuario student en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@servera ~]$

5. Abra una sesión de SSH en serverb como root. Use redhat como contraseña para el
usuario root.

[student@servera ~]$ ssh root@serverb


root@serverb's password: redhat
...output omitted...
[root@serverb ~]#

Tenga en cuenta que el comando ssh anterior no le pidió que aceptara la clave de host
porque esta se encontró entre los hosts conocidos. Si la identidad de serverb cambia en
cualquier momento, OpenSSH le solicitará que verifique y acepte la clave de host nueva.

6. Ejecute el comando w para mostrar los usuarios que actualmente han iniciado sesión en
serverb.

[root@serverb ~]# w
19:10:28 up 3:16, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 172.25.250.10 19:09 1.00s 0.01s 0.00s w

En la salida anterior, se indica que el usuario root ha iniciado sesión en el sistema desde el
host con una dirección IP 172.25.250.10, que corresponde a servera en la red del aula.

RH124-RHEL8.2-es-1-20200928 333
capítulo 10 | Configuración y seguridad de SSH

7. Salga de la shell del usuario root en serverb.

[root@serverb ~]# exit


logout
Connection to serverb closed.
[student@servera ~]$

8. Elimine el archivo /home/student/.ssh/known_hosts de servera. Esto hace que ssh


pierda las identidades registradas de los sistemas remotos.

[student@servera ~]$ rm /home/student/.ssh/known_hosts

Las claves de host pueden cambiar por razones legítimas: quizás la máquina remota se
reemplazó debido a una falla del hardware, o es posible que la máquina remota se haya
reinstalado. Por lo general, es aconsejable solo eliminar la entrada de clave para el host
particular en el archivo known_hosts. Puesto que este archivo particular known_hosts
tiene solo una entrada, puede eliminar todo el archivo.

9. Abra una sesión de SSH en serverb como student. Acepte la clave de host (si se le
solicita). Use la contraseña student cuando se le solicite la contraseña para el usuario
student en serverb.

[student@servera ~]$ ssh student@serverb


The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:ERTdjooOIrIwVSZQnqD5or+JbXfidg0udb3DXBuHWzA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'serverb,172.25.250.11' (ECDSA) to the list of known
hosts.
student@serverb's password: student
...output omitted...
[student@serverb ~]$

Tenga en cuenta que el comando ssh le solicitó que confirmara si deseaba aceptar o
rechazar la clave de host porque no pudo encontrar una para el host remoto.

10. Salga de la shell del usuario student en serverb y confirme que una instancia nueva de
known_hosts existe en servera.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@servera ~]$ ls -l /home/student/.ssh/known_hosts
-rw-r--r--. 1 student student 183 Feb 1 20:26 /home/student/.ssh/known_hosts

11. Confirme si la nueva instancia del archivo known_hosts tiene la clave de host de
serverb.

[student@servera ~]$ cat /home/student/.ssh/known_hosts


serverb,172.25.250.11 ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI9LEYEhwmU1rNqnbBPukH2Ba0/
QBAu9WbS4m03B3MIhhXWKFFNa/UlNjY8NDpEM+hkJe/GmnkcEYMLbCfd9nMA=

La salida real variará.

334 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

12. Ejecute hostname de forma remota en serverb sin acceder a la shell interactiva.

[student@servera ~]$ ssh student@serverb hostname


student@serverb's password: student
serverb.lab.example.com

El comando anterior mostró el nombre de host completo del sistema remoto serverb.

13. Salga de la shell del usuario student en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.

Finalizar
En workstation, ejecute lab ssh-access finish para terminar este ejercicio.

[student@workstation ~]$ lab ssh-access finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 335
capítulo 10 | Configuración y seguridad de SSH

Configuración de autenticación basada


en claves SSH

Objetivos
Tras finalizar esta sección, deberá poder configurar una cuenta de usuario para emplear la
autenticación basada en claves e iniciar sesión en sistemas remotos de forma segura y sin una
contraseña.

Autenticación basada en claves SSH


Puede configurar un servidor SSH para que pueda autenticarse sin una contraseña usando la
autenticación basada en claves. Esto se basa en un esquema de clave privada-pública.

Para hacer esto, genera un par coincidente de archivos de claves criptográficas. Una es una clave
privada, la otra una clave pública coincidente. El archivo de clave privada se usa como credencial
de autenticación y, al igual que una contraseña, debe ser secreta y segura. La clave pública se
copia en los sistemas con los que el usuario desea conectarse y se usa para verificar la clave
privada. No es necesario que la clave pública sea secreta.

Coloque una copia de la clave pública en su cuenta en el servidor. Cuando intenta iniciar sesión,
el servidor SSH puede usar la clave pública para emitir un desafío que solo puede ser respondido
correctamente usando la clave privada. Como resultado, su cliente ssh puede autenticar
automáticamente su inicio de sesión en el servidor con su copia única de la clave privada. Esto le
permite acceder a los sistemas de manera segura sin que sea necesario ingresar siempre en forma
interactiva una contraseña.

Generación de claves SSH


Para crear una clave privada y una clave pública coincidente para la autenticación, use el comando
ssh-keygen. De manera predeterminada, las claves privada y pública se guardan en sus archivos
~/.ssh/id_rsa y ~/.ssh/id_rsa.pub, respectivamente.

[user@host ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vxutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| . . |
| o o o |
| . = o o . |
| o + = S E . |
| ..O o + * + |

336 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

|.+% O . + B . |
|=*oO . . + * |
|++. . +. |
+----[SHA256]-----+

Si no especifica una frase de contraseña cuando ssh-keygen se lo solicita, la clave privada


generada no está protegida. En este caso, cualquier persona con su archivo de clave privada
podría usarlo para la autenticación. Si configura una frase de contraseña, deberá ingresar esa frase
de contraseña cuando use la clave privada para la autenticación. (Por lo tanto, utilizaría la frase de
contraseña de la clave privada en lugar de la contraseña en el host remoto para autenticarse).

Puede ejecutar un programa de ayuda llamado ssh-agent que puede almacenar temporalmente
en la memoria caché la contraseña de la clave privada al inicio de la sesión para obtener una
verdadera autenticación sin contraseña. Hablaremos de esto más adelante en esta sección.

En el siguiente ejemplo del comando ssh-keygen, se muestra la creación de la clave privada


protegida con frase de contraseña junto con la clave pública.

[user@host ~]$ ssh-keygen -f .ssh/key-with-pass


Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/key-with-pass.
Your public key has been saved in .ssh/key-with-pass.pub.
The key fingerprint is:
SHA256:w3GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| . + =.o ... |
| = B XEo o. |
| . o O X =.... |
| = = = B = o. |
|= + * * S . |
|.+ = o + . |
| + . |
| |
| |
+----[SHA256]-----+

La opción -f con el comando ssh-keygen determina los archivos donde se guardan las
claves. En el ejemplo anterior, las claves privada y pública se guardan en los archivos /home/
user/.ssh/key-with-pass /home/user/.ssh/key-with-pass.pub, respectivamente.

Advertencia
Durante la generación de pares de claves SSH adicionales, a menos que especifique
un nombre de archivo único, se le solicitará permiso para sobrescribir los archivos
id_rsa y id_rsa.pub existentes. Si sobrescribe los archivos id_rsa y
id_rsa.pub existentes, entonces debe reemplazar la clave pública anterior con la
nueva en todos los servidores SSH que tienen su clave pública anterior.

RH124-RHEL8.2-es-1-20200928 337
capítulo 10 | Configuración y seguridad de SSH

Una vez que se hayan generado las claves SSH, se guardarán de modo predeterminado en el
directorio .ssh/ del directorio principal del usuario. Los modos de permisos deben ser 600 en la
clave privada y 644 en la clave pública.

Cómo compartir la clave pública


Para poder usar la autenticación mediante claves, la clave pública debe copiarse en el sistema de
destino. El comando ssh-copy-id copia la clave pública del par de claves SSH en el sistema de
destino. Si omite la ruta al archivo de la clave pública mientras ejecuta ssh-copy-id, se usa el
archivo /home/user/.ssh/id_rsa.pub predeterminado.

[user@host ~]$ ssh-copy-id -i .ssh/key-with-pass.pub user@remotehost


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/
id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
user@remotehost's password: redhat
Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'user@remotehost'"


and check to make sure that only the key(s) you wanted were added.

Una vez que la clave pública se transfiere de forma satisfactoria a un sistema remoto, puede
realizar la autenticación en el sistema remoto por medio de la clave privada correspondiente
mientras inicia sesión en el sistema remoto a través de SSH. Si omite la ruta al archivo de la
clave privada mientras ejecuta el comando ssh, se usa el archivo /home/user/.ssh/id_rsa
predeterminado.

[user@host ~]$ ssh -i .ssh/key-with-pass user@remotehost


Enter passphrase for key '.ssh/key-with-pass': redhatpass
...output omitted...
[user@remotehost ~]$ exit
logout
Connection to remotehost closed.
[user@host ~]$

Uso de ssh-agent para autenticación no interactiva


Si su clave privada SSH está protegida con una frase de contraseña, normalmente tiene que
ingresar dicha frase para usar la clave privada para la autenticación. Sin embargo, puede utilizar
un programa llamado ssh-agent para almacenar temporalmente la contraseña en la memoria.
Luego, cada vez que utilice SSH para iniciar sesión en otro sistema con la clave privada, ssh-
agent proporcionará automáticamente la frase de contraseña para usted. Esto es conveniente y
puede mejorar la seguridad al ofrecer menos oportunidades para que alguien "navegue" para ver
cómo escribe la frase de contraseña.

Según la configuración de su sistema local, si inicialmente inicia sesión en el entorno de escritorio


gráfico de GNOME, el programa ssh-agent podría iniciarse y configurarse automáticamente
para usted.

338 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Si inicia sesión en una consola de texto, inicie sesión con ssh, o usa sudo o su, probablemente
deberá iniciar ssh-agent manualmente para esa sesión. Puedes hacer esto con el siguiente
comando:

[user@host ~]$ eval $(ssh-agent)


Agent pid 10155
[user@host ~]$

nota
Cuando ejecuta ssh-agent, este imprime algunos comandos de shell. Debe
ejecutar estos comandos para configurar las variables de entorno utilizadas por
programas como ssh-add para que se comuniquen con estos. El comando eval
$(ssh-agent) inicia ssh-agent y ejecuta esos comandos para establecer
automáticamente esas variables de entorno para esa sesión de shell. También
muestra el PID del proceso ssh-agent.

Una vez que ssh-agent se está ejecutando, debe decirle la frase de contraseña para su clave
privada o sus claves. Puede hacerlo con el comando ssh-add.

Los siguientes comandos ssh-add agregan las claves privadas desde los archivos /
home/user/.ssh/id_rsa (de manera predeterminada) y /home/user/.ssh/key-with-
pass, respectivamente.

[user@host ~]$ ssh-add


Identity added: /home/user/.ssh/id_rsa ([email protected])
[user@host ~]$ ssh-add .ssh/key-with-pass
Enter passphrase for .ssh/key-with-pass: redhatpass
Identity added: .ssh/key-with-pass ([email protected])

Después de agregar las claves privadas satisfactoriamente al proceso sh-agent, puede invocar
una conexión SSH por medio del comando ssh. Si está usando un archivo de clave privada que
no es el archivo /home/user/.ssh/id_rsa predeterminado, debe usar la opción -i con el
comando ssh para especificar la ruta al archivo de la clave privada.

En el siguiente ejemplo del comando ssh, se usa el archivo de clave privada predeterminado para
realizar la autenticación en un servidor SSH.

[user@host ~]$ ssh user@remotehost


Last login: Fri Apr 5 10:53:50 2019 from host.example.com
[user@remotehost ~]$

En el siguiente ejemplo del comando ssh, se usa el archivo de clave privada /home/user/.ssh/
key-with-pass (no predeterminado) para realizar la autenticación en un servidor SSH. La
clave privada en el siguiente ejemplo ya se ha descifrado y agregado a su proceso principalssh-
agent, por lo que el comando ssh no le solicita que descifre la clave privada mediante el ingreso
interactivo de su frase de contraseña.

[user@host ~]$ ssh -i .ssh/key-with-pass user@remotehost


Last login: Mon Apr 8 09:44:20 2019 from host.example.com
[user@remotehost ~]$

RH124-RHEL8.2-es-1-20200928 339
capítulo 10 | Configuración y seguridad de SSH

Cuando sales de la sesión que comenzó ssh-agent , el proceso se cerrará y las frases de
contraseña de sus claves privadas se borrarán de la memoria.

Referencias
Páginas de manual ssh-keygen(1), ssh-copy-id(1), ssh-agent(1),ssh-add(1)

340 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Ejercicio Guiado

Configuración de autenticación basada


en claves SSH
En este ejercicio, configurará un usuario para realizar una autenticación basada en claves
para SSH.

Resultados
Usted debe poder realizar lo siguiente:

• Generar un par de claves SSH sin protección de frase de contraseña.

• Generar un par de claves SSH con protección de frase de contraseña.

• Realizar la autenticación mediante claves SSH sin frase de contraseña y mediante claves
SSH protegidas con frase de contraseña.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab ssh-configure start para comenzar el ejercicio. Este


script crea las cuentas de usuario necesarias.

[student@workstation ~]$ lab ssh-configure start

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. Use el comando su para cambiar al usuario operator1 en serverb. Use redhat como la
contraseña de operator1.

[student@serverb ~]$ su - operator1


Password: redhat
[operator1@serverb ~]$

3. Use el comando ssh-keygen para generar claves SSH. No ingrese una frase de
contraseña.

[operator1@serverb ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/operator1/.ssh/id_rsa): Enter
Created directory '/home/operator1/.ssh'.
Enter passphrase (empty for no passphrase): Enter

RH124-RHEL8.2-es-1-20200928 341
capítulo 10 | Configuración y seguridad de SSH

Enter same passphrase again: Enter


Your identification has been saved in /home/operator1/.ssh/id_rsa.
Your public key has been saved in /home/operator1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:JainiQdnRosC+xXhOqsJQQLzBNUldb+jJbyrCZQBERI
[email protected]
The key's randomart image is:
+---[RSA 2048]----+
|E+*+ooo . |
|.= o.o o . |
|o.. = . . o |
|+. + * . o . |
|+ = X . S + |
| + @ + = . |
|. + = o |
|.o . . . . |
|o o.. |
+----[SHA256]-----+

4. Use el comando ssh-copy-id para enviar la clave pública del par de claves SSH a
operator1 en servera. Use redhat como la contraseña de operator1 en servera.

[operator1@serverb ~]$ ssh-copy-id operator1@servera


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/
operator1/.ssh/id_rsa.pub"
The authenticity of host 'servera (172.25.250.10)' can't be established.
ECDSA key fingerprint is SHA256:ERTdjooOIrIwVSZQnqD5or+JbXfidg0udb3DXBuHWzA.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
operator1@servera's password: redhat
Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'operator1@servera'"


and check to make sure that only the key(s) you wanted were added.

5. Ejecute el comando hostname en servera de forma remota usando SSH sin acceder a la
shell interactiva remota.

[operator1@serverb ~]$ ssh operator1@servera hostname


servera.lab.example.com

Tenga en cuenta que el comando ssh anterior no le solicitó una contraseña porque usó
la clave privada sin frase de contraseña correspondiente a la clave pública exportada para
realizar la autenticación como operator1 en servera. Este enfoque no es seguro, ya
que cualquier persona que tenga acceso al archivo de clave privada puede iniciar sesión
en servera como operator1. La alternativa segura es proteger la clave privada con una
frase de contraseña, lo cual se describe en el siguiente paso.

342 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

6. Use el comando ssh-keygen para generar otro conjunto de claves SSH protegidas con
frase de contraseña. Guarde la clave como /home/operator1/.ssh/key2. Utilice
redhatpass como la frase de contraseña de la clave privada.

Advertencia
Si no especifica el archivo donde se guarda la clave, se usa el archivo
predeterminado (/home/user/.ssh/id_rsa). Ya ha usado el nombre de
archivo predeterminado al generar claves SSH en el paso anterior, por lo que es
fundamental que especifique un archivo no predeterminado. De lo contrario, las
claves SSH existentes se sobrescribirán.

[operator1@serverb ~]$ ssh-keygen -f .ssh/key2


Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): redhatpass
Enter same passphrase again: redhatpass
Your identification has been saved in .ssh/key2.
Your public key has been saved in .ssh/key2.pub.
The key fingerprint is:
SHA256:OCtCjfPm5QrbPBgqbEIWCcw5AI4oSlMEbgLrBQ1HWKI
[email protected]
The key's randomart image is:
+---[RSA 2048]----+
|O=X* |
|OB=. |
|E*o. |
|Booo . |
|..= . o S |
| +.o o |
|+.oo+ o |
|+o.O.+ |
|+ . =o. |
+----[SHA256]-----+

7. Use el comando ssh-copy-id para enviar la clave pública del par de claves protegidas con
con frase de contraseña a operator1 en servera.

[operator1@serverb ~]$ ssh-copy-id -i .ssh/key2.pub operator1@servera


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/key2.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'operator1@servera'"


and check to make sure that only the key(s) you wanted were added.

Tenga en cuenta que el comando ssh-copy-id anterior no le solicitó una contraseña


porque usó la clave pública de la clave privada sin frase de contraseña que exportó a
servera en el paso anterior.

RH124-RHEL8.2-es-1-20200928 343
capítulo 10 | Configuración y seguridad de SSH

8. Ejecute el comando hostname en servera de forma remota con SSH sin acceder a
la shell interactiva remota. Use /home/operator1/.ssh/key2 como el archivo de
identidad. Ingrese la frase de contraseña redhatpass que definió para la clave privada en
el paso anterior.

[operator1@serverb ~]$ ssh -i .ssh/key2 operator1@servera hostname


Enter passphrase for key '.ssh/key2': redhatpass
servera.lab.example.com

Tenga en cuenta que el comando ssh anterior le solicitó la frase de contraseña que
usó para proteger la clave privada del par de claves SSH. Esta frase de contraseña
protege la clave privada. Si un atacante obtiene acceso a la clave privada, no podrá usarla
para acceder a otros sistemas porque la clave privada está protegida con una frase de
contraseña. El comando ssh usa una frase de contraseña diferente a la frase de contraseña
para operator1 en servera, lo que exige que los usuarios conozcan ambas.
Puede usar ssh-agent, como en el siguiente paso, para evitar escribir de forma interactiva
la frase de contraseña al iniciar sesión con SSH. El uso de ssh-agent resulta más
conveniente y más seguro en situaciones donde los administradores inician sesión en
sistemas remotos con regularidad.

9. Ejecute ssh-agent en la shell Bash y agregue la clave privada protegida con frase de
contraseña (/home/operator1/.ssh/key2) del par de claves SSH a la sesión de shell.

[operator1@serverb ~]$ eval $(ssh-agent)


Agent pid 21032
[operator1@serverb ~]$ ssh-add .ssh/key2
Enter passphrase for .ssh/key2: redhatpass
Identity added: .ssh/key2 ([email protected])

El comando eval anterior inició ssh-agent y configuró esta sesión de shell para usarla.
Así, usó ssh-add para proporcionar la clave privada desbloqueada para ssh-agent.

10. Ejecute el comando hostname en servera de forma remota sin acceder a la shell
interactiva remota. Use /home/operator1/.ssh/key2 como el archivo de identidad.

[operator1@serverb ~]$ ssh -i .ssh/key2 operator1@servera hostname


servera.lab.example.com

Tenga en cuenta que el comando ssh anterior no le solicitó que ingrese la frase de
contraseña de forma interactiva.

11. Abra otro terminal en workstation y abra una sesión de SSH en serverb como
student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

12. En serverb, use el comando su para cambiar a operator1 e invocar una conexión SSH
en servera. Use /home/operator1/.ssh/key2 como el archivo de identidad para
realizar la autenticación por medio de claves SSH.

344 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

12.1. Use el comando su para cambiar a operator1. Use redhat como la contraseña de
operator1.

[student@serverb ~]$ su - operator1


Password: redhat
[operator1@serverb ~]$

12.2. Abra una sesión de SSH en servera como operator1.

[operator1@serverb ~]$ ssh -i .ssh/key2 operator1@servera


Enter passphrase for key '.ssh/key2': redhatpass
...output omitted...
[operator1@servera ~]$

Tenga en cuenta que el comando ssh anterior le solicitó ingresar la frase de


contraseña de manera interactiva porque no invocó la conexión SSH desde la shell
que usó para iniciar ssh-agent.

13. Salga de todas las shells que está utilizando en el segundo terminal.

13.1. Cierre sesión en servera.

[operator1@servera ~]$ exit


logout
Connection to servera closed.
[operator1@serverb ~]$

13.2. Salga de las shells operator1 y student en serverb para volver a la shell del
usuario student en workstation.

[operator1@serverb ~]$ exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation ~]$

13.3. Cierre el segundo terminal en workstation.

[student@workstation ~]$ exit

14. Cierre sesión de serverb en la primera terminal y concluya este ejercicio.

14.1. Desde el primer terminal, salga de la shell del usuario operator1 en serverb.

[operator1@serverb ~]$ exit


logout
[student@serverb ~]$

El comando exit hizo que saliera de la shell del usuario operator1, finalizando la
sesión de la shell donde ssh-agent estaba activo, y volviera a la shell del usuario
student en serverb.

RH124-RHEL8.2-es-1-20200928 345
capítulo 10 | Configuración y seguridad de SSH

14.2. Salga de la shell del usuario student en serverb para volver a la shell del usuario
student en workstation.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab ssh-configure finish para terminar este ejercicio.

[student@workstation ~]$ lab ssh-configure finish

Esto concluye el ejercicio guiado.

346 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Personalización de la configuración del


servicio OpenSSH

Objetivos
Tras finalizar esta sección, usted debe poder restringir los inicios de sesión directos como root y
deshabilitar la autenticación basada en contraseñas para el servicio OpenSSH.

Configuración del servidor OpenSSH


El servicio OpenSSH es proporcionado por un daemon llamado sshd. Su archivo de configuración
principal es /etc/ssh/sshd_config.

La configuración predeterminada del servidor OpenSSH funciona bien. Sin embargo, es posible
que desee realizar algunos cambios para fortalecer la seguridad de su sistema. Es posible que
desee realizar dos cambios comunes. Es posible que desee prohibir el inicio de sesión remoto
directo en la cuenta root, y es posible que desee prohibir la autenticación basada en contraseña
(a favor de la autenticación de clave privada SSH).

Prohibir al superusuario el inicio de sesión con SSH


Es una buena práctica prohibir el acceso directo a la cuenta de usuario root desde sistemas
remotos. Algunos de los riesgos de permitir el inicio de sesión directo como root incluyen:

• El nombre de usuario root existe en cada sistema Linux de manera predeterminada; por lo
tanto, un posible atacante solo tiene que adivinar la contraseña en lugar de una combinación de
nombre de usuario y contraseña válidos. Esto reduce la complejidad para un atacante.

• El usuario root tiene privilegios sin restricciones, por lo que su grado de vulnerabilidad puede
generar un daño importantísimo en el sistema.

• Desde una perspectiva de auditoría, puede ser difícil rastrear qué usuario autorizado inició
sesión como root e hizo cambios. Si los usuarios tienen que iniciar sesión como un usuario
regular y cambiar a la cuenta root, esto genera un evento de registro que se puede usar para
ayudar a proporcionar responsabilidad.

El servidor OpenSSH usa la configuración PermitRootLogin en el archivo de configuración /


etc/ssh/sshd_config para permitir o prohibir a los usuarios que inicien sesión en el sistema
como root.

PermitRootLogin yes

Si el parámetro PermitRootLogin está configurado con la opción sí, como de hecho


está configurado de forma predeterminada, es posible iniciar sesión como root. Para
evitarlo, seleccione la opción no. Como alternativa, para evitar la autenticación basada en
contraseñas, pero permitir la autenticación basada en claves para root, establezca el parámetro
PermitRootLogin en without-password.

Es necesario volver a cargar el servidor SSH (sshd) para que los cambios se efectúen.

[root@host ~]# systemctl reload sshd

RH124-RHEL8.2-es-1-20200928 347
capítulo 10 | Configuración y seguridad de SSH

Prohibir la autenticación basada en contraseña para


SSH
El hecho de permitir solo inicios de sesión mediante clave privada en la línea de comandos remota
tiene diversas ventajas:

• Los atacantes no pueden usar ataques de adivinación de contraseñas para acceder de forma
remota a cuentas conocidas en el sistema.

• Con las claves privadas protegidas con frase de contraseña, un atacante necesita tanto la
frase de contraseña como una copia de la clave privada. Con las contraseñas, un atacante solo
necesita la contraseña.

• Mediante el uso de claves privadas protegidas con contraseña en conjunción con ssh-agent, la
frase de contraseña se expone con menos frecuencia ya que se ingresa con menos frecuencia, y
el inicio de sesión es más conveniente para el usuario.

El servidor OpenSSH usa el parámetro PasswordAuthentication en el archivo de


configuración /etc/ssh/sshd_config para controlar si los usuarios pueden usar la
autenticación basada en contraseñas cuando inician sesión en el sistema.

PasswordAuthentication yes

El valor predeterminado sí para el parámetro PasswordAuthentication en el archivo de


configuración /etc/ssh/sshd_config hace que el servidor SSH permita a los usuarios
emplear la autenticación basada en contraseñas cuando inician sesión. El valor no para
PasswordAuthentication evita que los usuarios empleen la autenticación basada en
contraseñas.

Tenga en cuenta que, para que los cambios se efectúen, es necesario volver a cargar el servicio
sshd siempre que cambie el archivo /etc/ssh/sshd_config.

Importante
Recuerde que si desactiva la autenticación basada en contraseña para ssh, necesita
tener una manera de asegurar que el archivo ~/.ssh/authorized_keys del
usuario en el servidor remoto se rellena con su clave pública, para que puedan iniciar
sesión.

Referencias
Páginas de manual ssh(1), sshd_config(5)

348 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Ejercicio Guiado

Personalización de la configuración del


servicio OpenSSH
En este ejercicio, deshabilitará los inicios de sesión directos como root y la autenticación
basada en contraseñas para el servicio OpenSSH en uno de sus servidores.

Resultados
Usted debe poder realizar lo siguiente:

• Deshabilitar los inicios de sesión directos como root en ssh.

• Deshabilitar la autenticación basada en contraseñas para usuarios remotos que se


conectan a través de SSH.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab ssh-customize start para comenzar el ejercicio. Este


script crea las cuentas de usuario y los archivos necesarios.

[student@workstation ~]$ lab ssh-customize start

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. Use el comando su para cambiar a operator2 en serverb. Use redhat como la


contraseña de operator2.

[student@serverb ~]$ su - operator2


Password: redhat
[operator2@serverb ~]$

3. Use el comando ssh-keygen para generar claves SSH. No introduzca ninguna frase de
contraseña para las claves.

[operator2@serverb ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/operator2/.ssh/id_rsa): Enter
Created directory '/home/operator2/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/operator2/.ssh/id_rsa.

RH124-RHEL8.2-es-1-20200928 349
capítulo 10 | Configuración y seguridad de SSH

Your public key has been saved in /home/operator2/.ssh/id_rsa.pub.


The key fingerprint is:
SHA256:JainiQdnRosC+xXhOqsJQQLzBNUldb+jJbyrCZQBERI
[email protected]
The key's randomart image is:
+---[RSA 2048]----+
|E+*+ooo . |
|.= o.o o . |
|o.. = . . o |
|+. + * . o . |
|+ = X . S + |
| + @ + = . |
|. + = o |
|.o . . . . |
|o o.. |
+----[SHA256]-----+

4. Use el comando ssh-copy-id para enviar la clave pública del par de claves SSH a
operator2 en servera. Use redhat como la contraseña de operator2 en servera.

[operator2@serverb ~]$ ssh-copy-id operator2@servera


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/
operator1/.ssh/id_rsa.pub"
The authenticity of host 'servera (172.25.250.10)' can't be established.
ECDSA key fingerprint is SHA256:ERTdjooOIrIwVSZQnqD5or+JbXfidg0udb3DXBuHWzA.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
operator2@servera's password: redhat
Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'operator2@servera'"


and check to make sure that only the key(s) you wanted were added.

5. Confirme que pueda iniciar sesión correctamente en servera como operator2 por
medio de las claves SSH.

5.1. Abra una sesión de SSH en servera como operator2.

[operator2@serverb ~]$ ssh operator2@servera


...output omitted...
[operator2@servera ~]$

Tenga en cuenta que el comando ssh anterior usó claves SSH para la autenticación.

5.2. Cierre sesión en servera.

[operator2@servera ~]$ exit


logout
Connection to servera closed.

350 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

6. Confirme que pueda iniciar sesión correctamente en servera como root por medio de la
contraseña redhat.

6.1. Abra una sesión de SSH en servera como root por medio de la contraseña
redhat.

[operator2@serverb ~]$ ssh root@servera


root@servera's password: redhat
...output omitted...
[root@servera ~]#

Tenga en cuenta que el comando ssh anterior usó la contraseña del superusuario
para la autenticación porque las claves SSH no existen para el superusuario.

6.2. Cierre sesión en servera.

[root@servera ~]# exit


logout
Connection to servera closed.
[operator2@serverb ~]$

7. Confirme que pueda iniciar sesión correctamente en servera como operator3 por
medio de la contraseña redhat.

7.1. Abra una sesión de SSH en servera como operator3 con la contraseña redhat.

[operator2@serverb ~]$ ssh operator3@servera


operator3@servera's password: redhat
...output omitted...
[operator3@servera ~]$

Tenga en cuenta que el comando ssh anterior usó la contraseña de operator3 para
la autenticación porque las claves SSH no existen para operator3.

7.2. Cierre sesión en servera.

[operator3@servera ~]$ exit


logout
Connection to servera closed.
[operator2@serverb ~]$

8. Configure sshd en servera para evitar que los usuarios inicien sesión como root. Use la
contraseña redhat para el superusuario cuando sea necesario.

8.1. Abra una sesión de SSH en servera como operator2 por medio de las claves SSH.

[operator2@serverb ~]$ ssh operator2@servera


...output omitted...
[operator2@servera ~]$

8.2. En servera, cambie a root. Use redhat como contraseña para el usuario root.

RH124-RHEL8.2-es-1-20200928 351
capítulo 10 | Configuración y seguridad de SSH

[operator2@servera ~]$ su -
Password: redhat
[root@servera ~]#

8.3. Configure PermitRootLogin con el valor no en /etc/ssh/sshd_config y vuelva


a cargar sshd. Puede usar vim /etc/ssh/sshd_config para editar el archivo de
configuración de sshd.

...output omitted...
PermitRootLogin no
...output omitted...
[root@servera ~]# systemctl reload sshd

8.4. Abra otro terminal en workstation y abra una sesión de SSH en serverb como
operator2. Desde serverb, intente iniciar sesión en servera como root. Esto
debería fallar porque ha deshabilitado el inicio de sesión del usuario root mediante
SSH en el paso anterior.

nota
Para su comodidad, el inicio de sesión sin contraseña ya está configurado entre
workstation y serverb en el entorno del aula.

[student@workstation ~]$ ssh operator2@serverb


...output omitted...
[operator2@serverb ~]$ ssh root@servera
root@servera's password: redhat
Permission denied, please try again.
root@servera's password: redhat
Permission denied, please try again.
root@servera's password: redhat
root@servera: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Por defecto, el comando ssh intenta realizar la autenticación por medio de


la autenticación basada en claves primero y, luego, si eso falla, mediante la
autenticación basada en contraseñas.

9. Configure sshd en servera para permitir que los usuarios realicen la autenticación por
medio de claves SSH solamente, en lugar de usar sus contraseñas.

9.1. Regrese al primer terminal que tiene la shell del usuario root activa en servera.
Configure PasswordAuthentication con el valor no en /etc/ssh/
sshd_config y vuelva a cargar sshd. Puede usar vim /etc/ssh/sshd_config
para editar el archivo de configuración de sshd.

...output omitted...
PasswordAuthentication no
...output omitted...
[root@servera ~]# systemctl reload sshd

352 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

9.2. Diríjase al segundo terminal que tiene la shell del usuario operator2 activa en
serverb e intente iniciar sesión en servera como operator3. Esto debería fallar
porque las claves SSH no están configuradas para operator3, y el servicio sshd en
servera no permite el uso de contraseñas para la autenticación.

[operator2@serverb ~]$ ssh operator3@servera


operator3@servera: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

nota
Para mayor granularidad, puede usar las opciones -o
PubkeyAuthentication=no y -o PasswordAuthentication=yes explícitas
con el comando ssh. Esto le permite anular los valores predeterminados del
comando ssh y comprobar con seguridad que el comando anterior falla en función
de la configuración que haya ajustado en /etc/ssh/sshd_config en el paso
anterior.

9.3. Regrese al primer terminal que tiene la shell del usuario root activa en servera.
Verifique que PubkeyAuthentication esté habilitado en /etc/ssh/
sshd_config. Puede usar vim /etc/ssh/sshd_config para visualizar el archivo
de configuración de sshd.

...output omitted...
#PubkeyAuthentication yes
...output omitted...

Tenga en cuenta que la línea PubkeyAuthentication contiene comentarios.


Cualquier línea comentada en este archivo usa el valor predeterminado. Las líneas
comentadas indican los valores predeterminados de un parámetro. La autenticación
de clave pública de SSH está activa de forma predeterminada, como lo indica la línea
comentada.

9.4. Vuelva al segundo terminal que tiene la shell del usuario operator2 activa en
serverb e intente iniciar sesión en servera como operator2. Debería obtener
un resultado satisfactorio porque las claves SSH están configuradas para que
operator2 pueda iniciar sesión en servera desde serverb.

[operator2@serverb ~]$ ssh operator2@servera


...output omitted...
[operator2@servera ~]$

9.5. Desde el segundo terminal, salga de la shell del usuario operator2 en servera y
serverb.

[operator2@servera ~]$ exit


logout
Connection to servera closed.
[operator2@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation ~]$

9.6. Cierre el segundo terminal en workstation.

RH124-RHEL8.2-es-1-20200928 353
capítulo 10 | Configuración y seguridad de SSH

[student@workstation ~]$ exit

9.7. Desde el primer terminal, salga de la shell del usuario root en servera.

[root@servera ~]# exit


logout

9.8. Desde el primer terminal, salga de la shell del usuario operator2 en servera y
serverb.

[operator2@servera ~]$ exit


logout
Connection to servera closed.
[operator2@serverb ~]$ exit
logout
[student@serverb ~]$

9.9. Cierre la sesión de serverb y regrese a la shell del usuario student en


workstation.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab ssh-customize finish para terminar este ejercicio.

[student@workstation ~]$ lab ssh-customize finish

Esto concluye el ejercicio guiado.

354 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Trabajo de laboratorio

Configuración y seguridad de SSH


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará la autenticación basada en claves para los
usuarios y deshabilitará los inicios de sesión directos como root y la autenticación basada
en contraseñas para todos los usuarios del servicio OpenSSH en uno de sus servidores.

Resultados
Usted debe poder realizar lo siguiente:

• Realizar una autenticación por medio de claves SSH.

• Evitar que los usuarios inicien sesión directamente como root en ssh.

• Evitar que los usuarios inicien sesión en el sistema mediante la autenticación basada en
contraseñas de SSH.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab ssh-review start para comenzar el ejercicio. Este script
crea las cuentas de usuario y los archivos necesarios.

[student@workstation ~]$ lab ssh-review start

1. Desde workstation, abra una sesión de SSH para servera como student.
2. Use el comando su para cambiar a production1 en servera.
3. Use el comando ssh-keygen para generar claves SSH sin frase de contraseña para
production1 en servera.
4. Use el comando ssh-copy-id para enviar la clave pública del par de claves SSH a
production1 en serverb.
5. Confirme que pueda iniciar sesión correctamente como production1 en serverb por
medio de las claves SSH.
6. Configure sshd en serverb para evitar que los usuarios inicien sesión como root. Use la
contraseña redhat para el superusuario.
7. Configure sshd en serverb para permitir que los usuarios realicen la autenticación por
medio de claves SSH solamente, en lugar de usar sus contraseñas.

Evaluación
En workstation, ejecute el comando lab ssh-review grade para confirmar que ha
realizado correctamente este ejercicio.

RH124-RHEL8.2-es-1-20200928 355
capítulo 10 | Configuración y seguridad de SSH

[student@workstation ~]$ lab ssh-review grade

Finalizar
En workstation, ejecute lab ssh-review finish para terminar este trabajo de laboratorio.

[student@workstation ~]$ lab ssh-review finish

Esto concluye el trabajo de laboratorio.

356 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

Solución

Configuración y seguridad de SSH


Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará la autenticación basada en claves para los
usuarios y deshabilitará los inicios de sesión directos como root y la autenticación basada
en contraseñas para todos los usuarios del servicio OpenSSH en uno de sus servidores.

Resultados
Usted debe poder realizar lo siguiente:

• Realizar una autenticación por medio de claves SSH.

• Evitar que los usuarios inicien sesión directamente como root en ssh.

• Evitar que los usuarios inicien sesión en el sistema mediante la autenticación basada en
contraseñas de SSH.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab ssh-review start para comenzar el ejercicio. Este script
crea las cuentas de usuario y los archivos necesarios.

[student@workstation ~]$ lab ssh-review start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando su para cambiar a production1 en servera.

[student@servera ~]$ su - production1


Password: redhat
[production1@servera ~]$

3. Use el comando ssh-keygen para generar claves SSH sin frase de contraseña para
production1 en servera.

[production1@servera ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/production1/.ssh/id_rsa): Enter
Created directory '/home/production1/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter

RH124-RHEL8.2-es-1-20200928 357
capítulo 10 | Configuración y seguridad de SSH

Your identification has been saved in /home/production1/.ssh/id_rsa.


Your public key has been saved in /home/production1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CsWCAmWOg5qaJujLzIAcengNj3u21kbrPP4Ysl3PXCA
[email protected]
The key's randomart image is:
+---[RSA 2048]----+
|..o |
|o+ . . |
|= o . o |
|.+ o |
|o.. . E . |
|*o.= ... . . |
|Xo+ +oo.. . |
|Oo .+==+ + . |
| *o+o=*o. + |
+----[SHA256]-----+

4. Use el comando ssh-copy-id para enviar la clave pública del par de claves SSH a
production1 en serverb.

[production1@servera ~]$ ssh-copy-id production1@serverb


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/
production1/.ssh/id_rsa.pub"
The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:ERTdjooOIrIwVSZQnqD5or+JbXfidg0udb3DXBuHWzA.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
production1@serverb's password: redhat
Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'production1@serverb'"


and check to make sure that only the key(s) you wanted were added.

5. Confirme que pueda iniciar sesión correctamente como production1 en serverb por
medio de las claves SSH.

[production1@servera ~]$ ssh production1@serverb


...output omitted...
[production1@serverb ~]$

6. Configure sshd en serverb para evitar que los usuarios inicien sesión como root. Use la
contraseña redhat para el superusuario.

6.1. Use el comando su - para cambiar a root en serverb.

[production1@serverb ~]$ su -
Password: redhat
[root@serverb ~]#

358 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

6.2. Configure PermitRootLogin con el valor no en /etc/ssh/sshd_config y vuelva


a cargar sshd. Puede usar vim /etc/ssh/sshd_config para editar el archivo de
configuración de sshd.

...output omitted...
PermitRootLogin no
...output omitted...
[root@serverb ~]# systemctl reload sshd.service

6.3. Abra otro terminal en workstation y abra una sesión de SSH en servera como
production1. Desde servera, intente iniciar sesión en serverb como root. Esto
debería fallar porque ha deshabilitado el inicio de sesión del usuario root mediante
SSH en el paso anterior.

nota
Para su comodidad, el inicio de sesión sin contraseña ya está configurado entre
workstation y servera en el entorno del aula.

[student@workstation ~]$ ssh production1@servera


...output omitted...
[production1@servera ~]$ ssh root@serverb
root@serverb's password: redhat
Permission denied, please try again.
root@serverb's password: redhat
Permission denied, please try again.
root@serverb's password: redhat
root@serverb: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[production1@servera ~]$

El comando ssh anterior fue rechazado después de tres intentos fallidos de iniciar
sesión en servera como root. De manera predeterminada, el comando ssh prefiere
usar claves SSH para la autenticación, pero si no encuentra las claves necesarias del
usuario, solicita la contraseña del usuario para la autenticación.

7. Configure sshd en serverb para permitir que los usuarios realicen la autenticación por
medio de claves SSH solamente, en lugar de usar sus contraseñas.

7.1. Regrese al primer terminal que tiene la shell del usuario root activa en serverb.
Configure PasswordAuthentication con el valor no en /etc/ssh/sshd_config
y vuelva a cargar sshd. Puede usar vim /etc/ssh/sshd_config para editar el
archivo de configuración de sshd.

...output omitted...
PasswordAuthentication no
...output omitted...
[root@serverb ~]# systemctl reload sshd

7.2. Diríjase al segundo terminal que tiene la shell del usuario production1 activa en
servera e intente iniciar sesión en serverb como production2. Esto debería fallar
porque las claves SSH no están configuradas para production2, y el servicio sshd en
serverb no permite el uso de contraseñas para la autenticación.

RH124-RHEL8.2-es-1-20200928 359
capítulo 10 | Configuración y seguridad de SSH

[production1@servera ~]$ ssh production2@serverb


production2@serverb: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

nota
Para mayor granularidad, puede usar las opciones -o
PubkeyAuthentication=no y -o PasswordAuthentication=yes explícitas
con el comando ssh. Esto le permite anular los valores predeterminados del
comando ssh y comprobar con seguridad si el comando anterior realmente falla en
función de la configuración que estableció en /etc/ssh/sshd_config en el paso
anterior.

7.3. Regrese al primer terminal que tiene la shell del usuario root activa en serverb.
Verifique que PubkeyAuthentication esté habilitado en /etc/ssh/
sshd_config. Puede usar vim /etc/ssh/sshd_config para visualizar el archivo
de configuración de sshd.

...output omitted...
#PubkeyAuthentication yes
...output omitted...

Tenga en cuenta que la línea PubkeyAuthentication contiene comentarios.


Cualquier línea comentada en este archivo usa el valor predeterminado. Las líneas
comentadas indican los valores predeterminados de un parámetro. La autenticación
de clave pública de SSH está activa de forma predeterminada, como lo indica la línea
comentada.

7.4. Regrese al segundo terminal que tiene la shell del usuario production1 activa
en servera e intente iniciar sesión en serverb como production1. Debería
obtener un resultado satisfactorio porque las claves SSH están configuradas para que
production1 pueda iniciar sesión en serverb desde servera.

[production1@servera ~]$ ssh production1@serverb


...output omitted...
[production1@serverb ~]$

7.5. Desde el segundo terminal, salga de la shell del usuario production1 en serverb y
servera.

[production1@serverb ~]$ exit


logout
Connection to serverb closed.
[production1@servera ~]$ exit
logout
[student@workstation ~]$

7.6. Cierre el segundo terminal en workstation.

[student@workstation ~]$ exit

7.7. Desde el primer terminal, salga de la shell del usuario root en serverb.

360 RH124-RHEL8.2-es-1-20200928
capítulo 10 | Configuración y seguridad de SSH

[root@serverb ~]# exit


logout

7.8. Desde el primer terminal, salga de la shell del usuario production1 en serverb y
servera.

[production1@serverb ~]$ exit


logout
Connection to serverb closed.
[production1@servera ~]$ exit
logout
[student@servera ~]$

7.9. Cierre la sesión de servera y regrese a la shell del usuario student en


workstation.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab ssh-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab ssh-review grade

Finalizar
En workstation, ejecute lab ssh-review finish para terminar este trabajo de laboratorio.

[student@workstation ~]$ lab ssh-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 361
capítulo 10 | Configuración y seguridad de SSH

Resumen
En este capítulo, aprendió lo siguiente:

• El comando ssh permite a los usuarios el acceso seguro a los sistemas remotos por medio del
protocolo SSH.

• Un sistema cliente almacena las identidades de los servidores remotos en ~/.ssh/


known_hosts y /etc/ssh/ssh_known_hosts.

• SSH admite la autenticación basada en contraseñas y en claves.

• El comando ssh-keygen genera un par de claves SSH para la autenticación. El comando ssh-
copy-id exporta la clave pública a sistemas remotos.

• El servicio sshd implementa el protocolo SSH en los sistemas de Red Hat Enterprise Linux.

• Una práctica recomendada para configurar sshd es deshabilitar los inicios de sesión remotos
como root y requerir la autenticación de clave pública en lugar de la autenticación basada en
contraseña.

362 RH124-RHEL8.2-es-1-20200928
capítulo 11

Análisis y almacenamiento de
registros
Meta Ubicar e interpretar correctamente registros
de eventos del sistema para la resolución de
problemas.

Objetivos • Describir la arquitectura básica de registro que


emplea Red Hat Enterprise Linux para registrar
eventos
• Interpretar eventos en archivos syslog
relevantes a los fines de resolver problemas o
revisar el estado del sistema
• Buscar e interpretar entradas en el diario del
sistema para resolver problemas o revisar el
estado del sistema
• Configurar el diario del sistema para resguardar
el registro de eventos cuando se reinicia un
servidor
• Mantener una sincronización de hora precisa
por medio de NTP y configurar la zona horaria
para garantizar marcas de tiempo correctas
para los eventos registrados por el diario y los
registros del sistema

Secciones • Descripción de la arquitectura de registro del


sistema (y cuestionario)
• Revisión de archivos syslog (y ejercicio guiado)
• Revisión de entradas del diario del sistema (y
ejercicio guiado)
• Resguardo del diario del sistema (y ejercicio
guiado)
• Mantenimiento de la hora correcta (y ejercicio
guiado)

Trabajo de Análisis y almacenamiento de registros


laboratorio

RH124-RHEL8.2-es-1-20200928 363
capítulo 11 | Análisis y almacenamiento de registros

Descripción de la arquitectura de registro


del sistema

Objetivos
Tras finalizar esta sección, usted debe poder describir la arquitectura de registro básica que
emplea Red Hat Enterprise Linux para registrar eventos.

Registro del sistema


Los procesos y el kernel del sistema operativo llevan un registro de los eventos que suceden. Estos
registros se usan para realizar una auditoría del sistema y solucionar problemas.

Muchos sistemas registran registros de eventos en archivos de texto que se guardan en el


directorio /var/log. Estos registros se pueden inspeccionar utilizando las utilidades de texto
normales, como less y tail.

Red Hat Enterprise Linux incluye un sistema de registro estándar que se basa en el protocolo
Syslog. Muchos programas usan este sistema para registrar eventos y organizarlos en archivos de
registro. Los servicios systemd-journald y rsyslog se encargan de gestionar los mensajes de
syslog en Red Hat Enterprise Linux 8.

El servicio systemd-journald está en el corazón de la arquitectura de registro de eventos del


sistema operativo. Recolecta mensajes de eventos desde muchas fuentes, incluido el kernel, la
salida de las primeras etapas del proceso de arranque, la salida estándar y el error estándar de
los daemons cuando se inician y se ejecutan, y los eventos de syslog. Luego, los reestructura en
un formato estándar y los escribe en un diario de sistema indexado y estructurado. De forma
predeterminada, este diario se almacena en un sistema de archivos que no persiste en los reinicios.

Sin embargo, el servicio rsyslog lee los mensajes de syslog recibidos por systemd-journald
desde el diario a medida que llegan. Luego procesa los eventos del registro del sistema, los
registra en sus archivos de registro o los reenvía a otros servicios de acuerdo con su propia
configuración.

El servicio rsyslog ordena y escribe mensajes de syslog en los archivos de registro que no
persisten en los reinicios en /var/log. El servicio rsyslog clasifica los mensajes de registro en
archivos de registro específicos según el tipo de programa que envió cada mensaje, o instalación, y
la prioridad de cada mensaje de syslog.

Además de los archivos de mensajes de syslog, el directorio /var/log contiene archivos de


registro de otros servicios en el sistema. En la siguiente tabla, se enumeran algunos archivos útiles
del directorio /var/log.

Archivos de registro del sistema seleccionados

Archivo de registro Tipo de mensajes almacenados

/var/log/messages La mayoría de los mensajes de syslog se registran aquí. Las


excepciones incluyen mensajes relacionados con tareas de
autenticación y procesamiento de correos electrónicos, con
ejecución de trabajos programados y aquellos relacionados
exclusivamente con tareas de depuración.

364 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Archivo de registro Tipo de mensajes almacenados

/var/log/secure Mensajes de syslog relacionados con eventos de seguridad y


autenticación.

/var/log/maillog Mensajes de syslog relacionados con el servidor de correo

/var/log/cron Mensajes de syslog relacionados con la ejecución de trabajos


programados.

/var/log/boot.log Mensajes de la consola que no son de syslog relacionados con el


inicio del sistema.

nota
Algunas aplicaciones no usan syslog para administrar sus mensajes de registro,
aunque, por lo general, colocan sus archivos de registro en un subdirectorio de /
var/log. Por ejemplo, el servidor web Apache guarda los mensajes de registro en
archivos en un subdirectorio del directorio /var/log.

Referencias
Páginas de manual systemd-journald.service(8), rsyslogd(8) y
rsyslog.conf(5)

Para obtener más información, consulte la sección Solución de problemas mediante


el uso de archivos de registro en la guía Configuración básica de sistemas de
Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#troubleshooting-problems-using-
log-files_getting-started-with-system-administration

RH124-RHEL8.2-es-1-20200928 365
capítulo 11 | Análisis y almacenamiento de registros

Cuestionario

Descripción de la arquitectura de registro


del sistema
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué archivo de registro almacena la mayoría de los mensajes de syslog, excepto los
relacionados con la autenticación, el correo, los trabajos programados y la depuración?
a. /var/log/maillog
b. /var/log/boot.log
c. /var/log/messages
d. /var/log/secure

2. ¿Qué archivo de registro almacena los mensajes de syslog relacionados con las
operaciones de seguridad y autenticación en el sistema?
a. /var/log/maillog
b. /var/log/boot.log
c. /var/log/messages
d. /var/log/secure

3. ¿Qué servicio ordena y organiza los mensajes de syslog en archivos en /var/log?


a. rsyslog
b. systemd-journald
c. auditd
d. sintonizado

4. ¿Qué directorio contiene los archivos de syslog que pueden leer las personas?
a. /sys/kernel/debug
b. /var/log/journal
c. /run/log/journal
d. /var/log

5. ¿Qué archivo almacena mensajes de syslog relacionados con el servidor de correo?


a. /var/log/lastlog
b. /var/log/maillog
c. /var/log/tallylog
d. /var/log/boot.log

366 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

6. ¿Qué archivo almacena mensajes de syslog relacionados con los trabajos


programados?
a. /var/log/cron
b. /var/log/tallylog
c. /var/log/spooler
d. /var/log/secure

7. ¿Qué archivo almacena mensajes de la consola relacionados con el inicio del sistema?
a. /var/log/messages
b. /var/log/cron
c. /var/log/boot.log
d. /var/log/secure

RH124-RHEL8.2-es-1-20200928 367
capítulo 11 | Análisis y almacenamiento de registros

Solución

Descripción de la arquitectura de registro


del sistema
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué archivo de registro almacena la mayoría de los mensajes de syslog, excepto los
relacionados con la autenticación, el correo, los trabajos programados y la depuración?
a. /var/log/maillog
b. /var/log/boot.log
c. /var/log/messages
d. /var/log/secure

2. ¿Qué archivo de registro almacena los mensajes de syslog relacionados con las
operaciones de seguridad y autenticación en el sistema?
a. /var/log/maillog
b. /var/log/boot.log
c. /var/log/messages
d. /var/log/secure

3. ¿Qué servicio ordena y organiza los mensajes de syslog en archivos en /var/log?


a. rsyslog
b. systemd-journald
c. auditd
d. sintonizado

4. ¿Qué directorio contiene los archivos de syslog que pueden leer las personas?
a. /sys/kernel/debug
b. /var/log/journal
c. /run/log/journal
d. /var/log

5. ¿Qué archivo almacena mensajes de syslog relacionados con el servidor de correo?


a. /var/log/lastlog
b. /var/log/maillog
c. /var/log/tallylog
d. /var/log/boot.log

368 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

6. ¿Qué archivo almacena mensajes de syslog relacionados con los trabajos


programados?
a. /var/log/cron
b. /var/log/tallylog
c. /var/log/spooler
d. /var/log/secure

7. ¿Qué archivo almacena mensajes de la consola relacionados con el inicio del sistema?
a. /var/log/messages
b. /var/log/cron
c. /var/log/boot.log
d. /var/log/secure

RH124-RHEL8.2-es-1-20200928 369
capítulo 11 | Análisis y almacenamiento de registros

Revisión de archivos Syslog

Objetivos
Tras finalizar esta sección, deberá poder interpretar los eventos en los archivos syslog relevantes
para solucionar problemas o revisar el estado del sistema.

Registro de eventos en el sistema


Muchos programas usan el protocolo syslog para registrar eventos en el sistema. Cada mensaje
se clasifica por facility (tipo de mensaje) y prioridad (gravedad del mensaje). Los tipos (facilities)
disponibles se detallan en la página de manual rsyslog.conf(5).

En la siguiente tabla, se enumeran las ocho prioridades estándares de syslog, de mayor a menor.

Descripción general de las prioridades de syslog

Código Prioridad Gravedad

0 emerg El sistema no se puede usar

1 alert Se debe implementar una acción de inmediato

2 crit Condición crítica

3 err Condición de error no crítica

4 warning Condición de advertencia

5 notice Evento normal, pero importante

6 info Evento informativo

7 depurar Mensaje de nivel de depuración

El servicio rsyslog usa el tipo (facility) y la prioridad de los mensajes de registro para determinar
cómo resolverlos. Esto está configurado por reglas en el archivo /etc/rsyslog.conf y
cualquier archivo en el directorio /etc/rsyslog.d que tiene una extensión de nombre de
archivo de .conf. Los paquetes de software pueden agregar reglas fácilmente instalando un
archivo apropiado en el directorio /etc/rsyslog.d.

Cada regla que controla cómo ordenar los mensajes de syslog es una línea en uno de los archivos
de configuración. En el lado izquierdo de cada línea, se indican el tipo (facility) y la gravedad del
mensaje de syslog que se corresponde con la regla. En el lado derecho de cada línea, se indica
en qué archivo se debe guardar el mensaje de registro (o a donde más enviar el mensaje). Un
asterisco (*) es un comodín que coincide con todos los valores.

Por ejemplo, la siguiente línea registraría los mensajes enviados al facility authpriv en cualquier
prioridad para el archivo /var/log/secure:

370 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

authpriv.* /var/log/secure

Los mensajes de registro a veces coinciden con más de una regla en rsyslog.conf. En tales
casos, un mensaje se almacena en más de un archivo de registro. Para limitar los mensajes
almacenados, la palabra clave none en el campo de prioridad señala que no se deben almacenar
mensajes para el tipo (facility) indicado en el archivo dado.

En lugar de registrar mensajes de syslog en un archivo, también pueden imprimirse en las


terminales de todos los usuarios que hayan iniciado sesión. El archivo rsyslog.conf tiene una
configuración para imprimir todos los mensajes de syslog con la prioridad emerg en las terminales
de todos los usuarios que hayan iniciado sesión.

Muestra de las reglas de Rsyslog


#### RULES ####

# Log all kernel messages to the console.


# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.


# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.


authpriv.* /var/log/secure

# Log all the mail messages in one place.


mail.* -/var/log/maillog

# Log cron stuff


cron.* /var/log/cron

# Everybody gets emergency messages


*.emerg :omusrmsg:*

# Save news errors of level crit and higher in a special file.


uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log


local7.* /var/log/boot.log

nota
El subsistema de syslog tiene muchas más características que no se incluyen
en este curso. Si desea explorar más a fondo, consulte la página del manual
rsyslog.conf(5) y toda la documentación HTML en /usr/share/doc/
rsyslog/html/index.html contenida en el paquete rsyslog-doc, disponible del
repositorio de AppStream en Red Hat Enterprise Linux 8.

RH124-RHEL8.2-es-1-20200928 371
capítulo 11 | Análisis y almacenamiento de registros

Rotación del archivo de registro


La herramienta logrotate rota los archivos de registro para evitar que ocupen demasiado
espacio en el sistema de archivos que contiene el directorio /var/log. Cuando se rota un
archivo de registro, se le cambia el nombre con una extensión que indica la fecha en que se
rotó. Por ejemplo, el archivo /var/log/messages anterior puede pasar a ser /var/log/
messages-20190130 si se rota el 30-1-2019. Una vez que se rotó el archivo de registro anterior,
se crea un nuevo archivo de registro y se notifica al servicio que escribe en este.

Después de una determinada cantidad de rotaciones, habitualmente después de cuatro semanas,


el archivo de registro más viejo se descarta para liberar espacio en disco. Un trabajo programado
ejecuta el programa logrotate a diario para verificar si es necesario rotar algún registro. La
mayoría de los archivos de registro se rotan semanalmente, pero logrotate rota un poco más
rápidamente o más lento, o cuando alcanza un tamaño determinado.

La configuración de logrotate no se aborda en este curso. Si desea obtener más información,


consulte la página del manual logrotate(8).

Análisis de una entrada de syslog


Los mensajes de registro comienzan con el mensaje más antiguo en la parte superior y el mensaje
más nuevo al final del archivo de registro. El servicio rsyslog usa un formato estándar al registrar
las entradas en los archivos de registro. En el siguiente ejemplo, se explica la anatomía de un
mensaje de registro en el archivo de registro /var/log/secure.

Feb 11 20:11:48 localhost sshd[1433]: Failed password for student from


172.25.0.10 port 59344 ssh2

La marca de tiempo cuando se grabó la entrada de registro


El host desde donde se envió el mensaje de registro
El nombre del programa o el proceso y el número de PID que envió el mensaje de registro
El mensaje real enviado

Monitoreo de registros
Para reproducir problemas e inconvenientes, es útil monitorear uno o más archivos de registro para
eventos. El comando tail -f /path/to/file proporciona las últimas 10 líneas del archivo
especificado y continúa ofreciendo líneas nuevas en el archivo a medida que se escriben.

Por ejemplo, para monitorear los intentos fallidos de inicio de sesión, ejecute el comando tail en
un terminal y, luego, en otro terminal, ejecute el comando ssh como el usuario root mientras un
usuario intenta iniciar sesión en el sistema.

En el primer terminal, ejecute el siguiente comando tail:

[root@host ~]# tail -f /var/log/secure

En el segundo terminal, ejecute el siguiente comando ssh:

[root@host ~]# ssh root@localhost


root@localhost's password: redhat
...output omitted...
[root@host ~]#

372 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Regrese al primer terminal y visualice los registros.

...output omitted...
Feb 10 09:01:13 host sshd[2712]: Accepted password for root from 172.25.254.254
port 56801 ssh2
Feb 10 09:01:13 host sshd[2712]: pam_unix(sshd:session): session opened for user
root by (uid=0)

Envío manual de mensajes Syslog


El comando logger puede enviar mensajes al servicio rsyslog. De manera predeterminada,
envía el mensaje al tipo (facility) user con la notice prioridad (user.notice), a menos que
se especifique lo contrario con la opción -p. Es útil probar los cambios en la configuración del
servicio rsyslog.

Para enviar un mensaje al servicio rsyslog que se graba en el archivo de registro /var/log/
boot.log, ejecute el siguiente comando logger:

[root@host ~]# logger -p local7.notice "Log entry created on host"

Referencias
Páginas de manual logger(1), tail(1), rsyslog.conf(5) y logrotate(8)

Manual de rsyslog

• /usr/share/doc/rsyslog/html/index.html provisto por el paquete


rsyslog-doc

Para obtener más información, consulte la sección Solución de problemas mediante


el uso de archivos de registro en la guía Configuración básica de sistemas de
Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#troubleshooting-problems-using-
log-files_getting-started-with-system-administration

RH124-RHEL8.2-es-1-20200928 373
capítulo 11 | Análisis y almacenamiento de registros

Ejercicio Guiado

Revisión de archivos Syslog


En este ejercicio, volverá a configurar rsyslog para escribir mensajes de registro
específicos en un archivo nuevo.

Resultados
Debe poder configurar el servicio rsyslog para escribir todos los mensajes de registro con
la prioridad debug en el archivo de registro /var/log/messages-debug.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-configure start para comenzar el ejercicio. Este


script asegura que el entorno esté configurado correctamente.

[student@workstation ~]$ lab log-configure start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Configure rsyslog en servera para registrar todos los mensajes con la prioridad debug,
o una prioridad más elevada, para cualquier servicio en un archivo de registro /var/log/
messages-debug nuevo mediante el agregado del archivo configuración rsyslog /etc/
rsyslog.d/debug.conf.

2.1. Use el comando sudo -i para cambiar al usuario root. Especifique la contraseña
student para el usuario student si se le solicita cuando ejecute el comando sudo
-i.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

2.2. Cree el archivo /etc/rsyslog.d/debug.conf con las entradas necesarias


para redirigir todos los mensajes de registro con prioridad debug a /var/log/
messages-debug. Puede usar el comando vim /etc/rsyslog.d/debug.conf
para crear el archivo con el siguiente contenido.

*.debug /var/log/messages-debug

Esta línea de configuración captura los mensajes de syslog con cualquier facility y
un nivel debug o de prioridad superior. El servicio rsyslog escribirá esos mensajes

374 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

que coinciden en el archivo /var/log/messages-debug. El comodín (*) en los


campos facility o priority de la línea de configuración indica cualquier facility o
prioridad.

2.3. Reinicie el servicio rsyslog.

[root@servera ~]# systemctl restart rsyslog

3. Verifique que todos los mensajes de registro con prioridad debug aparezcan en el archivo /
var/log/messages-debug.

3.1. Use el comando logger con la opción -p para generar un mensaje de registro con
facility user y prioridad debug.

[root@servera ~]# logger -p user.debug "Debug Message Test"

3.2. Use el comando tail para ver los últimos diez mensajes de registro del archivo /
var/log/messages-debug y confirmar que visualiza el mensaje Debug Message
Test (Prueba de mensaje de depuración) entre los otros mensajes de registro.

[root@servera ~]# tail /var/log/messages-debug


Feb 13 18:22:38 servera systemd[1]: Stopping System Logging Service...
Feb 13 18:22:38 servera rsyslogd[25176]: [origin software="rsyslogd"
swVersion="8.37.0-9.el8" x-pid="25176" x-info="http://www.rsyslog.com"] exiting
on signal 15.
Feb 13 18:22:38 servera systemd[1]: Stopped System Logging Service.
Feb 13 18:22:38 servera systemd[1]: Starting System Logging Service...
Feb 13 18:22:38 servera rsyslogd[25410]: environment variable TZ is not set, auto
correcting this to TZ=/etc/localtime [v8.37.0-9.el8 try http://www.rsyslog.com/
e/2442 ]
Feb 13 18:22:38 servera systemd[1]: Started System Logging Service.
Feb 13 18:22:38 servera rsyslogd[25410]: [origin software="rsyslogd"
swVersion="8.37.0-9.el8" x-pid="25410" x-info="http://www.rsyslog.com"] start
Feb 13 18:27:58 servera student[25416]: Debug Message Test

3.3. Salga de las shells de los usuarios root y student en servera para volver a la shell
del usuario student en workstation.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab log-configure finish para terminar este ejercicio. Este
script garantiza que el entorno se restaure a un estado limpio.

[student@workstation ~]$ lab log-configure finish

RH124-RHEL8.2-es-1-20200928 375
capítulo 11 | Análisis y almacenamiento de registros

Esto concluye el ejercicio guiado.

376 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Revisión de las entradas del diario


(journal) del sistema

Objetivos
Tras finalizar esta sección, deberá poder encontrar e interpretar las entradas en el diario (journal)
del sistema para solucionar problemas o revisar el estado del sistema.

Cómo encontrar eventos


El servicio systemd-journald almacena datos de registro en un archivo binario estructurado
e indexado, que se denomina diario (journal). Estos datos incluyen información adicional sobre el
evento de registro. Por ejemplo, en el caso de los eventos de syslog, esto incluye el tipo (facility) y
la prioridad del mensaje original.

Importante
En Red Hat Enterprise Linux 8, el directorio /run/log almacena el diario del
sistema de forma predeterminada. El contenido del directorio /run/log se borra
después de un reinicio. Puede cambiar esta configuración, y cómo hacerlo se explica
más adelante en este capítulo.

Para recuperar mensajes de registro del diario, use el comando journalctl. Puede usar este
comando para ver todos los mensajes en el diario o para buscar eventos específicos basados
en una amplia gama de opciones y criterios. Si ejecuta el comando como root, tiene acceso
completo al diario. Los usuarios normales también pueden usar este comando, pero se les puede
restringir la visualización de ciertos mensajes.

[root@host ~]# journalctl


...output omitted...
Feb 21 17:46:25 host.lab.example.com systemd[24263]: Stopped target Sockets.
Feb 21 17:46:25 host.lab.example.com systemd[24263]: Closed D-Bus User Message Bus
Socket.
Feb 21 17:46:25 host.lab.example.com systemd[24263]: Closed Multimedia System.
Feb 21 17:46:25 host.lab.example.com systemd[24263]: Reached target Shutdown.
Feb 21 17:46:25 host.lab.example.com systemd[24263]: Starting Exit the Session...
Feb 21 17:46:25 host.lab.example.com systemd[24268]: pam_unix(systemd-
user:session): session c>
Feb 21 17:46:25 host.lab.example.com systemd[1]: Stopped User Manager for UID
1001.
Feb 21 17:46:25 host.lab.example.com systemd[1]: [email protected]:
Unit not neede>
Feb 21 17:46:25 host.lab.example.com systemd[1]: Stopping /run/user/1001 mount
wrapper...
Feb 21 17:46:25 host.lab.example.com systemd[1]: Removed slice User Slice of UID
1001.
Feb 21 17:46:25 host.lab.example.com systemd[1]: Stopped /run/user/1001 mount
wrapper.
Feb 21 17:46:36 host.lab.example.com sshd[24434]: Accepted publickey for root from
172.25.250.>

RH124-RHEL8.2-es-1-20200928 377
capítulo 11 | Análisis y almacenamiento de registros

Feb 21 17:46:37 host.lab.example.com systemd[1]: Started Session 20 of user root.


Feb 21 17:46:37 host.lab.example.com systemd-logind[708]: New session 20 of user
root.
Feb 21 17:46:37 host.lab.example.com sshd[24434]: pam_unix(sshd:session): session
opened for u>
Feb 21 18:01:01 host.lab.example.com CROND[24468]: (root) CMD (run-parts /etc/
cron.hourly)
Feb 21 18:01:01 host.lab.example.com run-parts[24471]: (/etc/cron.hourly) starting
0anacron
Feb 21 18:01:01 host.lab.example.com run-parts[24477]: (/etc/cron.hourly) finished
0anacron
lines 1464-1487/1487 (END) q

El comando journalctl destaca los mensajes de registro importantes: los mensajes con
prioridad notice o warning se muestran en negrita, y los mensajes con prioridad error o una
prioridad mayor se muestran en rojo.

La clave para usar en forma correcta el diario (journal) para la solución de problemas y auditorías
es limitar las búsquedas en el diario (journal) para mostrar solo la salida relevante.

De manera predeterminada, journalctl -n muestra las 10 últimas entradas de registro.


Puede ajustar esto con un argumento opcional que especifique cuántas entradas de registro se
mostrarán. Para las últimas cinco entradas de registro, ejecute el siguiente comando journalctl:

[root@host ~]# journalctl -n 5


-- Logs begin at Wed 2019-02-20 16:01:17 +07, end at Thu 2019-02-21 18:01:01 +07.
--
...output omitted...
Feb 21 17:46:37 host.lab.example.com systemd-logind[708]: New session 20 of user
root.
Feb 21 17:46:37 host.lab.example.com sshd[24434]: pam_unix(sshd:session): session
opened for u>
Feb 21 18:01:01 host.lab.example.com CROND[24468]: (root) CMD (run-parts /etc/
cron.hourly)
Feb 21 18:01:01 host.lab.example.com run-parts[24471]: (/etc/cron.hourly) starting
0anacron
Feb 21 18:01:01 host.lab.example.com run-parts[24477]: (/etc/cron.hourly) finished
0anacron
lines 1-6/6 (END) q

Al igual que el comando tail -f, el comando journalctl -f ofrece las últimas 10 líneas
del diario (journal) del sistema y continúa proporcionando entradas del diario (journal) nuevas
a medida que se escriben en el diario (journal). Para salir del proceso journalctl -f, use la
combinación de teclas Ctrl+C.

[root@host ~]# journalctl -f


-- Logs begin at Wed 2019-02-20 16:01:17 +07. --
...output omitted...
Feb 21 18:01:01 host.lab.example.com run-parts[24477]: (/etc/cron.hourly) finished
0anacron
Feb 21 18:22:42 host.lab.example.com sshd[24437]: Received disconnect from
172.25.250.250 port 48710:11: disconnected by user
Feb 21 18:22:42 host.lab.example.com sshd[24437]: Disconnected from user root
172.25.250.250 port 48710

378 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Feb 21 18:22:42 host.lab.example.com sshd[24434]: pam_unix(sshd:session): session


closed for user root
Feb 21 18:22:42 host.lab.example.com systemd-logind[708]: Session 20 logged out.
Waiting for processes to exit.
Feb 21 18:22:42 host.lab.example.com systemd-logind[708]: Removed session 20.
Feb 21 18:22:43 host.lab.example.com sshd[24499]: Accepted
publickey for root from 172.25.250.250 port 48714 ssh2: RSA
SHA256:1UGybTe52L2jzEJa1HLVKn9QUCKrTv3ZzxnMJol1Fro
Feb 21 18:22:44 host.lab.example.com systemd-logind[708]: New session 21 of user
root.
Feb 21 18:22:44 host.lab.example.com systemd[1]: Started Session 21 of user root.
Feb 21 18:22:44 host.lab.example.com sshd[24499]: pam_unix(sshd:session): session
opened for user root by (uid=0)
^C
[root@host ~]#

Para solucionar problemas, se recomienda filtrar el resultado del diario (journal) en función de la
prioridad de las entradas del diario (journal). El journalctl -p usa el nombre o el número de un
nivel de prioridad y muestra las entradas del diario (journal) del nivel dado o del nivel superior. El
comando journalctl comprende los niveles de prioridad debug, info, notice, warning, err,
crit, alert y emerg.

Ejecute el siguiente comando journalctl para enumerar las entradas del diario (journal) con
prioridad err o prioridad superior:

[root@host ~]# journalctl -p err


-- Logs begin at Wed 2019-02-20 16:01:17 +07, end at Thu 2019-02-21 18:01:01 +07.
--
..output omitted...
Feb 20 16:01:17 host.lab.example.com kernel: Detected CPU family 6 model 13
stepping 3
Feb 20 16:01:17 host.lab.example.com kernel: Warning: Intel Processor - this
hardware has not undergone testing by Red Hat and might not be certif>
Feb 20 16:01:20 host.lab.example.com smartd[669]: DEVICESCAN failed: glob(3)
aborted matching pattern /dev/discs/disc*
Feb 20 16:01:20 host.lab.example.com smartd[669]: In the system's table of devices
NO devices found to scan
lines 1-5/5 (END) q

Cuando se buscan eventos específicos, puede limitar el resultado a un período específico.


El comando journalctl tiene dos opciones para limitar el resultado a un rango de tiempo
determinado, las opciones --since y --until. Ambas opciones consideran un argumento
de tiempo con el formato "DD-MM-AAAA hh:mm:ss" (las comillas dobles son necesarias para
conservar el espacio en la opción). Si se omite la fecha, el comando adopta la fecha actual, y si
no se indica la hora, el comando asume que el día completo comienza a las 00:00:00. Ambas
opciones consideran yesterday, today y tomorrow como argumentos válidos, además del
campo de fecha y hora.

Ejecute el siguiente comando journalctl para enumerar todas las entradas del diario (journal)
de los registros de hoy.

RH124-RHEL8.2-es-1-20200928 379
capítulo 11 | Análisis y almacenamiento de registros

[root@host ~]# journalctl --since today


-- Logs begin at Wed 2019-02-20 16:01:17 +07, end at Thu 2019-02-21 18:31:14 +07.
--
...output omitted...
Feb 21 18:22:44 host.lab.example.com systemd-logind[708]: New session 21 of user
root.
Feb 21 18:22:44 host.lab.example.com systemd[1]: Started Session 21 of user root.
Feb 21 18:22:44 host.lab.example.com sshd[24499]: pam_unix(sshd:session): session
opened for user root by (uid=0)
Feb 21 18:31:13 host.lab.example.com systemd[1]: Starting dnf makecache...
Feb 21 18:31:14 host.lab.example.com dnf[24533]: Red Hat Enterprise Linux 8.0
AppStream (dvd) 637 kB/s | 2.8 kB 00:00
Feb 21 18:31:14 host.lab.example.com dnf[24533]: Red Hat Enterprise Linux 8.0
BaseOS (dvd) 795 kB/s | 2.7 kB 00:00
Feb 21 18:31:14 host.lab.example.com dnf[24533]: Metadata cache created.
Feb 21 18:31:14 host.lab.example.com systemd[1]: Started dnf makecache.
lines 533-569/569 (END) q

Ejecute el siguiente comando journalctl para enumerar todas las entradas del diario (journal)
que van del 10-2-2019 20:30:00 al 13-2-2019 12:00:00.

[root@host ~]# journalctl --since "2019-02-10 20:30:00" \


--until "2019-02-13 12:00:00"
...output omitted...

También puede especificar todas las entradas desde un tiempo relativo al presente. Por ejemplo,
para especificar todas las entradas en la última hora, puede usar el siguiente comando:

[root@host ~]# journalctl --since "-1 hour"


...output omitted...

nota
Puede utilizar otras especificaciones de tiempo más sofisticadas con las
opciones --since y --until. Para algunos ejemplos, vea la página del manual
systemd.time(7)

Además del contenido visible del diario (journal), existen campos adjuntos a las entradas del
registro que solo pueden verse cuando se activa el resultado de explicación extensa. Para filtrar
el resultado de una consulta del diario (journal), puede usarse cualquier campo adicional que
se muestra. Esto es útil para restringir el resultado de búsquedas complejas para determinados
eventos del diario (journal).

[root@host ~]# journalctl -o verbose


-- Logs begin at Wed 2019-02-20 16:01:17 +07, end at Thu 2019-02-21 18:31:14 +07.
--
...output omitted...
Thu 2019-02-21 18:31:14.509128 +07...
PRIORITY=6
_BOOT_ID=4409bbf54680496d94e090de9e4a9e23
_MACHINE_ID=73ab164e278e48be9bf80e80714a8cd5

380 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

SYSLOG_FACILITY=3
SYSLOG_IDENTIFIER=systemd
_UID=0
_GID=0
CODE_FILE=../src/core/job.c
CODE_LINE=826
CODE_FUNC=job_log_status_message
JOB_TYPE=start
JOB_RESULT=done
MESSAGE_ID=39f53479d3a045ac8e11786248231fbf
_TRANSPORT=journal
_PID=1
_COMM=systemd
_EXE=/usr/lib/systemd/systemd
_CMDLINE=/usr/lib/systemd/systemd --switched-root --system --deserialize 18
_CAP_EFFECTIVE=3fffffffff
_SELINUX_CONTEXT=system_u:system_r:init_t:s0
_SYSTEMD_CGROUP=/init.scope
_SYSTEMD_UNIT=init.scope
_SYSTEMD_SLICE=-.slice
UNIT=dnf-makecache.service
MESSAGE=Started dnf makecache.
_HOSTNAME=host.lab.example.com
INVOCATION_ID=d6f90184663f4309835a3e8ab647cb0e
_SOURCE_REALTIME_TIMESTAMP=1550748674509128
lines 32239-32275/32275 (END) q

En la siguiente lista, se proporcionan los campos comunes del diario (journal) del sistema que se
pueden usar para buscar líneas relevantes para un proceso o evento en particular.

• _COMM, es el nombre del comando


• _EXE, es la ruta hacia el ejecutable para el proceso
• _PID, es la PID del proceso
• _UID, es la UID del usuario que ejecuta el proceso
• _SYSTEMD_UNIT, es la unidad systemd que inició el proceso

Es posible combinar más de un campo del diario (journal) del sistema para realizar una búsqueda
detallada con el comando journalctl. Por ejemplo, el siguiente comando journalctl muestra
todas las entradas del diario (journal) relacionadas con la unidad sshd.service systemd de un
proceso con la PID 1182.

[root@host ~]# journalctl _SYSTEMD_UNIT=sshd.service _PID=1182


Apr 03 19:34:27 host.lab.example.com sshd[1182]: Accepted password for root
from ::1 port 52778 ssh2
Apr 03 19:34:28 host.lab.example.com sshd[1182]: pam_unix(sshd:session): session
opened for user root by (uid=0)
...output omitted...

nota
Para obtener una lista de los campos más usados del diario (journal), consulte la
página del manual systemd.journal-fields(7).

RH124-RHEL8.2-es-1-20200928 381
capítulo 11 | Análisis y almacenamiento de registros

Referencias
Páginas del manual journalctl(1), systemd.journal-fields(7) y
systemd.time(7)

Para obtener más información, consulte la sección Solución de problemas mediante


el uso de archivos de registro en la guía Configuración básica de sistemas de
Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#troubleshooting-problems-using-
log-files_getting-started-with-system-administration

382 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Ejercicio Guiado

Revisión de las entradas del diario


(journal) del sistema
En este ejercicio, buscará en el diario (journal) del sistema las entradas que registren eventos
que coincidan con criterios específicos.

Resultados
Deberá ser capaz de buscar en el diario (journal) del sistema las entradas que registran
eventos en función de diferentes criterios.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-query start para comenzar el ejercicio. Este script
asegura que el entorno esté configurado correctamente.

[student@workstation ~]$ lab log-query start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use la coincidencia _PID=1 con el comando journalctl para mostrar solo los eventos
de registro que se originan del proceso systemd que se ejecuta con el identificador de
proceso 1 en servera. Para salir de journalctl, presione q.

[student@servera ~]$ journalctl _PID=1


...output omitted...
Feb 13 13:21:08 localhost systemd[1]: Found device /dev/disk/by-uuid/
cdf61ded-534c-4bd6-b458-cab18b1a72ea.
Feb 13 13:21:08 localhost systemd[1]: Started dracut initqueue hook.
Feb 13 13:21:08 localhost systemd[1]: Found device /dev/disk/by-
uuid/44330f15-2f9d-4745-ae2e-20844f22762d.
Feb 13 13:21:08 localhost systemd[1]: Reached target Initrd Root Device.
lines 1-5/5 (END) q
[student@servera ~]$

nota
El comando journalctl puede producir un resultado diferente en su sistema.

RH124-RHEL8.2-es-1-20200928 383
capítulo 11 | Análisis y almacenamiento de registros

3. Use la coincidencia _UID=81 con el comando journalctl para visualizar todos los
eventos de registro que se originan de un servicio del sistema que se inició con el
identificador de usuario 81 en servera. Para salir de journalctl, presione q.

[student@servera ~]$ journalctl _UID=81


...output omitted...
Feb 22 01:29:09 servera.lab.example.com dbus-daemon[672]: [system] Activating via
systemd: service name='org.freedesktop.nm_dispatcher'>
Feb 22 01:29:09 servera.lab.example.com dbus-daemon[672]: [system] Successfully
activated service 'org.freedesktop.nm_dispatcher'
lines 1-5/5 (END) q
[student@servera ~]$

4. Use la opción -p warning con el comando journalctl para visualizar eventos


de registro con prioridad warning y prioridad superior en servera. Para salir de
journalctl, presione q.

[student@servera ~]$ journalctl -p warning


...output omitted...
Feb 13 13:21:07 localhost kernel: Detected CPU family 6 model 13 stepping 3
Feb 13 13:21:07 localhost kernel: Warning: Intel Processor - this hardware has not
undergone testing by Red Hat and might not >
Feb 13 13:21:07 localhost kernel: acpi PNP0A03:00: fail to add MMCONFIG
information, can't access extended PCI configuration s>
Feb 13 13:21:07 localhost rpc.statd[288]: Running as root. chown /var/lib/nfs/
statd to choose different user
Feb 13 13:21:07 localhost rpc.idmapd[293]: Setting log level to 0
...output omitted...
Feb 13 13:21:13 servera.lab.example.com rsyslogd[1172]: environment variable TZ is
not set, auto correcting this to TZ=/etc/lo>
Feb 13 14:51:42 servera.lab.example.com systemd[1]: cgroup compatibility
translation between legacy and unified hierarchy sett>
Feb 13 17:15:37 servera.lab.example.com rsyslogd[25176]: environment variable TZ
is not set, auto correcting this to TZ=/etc/l>
Feb 13 18:22:38 servera.lab.example.com rsyslogd[25410]: environment variable TZ
is not set, auto correcting this to TZ=/etc/l>
Feb 13 18:47:55 servera.lab.example.com rsyslogd[25731]: environment variable TZ
is not set, auto correcting this to TZ=/etc/l>
lines 1-17/17 (END) q
[student@servera ~]$

5. Muestre todos los eventos de registro registrados en los últimos 10 minutos a partir de la
hora actual en servera.

5.1. Use la opción --since con el comando journalctl para visualizar todos los
eventos de registro registrados en los últimos 10 minutos en servera. Para salir de
journalctl, presione q.

[student@servera ~]$ journalctl --since "-10min"


...output omitted...
Feb 13 22:31:01 servera.lab.example.com CROND[25890]: (root) CMD (run-parts /etc/
cron.hourly)

384 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Feb 13 22:31:01 servera.lab.example.com run-parts[25893]: (/etc/cron.hourly)


starting 0anacron
Feb 13 22:31:01 servera.lab.example.com run-parts[25899]: (/etc/cron.hourly)
finished 0anacron
Feb 13 22:31:41 servera.lab.example.com sshd[25901]: Bad protocol version
identification 'brain' from 172.25.250.254 port 37450
Feb 13 22:31:42 servera.lab.example.com sshd[25902]: Accepted publickey for root
from 172.25.250.254 port 37452 ssh2: RSA SHA2>
Feb 13 22:31:42 servera.lab.example.com systemd[1]: Started /run/user/0 mount
wrapper.
Feb 13 22:31:42 servera.lab.example.com systemd[1]: Created slice User Slice of
UID 0.
Feb 13 22:31:42 servera.lab.example.com systemd[1]: Starting User Manager for UID
0...
Feb 13 22:31:42 servera.lab.example.com systemd[1]: Started Session 118 of user
root.
Feb 13 22:31:42 servera.lab.example.com systemd-logind[712]: New session 118 of
user root.
Feb 13 22:31:42 servera.lab.example.com systemd[25906]: pam_unix(systemd-
user:session): session opened for user root by (uid=0)
...output omitted...
lines 1-32/84 39% q
[student@servera ~]$

6. Use la opción --since y la coincidencia _SYSTEMD_UNIT="sshd.service" con el


comando journalctl para visualizar todos los eventos de registro que se originan del
servicio sshd registrado desde las 09:00:00 de esta mañana en servera. Para salir de
journalctl, presione q.

nota
Es posible que esté o no ubicado en la misma zona horaria que el aula. Verifique la
hora en servera y ajuste el valor de --since según corresponda, si es necesario.

[student@servera ~]$ journalctl --since 9:00:00 _SYSTEMD_UNIT="sshd.service"


...output omitted...
Feb 13 13:21:12 servera.lab.example.com sshd[727]: Server listening on 0.0.0.0
port 22.
Feb 13 13:21:12 servera.lab.example.com sshd[727]: Server listening on :: port 22.
Feb 13 13:22:07 servera.lab.example.com sshd[1238]: Accepted publickey for student
from 172.25.250.250 port 50590 ssh2: RSA SH>
Feb 13 13:22:07 servera.lab.example.com sshd[1238]: pam_unix(sshd:session):
session opened for user student by (uid=0)
Feb 13 13:22:08 servera.lab.example.com sshd[1238]: pam_unix(sshd:session):
session closed for user student
Feb 13 13:25:47 servera.lab.example.com sshd[1289]: Accepted publickey for root
from 172.25.250.254 port 37194 ssh2: RSA SHA25>
Feb 13 13:25:47 servera.lab.example.com sshd[1289]: pam_unix(sshd:session):
session opened for user root by (uid=0)
Feb 13 13:25:47 servera.lab.example.com sshd[1289]: pam_unix(sshd:session):
session closed for user root
Feb 13 13:25:48 servera.lab.example.com sshd[1316]: Accepted publickey for root
from 172.25.250.254 port 37196 ssh2: RSA SHA25>

RH124-RHEL8.2-es-1-20200928 385
capítulo 11 | Análisis y almacenamiento de registros

Feb 13 13:25:48 servera.lab.example.com sshd[1316]: pam_unix(sshd:session):


session opened for user root by (uid=0)
Feb 13 13:25:48 servera.lab.example.com sshd[1316]: pam_unix(sshd:session):
session closed for user root
Feb 13 13:26:07 servera.lab.example.com sshd[1355]: Accepted publickey for student
from 172.25.250.254 port 37198 ssh2: RSA SH>
Feb 13 13:26:07 servera.lab.example.com sshd[1355]: pam_unix(sshd:session):
session opened for user student by (uid=0)
Feb 13 13:52:28 servera.lab.example.com sshd[1473]: Accepted publickey for root
from 172.25.250.254 port 37218 ssh2: RSA SHA25>
Feb 13 13:52:28 servera.lab.example.com sshd[1473]: pam_unix(sshd:session):
session opened for user root by (uid=0)
...output omitted...
lines 1-32 q
[student@servera ~]$

7. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab log-query finish para terminar este ejercicio. Este script
garantiza que el entorno se restaure a un estado limpio.

[student@workstation ~]$ lab log-query finish

Esto concluye el ejercicio guiado.

386 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Resguardo del diario (journal) del sistema

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de configurar el diario (journal) del sistema para
resguardar el registro de eventos cuando se reinicia un servidor.

Almacenar el diario (journal) del sistema de manera


permanente
De manera predeterminada, los diarios (journals) del sistema se almacenan en el directorio /
run/log/journal, lo que significa que se borran cuando se reinicia el sistema. Puede cambiar
los ajustes de configuración del servicio systemd-journald en el archivo /etc/systemd/
journald.conf para hacer que los diarios (journals) no se borren en el reinicio.

El parámetro Storage en el archivo /etc/systemd/journald.conf define si desea almacenar


los diarios (journals) del sistema de forma volátil o de forma persistente durante el reinicio.
Establezca este parámetro en persistent, volatile, auto o none de la siguiente manera:

• persistent: almacena los diarios (journals) en el directorio /var/log/journal que no se


borra en los reinicios.

Si el directorio /var/log/journal no existe, el servicio systemd-journald lo crea.

• volatile: almacena los diarios (journals) en el directorio /run/log/journal volátil.

Puesto que el sistema de archivos /run es temporal y solo existe en la memoria de tiempo de
ejecución, los datos almacenados en él, incluidos los diarios (journals) del sistema, se borran en
el reinicio.

• auto: si el directorio /var/log/journal existe, systemd-journald use almacenamiento


persistente; de lo contrario, usa el almacenamiento volátil.

Esta es la acción predeterminada si el parámetro Storage no está establecido.

• none: no usa ningún almacenamiento. Se descartan todos los registros, pero el reenvío de
registros aún funcionará como se espera.

La ventaja de los diarios (journals) del sistema almacenados de forma persistente es que los
datos históricos están disponibles de inmediato en el inicio. Sin embargo, incluso cuando el diario
(journal) se almacene de forma persistente, no todos los datos se conservan para siempre. El
diario (journal) tiene un mecanismo de rotación de registro incorporado que se desencadena
mensualmente. Además, de manera predeterminada, los diarios (journals) no pueden tener más
del 10 % del sistema de archivos en el que están ubicados ni dejar menos del 15 % del sistema
de archivos libre. Estos valores se pueden ajustar tanto para el tiempo de ejecución como para
los diarios (journals) persistentes en /etc/systemd/journald.conf. Los límites actuales en
cuanto al tamaño del diario (journal) se registran cuando inicia el proceso systemd-journald.
En el siguiente resultado de comando, se muestran las entradas del diario (journal) que reflejan los
límites de tamaño actuales:

RH124-RHEL8.2-es-1-20200928 387
capítulo 11 | Análisis y almacenamiento de registros

[user@host ~]$ journalctl | grep -E 'Runtime|System journal'


Feb 25 13:01:46 localhost systemd-journald[147]: Runtime journal (/run/log/
journal/ae06db7da89142138408d77efea9229c) is 8.0M, max 91.4M, 83.4M free.
Feb 25 13:01:48 remotehost.lab.example.com systemd-journald[548]: Runtime journal
(/run/log/journal/73ab164e278e48be9bf80e80714a8cd5) is 8.0M, max 91.4M, 83.4M
free.
Feb 25 13:01:48 remotehost.lab.example.com systemd-journald[548]: System journal
(/var/log/journal/73ab164e278e48be9bf80e80714a8cd5) is 8.0M, max 3.7G, 3.7G free.
Feb 25 13:01:48 remotehost.lab.example.com systemd[1]: Starting Tell Plymouth To
Write Out Runtime Data...
Feb 25 13:01:48 remotehost.lab.example.com systemd[1]: Started Tell Plymouth To
Write Out Runtime Data.

nota
En el grep anterior, el símbolo de barra vertical (|) actúa como operador de o.
Es decir, grep coincide con cualquier línea que contenga la cadena Runtime o la
cadena System journal del resultado journalctl. Esto captura los límites de
tamaño actuales en el almacenamiento volátil del diario (journal) (Runtime), así
como en el almacenamiento persistente del diario (journal) (System).

Configuración de diarios (journals) del sistema persistentes


Para configurar el servicio systemd-journald y resguardar los diarios (journals) del sistema de
forma persistente en el reinicio, ajuste Storage en persistent en el archivo /etc/systemd/
journald.conf. Ejecute el editor de texto de su elección como superusuario para editar el
archivo /etc/systemd/journald.conf.

[Journal]
Storage=persistent
...output omitted...

Después de editar el archivo de configuración, reinicie el servicio systemd-journald para que


los cambios de configuración surtan efecto.

[root@host ~]# systemctl restart systemd-journald

Si el servicio systemd-journald se reinicia de forma satisfactoria, puede ver que se ha creado


el directorio /var/log/journal que contiene uno o más subdirectorios. Estos subdirectorios
tienen caracteres hexadecimales en sus nombres largos y contienen archivos *.journal. Los
archivos *.journal son los archivos binarios que almacenan las entradas del diario (journal)
estructuradas e indexadas.

[root@host ~]# ls /var/log/journal


73ab164e278e48be9bf80e80714a8cd5
[root@host ~]# ls /var/log/journal/73ab164e278e48be9bf80e80714a8cd5
system.journal user-1000.journal

Mientras los diarios (journals) del sistema persisten en el reinicio, se obtiene una gran cantidad
de entradas en el resultado del comando journalctl que incluyen entradas del inicio actual
del sistema así como de los inicios anteriores. Para limitar el resultado a un inicio específico del

388 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

sistema, use la opción -b con el comando journalctl. El siguiente comando journalctl


recupera las entradas limitadas al primer inicio del sistema:

[root@host ~]# journalctl -b 1


...output omitted...

El siguiente comando journalctl recupera las entradas limitadas al segundo inicio del sistema.
El siguiente argumento es significativo solo si el sistema se ha reiniciado al menos dos veces:

[root@host ~]# journalctl -b 2

El siguiente comando journalctl recupera las entradas limitadas al inicio actual del sistema:

[root@host ~]# journalctl -b

nota
Cuando se depura el bloqueo de un sistema con un diario (journal) persistente,
generalmente es necesario limitar la cola del diario (journal) al reinicio anterior al
bloqueo. La opción -b puede estar acompañada por un número negativo que indica
la cantidad de arranques anteriores del sistema que debe incluir el resultado. Por
ejemplo, journalctl -b -1 limita el resultado solo al inicio anterior.

Referencias
Páginas de manual systemd-journald.conf(5), systemd-journald(8)

Para obtener más información, consulte la sección Solución de problemas mediante


el uso de archivos de registro en la guía Configuración básica de sistemas de
Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#troubleshooting-problems-using-
log-files_getting-started-with-system-administration

RH124-RHEL8.2-es-1-20200928 389
capítulo 11 | Análisis y almacenamiento de registros

Ejercicio Guiado

Resguardo del diario (journal) del sistema


En este ejercicio, configurará el diario (journal) del sistema para preservar sus datos después
de un reinicio.

Resultados
Deberá ser capaz de configurar el diario (journal) del sistema para preservar sus datos
después de un reinicio.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-preserve start para comenzar el ejercicio. Este


script asegura que el entorno esté configurado correctamente.

[student@workstation ~]$ lab log-preserve start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Como superusuario, confirme que el directorio /var/log/journal no existe. Use el


comando ls para enumerar el contenido del directorio /var/log/journal. Use sudo
para elevar los privilegios del usuario student. Use la contraseña student si se le solicita
una.

[student@servera ~]$ sudo ls /var/log/journal


[sudo] password for student: student
ls: cannot access '/var/log/journal': No such file or directory

Dado que el directorio /var/log/journal no existe, el servicio systemd-journald no


está resguardando sus datos de registro.

3. Configure el servicio systemd-journald en servera para resguardar sus diarios


(journals) tras un reinicio.

3.1. Elimine el comentario de la línea Storage=auto en el archivo /etc/systemd/


journald.conf y ajuste Storage en persistent. Puede usar el comando sudo
vim /etc/systemd/journald.conf para editar el archivo de configuración.
Escriba / Storage=auto desde el modo de comando en vim para buscar la línea
Storage=auto.

390 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

...output omitted...
[Journal]
Storage=persistent
...output omitted...

3.2. Use el comando systemctl para reiniciar el servicio systemd-journald y aplicar


los cambios de configuración.

[student@servera ~]$ sudo systemctl restart systemd-journald.service

4. Confirme que el servicio systemd-journald en servera resguarde sus diarios (journals)


y que estos persistan tras un reinicio.

4.1. Use el comando systemctl reboot para reiniciar servera.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

Tenga en cuenta que la conexión SSH finalizó apenas se reinició el sistema servera.

4.2. Abra una sesión de SSH en servera nuevamente.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

4.3. Use el comando ls para confirmar que el directorio /var/log/journal existe.


El directorio /var/log/journal contiene un subdirectorio que tiene un nombre
extenso hexadecimal. Los archivos de diario se encuentran en ese directorio. El
nombre del subdirectorio en su sistema será diferente.

[student@servera ~]$ sudo ls /var/log/journal


[sudo] password for student: student
73ab164e278e48be9bf80e80714a8cd5
[student@servera ~]$ sudo ls \
/var/log/journal/73ab164e278e48be9bf80e80714a8cd5
system.journal user-1000.journal

4.4. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.

Finalizar
En workstation, ejecute lab log-preserve finish para terminar este ejercicio. Este script
garantiza que el entorno se restaure a un estado limpio.

RH124-RHEL8.2-es-1-20200928 391
capítulo 11 | Análisis y almacenamiento de registros

[student@workstation ~]$ lab log-preserve finish

Esto concluye el ejercicio guiado.

392 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Mantenimiento de la hora correcta

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de mantener una sincronización de hora precisa
por medio de NTP y configurar la zona horaria para garantizar marcas de tiempo correctas para los
eventos registrados por el diario (journal) y los registros del sistema.

Configuración de relojes y zonas horarias locales


La hora correcta sincronizada del sistema es fundamental para el análisis del archivo de registro
en varios sistemas. El protocolo de tiempo de red (NTP) es una manera estándar para que las
máquinas proporcionen y obtengan la información de la hora correcta de Internet. Una máquina
puede obtener información de la hora correcta de los servicios NTP públicos en Internet, como el
NTP Pool Project. Otra opción es un reloj de hardware de alta calidad para proporcionar la hora
precisa a los clientes locales.

El comando timedatectl muestra una descripción general de los parámetros actuales del
sistema relacionados con la hora, que incluyen la hora actual, la zona horaria y los parámetros de
sincronización de NTP del sistema.

[user@host ~]$ timedatectl


Local time: Fri 2019-04-05 16:10:29 CDT
Universal time: Fri 2019-04-05 21:10:29 UTC
RTC time: Fri 2019-04-05 21:10:29
Time zone: America/Chicago (CDT, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Está disponible una base de datos con las zonas horarias, y puede enumerarse con el comando
timedatectl list-timezones.

[user@host ~]$ timedatectl list-timezones


Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
...

Los nombres de las zonas horarias se basan en la base de datos de zonas horarias públicas que
están a cargo de la Autoridad para la Asignación de Números de Internet (IANA). Las zonas
horarias se nombran según el continente u océano; luego, por lo general, pero no siempre, la
ciudad más grande dentro de la región de la zona horaria. Por ejemplo, la mayoría de la zona
horaria de montaña de los EE. UU. se denomina América/Denver.

RH124-RHEL8.2-es-1-20200928 393
capítulo 11 | Análisis y almacenamiento de registros

La elección del nombre correcto puede ser no intuitiva en casos donde las localidades dentro de
una zona horaria tienen normas horarias de aprovechamiento de la luz solar. Por ejemplo, en los
EE. UU., gran parte del estado de Arizona (hora de la zona montañosa de los EE. UU.) no modifica
la hora para aprovechar la luz solar y su huso horario es el de América/Phoenix.

El comando tzselect es práctico para identificar los nombres de la zona horaria zoneinfo
correcta. De manera interactiva, se le formulan preguntas al usuario sobre la ubicación del sistema
y se proporciona el nombre de la zona horaria correcta. No implementa ningún cambio en la
configuración de la zona horaria del sistema.

El superusuario puede cambiar la configuración del sistema para actualizar la zona horaria actual
mediante el comando timedatectl set-timezone. El siguiente comando timedatectl
actualiza la zona horaria actual a America/Phoenix.

[root@host ~]# timedatectl set-timezone America/Phoenix


[root@host ~]# timedatectl
Local time: Fri 2019-04-05 14:12:39 MST
Universal time: Fri 2019-04-05 21:12:39 UTC
RTC time: Fri 2019-04-05 21:12:39
Time zone: America/Phoenix (MST, -0700)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

nota
En caso de que necesite usar el horario universal coordinado (UTC) en un servidor
en particular, establezca su zona horaria en UTC. El comando tzselect no incluye
el nombre de la zona horaria UTC. Use el comando timedatectl set-timezone
UTC para configurar la zona horaria actual del sistema en UTC.

Use el comando timedatectl set-time para cambiar la hora actual del sistema. La hora se
especifica con el formato "DD-MM-AAAA hh:mm:ss", donde se puede omitir la fecha o la hora. El
siguiente comando timedatectl cambia la hora a 09:00:00.

[root@host ~]# timedatectl set-time 9:00:00


[root@host ~]# timedatectl
Local time: Fri 2019-04-05 09:00:27 MST
Universal time: Fri 2019-04-05 16:00:27 UTC
RTC time: Fri 2019-04-05 16:00:27
Time zone: America/Phoenix (MST, -0700)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

El comando timedatectl set-ntp habilita o deshabilita la sincronización de NTP para el


ajuste de hora automático. La opción requiere de un argumento true o false para activarla o
desactivarla. El siguiente comando timedatectl activa la sincronización de NTP.

[root@host ~]# timedatectl set-ntp true

394 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

nota
En Red Hat Enterprise Linux 8, el comando timedatectl set-ntp se ajustará
independientemente de si el servicio chronyd NTP esté en funcionamiento. Otras
distribuciones de Linux pueden usar esta configuración para ajustar un servicio NTP
o SNTP diferente.

Habilitar o deshabilitar NTP usando otras utilidades en Red Hat Enterprise Linux,
como la aplicación gráfica GNOME Settings, también actualiza esta configuración.

Configuración y monitoreo de Chronyd


El servicio chronyd mantiene el reloj de hardware local (RTC), que suele ser impreciso, según
lo programado al sincronizarlo con los servidores NTP configurados. Si no hay conectividad
de red disponible, chronyd calcula la desviación del reloj RTC, que se registra en driftfile
especificada en el archivo de configuración /etc/chrony.conf.

De manera predeterminada, el servicio chronyd usa servidores de NTP Pool Project para la
sincronización de la hora y no necesita otra configuración. Puede ser útil cambiar los servidores
NTP cuando la máquina en cuestión esté en una red aislada.

El estrato de la fuente de hora de NTP determina su calidad. El estrato determina la cantidad de


saltos con que la máquina se aleja del reloj de referencia de alto rendimiento. El reloj de referencia
es una fuente de hora de stratum 0. Un servidor NTP conectado en forma directa a dicho reloj
es un stratum 1, mientras que una máquina que sincroniza la hora a partir de un servidor NTP es
una fuente de hora de stratum 2.

Existen dos categorías de fuentes de hora, server y peer, que puede declarar en el archivo de
configuración /etc/chrony.conf. La categoría server se encuentra un estrato más arriba que
el servidor NTP local, y la categoría peer está en el mismo estrato. Puede especificarse más de un
server y más de un peer, uno por línea.

El primer argumento de la línea server es la dirección IP o el nombre de DNS del servidor NTP.
A continuación del nombre o de la dirección IP del servidor, puede especificarse una serie de
opciones para el servidor. Se recomienda usar la opción iburst porque, una vez que se inicie el
servicio, se realizarán cuatro mediciones en un período breve a fin de lograr una sincronización del
reloj inicial más precisa.

La siguiente línea server classroom.example.com iburst en el archivo /


etc/chrony.conf hace que el servicio chronyd use la fuente de hora de NTP
classroom.example.com.

# Use public servers from the pool.ntp.org project.


...output omitted...
server classroom.example.com iburst
...output omitted...

Después de orientar chronyd hacia la fuente de hora local, classroom.example.com, deberá


reiniciar el servicio.

[root@host ~]# systemctl restart chronyd

El comando chronyc actúa como cliente para el servicio chronyd. Después de configurar la
sincronización de NTP, debe verificar que el sistema local esté usando sin problemas el servidor

RH124-RHEL8.2-es-1-20200928 395
capítulo 11 | Análisis y almacenamiento de registros

NTP para sincronizar el reloj del sistema por medio del comando chronyc sources. Para
obtener un resultado más extenso con explicaciones adicionales, use el comando chronyc
sources -v.

[root@host ~]# chronyc sources -v


210 Number of sources = 1

.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| / xxxx = adjusted offset,
|| Log2(Polling interval) -. | yyyy = measured offset,
|| \ | zzzz = estimated error.
|| | |
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* classroom.example.com 8 6 17 23 -497ns[-7000ns] +/- 956us

El carácter * en el campo S (estado Source) indica que el servidor classroom.example.com


se usó como fuente de hora, y el servidor NTP es la máquina que se toma actualmente como
referencia para la sincronización.

Referencias
Páginas de manual timedatectl(1), tzselect(8), chronyd(8),
chrony.conf(5) y chronyc(1)

NTP Pool Project


http://www.pool.ntp.org/

Base de datos de zona horaria


http://www.iana.org/time-zones

396 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Ejercicio Guiado

Mantenimiento de la hora correcta


En este ejercicio, ajustará la zona horaria en un servidor y se asegurará de que el reloj de su
sistema esté sincronizado con una fuente de hora de NTP.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Cambiar la zona horaria en un servidor.

• Configurar el servidor para sincronizar su hora con una fuente de hora de NTP.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-maintain start para comenzar el ejercicio. Este


script garantiza que la sincronización de hora esté deshabilitada en el sistema servera para
brindarle la oportunidad de actualizar manualmente la configuración del sistema y habilitar la
sincronización de hora.

[student@workstation ~]$ lab log-maintain start

1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. A los fines de la actividad, suponga que el sistema servera se reubica en Haití y, por lo
tanto, usted debe actualizar la zona horaria según corresponda. Use sudo para elevar
los privilegios del usuario student mientras ejecuta el comando timedatectl para
actualizar la zona horaria. Use la contraseña student si se le solicita una.

2.1. Use el comando tzselect para determinar la zona horaria adecuada para Haití.

[student@servera ~]$ tzselect


Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean

RH124-RHEL8.2-es-1-20200928 397
capítulo 11 | Análisis y almacenamiento de registros

9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#? 2
Please select a country whose clocks agree with yours.
1) Anguilla 19) Dominican Republic 37) Peru
2) Antigua & Barbuda 20) Ecuador 38) Puerto Rico
3) Argentina 21) El Salvador 39) St Barthelemy
4) Aruba 22) French Guiana 40) St Kitts & Nevis
5) Bahamas 23) Greenland 41) St Lucia
6) Barbados 24) Grenada 42) St Maarten (Dutch)
7) Belize 25) Guadeloupe 43) St Martin (French)
8) Bolivia 26) Guatemala 44) St Pierre & Miquelon
9) Brazil 27) Guyana 45) St Vincent
10) Canada 28) Haiti 46) Suriname
11) Caribbean NL 29) Honduras 47) Trinidad & Tobago
12) Cayman Islands 30) Jamaica 48) Turks & Caicos Is
13) Chile 31) Martinique 49) United States
14) Colombia 32) Mexico 50) Uruguay
15) Costa Rica 33) Montserrat 51) Venezuela
16) Cuba 34) Nicaragua 52) Virgin Islands (UK)
17) Curaçao 35) Panama 53) Virgin Islands (US)
18) Dominica 36) Paraguay
#? 28
The following information has been given:

Haiti

Therefore TZ='America/Port-au-Prince' will be used.


Selected time is now: Tue Feb 19 00:51:05 EST 2019.
Universal Time is now: Tue Feb 19 05:51:05 UTC 2019.
Is the above information OK?
1) Yes
2) No
#? 1

You can make this change permanent for yourself by appending the line
TZ='America/Port-au-Prince'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
America/Port-au-Prince

Tenga en cuenta que el comando tzselect anterior mostró la zona horaria


adecuada para Haití.

2.2. Use el comando timedatectl para actualizar la zona horaria en servera a


America/Port-au-Prince.

[student@servera ~]$ sudo timedatectl set-timezone \


America/Port-au-Prince
[sudo] password for student: student

398 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

2.3. Use el comando timedatectl para verificar que la zona horaria se haya actualizado
a America/Port-au-Prince.

[student@servera ~]$ timedatectl


Local time: Tue 2019-02-19 01:16:29 EST
Universal time: Tue 2019-02-19 06:16:29 UTC
RTC time: Tue 2019-02-19 06:16:29
Time zone: America/Port-au-Prince (EST, -0500)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no

3. Configure el servicio chronyd en servera para sincronizar la hora del sistema con la
fuente de hora de NTP classroom.example.com.

3.1. Edite el archivo /etc/chrony.conf para especificar el servidor


classroom.example.com como la fuente de hora de NTP. Puede usar el comando
sudo vim /etc/chrony.conf para editar el archivo de configuración. En el
siguiente resultado, se muestra la línea de configuración que debe agregar al archivo
de configuración:

...output omitted...
server classroom.example.com iburst
...output omitted...

La línea precedente en el archivo de configuración /etc/chrony.conf incluye la


opción iburst para acelerar la sincronización de hora inicial.

3.2. Use el comando timedatectl para activar la sincronización de hora en servera.

[student@servera ~]$ sudo timedatectl set-ntp yes

El comando timedatectl anterior activa el servidor NTP con la configuración


modificada en el archivo de configuración /etc/chrony.conf. El comando
timedatectl anterior puede activar el servicio chronyd o el servicio ntpd según lo
que esté instalado actualmente en el sistema.

4. Verifique que los ajustes de hora en servera estén configurados actualmente para
sincronizarse con la fuente de hora de classroom.example.com en el entorno del aula.

4.1. Use el comando timedatectl para verificar que servera tenga actualmente
habilitada la sincronización horaria.

[student@servera ~]$ timedatectl


Local time: Tue 2019-02-19 01:52:17 EST
Universal time: Tue 2019-02-19 06:52:17 UTC
RTC time: Tue 2019-02-19 06:52:17
Time zone: America/Port-au-Prince (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

RH124-RHEL8.2-es-1-20200928 399
capítulo 11 | Análisis y almacenamiento de registros

nota
Si en el resultado anterior se muestra que el reloj no está sincronizado, espere dos
segundos y vuelva a ejecutar el comando timedatectl. La sincronización correcta
de los ajustes de hora con la fuente de hora tarda unos segundos.

4.2. Use el comando chronyc para verificar que el sistema servera esté
sincronizando actualmente sus ajustes de hora con la fuente de hora de
classroom.example.com.

[student@servera ~]$ chronyc sources -v


210 Number of sources = 1

.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* classroom.example.com 2 6 377 62 +105us[ +143us] +/- 14ms

Tenga en cuenta que en el resultado anterior se muestra un asterisco (*)


en el campo de estado de la fuente (S) para la fuente de hora de NTP
classroom.example.com. El asterisco indica que la hora del sistema local está
actualmente sincronizada de forma correcta con la fuente de hora de NTP.

4.3. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab log-maintain finish para terminar este ejercicio. Este script
garantiza que la zona horaria original se restaure junto con todos los ajustes de hora originales en
servera.

[student@workstation ~]$ lab log-maintain finish

Esto concluye el ejercicio guiado.

400 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Trabajo de laboratorio

Análisis y almacenamiento de registros


Lista de verificación de rendimiento
En este trabajo de laboratorio, cambiará la zona horaria en un servidor existente y
configurará un nuevo archivo de registro para todos los eventos relacionados con fallas de
autenticación.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Actualizar la zona horaria en un servidor existente.

• Configurar un nuevo archivo de registro para almacenar todos los mensajes relacionados
con fallas de autenticación.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-review start para comenzar el ejercicio. Este


script registra la zona horaria actual del sistema serverb y asegura que el entorno está
configurado correctamente.

[student@workstation ~]$ lab log-review start

1. Desde workstation, abra una sesión de SSH en serverb como student.


2. Suponga que el sistema serverb se ha reubicado en Jamaica y, por lo tanto, usted debe
actualizar la zona horaria según corresponda. Use sudo para elevar los privilegios del usuario
student mientras ejecuta el comando timedatectl para actualizar la zona horaria. Use la
contraseña student si se le solicita una.
3. Visualice todos los eventos de registro registrados en los últimos 30 minutos en serverb.
4. Cree el archivo /etc/rsyslog.d/auth-errors.conf, configurado para que el servicio
rsyslog escriba mensajes relacionados con los problemas de autenticación y seguridad
en el archivo /var/log/auth-errors nuevo. Use el facility authpriv y la prioridad de
alerta en el archivo de configuración.

Evaluación
En workstation, ejecute el comando lab log-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab log-review grade

RH124-RHEL8.2-es-1-20200928 401
capítulo 11 | Análisis y almacenamiento de registros

Finalizar
En workstation, ejecute lab log-review finish para terminar este trabajo de laboratorio.
Este script garantiza que la zona horaria original se restaure junto con todos los ajustes de hora
originales en serverb.

[student@workstation ~]$ lab log-review finish

Esto concluye el ejercicio guiado.

402 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Solución

Análisis y almacenamiento de registros


Lista de verificación de rendimiento
En este trabajo de laboratorio, cambiará la zona horaria en un servidor existente y
configurará un nuevo archivo de registro para todos los eventos relacionados con fallas de
autenticación.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Actualizar la zona horaria en un servidor existente.

• Configurar un nuevo archivo de registro para almacenar todos los mensajes relacionados
con fallas de autenticación.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab log-review start para comenzar el ejercicio. Este


script registra la zona horaria actual del sistema serverb y asegura que el entorno está
configurado correctamente.

[student@workstation ~]$ lab log-review start

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. Suponga que el sistema serverb se ha reubicado en Jamaica y, por lo tanto, usted debe
actualizar la zona horaria según corresponda. Use sudo para elevar los privilegios del usuario
student mientras ejecuta el comando timedatectl para actualizar la zona horaria. Use la
contraseña student si se le solicita una.

2.1. Use el comando timedatectl para ver las zonas horarias disponibles y determinar la
zona horaria adecuada para Jamaica.

[student@serverb ~]$ timedatectl list-timezones | grep Jamaica


America/Jamaica

2.2. Use el comando timedatectl para establecer la zona horaria del sistema serverb
de América/Jamaica.

RH124-RHEL8.2-es-1-20200928 403
capítulo 11 | Análisis y almacenamiento de registros

[student@serverb ~]$ sudo timedatectl set-timezone America/Jamaica


[sudo] password for student: student

2.3. Use el comando timedatectl para verificar que la zona horaria se haya establecido
correctamente en América/Jamaica.

[student@serverb ~]$ timedatectl


Local time: Tue 2019-02-19 11:12:46 EST
Universal time: Tue 2019-02-19 16:12:46 UTC
RTC time: Tue 2019-02-19 16:12:45
Time zone: America/Jamaica (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

3. Visualice todos los eventos de registro registrados en los últimos 30 minutos en serverb.

3.1. Use el comando date para determinar el período para ver las entradas del diario
(journal).

[student@serverb ~]$ date


Fri Feb 22 07:31:05 EST 2019
[student@serverb ~]$ date -d "-30 minutes"
Fri Feb 22 07:01:31 EST 2019

3.2. Use el comando journalctl con las opciones --since y --until para visualizar
todos los eventos de registro registrados en los últimos 30 minutos en serverb. Para
salir de journalctl, presione q.

[student@serverb ~]$ journalctl --since 07:01:00 --until 07:31:00


...output omitted...
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Reached target Timers.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Reached target Paths.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Starting D-Bus User Message
Bus Socket.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Listening on D-Bus User
Message Bus Socket.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Reached target Sockets.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Reached target Basic
System.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Reached target Default.
Feb 22 07:24:28 serverb.lab.example.com systemd[1138]: Startup finished in 123ms.
Feb 22 07:24:28 serverb.lab.example.com systemd[1]: Started User Manager for UID
1000.
Feb 22 07:24:28 serverb.lab.example.com sshd[1134]: pam_unix(sshd:session):
session opened for user student by (uid=0)
Feb 22 07:26:56 serverb.lab.example.com systemd[1138]: Starting Mark boot as
successful...
Feb 22 07:26:56 serverb.lab.example.com systemd[1138]: Started Mark boot as
successful.
lines 1-36/36 (END) q
[student@serverb ~]$

404 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

4. Cree el archivo /etc/rsyslog.d/auth-errors.conf, configurado para que el servicio


rsyslog escriba mensajes relacionados con los problemas de autenticación y seguridad
en el archivo /var/log/auth-errors nuevo. Use el facility authpriv y la prioridad de
alerta en el archivo de configuración.

4.1. Cree el archivo /etc/rsyslog.d/auth-errors.conf para especificar el archivo


/var/log/auth-errors nuevo como destino para los mensajes relacionados con
problemas de autenticación y seguridad. Puede usar el comando sudo vim /etc/
rsyslog.d/auth-errors.conf para crear el archivo de configuración.

authpriv.alert /var/log/auth-errors

4.2. Reinicie el servicio rsyslog para que se apliquen los cambios en el archivo de
configuración.

[student@serverb ~]$ sudo systemctl restart rsyslog

4.3. Use el comando logger para escribir un nuevo mensaje de registro en el archivo /
var/log/auth-errors. Aplique la opción -p authpriv.alert para generar un
mensaje de registro relevante para los problemas de autenticación y seguridad.

[student@serverb ~]$ logger -p authpriv.alert "Logging test authpriv.alert"

4.4. Use el comando tail para confirmar que el archivo /var/log/auth-errors


contenga la entrada de registro con el mensaje Logging test authpriv.alert.

[student@serverb ~]$ sudo tail /var/log/auth-errors


Feb 19 11:56:07 serverb student[6038]: Logging test authpriv.alert

4.5. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab log-review grade para confirmar que ha
realizado correctamente este ejercicio.

[student@workstation ~]$ lab log-review grade

Finalizar
En workstation, ejecute lab log-review finish para terminar este trabajo de laboratorio.
Este script garantiza que la zona horaria original se restaure junto con todos los ajustes de hora
originales en serverb.

[student@workstation ~]$ lab log-review finish

RH124-RHEL8.2-es-1-20200928 405
capítulo 11 | Análisis y almacenamiento de registros

Esto concluye el ejercicio guiado.

406 RH124-RHEL8.2-es-1-20200928
capítulo 11 | Análisis y almacenamiento de registros

Resumen
En este capítulo, aprendió lo siguiente:

• Los servicios systemd-journald y rsyslog capturan y escriben mensajes de registro en los


archivos correspondientes.

• El directorio /var/log contiene archivos de registro.

• La rotación periódica de los archivos de registro evita que llenen el espacio del sistema de
archivos.

• Los diarios (journals) de systemd son temporales y no se guardan tras un reinicio.

• El servicio chronyd ayuda a sincronizar los ajustes de hora con una fuente de hora.

• La zona horaria del servidor se puede actualizar en función de su ubicación.

RH124-RHEL8.2-es-1-20200928 407
408 RH124-RHEL8.2-es-1-20200928
capítulo 12

Administración de redes
Meta Configure las interfaces de red y la configuración
en servidores Red Hat Enterprise Linux.

Objetivos • Describir conceptos fundamentales de


direccionamiento y enrutamiento de redes para
un servidor
• Probar e inspeccionar la configuración de red
actual con las utilidades de la línea de comando
• Administrar la configuración de red y los
dispositivos usando nmcli
• Modificar la configuración de la red mediante la
edición de los archivos de configuración
• Configurar el nombre de host estático del
servidor y su resolución de nombre, y probar los
resultados

Secciones • Descripción de conceptos de redes (y


cuestionario)
• Validación de la configuración de red (y
ejercicio guiado)
• Configuración de redes desde la línea de
comandos (y ejercicio guiado)
• Edición de los archivos de configuración de red
(y ejercicio guiado)
• Configuración de nombres de host y resolución
de nombre (y ejercicio guiado)

Trabajo de Administración de redes


laboratorio

RH124-RHEL8.2-es-1-20200928 409
capítulo 12 | Administración de redes

Descripción de conceptos de redes

Objetivos
Tras completar esta sección, debería poder describir conceptos fundamentales de
direccionamiento y enrutamiento de redes para un servidor.

Modelo de red TCP/IP


El modelo de red TCP/IP es un conjunto de abstracciones simplificado, de cuatro capas, que
describe cómo los diferentes protocolos interactúan para que los equipos envíen el tráfico de una
máquina a otra a través de Internet. Se especifica mediante RFC 1122, Requisitos para hosts de
Internet -- Capas de comunicación. Estas son las cuatro capas:

• Aplicación

Cada aplicación tiene especificaciones para que los clientes y los servidores puedan
comunicarse en las plataformas. Entre los protocolos comunes se incluyen SSH (inicio de sesión
remoto), HTTPS (web segura), NFS o CIFS (uso compartido de archivo) y SMTP (envío de
correo electrónico).

• Transporte

Los protocolos de transporte son TCP y UDP. TCP es una confiable comunicación orientada a
la conexión, mientras que UDP es un protocolo de datagramas sin conexión. Los protocolos de
aplicaciones usan puertos TCP o UDP. En el archivo /etc/services, encontrará una lista de
puertos conocidos y registrados.

Cuando un paquete se envía por la red, la combinación del puerto de servicio y la dirección
IP forma un socket. Cada paquete tiene un socket de origen y un socket de destino. Esta
información puede usarse al realizar tareas de monitoreo y filtrado.

• Internet

Internet, o capa de red, transporta datos desde el host de origen hasta el host de destino. Los
protocolos IPv4 e IPv6 son protocolos de capa de Internet. Cada host tiene una dirección IP y
un prefijo que se usa para determinar direcciones de red. Los enrutadores se usan para conectar
redes.

• Enlace

La capa de enlace, o acceso a medios, proporciona la conexión a medios físicos. Los tipos
de redes más comunes son Ethernet (802.3) cableada y WLAN (802.11) inalámbrica. Cada
dispositivo físico tiene una dirección de hardware (MAC) que se usa para identificar el destino
de paquetes en el segmento de red local.

410 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Figura 12.1: Comparación de los modelos de red TCP/IP y OSI

Descripción de nombres de interfaces de red


Cada puerto de red en un sistema tiene un nombre, que usted usa para configurarlo e identificarlo.

Versiones anteriores de Red Hat Enterprise Linux usaba nombres como eth0, eth1 y eth2
para cada interfaz de red. El nombre eth0 fue el primer puerto de red detectado por el sistema
operativo, eth1, el segundo, y así sucesivamente. Sin embargo, a medida que se agregan y
eliminan dispositivos, el mecanismo que los detecta y los nombra puede cambiar el nombre que
recibe cada interfaz. Además, el estándar PCIe no garantiza el orden en el que se detectarán
los dispositivos PCIe durante el inicio, lo que podría cambiar la denominación del dispositivo
inesperadamente debido a las variaciones durante el inicio del dispositivo o del sistema.

Las versiones más nuevas de Red Hat Enterprise Linux usan un sistema de asignación de nombre
diferente. En lugar de basarse en el orden de detección, los nombres de las interfaces de red se
asignan en función de la información del firmware, la topología del bus PCI y el tipo de dispositivo
de red.

Los nombres de la interfaz de red comienzan con el tipo de interfaz:

• Las interfaces de Ethernet comienzan con en.


• Las interfaces WLAN comienzan con wl.
• Las interfaces WWAN comienzan con ww.

El resto del nombre de la interfaz después del tipo se basará en la información proporcionada por
el firmware del servidor o determinada por la ubicación del dispositivo en la topología PCI.

• oN indica que esto es un dispositivo incorporado y el número de índice proporcionado por el


firmware del servidor N para el dispositivo. Por lo tanto, eno1 es el dispositivo incorporado
Ethernet 1. Muchos servidores no proporcionan esta información.

RH124-RHEL8.2-es-1-20200928 411
capítulo 12 | Administración de redes

• sN indica que este dispositivo está en la ranura PCI hotplug N. Por lo tanto, ens3 es una tarjeta
Ethernet en la ranura PCI hotplug 3.

• pMsN indica que este es un dispositivo PCI en el bus M en la ranura N. Por lo tanto, wlp4s0
es una tarjeta WLAN en el bus PCI 4 en la ranura 0. Si la tarjeta es un dispositivo multifunción
(posible con una tarjeta Ethernet con varios puertos, o dispositivos que tengan Ethernet más
alguna otra funcionalidad), puede ver que se agrega fN al nombre del dispositivo. Por lo tanto,
enp0s1f0 es la función 0 de la tarjeta Ethernet en el bus 0 en la ranura 1. También puede haber
una segunda interfaz llamada enp0s1f1 que es la función 1 de ese mismo dispositivo.

La denominación persistente significa que una vez que sepa cuál es el nombre de una interfaz
de red en el sistema, también sabrá que no cambiará más adelante. La compensación es que no
puede asumir que un sistema con una interfaz nombrará esa interfaz et0.

Redes IPv4
IPv4 es el protocolo de red principal usado en Internet hoy en día. Debe tener al menos una
comprensión básica de las redes IPv4 para administrar la comunicación de red para sus servidores.

Direcciones IPv4
Una dirección IPv4 es un número de 32 bits, normalmente expresado en decimales como cuatro
octetos de 8 bits cuyo valor varía entre 0 y 255, separado por puntos. La dirección se divide en
dos partes: la parte de red y la parte de host. Todos los hosts en la misma subred, que pueden
comunicarse entre sí directamente sin un enrutador, cuentan con la misma parte de red; la parte
de red identifica la subred. Dos hosts en la misma subred no pueden tener la misma parte de host;
la parte del host identifica un host en particular en una subred.

En la Internet moderna, el tamaño de una subred IPv4 es variable. Para saber qué parte de una
dirección IPv4 es la parte de red y cuál es la parte de host, un administrador debe conocer la
máscara de red, que se asignó a la subred. La máscara de red indica cuántos bits de la dirección
IPv4 pertenecen a la subred. Cuantos más bits haya disponibles para la parte del host, más hosts
habrá en la subred.

La dirección más baja posible en una subred (la parte de host son todos ceros en binario), algunas
veces, se denomina dirección de red. La dirección más alta posible en una subred (la parte de
host son todos los unos en binario) se usa para los mensajes de difusión (broadcast) en IPv4 y se
denomina dirección de difusión (broadcast).

Las máscaras de red se expresan de dos formas. La sintaxis más antigua de la máscara de
red que usa 24 bits para la parte de red y lee 255.255.255.0. Una sintaxis más nueva,
denominada notación CIDR, especifica un prefijo de red de /24. Ambas formas transmiten la
misma información; a saber, cuántos bits principales en la dirección IP contribuyen a la dirección de
red.

Los siguientes ejemplos ilustran cómo se relacionan la dirección IP, el prefijo (máscara de red), la
parte de red y la parte del host.

412 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Figura 12.2: Máscaras de red y direcciones IPv4

Cálculo de la dirección de red para 192.168.1.107/24

Dirección de host 192.168.1.107 11000000.10101000.00000001.01101011

Prefijo de red /24 (255.255.255.0) 11111111.11111111.11111111.00000000

Dirección de red 192.168.1.0 11000000.10101000.00000001.00000000

Dirección 192.168.1.255 11000000.10101000.00000001.11111111


de difusión
(broadcast)

Cálculo de la dirección de red para 10.1.1.18/8

Dirección de host 10.1.1.18 00001010.00000001.00000001.00010010

Prefijo de red /8 (255.0.0.0) 11111111.00000000.00000000.00000000

Dirección de red 10.0.0.0 00001010.00000000.00000000.00000000

Dirección 10.255.255.255 00001010.11111111.11111111.11111111


de difusión
(broadcast)

RH124-RHEL8.2-es-1-20200928 413
capítulo 12 | Administración de redes

Cálculo de la dirección de red para 172.16.181.23/19

Dirección de host 172.168.181.23 10101100.10101000.10110101.00010111

Prefijo de red /19 (255.255.224.0) 11111111.11111111.11100000.00000000

Dirección de red 172.168.160.0 10101100.10101000.10100000.00000000

Dirección 172.168.191.255 10101100.10101000.10111111.11111111


de difusión
(broadcast)

La dirección especial 127.0.0.1 siempre apunta al sistema local (“localhost”) y la red 127.0.0.0/8
pertenece al sistema local, para que pueda comunicarse con ella misma usando protocolos de red.

Enrutamiento IPv4
Ya sea que se use IPv4 o IPv6, el tráfico de red debe desplazarse desde un host a otro y de una
red a otra. Cada host tiene una tabla de enrutamiento, que le indica cómo enrutar el tráfico para
redes particulares. Una entrada de una tabla de enrutamiento enumera una red de destino, que se
conecta para usar al dirigir el tráfico, y la dirección IP de cualquier enrutador intermedio necesaria
para transmitir un mensaje a su destino final. La entrada de la tabla de enrutamiento que coincide
con el destino del tráfico de red se usa para enrutarla. Si dos entradas coinciden, se usa la que
tiene el prefijo más extenso.

Si el tráfico de la red no coincide con una ruta más específica, la tabla de enrutamiento
generalmente tiene una entrada para una ruta predeterminada para toda la Internet IPv4:
0.0.0.0/0. Esta ruta predeterminada apunta a un enrutador en una subred accesible (es decir, en
una subred que tiene una ruta más específica en la tabla de enrutamiento del host).

Si un enrutador recibe tráfico que no está dirigido a él, en lugar de ignorarlo como un host normal,
reenvía el tráfico sobre la base de su propia tabla de enrutamiento. Esto puede enviar el tráfico
directamente al host de destino (si el enrutador se encuentra en la subred de destino) o se lo
puede reenviar a otro enrutador. Este proceso de reenvío continúa hasta que el tráfico alcanza su
destino final.

414 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Figura 12.3: Ejemplo de topología de red

Ejemplo de tabla de enrutamiento

Destino Interfaz Enrutador (si es necesario)

192.0.2.0/24 wlo1

192.168.5.0/24 enp3s0

0.0.0.0/0 (predeterminado) enp3s0 192.168.5.254

En este ejemplo, el tráfico que se mueve para la dirección IP 192.0.2.102 desde este host
se transmite directamente a ese destino a través de la interfaz inalámbrica wlo1 porque
su coincidencia más cercana es con la ruta 192.0.2.0/24. El tráfico de la dirección IP
192.168.5.3 se transmite directamente a ese destino a través de la interfaz Ethernet enp3s0
porque su coincidencia más cercana es con la ruta 192.168.5.0/24.

El tráfico de la dirección IP 10.2.24.1 se transmite de una interfaz Ethernet enp3s0 a un


enrutador a través de 192.168.5.254, que reenvía el tráfico al destino final. La coincidencia
más cercana de ese tráfico es con la ruta 0.0.0.0/0, ya que no hay una ruta más específica
en la tabla de enrutamiento de este host. El enrutador usa su propia tabla de enrutamiento para
determinar adónde reenviar el tráfico.

Configuración de la ruta y la dirección IPv4


Un servidor puede establecer automáticamente su configuración de red IPv4 en el momento
del arranque desde un servidor DHCP. Un daemon de cliente local consulta el enlace para una
configuración de red y de servidor, y obtiene una concesión para usar esta configuración durante

RH124-RHEL8.2-es-1-20200928 415
capítulo 12 | Administración de redes

un período específico. Si el cliente no solicita una renovación de la concesión periódicamente,


podría perder sus ajustes de configuración de red.

Como alternativa, puede configurar un servidor para usar una configuración estática de la red.
En este caso, la configuración de red se lee desde los archivos de configuración locales. Debe
obtener la configuración correcta de su administrador de red y actualizarla manualmente según
sea necesario para evitar conflictos con otros servidores.

Redes IPv6
IPv6 pretende ser un reemplazo final del protocolo de red IPv4. Deberá comprender cómo
funciona, ya que cada vez más sistemas de producción usan direcciones IPv6. Por ejemplo,
muchos ISP ya usan IPv6 para redes de comunicación interna y de administración de dispositivos
para mantener las escasas direcciones IPv4 para los propósitos del cliente.

IPv6 también se puede usar en paralelo con IPv4 en un modelo de pila (stack) doble. En esta
configuración, una interfaz de red puede tener una dirección o direcciones IPv6 así como
direcciones IPv4. De forma predeterminada, Red Hat Enterprise Linux opera en un modo de pila
(stack) doble.

Direcciones IPv6
Una dirección IPv6 es un número de 128 bits que, en general, se expresa en ocho grupos
separados por dos puntos de cuatro cuartetos (medio byte) hexadecimales. Cada cuarteto
representa cuatro bits de la dirección IPv6, por lo que cada grupo representa 16 bits de la dirección
IPv6.

2001:0db8:0000:0010:0000:0000:0000:0001

Para que sea más sencillo escribir direcciones IPv6, no es necesario escribir los ceros a la izquierda
en los grupos separados por dos puntos. Sin embargo, se debe escribir al menos un dígito
hexadecimal en cada grupo separado por dos puntos.

2001:db8:0:10:0:0:0:1

Dado que las direcciones con largas secuencias de ceros son habituales, uno o más grupos de
ceros consecutivos pueden combinarse con exactamente un ::bloque.

2001:db8:0:10::1

Note que según estas reglas, 2001:db8::0010:0:0:0:1 sería otra manera menos conveniente
de escribir la dirección del ejemplo. Pero es una representación válida de la misma dirección, y esto
puede confundir a los administradores nuevos en IPv6. Algunos consejos para escribir direcciones
que se puedan leer de manera consistente:

• Suprima los ceros a la izquierda en un grupo.

• Use :: para acortar todo lo que sea posible.

• Si una dirección contiene dos grupos de ceros consecutivos, de igual longitud, se prefiere
acortar los grupos de ceros situados más a la izquierda para :: y los grupos más a la derecha
para :0: para cada grupo.

• Aunque está permitido, no use :: para acortar un grupo de ceros. Use :0: en su lugar, y guarde
:: para grupos de ceros consecutivos.

416 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

• Use siempre letras minúsculas para los números hexadecimales de la a a la f.

Importante
Al incluir un puerto de red TCP o UDP después de una dirección IPv6, encierre
siempre la dirección IPv6 entre corchetes de manera que el puerto no parezca
formar parte de la dirección.

[2001:db8:0:10::1]:80

Subredes IPv6
Una dirección de monodifusión IPv6 normal se divide en dos partes: el prefijo de red y la ID de la
interfaz. El prefijo de red identifica la subred. Dos interfaces de red en la misma subred no pueden
tener la misma ID de la interfaz: la ID de la interfaz identifica una interfaz en particular en la subred.

A diferencia de IPv4, IPv6 tiene una máscara de subred estándar, que se usa para casi todas las
direcciones normales, /64. En este caso, una mitad de la dirección es el prefijo de red y la otra
mitad es la ID de la interfaz. Esto significa que una sola subred puede contener tantos hosts como
sea necesario.

En general, el proveedor de red asignará un prefijo más corto a una organización, como /48. Esto
permite que el resto de la parte de red quede libre para asignar subredes (siempre de longitud
/64) de ese prefijo asignado. Para una asignación /48, eso deja 16 bits para subredes (hasta 65
536 subredes).

Figura 12.4: Partes y subredes de la dirección IPv6

Direcciones y redes habituales de IPv6

Dirección o red IPv6 Propósito Descripción

::1/128 localhost El equivalente de IPv6 a 127.0.0.1/8,


establecido en la interfaz de bucle invertido.

RH124-RHEL8.2-es-1-20200928 417
capítulo 12 | Administración de redes

Dirección o red IPv6 Propósito Descripción

:: La dirección no El equivalente de IPv6 a 0.0.0.0. Para


especificada un servicio de red, esto podría indicar que
está escuchando todas las direcciones IP
completamente configuradas.

::/0 La ruta El equivalente de IPv6 a 0.0.0.0/0. La ruta


predeterminada (la predeterminada en la tabla de enrutamiento
Internet IPv6) coincide con esta red; el enrutador para esta
red es a donde se envía todo el tráfico para el
que no existe una ruta mejor.

2000::/3 Direcciones de IANA asigna actualmente las direcciones IPv6


monodifusión “normales” desde este espacio. Esto equivale
globales a todas las redes desde 2000::/16 hasta
3fff::/16.

fd00::/8 Direcciones locales IPv6 no tiene un equivalente directo del


únicas (RFC 4193) espacio de dirección privada RFC 1918,
aunque esto es cercano. Un sitio puede
usarlas para asignar de manera automática
un espacio de dirección IP enrutable privada
dentro de la organización, pero estas redes
no se pueden usar en la Internet global. El
sitio debe seleccionar de manera aleatoria un
prefijo /48 de este espacio, pero en general
puede generar subredes de la asignación en
redes con prefijo /64.

fe80::/10 Direcciones locales Todas las interfaces IPv6 configuran


de vínculos automáticamente una dirección monodifusión
local de vínculo que solo funciona en el
vínculo local de la red fe80::/64.

Sin embargo, todo el rango fe80::/10 está


reservado para ser usado en el futuro por el
enlace local. Esto se analizará en más detalle a
continuación.

ff00::/8 Multidifusión El equivalente de IPv6 a 224.0.0.0/4.


(multicast) Multidifusión (multicast) se usa para
transmitir a varios hosts al mismo tiempo y es
particularmente importante en IPv6 porque
no tiene direcciones de difusión (broadcast).

Importante
La tabla anterior enumera las asignaciones de direcciones de red que están
reservadas para fines específicos. Estas asignaciones pueden consistir en muchas
redes diferentes. Recuerde que las redes IPv6 asignadas desde los espacios de
monodifusión global y monodifusión local de vínculo tienen una máscara de subred
estándar /64.

418 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Una dirección local de vínculo en IPv6 es una dirección no enrutable que se usa solo para
comunicarse con hosts en un vínculo específico de red. Todas las interfaces de red del sistema
se configuran automáticamente con una dirección local de vínculo en la red fe80::/64. Para
asegurarse de que sea única, la ID de la interfaz de la dirección local de vínculo se crea a partir de
la dirección de hardware Ethernet de la interfaz de red. El procedimiento habitual para convertir la
dirección MAC de 48 bits en una ID de interfaz de 64 bits es invertir el bit 7 de la dirección MAC e
insertar ff:fe entre los dos bytes del medio.

• Prefijo de red: fe80::/64

• Dirección MAC: 00:11:22:aa:bb:cc

• Dirección local de vínculo: fe80::211:22ff:feaa:bbcc/64

Otros hosts en el mismo vínculo pueden usar las direcciones locales de vínculos de otras máquinas
como direcciones normales. Dado que todos los vínculos tienen una red fe80::/64, la tabla de
enrutamiento no se puede usar para seleccionar la interfaz de salida correctamente. El vínculo
que se debe usar al comunicarse con una dirección local de vínculo se debe especificar con un
identificador de ámbito al final de la dirección. El identificador de ámbito consiste en el símbolo de
% seguido por el nombre de la interfaz de red.

Por ejemplo, para usar ping6 para hacer ping a la dirección local de vínculo
fe80::211:22ff:feaa:bbcc con el vínculo conectado a la interfaz de red ens3, la sintaxis del
comando correcta es la siguiente:

[user@host ~]$ ping6 fe80::211:22ff:feaa:bbcc%ens3

nota
Los identificadores de ámbito solo se necesitan al comunicarse con direcciones que
tienen ámbito de “vínculo”. Las direcciones globales normales se usan al igual que
en IPv4, y seleccionan sus interfaces de salida de la tabla de enrutamiento.

La multidifusión (multicast) permite que un sistema envíe tráfico a una dirección IP especial que es
recibida por múltiples sistemas. Se diferencia de la difusión (broadcast), ya que solo los sistemas
específicos en la red reciben el tráfico. También difiere de la difusión (broadcast) en IPv4, ya que
parte del tráfico de multidifusión puede enrutarse a otras subredes, según la configuración de los
enrutadores y sistemas de su red.

La multidifusión (multicast) desempeña un rol más importante en IPv6 que en IPv4 ya que no hay
una dirección de difusión (broadcast) en IPv6. Una dirección clave de multidifusión (multicast)
en IPv6 es ff02::1, la dirección local de vínculo de todos los nodos. Al hacer ping a esta
dirección, el tráfico se envía a todos los nodos del vínculo. Las direcciones de multidifusión
(multicast) de ámbito de vínculo (que empiezan con ff02::/8) deben especificarse con un
identificador de ámbito, al igual que una dirección local de vínculo.

[user@host ~]$ ping6 ff02::1%ens3


PING ff02::1%ens3(ff02::1) 56 data bytes
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from fe80::200:aaff:fe33:2211: icmp_seq=1 ttl=64 time=102 ms (DUP!)
64 bytes from fe80::bcd:efff:fea1:b2c3: icmp_seq=1 ttl=64 time=103 ms (DUP!)
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=2 ttl=64 time=0.079 ms
...output omitted...

RH124-RHEL8.2-es-1-20200928 419
capítulo 12 | Administración de redes

Configuración de dirección IPv6


IPv4 cuenta con dos maneras para configurar las direcciones en las interfaces de red. Las
direcciones de red pueden configurarse en las interfaces de manera manual por parte
del administrador, o de manera dinámica desde la red con DHCP. IPv6 también admite la
configuración manual y dos métodos de configuración dinámica, uno de los cuales es DHCPv6.

Las ID de la interfaz para las direcciones IPv6 estáticas se pueden seleccionar a voluntad, al igual
que para IPv4. En IPv4, hay dos direcciones en una red que no se podían usar, la dirección inferior
y la dirección superior en la subred. En IPv6, las siguientes ID de la interfaz se reservan y no se
pueden usar para una dirección de red normal en un host.

• El identificador de todos ceros 0000:0000:0000:0000 (“difusión por proximidad de enrutador


de subred”) usado por todos los enrutadores del vínculo. (Para la red 2001:db8::/64, esta
sería la dirección 2001:db8::).

• Los identificadores de fdff:ffff:ffff:ff80 a fdff:ffff:ffff:ffff.

DHCPv6 funciona de forma diferente que DHCP para IPv4, ya que no hay ninguna dirección de
difusión (broadcast). Básicamente, un host envía una solicitud de DHCPv6 desde su dirección
local de vínculo hasta el puerto 547/UDP en ff02::1:2, el grupo de multidifusión (multicast)
local de vínculo de todos los servidores DHCP. Luego, el servidor DHCPv6 envía una
respuesta con la información apropiada al puerto 546/UDP en la dirección local de vínculo del
cliente.

El paquete dhcp en Red Hat Enterprise Linux 8 proporciona soporte para un servidor DHCPv6.

Además de DHCPv6, IPv6 también admite un segundo método de configuración dinámica,


llamado Autoconfiguración de direcciones libres de estado (SLAAC). Al usar SLAAC, en general,
el host activa su interfaz con una dirección fe80::/64 local de vínculo. Luego, envía una
“solicitud de enrutador” a ff02::2, el grupo multidifusión (multicast) local de vínculo de todos
los enrutadores. Un enrutador IPv6 en el vínculo local responde a la dirección local de vínculo del
host con un prefijo de red y, posiblemente, con otra información. Luego, el host usa ese prefijo de
red con una ID de interfaz que, en general, crea de la misma manera que se crean las direcciones
locales de vínculos. El enrutador envía, de manera periódica, actualizaciones multidifusión
(multicast) (“anuncios de enrutador”) para confirmar o actualizar la información proporcionada.

El paquete radvd en Red Hat Enterprise Linux 8 permite que un enrutador IPv6 basado en Red Hat
Enterprise Linux genere SLAAC a través de anuncios de enrutador.

Importante
Una máquina Red Hat Enterprise Linux 8 típica configurada para obtener
direcciones IPv4 a través de DHCP también está, a menudo, configurada para
usar SLAAC para obtener direcciones IPv6. Esto puede hacer que las máquinas
obtengan, de manera inesperada, direcciones IPv6 al agregar un enrutador IPv6 a la
red.

Algunas implementaciones IPv6 combinan SLAAC y DHCPv6, usan SLAAC para


solo ofrecer información de la dirección de red y DHCPv6 para proporcionar otra
información, como qué servidores DNS y dominios de búsqueda configurar.

Nombres de host y direcciones IP


Sería un inconveniente si siempre tuviera que usar direcciones IP para comunicarse con sus
servidores. Los humanos en general preferirían trabajar con nombres más que con cadenas de

420 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

números largas y difíciles de recordar. Y entonces, Linux tiene una serie de mecanismos para
asignar un nombre de host a una dirección IP, llamada conjuntamente resolución de nombres.

Una forma es establecer una entrada estática para cada nombre en el archivo /etc/hosts en
cada sistema. Esto requiere que actualice manualmente cada copia del archivo del servidor.

Para la mayoría de los hosts, puede buscar la dirección para un nombre de host (o un nombre
de host de una dirección) de un servicio de red llamado Sistema de Nombres de Dominio (DNS).
DNS es una red distribuida de servidores que proporciona asignaciones de nombres de host
a direcciones IP. Para que el servicio de nombres funcione, un host debe estar apuntado a un
servidor de nombres. Este servidor de nombres no debe estar en la misma subred, simplemente
necesita que el host tenga acceso a ella. Esto generalmente se configura a través de DHCP o una
configuración estática en un archivo llamado /etc/resolv.conf. Las siguientes secciones de
este capítulo explicarán cómo configurar la resolución de nombres.

Referencias
Páginas de manual services(5), ping(8), biosdevname(1) y udev(7)

Para obtener más información, consulte la guía Configuración y administración de


redes en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

Comprensión de los nombres de dispositivos de red predecibles de systemd


https://major.io/2015/08/21/understanding-systemds-predictable-network-device-
names/

Referencias IETF RFC seleccionadas:

RFC 2460: Especificación de protocolo de Internet, versión 6 (IPv6)


http://tools.ietf.org/html/rfc2460

RFC 4291: Arquitectura de direccionamiento IP versión 6


http://tools.ietf.org/html/rfc4291

RFC 5952: Una recomendación para la representación de texto de dirección


IPv6
http://tools.ietf.org/html/rfc5952

RFC 4862: Autoconfiguración de direcciones libres de estado de IPv6


http://tools.ietf.org/html/rfc4862

RFC 3315: Protocolo de configuración dinámica de host para IPv6 (DHCPv6)


http://tools.ietf.org/html/rfc3315

RFC 3736: Servicio de protocolo de configuración dinámica de host libre de


estado (DHCP) para IPv6
http://tools.ietf.org/html/rfc3736

RFC 4193: Direcciones únicas de monodifusión de IPv6 local


http://tools.ietf.org/html/rfc4193

RH124-RHEL8.2-es-1-20200928 421
capítulo 12 | Administración de redes

Cuestionario

Descripción de conceptos de redes


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué número es el tamaño, en bits, de una dirección IPv4?


a. 4
b. 8
c. 16
d. 32
e. 64
f. 128

2. ¿Qué término determina cuántos bits iniciales en la dirección IP contribuyen a su


dirección de red?
a. netscope
b. máscara de red
c. subred
d. multidifusión (multicast)
e. netaddr
f. network (red)

3. ¿Qué dirección representa una dirección de host IPv4 válida en la red 192.168.1.0/24?
a. 192.168.1.188
b. 192.168.1.0
c. 192.168.1.255
d. 192.168.1.256

4. ¿Qué número es el tamaño, en bits, de una dirección IPv6?


a. 4
b. 8
c. 16
d. 32
e. 64
f. 128

422 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

5. ¿Qué dirección no representa una dirección IPv6 válida?


a. 2000:0000:0000:0000:0000:0000:0000:0001
b. 2::1
c. ::
d. ff02::1:0:0
e. 2001:3::7:0:2
f. 2001:db8::7::2
g. 2000::1

6. ¿Qué término permite que un sistema envíe tráfico a una dirección IP especial que es
recibida por múltiples sistemas?
a. netscope
b. máscara de red
c. subred
d. multidifusión (multicast)
e. netaddr
f. red

RH124-RHEL8.2-es-1-20200928 423
capítulo 12 | Administración de redes

Solución

Descripción de conceptos de redes


Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué número es el tamaño, en bits, de una dirección IPv4?


a. 4
b. 8
c. 16
d. 32
e. 64
f. 128

2. ¿Qué término determina cuántos bits iniciales en la dirección IP contribuyen a su


dirección de red?
a. netscope
b. máscara de red
c. subred
d. multidifusión (multicast)
e. netaddr
f. network (red)

3. ¿Qué dirección representa una dirección de host IPv4 válida en la red 192.168.1.0/24?
a. 192.168.1.188
b. 192.168.1.0
c. 192.168.1.255
d. 192.168.1.256

4. ¿Qué número es el tamaño, en bits, de una dirección IPv6?


a. 4
b. 8
c. 16
d. 32
e. 64
f. 128

424 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

5. ¿Qué dirección no representa una dirección IPv6 válida?


a. 2000:0000:0000:0000:0000:0000:0000:0001
b. 2::1
c. ::
d. ff02::1:0:0
e. 2001:3::7:0:2
f. 2001:db8::7::2
g. 2000::1

6. ¿Qué término permite que un sistema envíe tráfico a una dirección IP especial que es
recibida por múltiples sistemas?
a. netscope
b. máscara de red
c. subred
d. multidifusión (multicast)
e. netaddr
f. red

RH124-RHEL8.2-es-1-20200928 425
capítulo 12 | Administración de redes

Validación de la configuración de red

Objetivos
Tras finalizar esta sección, deberá poder probar y revisar la configuración de red actual con las
utilidades de la línea de comandos.

Recopilación de la información de interfaz de red


Identificación de interfaces de red
El comando ip link listará todas las interfaces de red disponibles en su sistema:

[user@host ~]$ ip link show


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT
group default qlen 1000
link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT
group default qlen 1000
link/ether 52:54:00:00:00:1e brd ff:ff:ff:ff:ff:ff

En el ejemplo anterior, el servidor tiene tres interfaces de red: lo, que es el dispositivo de bucle
invertido que está conectado al propio servidor, y dos interfaces Ethernet, ens3 y ens4.

Para configurar cada interfaz de red correctamente, necesita saber cuál está conectada a qué red.
En muchos casos, sabrá la dirección MAC de la interfaz conectada a cada red, ya sea porque está
impresa físicamente en la tarjeta o el servidor, o porque es una máquina virtual y usted sabe cómo
está configurada. La dirección MAC del dispositivo aparece después de link/ether para cada
interfaz. Así que ya sabes que la tarjeta de red con la dirección MAC 52:54:00:00:00:0a es la
interfaz de red ens3.

Visualización de las direcciones IP


Use el comando ip para ver la información del dispositivo y de la dirección. Una sola interfaz de
red puede tener varias direcciones IPv4 o IPv6.

[user@host ~]$ ip addr show ens3


2: ens3: <BROADCAST,MULTICAST, UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
inet 192.0.2.2/24 brd 192.0.2.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 2001:db8:0:1:5054:ff:fe00:b/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe00:b/64 scope link
valid_lft forever preferred_lft forever

426 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Una interfaz activa es UP.


La línea link/ether especifica la dirección de hardware (MAC) del dispositivo.
La línea inet muestra una dirección IPv4, la longitud del prefijo de red y el alcance.
La línea inet6 muestra una dirección IPv6, la longitud del prefijo de red y el alcance. Esta
dirección es de alcance global y se usa con normalidad.
Esta línea inet6 muestra que la interfaz tiene una dirección IPv6 del alcance de vínculo que
solo puede usarse para la comunicación en el vínculo de Ethernet local.

Visualización de estadísticas de rendimiento


El comando ip también puede usarse para mostrar las estadísticas sobre el rendimiento de la red.
Se pueden usar contadores para cada interfaz de red para identificar la presencia de problemas de
red. Los contadores registran estadísticas para cosas como la cantidad de paquetes recibidos (RX)
y transmitidos (TX), errores de paquetes y paquetes que se omitieron.

[user@host ~]$ ip -s link show ens3


2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen
1000
link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
269850 2931 0 0 0 0
TX: bytes packets errors dropped carrier collsns
300556 3250 0 0 0 0

Comprobación de la conectividad entre hosts


El comando ping se usa para comprobar la conectividad. El comando continúa ejecutándose
hasta que se presione Ctrl+c, a menos que se indiquen otras opciones para limitar la cantidad de
paquetes enviados.

[user@host ~]$ ping -c3 192.0.2.254


PING 192.0.2.1 (192.0.2.254) 56(84) bytes of data.
64 bytes from 192.0.2.254: icmp_seq=1 ttl=64 time=4.33 ms
64 bytes from 192.0.2.254: icmp_seq=2 ttl=64 time=3.48 ms
64 bytes from 192.0.2.254: icmp_seq=3 ttl=64 time=6.83 ms

--- 192.0.2.254 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.485/4.885/6.837/1.424 ms

El comando ping6 es la versión de IPv6 de ping en Red Hat Enterprise Linux. Se comunica a
través de IPv6 y toma direcciones IPv6, pero de lo contrario funciona como ping.

[user@host ~]$ ping6 2001:db8:0:1::1


PING 2001:db8:0:1::1(2001:db8:0:1::1) 56 data bytes
64 bytes from 2001:db8:0:1::1: icmp_seq=1 ttl=64 time=18.4 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=2 ttl=64 time=0.178 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=3 ttl=64 time=0.180 ms
^C
--- 2001:db8:0:1::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.178/6.272/18.458/8.616 ms
[user@host ~]$

RH124-RHEL8.2-es-1-20200928 427
capítulo 12 | Administración de redes

Cuando hace ping a las direcciones de vínculo local y al grupo multidifusión de todos los nodos
de vínculo local (ff02::1), la interfaz de red que se debe usar debe especificarse explícitamente
con un identificador de zona de alcance (como ff02::1%ens3). Si esto se deja afuera, se
muestra el error connect: Invalid argument.

Hacer ping a ff02::1 puede ser útil para buscar otros nodos IPv6 en la red local.

[user@host ~]$ ping6 ff02::1%ens4


PING ff02::1%ens4(ff02::1) 56 data bytes
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=1 ttl=64 time=22.7 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=30.1 ms (DUP!)
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=2 ttl=64 time=0.183 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=2 ttl=64 time=0.231 ms (DUP!)
^C
--- ff02::1%ens4 ping statistics ---
2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.183/13.320/30.158/13.374 ms
[user@host ~]$ ping6 -c 1 fe80::f482:dbff:fe25:6a9f%ens4
PING fe80::f482:dbff:fe25:6a9f%ens4(fe80::f482:dbff:fe25:6a9f) 56 data bytes
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=22.9 ms

--- fe80::f482:dbff:fe25:6a9f%ens4 ping statistics ---


1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 22.903/22.903/22.903/0.000 ms

Recuerde que las direcciones de vínculo local de IPv6 pueden ser usadas por otros hosts en el
mismo vínculo, al igual que las direcciones normales.

[user@host ~]$ ssh fe80::f482:dbff:fe25:6a9f%ens4


user@fe80::f482:dbff:fe25:6a9f%ens4's password:
Last login: Thu Jun 5 15:20:10 2014 from host.example.com
[user@server ~]$

Solución de problemas de ruta


El enrutamiento de la red es complejo y, a veces, el tráfico no se comporta como se espera. Aquí
hay algunas herramientas de diagnóstico útiles.

Visualización de la tabla de enrutamiento


Use el ip comando con el route Opción para mostrar información de enrutamiento.

[user@host ~]$ ip route


default via 192.0.2.254 dev ens3 proto static metric 1024
192.0.2.0/24 dev ens3 proto kernel scope link src 192.0.2.2
10.0.0.0/8 dev ens4 proto kernel scope link src 10.0.0.11

Esto muestra la tabla de enrutamiento de IPv4. Todos los paquetes que estén destinados
para la red 10.0.0.0/8 se envían directamente al destino mediante la ens4 del dispositivo.
Todos los paquetes que estén destinados para la red 192.0.2.0/24 se envían directamente
al destino mediante la ens3 del dispositivo. Todos los demás paquetes se envían al enrutador
predeterminado que está ubicado en 192.0.2.254, y también mediante la ens3 del dispositivo.

428 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Agregue la opción -6 para mostrar la tabla de enrutamiento de IPv6:

[user@host ~]$ ip -6 route


unreachable ::/96 dev lo metric 1024 error -101
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101
2001:db8:0:1::/64 dev ens3 proto kernel metric 256
unreachable 2002:a00::/24 dev lo metric 1024 error -101
unreachable 2002:7f00::/24 dev lo metric 1024 error -101
unreachable 2002:a9fe::/32 dev lo metric 1024 error -101
unreachable 2002:ac10::/28 dev lo metric 1024 error -101
unreachable 2002:c0a8::/32 dev lo metric 1024 error -101
unreachable 2002:e000::/19 dev lo metric 1024 error -101
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101
fe80::/64 dev ens3 proto kernel metric 256
default via 2001:db8:0:1::ffff dev ens3 proto static metric 1024

En este ejemplo, ignore las rutas a las que no se puede acceder que apuntan a redes que no se
usan. Eso deja tres rutas:

1. La red 2001:db8:0:1::/64, que usa la interfaz ens3 (que supuestamente tiene una
dirección en esa red).

2. La red fe80::/64, que usa la interfaz ens3, para la dirección de vínculo local. En un sistema
con múltiples interfaces, hay una ruta a fe80::/64 cada interfaz para cada dirección de
vínculo local.

3. Una ruta predeterminada a todas las redes en Internet IPv6 (la red ::/0) que no tiene una
ruta más específica en el sistema, a través del enrutador en 2001:db8:0:1::ffff, al que se
puede acceder con el dispositivo ens3.

Seguimiento de rutas tomadas por el tráfico


Para rastrear la ruta que toma el tráfico de la red para llegar a un host remoto a través de múltiples
enrutadores, use traceroute o tracepath. Esto puede identificar si hay un problema con uno
de sus enrutadores o con uno intermedio. Ambos comandos usan paquetes de UDP para realizar el
seguimiento de una ruta de forma predeterminada; sin embargo, muchas redes bloquean el tráfico
de UDP e ICMP. El comando traceroute tiene opciones para realizar el seguimiento de la ruta
con paquetes UDP (predeterminado), ICMP (-I) o TCP (-T. Sin embargo, en general, el comando
traceroute no está instalado de forma predeterminada.

[user@host ~]$ tracepath access.redhat.com


...output omitted...
4: 71-32-28-145.rcmt.qwest.net 48.853ms asymm 5
5: dcp-brdr-04.inet.qwest.net 100.732ms asymm 7
6: 206.111.0.153.ptr.us.xo.net 96.245ms asymm 7
7: 207.88.14.162.ptr.us.xo.net 85.270ms asymm 8
8: ae1d0.cir1.atlanta6-ga.us.xo.net 64.160ms asymm 7
9: 216.156.108.98.ptr.us.xo.net 108.652ms
10: bu-ether13.atlngamq46w-bcr00.tbone.rr.com 107.286ms asymm 12
...output omitted...

Cada línea de la salida de tracepath representa un router o hop por donde pasa el paquete
entre el origen y el destino final. Se proporciona información adicional como disponible, que
incluye la sincronización en ambos sentidos (RTT) y cualquier cambio en el tamaño de la unidad
de transmisión máxima (MTU). La indicación asymm significa que el tráfico llegó a ese enrutador y

RH124-RHEL8.2-es-1-20200928 429
capítulo 12 | Administración de redes

regresó de ese enrutador usando diferentes rutas (asimétricas). Los enrutadores que se muestran
son los que se usan para el tráfico saliente, no el tráfico de retorno.

Los comandos tracepath6 y traceroute -6 equivalen a tracepath y traceroute para


IPv6.

[user@host ~]$ tracepath6 2001:db8:0:2::451


1?: [LOCALHOST] 0.091ms pmtu 1500
1: 2001:db8:0:1::ba 0.214ms
2: 2001:db8:0:1::1 0.512ms
3: 2001:db8:0:2::451 0.559ms reached
Resume: pmtu 1500 hops 3 back 3

Solución de problemas en puertos y servicios


Los servicios TCP usan sockets como extremos para la comunicación y se componen de una
dirección IP, protocolo y número de puerto. En general, los servicios están atentos a los puertos
estándares mientras que los clientes usan un puerto disponible en forma aleatoria. Los nombres
más conocidos de puertos estándares están enumerados en el archivo /etc/services.

El comando ss se usa para mostrar las estadísticas del socket. El comando ss tiene por objeto
reemplazar la herramienta anterior netstat, que es parte del paquete net-tools, que algunos
administradores de sistemas pueden conocer más, pero que no siempre está instalada.

[user@host ~]$ ss -ta


State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 *:36889 *:*
ESTAB 0 0 172.25.250.10:ssh 172.25.254.254:59392
LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 128 :::34946 :::*

El puerto usado para SSH escucha todas las direcciones IPv4. El “*” se usa para indicar
“todos” cuando se hace referencia a los puertos o las direcciones IPv4.
El puerto usado para SMTP escucha la interfaz de circuito de retorno de la IPv4 127.0.0.1.
La conexión SSH establecida está en la interfaz 172.25.250.10 y se origina de un sistema con
una dirección de 172.25.254.254.
El puerto usado para SSH está atento a todas las direcciones IPv6. Se usa la sintaxis “::” para
representar todas las interfaces de IPv6.
El puerto usado para SMTP presta atención a la interfaz de circuito de retorno de la IPv6 ::1.

Opciones para ss y netstat

Opción Descripción

-n Muestra números en lugar de nombres para las interfaces y los


puertos.

-t Muestra los sockets TCP.

430 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Opción Descripción

-u Muestra los sockets UDP.

-l Muestra solo los sockets a los que está atento.

-a Muestra todos los sockets (los que escucha y los


establecidos).

-p Muestra el proceso de usar los sockets.

-A inet Muestra las conexiones activas (pero no los sockets que se


escuchan) para la familia de direcciones inet. Es decir, ignora
los sockets de dominio UNIX local.

Para ss, se muestran las conexiones IPv4 e IPv6. Para


netstat, solo se muestran las conexiones IPv4. (netstat -
A inet6 muestra conexiones IPv6, y netstat -46 muestra
IPv4 e IPv6 al mismo tiempo).

Referencias
Páginas de manual ip-link(8), ip-address(8), ip-route(8), ip(8), ping(8),
tracepath(8), traceroute(8), ss(8) y netstat(8)

Para obtener más información, consulte la guía Configuración y administración de


redes en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

RH124-RHEL8.2-es-1-20200928 431
capítulo 12 | Administración de redes

Ejercicio Guiado

Validación de la configuración de red


En este ejercicio, revisará la configuración de red de uno de sus servidores.

Resultados
Identificar las interfaces de la red actual y las direcciones básicas de la red.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-validate start. El comando ejecuta


un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab net-validate start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas están configurados para usar claves SSH para la autenticación y acceso sin
contraseña para servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2.
Importante
Los nombres de la interfaz de red están determinados por su tipo de bus y el orden
de detección de los dispositivos durante el arranque. Los nombres de la interfaz de
red variarán según la plataforma del curso y el hardware en uso.

En su sistema ahora, localice el nombre de la interfaz (como ens06 o en1p2)


asociado a la dirección Ethernet 52:54:00:00:fa:0a. Utilice este nombre de
interfaz para reemplazar el marcador de posición enX utilizado a lo largo de este
ejercicio.

Localice el nombre de la interfaz de red asociado con la dirección Ethernet


52:54:00:00:fa:0a. Registre o recuerde este nombre y utilícelo para reemplazar el
marcador de posición enX en los comandos subsiguientes.

432 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

[student@servera ~]$ ip link


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff

3. Visualice la dirección IP y la máscara de red actuales de todas las interfaces.

[student@servera ~]$ ip addr


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
inet 172.25.250.10/24 brd 172.25.250.255 scope global noprefixroute ens3
valid_lft forever preferred_lft forever
inet6 fe80::3059:5462:198:58b2/64 scope link noprefixroute
valid_lft forever preferred_lft forever

4. Visualice las estadísticas correspondientes a la interfaz enX.

[student@servera ~]$ ip -s link show enX


2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode
DEFAULT group default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
89014225 168251 0 154418 0 0
TX: bytes packets errors dropped carrier collsns
608808 6090 0 0 0 0

5. Visualice la información de enrutamiento.

[student@servera ~]$ ip route


default via 172.25.250.254 dev enX proto static metric 100
172.25.250.0/24 dev enX proto kernel scope link src 172.25.250.10 metric 100

6. Verifique que se pueda acceder al enrutador.

[student@servera ~]$ ping -c3 172.25.250.254


PING 172.25.250.254 (172.25.250.254) 56(84) bytes of data.
64 bytes from 172.25.250.254: icmp_seq=1 ttl=64 time=0.196 ms
64 bytes from 172.25.250.254: icmp_seq=2 ttl=64 time=0.436 ms
64 bytes from 172.25.250.254: icmp_seq=3 ttl=64 time=0.361 ms

RH124-RHEL8.2-es-1-20200928 433
capítulo 12 | Administración de redes

--- 172.25.250.254 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 49ms
rtt min/avg/max/mdev = 0.196/0.331/0.436/0.100 ms

7. Visualice todos los saltos entre el sistema local y classroom.example.com.

[student@servera ~]$ tracepath classroom.example.com


1?: [LOCALHOST] pmtu 1500
1: workstation.lab.example.com 0.270ms
1: workstation.lab.example.com 0.167ms
2: classroom.example.com 0.473ms reached
Resume: pmtu 1500 hops 2 back 2

8. Visualice los sockets TCP de escucha en el sistema local.

[student@servera ~]$ ss -lt


State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 [::]:sunrpc [::]:*
LISTEN 0 128 [::]:ssh [::]:*

9. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab net-validate finish para terminar este ejercicio.

[student@workstation ~]$ lab net-validate finish

Esto concluye el ejercicio guiado.

434 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Configuración de redes desde la línea de


comandos

Objetivos
Tras finalizar esta sección, debería poder administrar dispositivos y configuraciones de red con el
comando nmcli.

Descripción de conceptos de NetworkManager


NetworkManager es un daemon que monitorea y administra los parámetros de red. Además
del daemon, hay un applet del área de notificaciones de GNOME que proporciona información
sobre el estado de la red. Las herramientas gráficas y de la línea de comandos se comunican
con NetworkManager y guardan archivos de configuración en el directorio /etc/sysconfig/
network-scripts.

• Un dispositivo es una interfaz de red.

• Una conexión es un grupo de parámetros que pueden configurarse para un dispositivo.

• Solo puede haber una conexión activa para un dispositivo por vez. Pueden existir múltiples
conexiones para que las usen distintos dispositivos o para permitir que una configuración se
modifique para el mismo dispositivo. Si necesita cambiar temporalmente la configuración de
red, en lugar de cambiar la configuración de una conexión, puede cambiar la conexión que está
activa para un dispositivo. Por ejemplo, un dispositivo para una interfaz de red inalámbrica en
una laptop puede usar diferentes conexiones para la red inalámbrica en un sitio de trabajo y para
la red inalámbrica en el hogar.

• Cada conexión tiene un nombre o ID que la identifica.

• La utilidad nmcli se usa para crear y editar archivos de conexión desde la línea de comandos.

Visualización de información de redes


El comando nmcli dev status muestra el estado de todos los dispositivos de red:

[user@host ~]$ nmcli dev status


DEVICE TYPE STATE CONNECTION
eno1 ethernet connected eno1
ens3 ethernet connected static-ens3
eno2 ethernet disconnected --
lo loopback unmanaged --

El comando nmcli con show muestra una lista de todas las conexiones. Para enumerar solo las
conexiones activas, agregue la opción --active.

[user@host ~]$ nmcli con show


NAME UUID TYPE DEVICE
eno2 ff9f7d69-db83-4fed-9f32-939f8b5f81cd 802-3-ethernet --
static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1
[user@host ~]$ nmcli con show --active

RH124-RHEL8.2-es-1-20200928 435
capítulo 12 | Administración de redes

NAME UUID TYPE DEVICE


static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1

Adición de una conexión de red


El comando nmcli con add se usa para agregar nuevas conexiones de red. Los comandos
nmcli con add incluidos en el siguiente ejemplo suponen que el nombre de la conexión de red
que se agrega aún no se encuentra en uso.

El siguiente comando agrega una conexión nueva llamada eno2 para la interfaz eno2, que obtiene
información de redes IPv4 mediante el uso de DHCP y que se conecta automáticamente en el
inicio. También obtiene configuraciones de red IPv6 al escuchar los anuncios del enrutador en el
vínculo local. El nombre del archivo de configuración se basa en el valor de la opción con-name,
eno2, y se guarda en el archivo /etc/sysconfig/network-scripts/ifcfg-eno2.

[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2

En el siguiente ejemplo, se crea la conexión eno2 para el dispositivo eno2 con una dirección
IPv4 estática, mediante el uso de la dirección IPv4 y el prefijo de red 192.168.0.5/24 y la
puerta de enlace predeterminada 192.168.0.254; sin embargo, sigue estableciendo la conexión
automática en el inicio y guarda su configuración en el mismo archivo. Debido a las limitaciones de
tamaño de la pantalla, termine la primera línea con un escape \ de shell y complete el comando en
la siguiente línea.

[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
ipv4.address 192.168.0.5/24 ipv4.gateway 192.168.0.254

Este ejemplo final crea una conexión eno2 para el dispositivo eno2 con direcciones IPv4 estáticas,
mediante el uso de la dirección IPv6, el prefijo de red 2001:db8:0:1::c000:207/64, la puerta
de enlace predeterminada de IPv6 2001:db8:0:1::1, y la dirección IPv4, el prefijo de red
192.0.2.7/24 y la puerta de enlace predeterminada de IPv4 192.0.2.1, pero aún se conecta
de manera automática durante el inicio y almacena su configuración en /etc/sysconfig/
network-scripts/ifcfg-eno2. Debido a las limitaciones de tamaño de la pantalla, termine la
primera línea con un escape \ de shell y complete el comando en la siguiente línea.

[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
ipv6.address 2001:db8:0:1::c000:207/64 ipv6.gateway 2001:db8:0:1::1 \
ipv4.address 192.0.2.7/24 ipv4.gateway 192.0.2.1

Control de conexiones de red


El comando nmcli con up name activa el nombre de la conexión en la interfaz de red a la que
esté unida. Observe que el comando toma el nombre de una conexión y no el nombre de una
interfaz de red. Recuerde que el comando nmcli con show muestra los nombres de todas las
conexiones disponibles.

[root@host ~]# nmcli con up static-ens3

El comando nmcli dev disconnect device desconecta el dispositivo de la interfaz de red y


lo cierra. Este comando puede abreviarse nmcli dev dis device:

436 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

[root@host ~]# nmcli dev dis ens3

Importante
Use nmcli dev dis device para desactivar una interfaz de red.

Normalmente, el comando nmcli con down name no es la mejor manera de


desactivar una interfaz de red, ya que cierra la conexión. No obstante, de manera
predeterminada, la mayoría de las conexiones con cable del sistema se configuran
con la opción autoconnect habilitada. Con esta opción, la conexión se activa
ni bien la interfaz de red se encuentra disponible. Como la interfaz de red de la
conexión sigue estando disponible, el comando nmcli con down name cierra la
interfaz, pero luego NetworkManager la vuelve a abrir de inmediato a menos que la
conexión esté completamente desconectada desde la interfaz.

Modificación de la configuración de conexión de red


Las conexiones de NetworkManager tienen dos tipos de parámetros. Hay propiedades de
conexión estáticas, configuradas por el administrador y almacenadas en los archivos de
configuración en /etc/sysconfig/network-scripts/ifcfg-*. También puede haber
información de conexión activa, que obtiene la conexión desde un servidor DHCP y que no se
almacena de manera persistente.

Para enumerar los parámetros actuales de una conexión, ejecute el comando nmcli con
show name, donde name es el nombre de la conexión. Las configuraciones en minúsculas son
propiedades estáticas que el administrador puede cambiar. Las configuraciones en mayúscula son
configuraciones activas que se usan provisoriamente para esta instancia de la conexión.

[root@host ~]# nmcli con show static-ens3


connection.id: static-ens3
connection.uuid: 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa
connection.interface-name: --
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.timestamp: 1401803453
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: CA:9D:E9:2A:CE:F0
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options:

RH124-RHEL8.2-es-1-20200928 437
capítulo 12 | Administración de redes

ipv4.method: manual
ipv4.dns: 192.168.0.254
ipv4.dns-search: example.com
ipv4.addresses: { ip = 192.168.0.2/24, gw =
192.168.0.254 }
ipv4.routes:
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv6.method: manual
ipv6.dns: 2001:4860:4860::8888
ipv6.dns-search: example.com
ipv6.addresses: { ip = 2001:db8:0:1::7/64, gw =
2001:db8:0:1::1 }
ipv6.routes:
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.dhcp-hostname: --
...output omitted...

El comando nmcli con mod name puede usarse para modificar la configuración de una
conexión. Las modificaciones que se realicen también se almacenan en el archivo /etc/
sysconfig/network-scripts/ifcfg-name para la conexión. Las configuraciones
disponibles se documentan en la página de manual nm-settings(5).

Para configurar la dirección IPv4 en 192.0.2.2/24 y la puerta de enlace predeterminada en


192.0.2.254 para la conexión static-ens3:

[root@host ~]# nmcli con mod static-ens3 ipv4.address 192.0.2.2/24 \


ipv4.gateway 192.0.2.254

Para configurar la dirección IPv6 en 2001:db8:0:1::a00:1/64 y la puerta de enlace


predeterminada en 2001:db8:0:1::1 para la conexión static-ens3:

[root@host ~]# nmcli con mod static-ens3 ipv6.address 2001:db8:0:1::a00:1/64 \


ipv6.gateway 2001:db8:0:1::1

438 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Importante
Si una conexión que obtuvo la información de IPv4 de un servidor DHCPv4 se
modifica para obtenerla de archivos de configuración estática solamente, el
parámetro ipv4.method también debe modificarse de auto a manual.

Del mismo modo, si una conexión que obtuvo su información de IPv6 por SLAAC
o por un servidor DHCPv6 se está modificando para obtenerla solo de archivos de
configuración estática, el parámetro ipv6.method también debe modificarse de
auto o dhcp a manual.

De lo contrario, es posible que la conexión no responda o no se complete de manera


correcta al activarse, o es posible que obtenga una dirección IPv4 de DHCP o una
dirección IPv6 de DHCPv6 o SLAAC además de la dirección estática.

Varias configuraciones pueden tener múltiples valores. Un valor específico puede agregarse a la
lista o eliminarse de la lista para una configuración mediante la adición de un símbolo + o - al inicio
del nombre de la configuración.

Eliminación de una conexión de red


El comando nmcli con del name eliminará la conexión llamada name del sistema, la
desconectará del dispositivo y quitará el archivo /etc/sysconfig/network-scripts/
ifcfg-name.

[root@host ~]# nmcli con del static-ens3

¿Quién puede modificar la configuración de red?


El usuario root puede realizar los cambios de configuración de red necesarios con nmcli.

Sin embargo, los usuarios regulares que han iniciado sesión en la consola local también pueden
realizar muchos cambios de configuración de red en el sistema. Deben iniciar sesión en el teclado
del sistema para la consola virtual basada en texto o el entorno de escritorio gráfico para obtener
este control. La lógica detrás de esto es que si alguien está físicamente presente en la consola de
la computadora, es probable que se esté utilizando como una estación de trabajo o computadora
portátil y que deban configurar, activar y desactivar las interfaces de red inalámbricas o por cable
a voluntad. Por el contrario, si el sistema es un servidor en el centro de datos, generalmente los
únicos usuarios que inician sesión localmente en la máquina deben ser los administradores.

Los usuarios regulares que inician sesión usando ssh no tienen acceso para cambiar los permisos
de red sin convertirse en root.

Puedes usar el comando nmcli gen permissions para ver cuáles son sus permisos actuales.

Resumen de comandos
La siguiente tabla es una lista de los comandos nmcli clave abordados en esta sección.

Comando Propósito

nmcli dev status Muestra el estado de todas las interfaces de red


arrojado por NetworkManager.

RH124-RHEL8.2-es-1-20200928 439
capítulo 12 | Administración de redes

Comando Propósito

nmcli con show Enumerar todas las conexiones.

nmcli con show name Enumera la configuración actual de la conexión


name.

nmcli con add con-name name Agrega una conexión nueva con el nombre name.

nmcli con mod name Modifica la conexión name.

nmcli con reload Vuelva a cargar los archivos de configuración (este


comando resulta útil tras la edición manual de los
archivos).

nmcli con up name Activa la conexión name.

nmcli dev dis dev Desactiva y desconecta la conexión actual en la


interfaz de red dev.

nmcli con del name Elimina la conexión name y su archivo de


configuración.

Referencias
páginas de manual NetworkManager(8), nmcli(1), nmcli-examples(5), nm-
settings(5), hostnamectl(1), resolv.conf(5), hostname(5), ip(8) y ip-
address(8)

440 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Ejercicio Guiado

Configuración de redes desde la línea de


comandos
En este ejercicio, configurará los parámetros de red con nmcli.

Resultados
Debería poder convertir un sistema de DHCP a configuración estática.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-configure start. El comando ejecuta


un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab net-configure start

nota
Si es solicitado por el comando sudo para la contraseña student, ingrese
student como contraseña.

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Localice nombres de interfaz de red.

Importante
Los nombres de la interfaz de red están determinados por su tipo de bus y el orden
de detección de los dispositivos durante el arranque. Los nombres de la interfaz de
red variarán según la plataforma del curso y el hardware en uso.

En su sistema ahora, localice el nombre de la interfaz (como ens06 o en1p2)


asociado a la dirección Ethernet 52:54:00:00:fa:0a. Utilice este nombre de
interfaz para reemplazar el marcador de posición enX utilizado a lo largo de este
ejercicio.

RH124-RHEL8.2-es-1-20200928 441
capítulo 12 | Administración de redes

Localice el nombre de la interfaz de red asociado con la dirección Ethernet


52:54:00:00:fa:0a. Registre o recuerde este nombre y utilícelo para reemplazar el
marcador de posición enX en los comandos subsiguientes.

[student@servera ~]$ ip link


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff

3. Visualice los parámetros de configuración de red con nmcli.

3.1. Muestre todas las conexiones.

[student@servera ~]$ nmcli con show


NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX

3.2. Muestre solo la conexión activa.


Su nombre de interfaz de red debe aparecer debajo de DISPOSITIVO, y el nombre
de la conexión activa para ese dispositivo aparece en la misma línea debajo de
NOMBRE. Este ejercicio asume que la conexión activa es Conexión por cable 1.
Si el nombre de la conexión activa es diferente, use que en lugar de Conexión por
cable 1 para el resto de este ejercicio.

[student@servera ~]$ nmcli con show --active


NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX

3.3. Muestre todos los parámetros de configuración para la conexión activa.

[student@servera ~]$ nmcli con show "Wired connection 1"


connection.id: Wired connection 1
connection.uuid: 03da038a-3257-4722-a478-53055cc90128
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: --
connection.autoconnect: yes
...output omitted...
ipv4.method: manual
ipv4.dns: 172.25.250.254
ipv4.dns-search: lab.example.com,example.com
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: 172.25.250.10/24
ipv4.gateway: 172.25.250.254
...output omitted...
GENERAL.NAME: Wired connection 1
GENERAL.UUID: 03da038a-3257-4722-a478-53055cc90128

442 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

GENERAL.DEVICES: enX
GENERAL.STATE: activated
GENERAL.DEFAULT: yes
GENERAL.DEFAULT6: no
GENERAL.SPEC-OBJECT: --
GENERAL.VPN: no
GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/1
GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 172.25.250.10/24
IP4.GATEWAY: 172.25.250.254
IP4.ROUTE[1]: dst = 172.25.250.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 172.25.250.254, mt = 100
IP4.DNS[1]: 172.25.250.254
IP6.ADDRESS[1]: fe80::3059:5462:198:58b2/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255

Presione q para salir del comando.

3.4. Muestre el estado del dispositivo.

[student@servera ~]$ nmcli dev status


DEVICE TYPE STATE CONNECTION
enX ethernet connected Wired connection 1
lo loopback unmanaged --

3.5. Muestre los parámetros de configuración para el dispositivo enX.

[student@servera ~]$ nmcli dev show enX


GENERAL.DEVICE: enX
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 52:54:00:00:FA:0A
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Wired connection 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 172.25.250.10/24
IP4.GATEWAY: 172.25.250.254
IP4.ROUTE[1]: dst = 172.25.250.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 172.25.250.254, mt = 100
IP4.DNS[1]: 172.25.250.254
IP6.ADDRESS[1]: fe80::3059:5462:198:58b2/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255

4. Cree una conexión estática con la misma dirección IPv4, prefijo de red y puerta de enlace
predeterminada. Asigne el nombre static-addr a la conexión nueva.

RH124-RHEL8.2-es-1-20200928 443
capítulo 12 | Administración de redes

Advertencia
Dado que el acceso al equipo se logra a través de la conexión de red principal,
configurar los valores incorrectos durante la configuración de red puede hacer que
su equipo no pueda encontrarse. Si esto sucede, use el botón Reset (Restablecer)
que está arriba de lo que antes era la pantalla gráfica del equipo e inténtelo de
nuevo.

[student@servera ~]$ sudo nmcli con add con-name "static-addr" ifname enX \
type ethernet ipv4.method manual \
ipv4.address 172.25.250.10/24 ipv4.gateway 172.25.250.254
Connection 'static-addr' (15aa3901-555d-40cb-94c6-cea6f9151634) successfully
added.

5. Modifique la conexión nueva para agregar el parámetro de configuración DNS.

[student@servera ~]$ sudo nmcli con mod "static-addr" ipv4.dns 172.25.250.254

6. Muestre y active la conexión nueva.

6.1. Visualice todas las conexiones.

[student@servera ~]$ nmcli con show


NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX
static-addr 15aa3901-555d-40cb-94c6-cea6f9151634 ethernet --

6.2. Visualice la conexión activa.

[student@servera ~]$ nmcli con show --active


NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX

6.3. Active la nueva conexión static-addr.

[student@servera ~]$ sudo nmcli con up "static-addr"


Connection successfully activated (D-Bus active path: /org/freedesktop/
NetworkManager/ActiveConnection/2)

6.4. Verifique la nueva conexión activa.

[student@servera ~]$ nmcli con show --active


NAME UUID TYPE DEVICE
static-addr 15aa3901-555d-40cb-94c6-cea6f9151634 ethernet enX

7. Configure la conexión original para que no comience en el arranque y verifique que la


conexión estática se use cuando se reinicie el sistema.

7.1. Inhabilite la conexión original para que no comience automáticamente en el arranque.

444 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

[student@servera ~]$ sudo nmcli con mod "Wired connection 1" \


connection.autoconnect no

7.2. Reinicie el sistema.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

7.3. Visualice la conexión activa.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$ nmcli con show --active
NAME UUID TYPE DEVICE
static-addr 15aa3901-555d-40cb-94c6-cea6f9151634 ethernet enX

8. Pruebe la conectividad con las direcciones de red nuevas.

8.1. Verifique la dirección IP.

[student@servera ~]$ ip addr show enX


2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
inet 172.25.250.10/24 brd 172.25.250.255 scope global noprefixroute enX
valid_lft forever preferred_lft forever
inet6 fe80::6556:cdd9:ce15:1484/64 scope link noprefixroute
valid_lft forever preferred_lft forever

8.2. Verifique la puerta de enlace predeterminada.

[student@servera ~]$ ip route


default via 172.25.250.254 dev enX proto static metric 100
172.25.250.0/24 dev enX proto kernel scope link src 172.25.250.10 metric 100

8.3. Compruebe la dirección DNS.

[student@servera ~]$ ping -c3 172.25.250.254


PING 172.25.250.254 (172.25.250.254) 56(84) bytes of data.
64 bytes from 172.25.250.254: icmp_seq=1 ttl=64 time=0.225 ms
64 bytes from 172.25.250.254: icmp_seq=2 ttl=64 time=0.314 ms
64 bytes from 172.25.250.254: icmp_seq=3 ttl=64 time=0.472 ms

--- 172.25.250.254 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 46ms
rtt min/avg/max/mdev = 0.225/0.337/0.472/0.102 ms

8.4. Salga de servera.

RH124-RHEL8.2-es-1-20200928 445
capítulo 12 | Administración de redes

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab net-configure finish para terminar este ejercicio.

[student@workstation ~]$ lab net-configure finish

Esto concluye el ejercicio guiado.

446 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Edición de archivos de configuración de


red

Objetivos
Tras finalizar esta sección, usted debería poder modificar los parámetros de configuración de red
mediante la edición de los archivos de configuración.

Descripción de los archivos de configuración de


conexión
De manera predeterminada, los cambios que se realizan con nmcli con mod name se guardan
de manera automática en /etc/sysconfig/network-scripts/ifcfg-name. Se puede usar
un editor de texto para editar manualmente dicho archivo. Después de hacerlo, ejecute nmcli
con reload para que NetworkManager lea las modificaciones en la configuración.

Por razones de retrocompatibilidad, las directivas guardadas en el archivo tienen diferentes


nombres y sintaxis que los nombres nm-settings(5). En la siguiente tabla, se asignan algunos de
los nombres de configuración clave a las directivas ifcfg-*.

Comparación de las directivas nm-settings y ifcfg-*

nmcli con mod ifcfg-* file Efecto

ipv4.method manual BOOTPROTO=none Las direcciones IPv4 se


configuran de manera
estática.

ipv4.method auto BOOTPROTO=dhcp Busca parámetros de


configuración de un servidor
DHCPv4. Si también hay
direcciones estáticas
configuradas, no las activará
sin antes obtener información
del servidor DHCPv4.

ipv4.addresses Establece direcciones IPv4


IPADDR=192.0.2.1
192.0.2.1/24 estáticas y prefijos de red.
PREFIX=24
Si se configura más de una
dirección para la conexión, la
segunda se define mediante
las directivas IPADDR1
y PREFIX1, la tercera,
mediante las directivas
IPADDR2 y PREFIX2, y así
sucesivamente.

ipv4.gateway Establece la puerta de enlace


GATEWAY=192.0.2.254
192.0.2.254 predeterminada.

RH124-RHEL8.2-es-1-20200928 447
capítulo 12 | Administración de redes

nmcli con mod ifcfg-* file Efecto

ipv4.dns 8.8.8.8 DNS1=8.8.8.8 Modifica el archivo /etc/


resolv.conf para usar este
servidor de nombres.

ipv4.dns-search DOMAIN=example.com Modifica /etc/


example.com resolv.conf para que use
este dominio en la directiva
buscar.

ipv4.ignore-auto-dns PEERDNS=no Omite información del


true servidor DNS obtenida del
servidor DHCP.

ipv6.method manual IPV6_AUTOCONF=no Direcciones IPv6


configuradas de manera
estática.

ipv6.method auto IPV6_AUTOCONF=yes Configura los parámetros de


red con SLAAC a partir de
anuncios del enrutador.

ipv6.method dhcp Configura los parámetros de


IPV6_AUTOCONF=no
red con DHCPv6, pero no
DHCPV6C=yes
con SLAAC.

ipv6.addresses Establece direcciones IPv6


IPV6ADDR=2001:db8::a/64
2001:db8::a/64 estáticas y prefijos de red.
Si se configura más de una
dirección para la conexión,
IPV6ADDR_SECONDARIES
toma una lista entre comillas
dobles de definiciones de
dirección/prefijo de espacio
delimitado.

ipv6.gateway Establece la puerta de enlace


IPV6_DEFAULTGW=2001:...
2001:db8::1 predeterminada.

ipv6.dns DNS1=fde2:6494:... Modifica el archivo /etc/


fde2:6494:1e09:2::d resolv.conf para usar este
servidor de nombres.
Exactamente igual que IPv4.

ipv6.dns-search IPV6_DOMAIN=example.com Modifica /etc/


example.com resolv.conf para que use
este dominio en la directiva
buscar.

ipv6.ignore-auto-dns IPV6_PEERDNS=no Omite información del


true servidor DNS obtenida del
servidor DHCP.

448 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

nmcli con mod ifcfg-* file Efecto

connection.autoconnect ONBOOT=yes Activa automáticamente esta


yes conexión durante el arranque.

connection.id ens3 NAME=ens3 El nombre de esta conexión.

connection.interface- DEVICE=ens3 La conexión se limita a la


name ens3 interfaz de red con este
nombre.

802-3-ethernet.mac- HWADDR= ... La conexión se limita a la


address ... interfaz de red con esta
dirección MAC.

Modificación de la configuración de red


También se puede configurar la red editando directamente los archivos de configuración de
conexión. Los archivos de configuración de conexión controlan las interfaces de software para
dispositivos de red individuales. En general, estos archivos se denominan /etc/sysconfig/
network-scripts/ifcfg-name, donde name se refiere al nombre del dispositivo o a la
conexión que controla el archivo de configuración. A continuación, se detallan las variables
estándares que se encuentran en el archivo usado para la configuración IPv4 estática o dinámica.

Opciones de configuración IPv4 para el archivo ifcfg

Estática Dinámica Cualquiera de las opciones

BOOTPROTO=none BOOTPROTO=dhcp DEVICE=ens3

IPADDR0=172.25.250.10 NAME="static-ens3"

PREFIX0=24 ONBOOT=yes

GATEWAY0=172.25.250.254 UUID = f3e8 (...) ad3e

DEFROUTE=yes USERCTL=yes

DNS1=172.25.254.254

En estos parámetros de configuración estáticos, las variables para la dirección IP, el prefijo y la
puerta de enlace tienen un número al final. Esto permite que se asignen varios conjuntos de
valores a la interfaz. La variable DNS también tiene un número que se usa para especificar el
orden de la búsqueda cuando se especifican varios servidores.

Después de modificar los archivos de configuración, ejecute nmcli con reload para que
NetworkManager lea los cambios de configuración. La interfaz todavía necesita reiniciarse para
que se implementen los cambios.

[root@host ~]# nmcli con reload


[root@host ~]# nmcli con down "static-ens3"
[root@host ~]# nmcli con up "static-ens3"

RH124-RHEL8.2-es-1-20200928 449
capítulo 12 | Administración de redes

Referencias
Página de manual nmcli(1)

Para obtener más información, consulte la guía Configuración y administración de


redes en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

450 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Ejercicio Guiado

Edición de archivos de configuración de


red
En este ejercicio, modificará manualmente los archivos de configuración de red y se
asegurará de que la nueva configuración surta efecto.

Resultados
Deberá ser capaz de agregar una dirección de red adicional a cada sistema.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-edit start. Este comando ejecuta un


script de inicio que determina si los hosts, servera y serverb, están accesibles en la red.

[student@workstation ~]$ lab net-edit start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Localice nombres de interfaz de red.

Importante
Los nombres de la interfaz de red están determinados por su tipo de bus y el orden
de detección de los dispositivos durante el arranque. Los nombres de la interfaz de
red variarán según la plataforma del curso y el hardware en uso.

En su sistema ahora, localice el nombre de la interfaz (como ens06 o en1p2)


asociado a la dirección Ethernet 52:54:00:00:fa:0a. Utilice este nombre de
interfaz para reemplazar el marcador de posición enX utilizado a lo largo de este
ejercicio.

Localice el nombre de la interfaz de red asociado con la dirección Ethernet


52:54:00:00:fa:0a. Registre o recuerde este nombre y utilícelo para reemplazar el
marcador de posición enX en los comandos subsiguientes. La conexión activa también
se llama Conexión por cable 1 (y por lo tanto es gestionado por el archivo /etc/
sysconfig/network-scripts/ifcfg-Wired_connection_1).

RH124-RHEL8.2-es-1-20200928 451
capítulo 12 | Administración de redes

Si ha realizado ejercicios previos en este capítulo y esto fue cierto para su sistema, también
debería serlo para este ejercicio.

[student@servera ~]$ ip link


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
[student@servera ~]$ nmcli con show --active
NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX
[student@servera ~]$ ls \
/etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
/etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

3. En servera, cambie al usuario root y luego edite el archivo /etc/sysconfig/


network-scripts/ifcfg-Wired_connection_1 para agregar una dirección adicional
de 10.0.1.1/24.

3.1. Use el comando sudo -i para cambiar al usuario root. La contraseña del usuario
student es student.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3.2. Agregue una entrada al archivo para especificar la dirección IPv4.

[root@servera ~]# echo \


"IPADDR1=10.0.1.1" >> /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

3.3. Agregue una entrada al archivo para especificar el prefijo de red.

[root@servera ~]# echo \


"PREFIX1=24" >> /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

4. Active la dirección nueva.

4.1. Vuelva a cargar los cambios de configuración.

[root@servera ~]# nmcli con reload

4.2. Reinicie la conexión con los parámetros de configuración nuevos.

[root@servera ~]# nmcli con up "Wired connection 1"


Connection successfully activated (D-Bus active path: /org/freedesktop/
NetworkManager/ActiveConnection/3)

5. Verifique la nueva dirección IP.

452 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

[root@servera ~]# ip addr show enX


2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
inet 172.25.250.10/24 brd 172.25.250.255 scope global noprefixroute enX
valid_lft forever preferred_lft forever
inet 10.0.1.1/24 brd 10.0.1.255 scope global noprefixroute enX
valid_lft forever preferred_lft forever
inet6 fe80::4bf3:e1d9:3076:f8d7/64 scope link noprefixroute
valid_lft forever preferred_lft forever

6. Salga de servera para volver a workstation como usuario student.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

7. En serverb, edite el archivo /etc/sysconfig/network-scripts/ifcfg-


Wired_connection_1 para agregar una dirección adicional de 10.0.1.2/24, luego,
cargue la nueva configuración.

7.1. En workstation, use el comando ssh para iniciar sesión en serverb con el usuario
student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

7.2. Use el comando sudo -i para cambiar al usuario root. La contraseña del usuario
student es student.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

7.3. Modifique el archivo ifcfg-Wired_connection_1 para agregar la segunda


dirección IPv4 y el prefijo de red.

[root@serverb ~]# echo \


"IPADDR1=10.0.1.2" >> /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
[root@serverb ~]# echo \
"PREFIX1=24" >> /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

7.4. Vuelva a cargar los cambios de configuración.

[root@serverb ~]# nmcli con reload

RH124-RHEL8.2-es-1-20200928 453
capítulo 12 | Administración de redes

7.5. Restablezca la conexión con los parámetros de configuración nuevos.

[root@serverb ~]# nmcli con up "Wired connection 1"


Connection successfully activated (D-Bus active path: /org/freedesktop/
NetworkManager/ActiveConnection/4)

7.6. Verifique la nueva dirección IP.

[root@serverb ~]# ip addr show enX


2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0b brd ff:ff:ff:ff:ff:ff
inet 172.25.250.11/24 brd 172.25.250.255 scope global noprefixroute enX
valid_lft forever preferred_lft forever
inet 10.0.1.2/24 brd 10.0.1.255 scope global noprefixroute enX
valid_lft forever preferred_lft forever
inet6 fe80::74c:3476:4113:463f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

8. Pruebe la conectividad con las direcciones de red nuevas.

8.1. En serverb, haga ping a la nueva dirección de servera .

[root@serverb ~]# ping -c3 10.0.1.1


PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.
64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=0.342 ms
64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.188 ms
64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=0.317 ms

--- 10.0.1.1 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 35ms
rtt min/avg/max/mdev = 0.188/0.282/0.342/0.068 ms

8.2. Salga de serverb para volver a workstation.

[root@serverb ~]# exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation ~]$

8.3. Desde workstation, utilice el comando ssh para acceder a servera como usuario
student para hacer ping a la nueva dirección de serverb.

[student@workstation ~]$ ssh student@servera ping -c3 10.0.1.2


PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=64 time=0.269 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=64 time=0.338 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=64 time=0.361 ms

454 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

--- 10.0.1.2 ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 48ms
rtt min/avg/max/mdev = 0.269/0.322/0.361/0.044 ms

Finalizar
En workstation, ejecute el script lab net-edit finish para terminar este ejercicio.

[student@workstation ~]$ lab net-edit finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 455
capítulo 12 | Administración de redes

Configuración de nombres de host y


resolución de nombre

Objetivos
Tras finalizar esta sección, deberá poder configurar el nombre de host estático del servidor y su
resolución de nombre y probar los resultados.

Cambio de nombre del host del sistema


El comando hostname muestra o modifica provisoriamente el nombre del host totalmente
calificado del sistema.

[root@host ~]# hostname


host.example.com

Puede especificarse un nombre del host estático en el archivo /etc/hostname. Se usa el


comando hostnamectl para modificar este archivo y puede usarse para ver el estado del
nombre del host totalmente calificado del sistema. Si este archivo no existe, el nombre del host se
establece mediante una consulta de DNS invertida una vez que la interfaz tiene una dirección IP
asignada.

[root@host ~]# hostnamectl set-hostname host.example.com


[root@host ~]# hostnamectl status
Static hostname: host.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: f874df04639f474cb0a9881041f4f7d4
Boot ID: 6a0abe03ef0b4a97bcb8afb7b281e4d3
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.2 (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.2:GA
Kernel: Linux 4.18.0-193.el8.x86_64
Architecture: x86-64
[root@host ~]# cat /etc/hostname
host.example.com

Importante
En Red Hat Enterprise Linux 7 y posterior, el nombre de host estático se almacena
en /etc/hostname. Red Hat Enterprise Linux 6 y anterior almacena el nombre de
host como variable en el archivo /etc/sysconfig/network.

Configuración de la resolución de nombre


El sistema de resolución de nombres se usa para convertir nombres de host en direcciones
IP o viceversa. Determina dónde buscar en función de la configuración del archivo /etc/
nsswitch.conf. De forma predeterminada, el contenido del archivo /etc/hosts se verifica en
primer lugar.

456 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

[root@host ~]# cat /etc/hosts


127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.254 classroom.example.com
172.25.254.254 content.example.com

El comando getent hosts hostname puede usarse para probar la resolución de nombre del
host con el archivo /etc/hosts.

Si no se encuentra una entrada en el archivo /etc/hosts, el sistema de resolución de nombres


intenta buscar el nombre de host mediante un servidor de nombres DNS. El archivo /etc/
resolv.conf controla la forma en que se realiza esta consulta:

• search: una lista de nombres de dominio para probar con un nombre del host corto. Tanto este
como el domain no deben configurarse en el mismo archivo; si esto ocurre, prevalece la última
instancia. Consulte resolv.conf(5) para obtener más detalles.

• nameserver: la dirección IP de un servidor de nombres que se consultará. Se pueden


proporcionar hasta tres directivas de servidor de nombres para proporcionar copias de
seguridad en caso de que una no funcione.

[root@host ~]# cat /etc/resolv.conf


# Generated by NetworkManager
domain example.com
search example.com
nameserver 172.25.254.254

NetworkManager actualiza el archivo /etc/resolv.conf con los parámetros de configuración


de DNS en los archivos de configuración de conexión. Use el comando nmcli para modificar las
conexiones.

[root@host ~]# nmcli con mod ID ipv4.dns IP


[root@host ~]# nmcli con down ID
[root@host ~]# nmcli con up ID
[root@host ~]# cat /etc/sysconfig/network-scripts/ifcfg-ID
...output omitted...
DNS1=8.8.8.8
...output omitted...

El comportamiento predeterminado de nmcli con mod ID ipv4.dns IP es reemplazar


cualquier parámetro de configuración de DNS anterior con la nueva lista de IP provista. El símbolo
+ o - que está frente al argumento ipv4.dns agrega o elimina una entrada individual.

[root@host ~]# nmcli con mod ID +ipv4.dns IP

Para agregar el servidor DNS con la dirección IP IPv6 2001:4860:4860::8888 a lista de


servidores de nombres para usar con la conexión static-ens3:

[root@host ~]# nmcli con mod static-ens3 +ipv6.dns 2001:4860:4860::8888

RH124-RHEL8.2-es-1-20200928 457
capítulo 12 | Administración de redes

nota
Las configuraciones DNS IPv4 e IPv6 estáticas terminan todas como directivas de
servidores de nombres en /etc/resolv.conf. Debe asegurarse de que hay,
como mínimo, un servidor de nombres accesible por IPv4 en la lista (suponiendo
un sistema de pila [stack] doble). Es mejor tener al menos un servidor de nombres
que use IPv4 y un segundo servidor de nombres que use IPv6 en caso de que tenga
problemas de red con su red IPv4 o IPv6.

Prueba de resolución de nombres DNS


El comando de host HOSTNAME puede usarse para probar la conectividad del servidor DNS.

[root@host ~]# host classroom.example.com


classroom.example.com has address 172.25.254.254
[root@host ~]# host 172.25.254.254
254.254.25.172.in-addr.arpa domain name pointer classroom.example.com.

Importante
DHCP reescribe automáticamente el archivo /etc/resolv.conf a medida que se
inician las interfaces, a menos que usted especifique PEERDNS=no en los archivos
de configuración de interfaz correspondientes. Configure esto con el comando
nmcli.

[root@host ~]# nmcli con mod "static-ens3" ipv4.ignore-auto-dns yes

Referencias
Páginas de manual nmcli(1), hostnamectl(1), hosts(5), getent(1), host(1) y
resolv.conf(5)

Para obtener más información, consulte la guía Configuración y administración de


redes en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

458 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Ejercicio Guiado

Configuración de nombres de host y


resolución de nombre
En este ejercicio, configurará manualmente el nombre de host estático del sistema, el archivo
/etc/hosts y el sistema de resolución de nombres DNS.

Resultados
Deberá ser capaz de establecer un nombre de host personalizado y configurar los
parámetros de resolución de nombres.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-hostnames start. El comando ejecuta


un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab net-hostnames start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Visualice la configuración del nombre del host actual.

2.1. Muestre el nombre del host actual.

[student@servera ~]$ hostname


servera.lab.example.com

2.2. Muestre el estado del nombre del host.

[student@servera ~]$ hostnamectl status


Static hostname: n/a
Transient hostname: servera.lab.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: f874df04639f474cb0a9881041f4f7d4
Boot ID: 22ae5279f57049678eda547bdb39a19d
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.2 (Ootpa)

RH124-RHEL8.2-es-1-20200928 459
capítulo 12 | Administración de redes

CPE OS Name: cpe:/o:redhat:enterprise_linux:8.2:GA


Kernel: Linux 4.18.0-193.el8.x86_64
Architecture: x86-64

Tenga en cuenta el nombre de host temporal obtenido de DHCP o mDNS.

3. Configure un nombre del host estático para que coincida con el nombre del host transitorio.

3.1. Cambie el nombre del host y el archivo de configuración del host.

[student@servera ~]$ sudo hostnamectl set-hostname \


servera.lab.example.com
[sudo] password for student: student
[student@servera ~]$

3.2. Visualice el contenido del archivo /etc/hostname que proporciona el nombre del
host al inicio de la red.

servera.lab.example.com

3.3. Muestre el estado del nombre del host.

[student@servera ~]$ hostnamectl status


Static hostname: servera.lab.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: f874df04639f474cb0a9881041f4f7d4
Boot ID: 22ae5279f57049678eda547bdb39a19d
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.2 (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.2:GA
Kernel: Linux 4.18.0-193.el8.x86_64
Architecture: x86-64

Tenga en cuenta que el nombre de host temporal no se muestra ahora que se ha


configurado un nombre de host estático.

4. Cambie temporalmente el nombre del host.

4.1. Cambie el nombre del host.

[student@servera ~]$ sudo hostname testname

4.2. Muestre el nombre del host actual.

[student@servera ~]$ hostname


testname

4.3. Visualice el contenido del archivo /etc/hostname que proporciona el nombre del
host al inicio de la red.

servera.lab.example.com

460 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

4.4. Reinicie el sistema.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

4.5. En workstation, inicie sesión en servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

4.6. Muestre el nombre del host actual.

[student@servera ~]$ hostname


servera.lab.example.com

5. Agregue el sobrenombre local para el servidor del salón de clases.

5.1. Busque la dirección IP de classroom.example.com.

[student@servera ~]$ host classroom.example.com


classroom.example.com has address 172.25.254.254

5.2. Modifique /etc/hosts para que el nombre adicional de class se puede utilizar
para acceder a la dirección IP 172.25.254.254.

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4


::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.254 classroom.example.com classroom class


172.25.254.254 content.example.com content
...content omitted...

5.3. Busque la dirección IP de class.

[student@servera ~]$ host class


Host class not found: 2(SERVFAIL)
[student@servera ~]$ getent hosts class
172.25.254.254 classroom.example.com class

5.4. Haga ping a class.

[student@servera ~]$ ping -c3 class


PING classroom.example.com (172.25.254.254) 56(84) bytes of data.
64 bytes from classroom.example.com (172.25.254.254): icmp_seq=1 ttl=64 time=0.397
ms
64 bytes from classroom.example.com (172.25.254.254): icmp_seq=2 ttl=64 time=0.447
ms

RH124-RHEL8.2-es-1-20200928 461
capítulo 12 | Administración de redes

64 bytes from classroom.example.com (172.25.254.254): icmp_seq=3 ttl=64 time=0.470


ms

--- classroom.example.com ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.397/0.438/0.470/0.030 ms

5.5. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab net-hostnames finish para terminar este ejercicio.

[student@workstation ~]$ lab net-hostnames finish

Esto concluye el ejercicio guiado.

462 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Trabajo de laboratorio

Administración de redes
Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará los parámetros de red en un servidor Red Hat
Enterprise Linux.

Resultados
Deberá ser capaz de configurar dos direcciones IPv4 estáticas para la interfaz de red
principal.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-review start. El comando ejecuta un


script de inicio que determina si el host serverb es accesible en la red.

[student@workstation ~]$ lab net-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Los sistemas
se configuran para que usen claves SSH para la autenticación, por lo que no se necesita una
contraseña para iniciar sesión en serverb.
2. Use el comando sudo -i para cambiar al usuario root. Si se le solicita, use student como
la contraseña.
3. Cree una conexión de red estática nueva con los parámetros de configuración que figuran en
la tabla.

Parámetro Configuración

Nombre de la conexión lab

Nombre de la interfaz enX (podría variar, use la interfaz que tiene


52:54:00:00:fa:0b como dirección MAC)

Dirección IP 172.25.250.11/24

Dirección de puerta de enlace 172.25.250.254

Dirección DNS 172.25.250.254

4. Configure la conexión nueva para que se inicie en forma automática. Otras conexiones no
deberían iniciarse automáticamente.
5. Modifique la conexión nueva para que también use la dirección 10.0.1.1/24.
6. Configure el archivo hosts para que pueda hacerse referencia a 10.0.1.1 como privada.
7. Reinicie el sistema.

RH124-RHEL8.2-es-1-20200928 463
capítulo 12 | Administración de redes

8. Desde workstation use el comando ping para verificar que serverb se inició.

Evaluación
En workstation, ejecute el script lab net-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab net-review grade

Finalizar
En workstation, ejecute el script lab net-review finish para finalizar este trabajo de
laboratorio.

[student@workstation ~]$ lab net-review finish

Esto concluye el trabajo de laboratorio.

464 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Solución

Administración de redes
Lista de verificación de rendimiento
En este trabajo de laboratorio, configurará los parámetros de red en un servidor Red Hat
Enterprise Linux.

Resultados
Deberá ser capaz de configurar dos direcciones IPv4 estáticas para la interfaz de red
principal.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab net-review start. El comando ejecuta un


script de inicio que determina si el host serverb es accesible en la red.

[student@workstation ~]$ lab net-review start

1. Use el comando ssh para iniciar sesión en serverb como el usuario student. Los sistemas
se configuran para que usen claves SSH para la autenticación, por lo que no se necesita una
contraseña para iniciar sesión en serverb.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

2. Use el comando sudo -i para cambiar al usuario root. Si se le solicita, use student como
la contraseña.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

3. Cree una conexión de red estática nueva con los parámetros de configuración que figuran en
la tabla.

RH124-RHEL8.2-es-1-20200928 465
capítulo 12 | Administración de redes

Parámetro Configuración

Nombre de la conexión lab

Nombre de la interfaz enX (podría variar, use la interfaz que tiene


52:54:00:00:fa:0b como dirección MAC)

Dirección IP 172.25.250.11/24

Dirección de puerta de enlace 172.25.250.254

Dirección DNS 172.25.250.254

Determine el nombre de la interfaz y el nombre de la conexión activa actual. La solución


asume que el nombre de la interfaz es enX y el nombre de la conexión es Conexión por
cable 1.

[root@serverb ~]# ip link


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
default qlen 1000
link/ether 52:54:00:00:fa:0b brd ff:ff:ff:ff:ff:ff
[root@serverb ~]# nmcli con show --active
NAME UUID TYPE DEVICE
Wired connection 1 03da038a-3257-4722-a478-53055cc90128 ethernet enX

Cree el nuevo perfil de conexión lab basado en la información en la tabla descrita en las
instrucciones. Asocie el perfil con el nombre de su interfaz de red que aparece en el resultado
del comando ip link anterior.

[root@serverb ~]# nmcli con add con-name lab ifname enX type ethernet \
ipv4.method manual \
ipv4.address 172.25.250.11/24 ipv4.gateway 172.25.250.254
[root@serverb ~]# nmcli con mod "lab" ipv4.dns 172.25.250.254

4. Configure la conexión nueva para que se inicie en forma automática. Otras conexiones no
deberían iniciarse automáticamente.

[root@serverb ~]# nmcli con mod "lab" connection.autoconnect yes


[root@serverb ~]# nmcli con mod "Wired connection 1" connection.autoconnect no

466 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

5. Modifique la conexión nueva para que también use la dirección 10.0.1.1/24.

[root@serverb ~]# nmcli con mod "lab" +ipv4.addresses 10.0.1.1/24

De manera alternativa:

[root@serverb ~]# echo "IPADDR1=10.0.1.1" \


>> /etc/sysconfig/network-scripts/ifcfg-lab
[root@serverb ~]# echo "PREFIX1=24" >> /etc/sysconfig/network-scripts/ifcfg-lab

6. Configure el archivo hosts para que pueda hacerse referencia a 10.0.1.1 como privada.

[root@serverb ~]# echo "10.0.1.1 private" >> /etc/hosts

7. Reinicie el sistema.

[root@serverb ~]# systemctl reboot


Connection to serverb closed by remote host.
Connection to serverb closed.
[student@workstation ~]$

8. Desde workstation use el comando ping para verificar que serverb se inició.

[student@workstation ~]$ ping -c3 serverb


PING serverb.lab.example.com (172.25.250.11) 56(84) bytes of data.
64 bytes from serverb.lab.example.com (172.25.250.11): icmp_seq=1 ttl=64
time=0.478 ms
64 bytes from serverb.lab.example.com (172.25.250.11): icmp_seq=2 ttl=64
time=0.504 ms
64 bytes from serverb.lab.example.com (172.25.250.11): icmp_seq=3 ttl=64
time=0.513 ms

--- serverb.lab.example.com ping statistics ---


3 packets transmitted, 3 received, 0% packet loss, time 78ms
rtt min/avg/max/mdev = 0.478/0.498/0.513/0.023 ms
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab net-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab net-review grade

Finalizar
En workstation, ejecute el script lab net-review finish para finalizar este trabajo de
laboratorio.

RH124-RHEL8.2-es-1-20200928 467
capítulo 12 | Administración de redes

[student@workstation ~]$ lab net-review finish

Esto concluye el trabajo de laboratorio.

468 RH124-RHEL8.2-es-1-20200928
capítulo 12 | Administración de redes

Resumen
En este capítulo, aprendió lo siguiente:

• El modelo de red TCP/IP es un conjunto de abstracciones simplificado, de cuatro capas, que


describe cómo los diferentes protocolos interactúan para que los equipos envíen el tráfico de
una máquina a otra a través de Internet.

• IPv4 es el protocolo de red principal usado en Internet hoy en día. IPv6 pretende ser un
reemplazo final del protocolo de red IPv4. De forma predeterminada, Red Hat Enterprise Linux
opera en un modo de pila (stack) doble, con ambos protocolos en paralelo.

• NetworkManager es un daemon que monitorea y administra la configuración de la red.

• El comando nmcli es una herramienta de la línea de comandos para controlar la configuración


de red con NetworkManager.

• El nombre del host estático del sistema se guarda en el archivo /etc/hostname. El comando
hostnamectl se usa para modificar o ver el estado del nombre de host del sistema y los
parámetros relacionados. El comando hostname muestra o modifica provisoriamente el nombre
de host del sistema.

RH124-RHEL8.2-es-1-20200928 469
470 RH124-RHEL8.2-es-1-20200928
capítulo 13

Almacenamiento y
transferencia de archivos
Meta Almacenar archivos y copiarlos de un sistema a
otro.

Objetivos • Archivar archivos y directorios en un archivo


comprimido con tar, y extraer el contenido de
una colección de archivos tar existente.
• Transferir archivos desde o hacia un sistema
remoto de forma segura con SSH.
• Sincronizar el contenido de un archivo o
directorio local con una copia en un servidor
remoto.

Secciones • Administración de colecciones de archivos tar


comprimidas (y ejercicio guiado)
• Transferencia de archivos entre sistemas de
forma segura (y ejercicio guiado)
• Sincronización de archivos entre sistemas de
forma segura (y ejercicio guiado)

Trabajo de Almacenamiento y transferencia de archivos


laboratorio

RH124-RHEL8.2-es-1-20200928 471
capítulo 13 | Almacenamiento y transferencia de archivos

Administración de colecciones de
archivos tar comprimidas

Objetivos
Tras completar esta sección, usted podrá archivar archivos y directorios en un archivo comprimido
con tar, y extraer el contenido de una colección de archivos tar existente.

El comando tar
El almacenamiento y la compresión de archivos es útil cuando se realizan copias de seguridad y se
transfieren datos a través de una red. Uno de los comandos más antiguos y más usados para crear
y trabajar con colecciones de archivos de copias de seguridad es el comando tar.

Con el comando tar, los usuarios pueden reunir grandes conjuntos de archivos en un solo archivo
(colección de archivos). Una colección de archivos tar es una secuencia estructurada de datos
de archivos mezclados con metadatos sobre cada archivo y un índice para poder extraer archivos
individuales. La colección de archivos puede comprimirse con gzip, bzip2 o xz.

Con el comando tar, también se puede enumerar el contenido de las colecciones de archivos o
extraer sus archivos a su sistema actual.

Opciones de tar seleccionadas


Las opciones del comando tar se dividen en operaciones (la acción que desea realizar): opciones
generales y opciones de compresión. En la siguiente tabla, se muestran las opciones comunes, la
versión larga de las opciones y su descripción:

Descripción general de las operaciones de tar

Opción Descripción

-c, --create Crear una colección de archivos nueva.

-x, --extract Extraer de una colección de archivos existente.

-t, --list Enumere la tabla de contenido de una colección de


archivos.

Opciones generales de tar seleccionadas

Opción Descripción

-v, --verbose Detallado. Muestra cuáles son los archivos que se


archivan o se extraen.

-f, --file= Nombre de archivo. Esta opción tiene que estar


seguida del nombre de archivo de la colección de
archivos que se usará o se creará.

472 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Opción Descripción

-p, --preserve-permissions Conserve los permisos de los archivos y directorios


cuando se extrae una colección de archivos sin
eliminar el desenmascaramiento.

Descripción general de las opciones de compresión de tar

Opción Descripción

-z, --gzip Use la compresión gzip (.tar.gz).

-j, --bzip2 Use la compresión bzip2 (.tar.bz2). Generalmente, bzip2 logra una
mejor relación de compresión que gzip.

-J, --xz Use compresión xz (.tar.xz). Por lo general, la compresión xz lograr


una mejor relación de compresión que bzip2.

Listado de opciones del comando tar


El comando tar espera una de las tres opciones siguientes:

• Use la opción -c o --create para crear una colección de archivos.


• Use la opción -t o --list para enumerar el contenido de una colección de archivos.
• Use la opción -x o --extract para extraer una colección de archivos.

A continuación se detallan otras opciones usadas comúnmente:

• Use la opción -f o --file= con un nombre de archivo como argumento de la colección de


archivos para operar.
• Use la opción -v o --verbose para exceso de palabras; se usa para ver qué archivos se
agregan o se extraen de la colección de archivos.

nota
El comando tar realmente admite un tercer estilo de opción antiguo que usa
las opciones de una sola letra estándares sin líder -. Todavía se encuentra con
frecuencia, y es posible que tenga esta sintaxis cuando trabaje con instrucciones
o comandos de otras personas. El comando info tar 'old options' analiza
cómo esto difiere de las opciones cortas normales en algún detalle.

Puede ignorar las opciones antiguas por ahora y concentrarse en la sintaxis estándar
de opciones cortas y largas.

Almacenamiento de archivos y directorios


La primera opción para usar cuando se crea una colección de archivos nueva es la opción c,
seguida de la opción f; luego, un solo espacio, el nombre de archivo de la colección de archivos
que se creará y, por último, la lista de los archivos y directorios que deben agregarse al archivo. La
colección de archivos se crea en el directorio actual, a menos que se especifique de otro modo.

RH124-RHEL8.2-es-1-20200928 473
capítulo 13 | Almacenamiento y transferencia de archivos

Advertencia
Antes de crear una colección de archivos tar, verifique que no haya otra colección
de archivos en el directorio con el mismo nombre de la colección de archivos nueva
que se creará. El comando tar sobrescribe una colección de archivos existente sin
advertencia.

Con el siguiente comando, se crea una colección de archivos con el nombre archive.tar con el
contenido de file1, file2 y file3 en el directorio de inicio del usuario.

[user@host ~]$ tar -cf archive.tar file1 file2 file3


[user@host ~]$ ls archive.tar
archive.tar

El comando tar anterior también se puede ejecutar usando las opciones de la versión larga.

[user@host ~]$ tar --file=archive.tar --create file1 file2 file3

nota
Cuando se almacenan archivos con nombres de ruta absolutos, el / inicial de la ruta
se elimina del nombre del archivo de manera predeterminada. Quitar el / inicial
de la ruta ayuda a los usuarios a evitar sobrescribir archivos importantes al extraer
la colección de archivos. Con el comando tar, se extraen los archivos según el
directorio de trabajo actual.

Para que tar pueda archivar los archivos seleccionados, es obligatorio que el usuario que ejecute
el comando tar pueda leer los archivos. Por ejemplo, la creación de una colección de archivos
nueva de la carpeta /etc y todo su contenido requiere privilegios de root porque solo este tipo
de usuario root tiene permitido leer todos los archivos que están presentes en el directorio /
etc. Un usuario sin privilegios puede crear una colección de archivos del directorio /etc, pero la
colección de archivos omite los archivos que no incluyen el permiso de lectura para el usuario y
omite los directorios que no incluyen permiso de lectura y ejecución para el usuario.

Para crear la colección de archivos tar con el nombre /root/etc.tar, con el directorio /etc
como contenido con el usuario root:

[root@host ~]# tar -cf /root/etc.tar /etc


tar: Removing leading `/' from member names
[root@host ~]#

Importante
Algunos permisos avanzados que no hemos cubierto en este curso, como los
contextos ACL y SELinux, no se almacenan automáticamente en una colección de
archivos tar. Use la opción --xattrs cuando cree una colección de archivos para
almacenar estos atributos ampliados en la colección de archivos tar.

474 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Enumeración del contenido de una colección de


archivos.
La opción t dirige tar para enumerar el contenido (tabla de contenido; por tanto t), de la
colección de archivos. Use la opción f con el nombre de la colección de archivos que desea
consultar. Por ejemplo:

[root@host ~]# tar -tf /root/etc.tar


etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...

Extracción de archivos de una colección de archivos


Por lo general, una colección de archivos tar debería extraerse en un directorio vacío para
garantizar que no sobrescriba ningún archivo existente. Cuando root extrae una colección de
archivos, el comando tar conserva la propiedad original de usuario y de grupo de los archivos. Si
un usuario regular extrae archivos usando tar, la propiedad del archivo pertenece al usuario que
extrae los archivos de la colección de archivos.

Para restaurar los archivos de la colección de archivos /root/etc.tar al directorio /root/


etcbackup, ejecute lo siguiente:

[root@host ~]# mkdir /root/etcbackup


[root@host ~]# cd /root/etcbackup
[root@host etcbackup]# tar -tf /root/etc.tar
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
[root@host etcbackup]# tar -xf /root/etc.tar

De manera predeterminada, cuando se extraen archivos de una colección de archivos, el


desenmascaramiento se elimina de los permisos de contenido de la colección de archivos. Para
proteger los permisos de un archivo en una colección de archivos, se usará la opción p cuando se
extraiga una colección de archivos.

En este ejemplo, se extrae una colección de archivos llamada /root/myscripts.tar en el


directorio /root/scripts, a la vez que se conservan los permisos de los archivos extraídos:

[root@host ~]# mkdir /root/scripts


[root@host ~]# cd /root/scripts
[root@host scripts]# tar -xpf /root/myscripts.tar

Creación de una colección de archivos comprimida


El comando tar admite tres métodos de compresión. Existen tres métodos de compresión
admitidos por el comando tar. La compresión gzip es la más rápida y más antigua y está
disponible ampliamente en distribuciones y aun en plataformas. La compresión bzip2 crea
archivos de colección de archivos más pequeños en comparación con gzip pero no está tan

RH124-RHEL8.2-es-1-20200928 475
capítulo 13 | Almacenamiento y transferencia de archivos

disponible como gzip, mientras que el método de compresión xz es relativamente nuevo, pero en
general ofrece la mejor relación de compresión de los métodos disponibles.

nota
La efectividad del algoritmo de compresión depende del tipo de datos que se
comprimen. Los archivos de datos que ya están comprimidos, como los formatos
de imagen comprimidos o archivos RPM, generalmente generan una relación de
compresión baja.

Una práctica adecuada es usar un solo directorio de nivel superior, que puede contener otros
directorios y archivos, para simplificar la extracción de los archivos de manera organizada.

Use una de las siguientes opciones para crear una colección de archivos tar comprimida:

• -z o --gzip para compresión gzip (filename.tar.gz o filename.tgz)


• -j o --bzip2 para compresión bzip2 (filename.tar.bz2)
• -J o -xz para compresión xz (filename.tar.xz)

Para crear una colección de archivos comprimida gzip llamada /root/etcbackup.tar.gz, con
el contenido del directorio /etc en host:

[root@host ~]# tar -czf /root/etcbackup.tar.gz /etc


tar: Removing leading `/' from member names

Para crear una colección de archivos comprimida bzip2 llamada /root/logbackup.tar.bz2,


con el contenido del directorio /var/log en host:

[root@host ~]$ tar -cjf /root/logbackup.tar.bz2 /var/log


tar: Removing leading `/' from member names

Para crear una colección de archivos comprimida xz llamada /root/sshconfig.tar.xz, con el


contenido del directorio /etc/ssh en host:

[root@host ~]$ tar -cJf /root/sshconfig.tar.xz /etc/ssh


tar: Removing leading `/' from member names

Después de crear una colección de archivos, verifique su contenido usando las opciones tf. No
es obligatorio usar la opción para el agente de compresión cuando se enumera el contenido de
un archivo de una colección de archivos comprimida. Por ejemplo, para enumerar el contenido del
archivo /root/etcbackup.tar.gz en una colección de archivos, que usa la compresión gzip,
use el siguiente comando:

[root@host ~]# tar -tf /root/etcbackup.tar.gz /etc


etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...

476 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Extracción de una colección de archivos comprimida


El primer paso cuando se extrae una colección de archivos tar comprimida es determinar el
lugar donde se extraerán los archivos y, a continuación, crear y cambiar el directorio de destino.
El comando tar determina la compresión que se usó y en general no es necesario usar la misma
opción de compresión usada al crear la colección de archivos. Es válido agregar un método de
descompresión al comando tar. Si elige hacerlo, debe usarse la opción de tipo de descompresión
correcto; de lo contrario tar produce un error sobre el tipo de descompresión especificado en las
opciones que no coinciden con el tipo de descompresión del archivo.

Para extraer el contenido de una colección de archivos comprimida con gzip con el nombre /
root/etcbackup.tar.gz en el directorio /tmp/etcbackup:

[root@host ~]# mkdir /tmp/etcbackup


[root@host ~]# cd /tmp/etcbackup
[root@host etcbackup]# tar -tf /root/etcbackup.tar.gz
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
[root@host etcbackup]# tar -xzf /root/etcbackup.tar.gz

Para extraer el contenido de una colección de archivos comprimida con bzip2 con el nombre /
root/logbackup.tar.bz2 en el directorio /tmp/logbackup:

[root@host ~]# mkdir /tmp/logbackup


[root@host ~]# cd /tmp/logbackup
[root@host logbackup]# tar -tf /root/logbackup.tar.bz2
var/log/
var/log/lastlog
var/log/README
var/log/private/
var/log/wtmp
var/log/btmp
...output omitted...
[root@host logbackup]# tar -xjf /root/logbackup.tar.bz2

Para extraer el contenido de una colección de archivos comprimida con xz con el nombre /root/
sshbackup.tar.xz en el directorio /tmp/sshbackup:

[root@host ~]$ mkdir /tmp/sshbackup


[root@host ~]# cd /tmp/sshbackup
[root@host logbackup]# tar -tf /root/sshbackup.tar.xz
etc/ssh/
etc/ssh/moduli
etc/ssh/ssh_config
etc/ssh/ssh_config.d/
etc/ssh/ssh_config.d/05-redhat.conf
etc/ssh/sshd_config
...output omitted...
[root@host sshbackup]# tar -xJf /root/sshbackup.tar.xz

RH124-RHEL8.2-es-1-20200928 477
capítulo 13 | Almacenamiento y transferencia de archivos

La enumeración de una colección de archivos tar comprimida funciona de la misma manera que la
enumeración de una colección de archivos tar sin comprimir.

nota
Además, gzip, bzip2 y xz se pueden usar de manera independiente para
comprimir archivos individuales. Por ejemplo, el comando gzip etc.tar genera
el archivo comprimido etc.tar.gz, mientras que el comando bzip2 abc.tar
genera el archivo comprimido abc.tar.bz2 y el comando xz myarchive.tar
genera el archivo comprimido myarchive.tar.xz.

Los comandos de descompresión correspondientes son gunzip, bunzip2


y unxz. Por ejemplo, el comando gunzip /tmp/etc.tar.gz genera el
archivo tar descomprimido etc.tar, mientras que el comando bunzip2
abc.tar.bz2 genera el archivo tar descomprimido abc.tar y el comando unxz
myarchive.tar.xz genera el archivo tar descomprimido myarchive.tar.

Referencias
Páginas de manual tar(1), gzip(1), gunzip(1), bzip2(1), bunzip2(1), xz(1),
unxz(1)

478 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Ejercicio Guiado

Administración de colecciones de
archivos tar comprimidas
En este ejercicio, creará archivos de colecciones de archivos y extraerá su contenido con el
comando tar.

Resultados
Deberá ser capaz de archivar un árbol de directorios y extraer el contenido de la colección de
archivos en otra ubicación.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab archive-manage start. El comando ejecuta


un script de inicio que determina si el host servera es accesible en la red. El script también
garantiza que el archivo y el directorio que se crearán en el ejercicio no existen en servera.

[student@workstation ~]$ lab archive-manage start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cambie al usuario root ya que solo el usuario root puede acceder a todo el contenido del
directorio /etc.

[student@servera ~]$ su -
Password: redhat
[root@servera ~]#

3. Use el comando tar con las opciones -czf para crear una colección de archivos del
directorio /etc mediante la compresión gzip. Guarde el archivo de la colección de
archivos como /tmp/etc.tar.gz.

[root@servera ~]# tar -czf /tmp/etc.tar.gz /etc


tar: Removing leading `/' from member names
[root@servera ~]#

4. Use el comando tar con las opciones -tzf para verificar que la colección de archivos
etc.tar.gz contiene los archivos del directorio /etc.

RH124-RHEL8.2-es-1-20200928 479
capítulo 13 | Almacenamiento y transferencia de archivos

[root@servera ~]# tar -tzf /tmp/etc.tar.gz


etc/
etc/mtab
etc/fstab
etc/crypttab
etc/resolv.conf
...output omitted...

5. En servera, cree un directorio con el nombre /backuptest. Compruebe que el archivo


de copia de seguridad etc.tar.gz sea válido; para ello, descomprima la colección de
archivos en un directorio /backuptest.

5.1. Cree el directorio /backuptest.

[root@servera ~]# mkdir /backuptest

5.2. Cambie al directorio /backuptest.

[root@servera ~]# cd /backuptest


[root@servera backuptest]#

5.3. Enumere el contenido de la colección de archivos etc.tar.gz antes de extraer.

[root@servera backuptest]# tar -tzf /tmp/etc.tar.gz


etc/
etc/mtab
etc/fstab
etc/crypttab
etc/resolv.conf
...output omitted...

5.4. Extraiga la colección de archivos /tmp/etc.tar.gz en el directorio /backuptest.

[root@servera backuptest]# tar -xzf /tmp/etc.tar.gz


[root@servera backuptest]#

5.5. Enumere el contenido del directorio /backuptest. Verifique que el directorio


contenga los archivos del directorio /etc.

[root@servera backuptest]# ls -l
total 12
drwxr-xr-x. 95 root root 8192 Feb 8 10:16 etc
[root@servera backuptest]# cd etc
[root@servera etc]# ls -l
total 1204
-rw-r--r--. 1 root root 16 Jan 16 23:41 adjtime
-rw-r--r--. 1 root root 1518 Sep 10 17:21 aliases
drwxr-xr-x. 2 root root 169 Feb 4 21:58 alternatives
-rw-r--r--. 1 root root 541 Oct 2 21:01 anacrontab
...output omitted...

480 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

6. Salga de servera.

[root@servera backuptest]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab archive-manage finish para terminar este ejercicio.

[student@workstation ~]$ lab archive-manage finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 481
capítulo 13 | Almacenamiento y transferencia de archivos

Transferencia de archivos entre sistemas


de forma segura

Objetivos
Tras finalizar esta sección, deberá ser capaz de transferir archivos de manera segura desde un
sistema remoto que use SSH y hasta él.

Transferencia de archivos con copia de segura


OpenSSH es útil para ejecutar los comandos de shell en sistemas remotos en forma segura. El
comando de copia segura, scp, parte del conjunto OpenSSH, copia archivos desde un sistema
remoto al sistema local o desde el sistema local a un sistema remoto. El comando usa el servidor
SSH para la autenticación y cifra datos cuando se transfieren.

Puede especificar una ubicación remota para el origen o destino de los archivos que está
copiando. El formato de la ubicación remota debe ser en la forma [user@]host:/path. los
user@ parte del argumento es opcional. Si falta, se utilizará su nombre de usuario local actual.
Cuando ejecute el comando, su cliente scp se autenticará en el servidor SSH remoto al igual que
ssh, utilizando la autenticación basada en claves o le pide su contraseña.

En el siguiente ejemplo, se muestra cómo copiar los archivos locales /etc/yum.conf y /etc/
hosts en host, en el directorio de inicio de remoteuser en el sistema remoto remotehost:

[user@host ~]$ scp /etc/yum.conf /etc/hosts remoteuser@remotehost:/home/remoteuser


remoteuser@remotehost's password: password
yum.conf 100% 813 0.8KB/s 00:00
hosts 100% 227 0.2KB/s 00:00

También puede copiar un archivo en la otra dirección, desde un sistema remoto al sistema de
archivos local. En este ejemplo, el archivo /etc/hostname en remotehost se copia al directorio
local /home/user. El comando scp autentica a remotehost como usuario remoteuser.

[user@host ~]$ scp remoteuser@remotehost:/etc/hostname /home/user


remoteuser@remotehost's password: password
hostname 100% 22 0.0KB/s 00:00

Para copiar un árbol de directorios completo de manera recursiva, use la opción -r. En el siguiente
ejemplo, el directorio remoto /var/log en remotehost se copia de manera recursiva en el
directorio local /tmp/ en host. Debe conectarse al sistema remoto como root para asegurarse
de que puede leer todos los archivos en el directorio remoto /var/log.

[user@host ~]$ scp -r root@remoteuser:/var/log /tmp


root@remotehost's password: password
...output omitted...

482 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Transferencia de archivos con el programa de


transferencia segura de archivos
Para cargar o descargar archivos de forma interactiva desde un servidor SSH, use el programa
de transferencia de archivos, sftp. Una sesión con el comando sftp usa el mecanismo de
autenticación segura y la transferencia de datos cifrados desde y hacia el servidor SSH.

Al igual que con el comando scp, el comando sftp usa [user@]host para identificar el sistema
de destino y el nombre de usuario. Si no especifica un usuario, el comando intentará iniciar sesión
utilizando su nombre de usuario local como nombre de usuario remoto. A continuación, se le
presentará un prompt sftp>.

[user@host ~]$ sftp remoteuser@remotehost


remoteuser@remotehost's password: password
Connected to remotehost.
sftp>

La sesión sftp interactiva acepta diversos comandos que funcionan de la misma manera en el
sistema de archivos remoto que en el sistemas de archivos local, como ls, cd, mkdir, rmdir y
pwd. El comando put carga un archivo en el sistema remoto. El comando get descarga un archivo
desde el sistema remoto. El comando exit finaliza la sesión sftp.

Para cargar el archivo /etc/hosts del sistema local en el directorio creado recientemente /
home/remoteuser/hostbackup en remotehost. La sesión sftp siempre supone que el
comando put es seguido de un archivo en el sistema de archivos local y comienza en el directorio
de inicio del usuario conectado; en este caso, /home/remoteuser:

sftp> mkdir hostbackup


sftp> cd hostbackup
sftp> put /etc/hosts
Uploading /etc/hosts to /home/remoteuser/hostbackup/hosts
/etc/hosts 100% 227 0.2KB/s 00:00
sftp>

Para descargar /etc/yum.conf del host remoto en el directorio actual del sistema de archivos
local, ejecute el comando get /etc/yum.conf y finalice la sesión sftp con el comando exit.

sftp> get /etc/yum.conf


Fetching /etc/yum.conf to yum.conf
/etc/yum.conf 100% 813 0.8KB/s 00:00
sftp> exit
[user@host ~]$

Referencias
Páginas de manual scp(1) y sftp(1)

RH124-RHEL8.2-es-1-20200928 483
capítulo 13 | Almacenamiento y transferencia de archivos

Ejercicio Guiado

Transferencia de archivos entre sistemas


de forma segura
En este ejercicio, copiará archivos desde un sistema remoto a un directorio local con scp.

Resultados
Copiará archivos desde un host remoto hacia un directorio que está en la máquina local.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab archive-transfer start. Este comando


ejecuta un script de inicio que determina si los hosts servera y serverb están accesibles
en la red. El script también garantiza que el archivo y el directorio que se crearán en el
ejercicio no existen en servera.

[student@workstation ~]$ lab archive-transfer start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando scp para copiar el directorio /etc/ssh desde serverb al directorio /
home/student/serverbackup en servera.

2.1. En servera, cree un directorio con el nombre /home/student/serverbackup.

[student@servera ~]$ mkdir ~/serverbackup

2.2. Use el comando scp para copiar de forma recursiva el directorio /etc/ssh desde
serverb al directorio /home/student/serverbackup en servera. Cuando se
le solicite, escriba la contraseña redhat. Tenga en cuenta que solo el usuario root
puede leer todo el contenido del directorio /etc/ssh.

[student@servera ~]$ scp -r root@serverb:/etc/ssh ~/serverbackup


The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:qaS0PToLrqlCO2XGklA0iY7CaP7aPKimerDoaUkv720.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'serverb,172.25.250.11' (ECDSA) to the list of known
hosts.
root@serverb's password: redhat
moduli 100% 550KB 57.9MB/s 00:00

484 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

ssh_config 100% 1727 1.4MB/s 00:00


05-redhat.conf 100% 690 1.6MB/s 00:00
01-training.conf 100% 36 80.5KB/s 00:00
ssh_host_ed25519_key 100% 387 1.2MB/s 00:00
ssh_host_ed25519_key.pub 100% 82 268.1KB/s 00:00
ssh_host_ecdsa_key 100% 492 1.5MB/s 00:00
ssh_host_ecdsa_key.pub 100% 162 538.7KB/s 00:00
ssh_host_rsa_key 100% 1799 4.9MB/s 00:00
ssh_host_rsa_key.pub 100% 382 1.2MB/s 00:00
sshd_config 100% 4469 9.5MB/s 00:00

2.3. Verifique que el directorio /etc/ssh de serverb se copie en el directorio /home/


student/serverbackup en servera.

[student@servera ~]$ ls -lR ~/serverbackup


/home/student/serverbackup:
total 0
drwxr-xr-x. 3 student student 245 Feb 11 18:35 ssh

/home/student/serverbackup/ssh:
total 588
-rw-r--r--. 1 student student 563386 Feb 11 18:35 moduli
-rw-r--r--. 1 student student 1727 Feb 11 18:35 ssh_config
drwxr-xr-x. 2 student student 28 Feb 11 18:35 ssh_config.d
-rw-------. 1 student student 4469 Feb 11 18:35 sshd_config
-rw-r-----. 1 student student 492 Feb 11 18:35 ssh_host_ecdsa_key
-rw-r--r--. 1 student student 162 Feb 11 18:35 ssh_host_ecdsa_key.pub
-rw-r-----. 1 student student 387 Feb 11 18:35 ssh_host_ed25519_key
-rw-r--r--. 1 student student 82 Feb 11 18:35 ssh_host_ed25519_key.pub
-rw-r-----. 1 student student 1799 Feb 11 18:35 ssh_host_rsa_key
-rw-r--r--. 1 student student 382 Feb 11 18:35 ssh_host_rsa_key.pub

/home/student/serverbackup/ssh/ssh_config.d:
total 8
-rw-r--r--. 1 student student 36 Feb 11 18:35 01-training.conf
-rw-r--r--. 1 student student 690 Feb 11 18:35 05-redhat.conf

3. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab archive-transfer finish para terminar este
ejercicio.

[student@workstation ~]$ lab archive-transfer finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 485
capítulo 13 | Almacenamiento y transferencia de archivos

Sincronización de archivos entre sistemas


en forma segura

Objetivos
Tras finalizar esta sección, deberá ser capaz de sincronizar en forma eficiente y segura el
contenido de un archivo o directorio local con una copia en un servidor remoto.

Sincronizar archivos y directorios con rsync


El uso del comando rsync es otra forma de copiar archivos en forma segura de un sistema a
otro. La herramienta usa un algoritmo que minimiza la cantidad de datos copiados sincronizando
solo las partes que se modificaron de los archivos. Se diferencia de scp en que si dos archivos
o directorios son similares entre dos sistemas, rsync copia las diferencias entre los sistemas de
archivos, mientras que scp copiaría todo.

Una ventaja de rsync es que puede copiar archivos entre un sistema local y un sistema remoto en
forma segura y eficiente. Cuando una sincronización inicial de un directorio demora prácticamente
el mismo tiempo que el copiado, las sincronizaciones posteriores solo requerirán que se copien las
diferencias a través de la red, lo que acelera sustancialmente las actualizaciones.

Una opción importante de rsync es la opción -n para realizar un simulacro. Un simulacro es una
imitación de lo que sucede cuando el comando se ejecuta. El simulacro muestra los cambios que
rsync ejecutaría cuando el comando se ejecuta normalmente. Realice un simulacro antes de la
operación de rsync real para garantizar que no se sobrescriban ni eliminen archivos importantes.

Las dos opciones más comunes cuando se sincronizan archivos y directorios con rsync son -v y -
a.

La opción -v o --verbose proporciona un resultado más detallado. Esto es útil para solucionar
problemas y para ver el progreso en vivo.

La opción -a o --archive habilita el "modo de archivo". Esto permite la copia recursiva y activa
una gran cantidad de opciones útiles que conservan la mayoría de las características de los
archivos. El modo de archivo es lo mismo que especificar las siguientes opciones:

Opciones habilitadas con rsync -a (modo colección de archivos)

Opción Descripción

-r, --recursive sincronizar en forma recurrente todo el árbol de


directorio

-l, --links sincronizar los enlaces simbólicos

-p, --perms mantiene los permisos

-t, --times conservar las marcas de tiempo

-g, --group conservar la propiedad del grupo

-o, --owner conservar al propietario de los archivos

486 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Opción Descripción

-D, --devices sincronizar el archivo de dispositivo

El modo de archivo no conserva los enlaces duros, ya que esto puede agregar un tiempo
significativo a la sincronización. Si también desea conservar los enlaces duros, agregue la opción -
H.

nota
Si está utilizando permisos avanzados, es posible que necesite dos opciones
adicionales:

• -A para preservar ACL


• -X para preservar contextos SELinux

Puede usar rsync para sincronizar el contenido de un archivo o directorio local con un archivo
o directorio en una máquina remota, utilizando cualquiera de las dos máquinas como origen.
También puede sincronizar el contenido de dos archivos o directorios locales.

Por ejemplo, para sincronizar contenido del directorio /var/log con el directorio /tmp:

[user@host ~]$ su -
Password: password
[root@host ~]# rsync -av /var/log /tmp
receiving incremental file list
log/
log/README
log/boot.log
...output omitted...
log/tuned/tuned.log

sent 11,592,423 bytes received 779 bytes 23,186,404.00 bytes/sec


total size is 11,586,755 speedup is 1.00
[user@host ~]$ ls /tmp
log ssh-RLjDdarkKiW1
[user@host ~]$

Una barra al final del directorio de origen sincroniza el contenido de un directorio sin crear el
subdirectorio en el directorio de destino. En este ejemplo, el directorio log no se crea en el
directorio /tmp, solo el contenido de /var/log/ se sincroniza en /tmp.

[root@host ~]# rsync -av /var/log/ /tmp


sending incremental file list
./
README
boot.log
...output omitted...
tuned/tuned.log

sent 11,592,389 bytes received 778 bytes 23,186,334.00 bytes/sec


total size is 11,586,755 speedup is 1.00
[root@host ~]# ls /tmp

RH124-RHEL8.2-es-1-20200928 487
capítulo 13 | Almacenamiento y transferencia de archivos

anaconda dnf.rpm.log-20190318 private


audit dnf.rpm.log-20190324 qemu-ga
boot.log dnf.rpm.log-20190331 README
...output omitted...

Importante
Cuando se ingrese el directorio de origen en el comando rsync, es importante
si está presente la barra final en el nombre del directorio. Esto determina si el
directorio o solo el contenido del directorio se sincroniza en el destino.

La terminación con tab de Bash agrega automáticamente una barra al final de los
nombres de directorios.

Al igual que con los comandos scp y sftp, rsync especifica ubicaciones remotas usando el
formato [user@]host:/path. La ubicación remota puede ser el sistema de origen o destino,
pero una de las dos máquinas debe ser local.

Para preservar la propiedad del archivo, debe ser root en el sistema de destino. Si el destino es
remoto, autentíquese como root. Si el destino es local, debe ejecutar rsync como root.

En este ejemplo, sincronice el directorio local /var/log con el directorio /tmp en el sistema
remotehost:

[root@host ~]# rsync -av /var/log remotehost:/tmp


root@remotehost's password: password
receiving incremental file list
log/
log/README
log/boot.log
...output omitted...
sent 9,783 bytes received 290,576 bytes 85,816.86 bytes/sec
total size is 11,585,690 speedup is 38.57

De la misma manera, el directorio remoto /var/log en remotehost puede sincronizarse en el


directorio local /tmp en host:

[root@host ~]# rsync -av remotehost:/var/log /tmp


root@remotehost's password: password
receiving incremental file list
log/boot.log
log/dnf.librepo.log
log/dnf.log
...output omitted...

sent 9,783 bytes received 290,576 bytes 85,816.86 bytes/sec


total size is 11,585,690 speedup is 38.57

Referencias
Página de manual rsync(1)

488 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Ejercicio Guiado

Sincronización de archivos entre sistemas


en forma segura
En este ejercicio, sincronizará el contenido de un directorio local con una copia en un
servidor remoto usando rsync sobre SSH.

Resultados
Deberá ser capaz de usar el comando rsync para sincronizar el contenido de un directorio
local con una copia en un servidor remoto.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab archive-sync start. Este comando ejecuta


un script de inicio que determina si los hosts, servera y serverb, están accesibles en la
red. El script también garantiza que el archivo y el directorio que se crearán en el ejercicio no
existen en servera.

[student@workstation ~]$ lab archive-sync start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cree un directorio con el nombre /home/student/serverlogs en servera. Use el


comando rsync para crear de forma segura una copia inicial del árbol de directorio /var/
log en serverb en el directorio /home/student/serverlogs en servera.

2.1. En servera, cree el directorio de destino con el nombre /home/student/


serverlogs para almacenar los archivos de registro sincronizados desde serverb.

[student@servera ~]$ mkdir ~/serverlogs

2.2. Use el comando rsync para sincronizar el árbol de directorio /var/log en serverb
con el directorio /home/student/serverlogs en servera. Tenga en cuenta
que solo el usuario root puede leer todo el contenido del directorio /var/log en
serverb. Todos los archivos se transfieren en la sincronización inicial.

[student@servera ~]$ rsync -av root@serverb:/var/log ~/serverlogs


root@serverb's password: redhat
receiving incremental file list
log/

RH124-RHEL8.2-es-1-20200928 489
capítulo 13 | Almacenamiento y transferencia de archivos

log/README
log/boot.log
...output omitted...
log/tuned/tuned.log

sent 992 bytes received 13,775,064 bytes 2,119,393.23 bytes/sec


total size is 13,768,109 speedup is 1.00

3. Con root en serverb, ejecute el comando logger "Log files synchronized" para
obtener una nueva entrada en el archivo de registro /var/log/messages para que refleje
cuándo se realizó la última sincronización.

[student@servera ~]$ ssh root@serverb 'logger "Log files synchronized"'


Password: redhat
[student@servera ~]$

4. Use el comando rsync para sincronizar de forma segura desde el árbol de directorio /
var/log en serverb con el directorio /home/student/serverlogs en servera.
Observe que, en esta oportunidad, solo se transfieren los archivos de registro modificados.

[student@servera ~]$ rsync -av root@serverb:/var/log ~/serverlogs


root@serverb's password: redhat
receiving incremental file list
log/messages
log/secure
log/audit/audit.log

sent 3,496 bytes received 27,243 bytes 8,782.57 bytes/sec


total size is 11,502,695 speedup is 374.21

5. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab archive-sync finish para terminar este ejercicio.

[student@workstation ~]$ lab archive-sync finish

Esto concluye el ejercicio guiado.

490 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Trabajo de laboratorio

Almacenamiento y transferencia de
archivos
Lista de verificación de rendimiento
En este trabajo de laboratorio, usará tar, rsync y scp para archivar y realizar copias de
seguridad del contenido de los directorios.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Sincronizar un directorio remoto con un directorio local.

• Crear una colección de archivos del contenido de un directorio sincronizado.

• Copiar de forma segura una colección de archivos en un host remoto.

• Extraer una colección de archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab archive-review start. Este comando


ejecuta un script de inicio que determina si los hosts servera y serverb están accesibles
en la red. El script también garantiza que los archivos y los directorios que se crearán en el
trabajo de laboratorio no existen en serverb y workstation.

[student@workstation ~]$ lab archive-review start

1. En serverb, sincronice el árbol de directorios /etc de servera con el directorio /


configsync.
2. Use la compresión gzip para crear una colección de archivos con el nombre configfile-
backup-servera.tar.gz con el contenido del directorio /configsync.
3. Copie de forma segura el archivo de la colección de archivos /root/configfile-
backup-servera.tar.gz desde serverb al directorio /home/student en
workstation con el usuario student y la contraseña student.
4. En workstation, extraiga el contenido de la colección de archivos /home/student/
configfile-backup-servera.tar.gz en el directorio /tmp/savedconfig/.
5. En workstation, vuelva al directorio de inicio de student.

[student@workstation savedconfig]$ cd

RH124-RHEL8.2-es-1-20200928 491
capítulo 13 | Almacenamiento y transferencia de archivos

Evaluación
En workstation, ejecute el script lab archive-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab archive-review grade

Finalizar
En workstation, ejecute el script lab archive-review finish para terminar este ejercicio.

[student@workstation ~]$ lab archive-review finish

Esto concluye el trabajo de laboratorio.

492 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Solución

Almacenamiento y transferencia de
archivos
Lista de verificación de rendimiento
En este trabajo de laboratorio, usará tar, rsync y scp para archivar y realizar copias de
seguridad del contenido de los directorios.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Sincronizar un directorio remoto con un directorio local.

• Crear una colección de archivos del contenido de un directorio sincronizado.

• Copiar de forma segura una colección de archivos en un host remoto.

• Extraer una colección de archivos.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab archive-review start. Este comando


ejecuta un script de inicio que determina si los hosts servera y serverb están accesibles
en la red. El script también garantiza que los archivos y los directorios que se crearán en el
trabajo de laboratorio no existen en serverb y workstation.

[student@workstation ~]$ lab archive-review start

1. En serverb, sincronice el árbol de directorios /etc de servera con el directorio /


configsync.

1.1. Use el comando ssh para iniciar sesión en serverb como el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando su para cambiar al usuario root ya que la creación del directorio /
configsync requiere privilegios de superusuario. En pasos posteriores, almacenará
los archivos presentes en el árbol de directorios /etc, que son propiedad del usuario
root; esto también requiere privilegios de superusuario.

[student@serverb ~]$ su -
Password: redhat
[root@serverb ~]#

RH124-RHEL8.2-es-1-20200928 493
capítulo 13 | Almacenamiento y transferencia de archivos

1.3. Cree el directorio /configsync para almacenar los archivos de configuración


sincronizados de servera.

[root@serverb ~]# mkdir /configsync

1.4. Use el comando rsync para sincronizar el árbol de directorio /etc de servera con el
directorio /configsync en serverb.
Tenga en cuenta que solo el usuario root puede leer todo el contenido del directorio /
etc en servera.

[root@serverb ~]# rsync -av root@servera:/etc /configsync


root@servera's password: redhat
receiving incremental file list
etc/
etc/.pwd.lock
...output omitted...
etc/yum/protected.d -> ../dnf/protected.d
etc/yum/vars -> ../dnf/vars

sent 10,958 bytes received 21,665,987 bytes 3,334,914.62 bytes/sec


total size is 21,615,767 speedup is 1.00

2. Use la compresión gzip para crear una colección de archivos con el nombre configfile-
backup-servera.tar.gz con el contenido del directorio /configsync.

2.1. Use el comando tar con las opciones -czf para crear una colección de archivos
comprimida con gzip.

[root@serverb ~]# tar -czf configfile-backup-servera.tar.gz /configsync


tar: Removing leading `/' from member names
[root@serverb ~]#

2.2. Use el comando tar con las opciones -tzf para enumerar el contenido de la colección
de archivos configfile-backup-servera.tar.gz.

[root@serverb ~]# tar -tzf configfile-backup-servera.tar.gz


...output omitted...
configsync/etc/vimrc
configsync/etc/wgetrc
configsync/etc/xattr.conf

3. Copie de forma segura el archivo de la colección de archivos /root/configfile-


backup-servera.tar.gz desde serverb al directorio /home/student en
workstation con el usuario student y la contraseña student.

[root@serverb ~]# scp ~/configfile-backup-servera.tar.gz \


student@workstation:/home/student
...output omitted...
student@workstation's password: student
configfile-backup-servera.tar.gz 100% 5110KB 64.5MB/s 00:00

494 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

4. En workstation, extraiga el contenido de la colección de archivos /home/student/


configfile-backup-servera.tar.gz en el directorio /tmp/savedconfig/.

4.1. Salga de serverb.

[root@serverb ~]# exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation]$

4.2. Cree el directorio /tmp/savedconfig, en el que se extraerá el contenido de la


colección de archivos /home/student/configfile-backup-servera.tar.gz.

[student@workstation ~]$ mkdir /tmp/savedconfig

4.3. Cambie al directorio /tmp/savedconfig.

[student@workstation ~]$ cd /tmp/savedconfig


[student@workstation savedconfig]$

4.4. Use el comando tar con las opciones -tzf para enumerar el contenido de la colección
de archivos configfile-backup-servera.tar.gz.

[student@workstation savedconfig]$ tar -tzf ~/configfile-backup-servera.tar.gz


...output omitted...
configsync/etc/vimrc
configsync/etc/wgetrc
configsync/etc/xattr.conf

4.5. Use el comando tar con las opciones -xzf para extraer el contenido de la colección
de archivos /home/student/configfile-backup-servera.tar.gz en el
directorio /tmp/savedconfig/.

[student@workstation savedconfig]$ tar -xzf ~/configfile-backup-servera.tar.gz


[student@workstation savedconfig]$

4.6. Enumere el árbol de directorio para verificar que el directorio contenga los archivos del
directorio /etc.

[student@workstation savedconfig]$ ls -lR


.:
total 0
drwxr-xr-x. 3 student student 17 Feb 13 10:13 configsync

./configsync:
total 12
drwxr-xr-x. 95 student student 8192 Feb 13 09:41 etc

./configsync/etc:

RH124-RHEL8.2-es-1-20200928 495
capítulo 13 | Almacenamiento y transferencia de archivos

total 1212
-rw-r--r--. 1 student student 16 Jan 16 23:41 adjtime
-rw-r--r--. 1 student student 1518 Sep 10 17:21 aliases
drwxr-xr-x. 2 student student 169 Feb 4 21:58 alternatives
...output omitted...

5. En workstation, vuelva al directorio de inicio de student.

[student@workstation savedconfig]$ cd

Evaluación
En workstation, ejecute el script lab archive-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab archive-review grade

Finalizar
En workstation, ejecute el script lab archive-review finish para terminar este ejercicio.

[student@workstation ~]$ lab archive-review finish

Esto concluye el trabajo de laboratorio.

496 RH124-RHEL8.2-es-1-20200928
capítulo 13 | Almacenamiento y transferencia de archivos

Resumen
En este capítulo, aprendió lo siguiente:

• Con el comando tar, se crea un archivo de colección de archivos a partir de un conjunto de


archivos y directorios, se extraen archivos de la colección de archivos y se enumera el contenido
de una colección de archivos.

• El comando tar proporciona un conjunto de diferentes métodos de compresión para reducir el


tamaño de la colección de archivos.

• Además de proporcionar una shell remota segura, el servicio ssh también ofrece los comandos
scp y sftp como modos seguros de transferir archivos desde un sistema remoto que ejecute el
servidor SSH y hasta él.

• El comando rsync sincroniza de manera segura y eficiente los archivos entre dos directorios,
los cuales puede estar en un sistema remoto.

RH124-RHEL8.2-es-1-20200928 497
498 RH124-RHEL8.2-es-1-20200928
capítulo 14

Instalación y actualización de
paquetes de software
Meta Descargar, instalar, actualizar y gestionar paquetes
de software de Red Hat y repositorios de paquetes
Yum.

Objetivos • Registrar un sistema para su cuenta de Red Hat


y asignarle autorizaciones para actualizaciones
de software y servicios de soporte mediante
Red Hat Suscription Management.
• Explicar cómo se proporciona el software
como paquetes de RPM y revisar los paquetes
instalados en el sistema con Yum y RPM.
• Buscar, instalar y actualizar paquetes de
software usando el comando yum.
• Habilitar y deshabilitar el uso de repositorios
Yum de terceros o de Red Hat por parte de un
servidor.
• Explicar cómo los módulos permiten la
instalación de versiones específicas de
software, enumerar, habilitar y cambiar flujos de
módulos, e instalar y actualizar paquetes desde
un módulo.

Secciones • Registro de sistemas para Soporte de Red Hat


(y cuestionario)
• Explicación y revisión de paquetes de software
RPM (y cuestionario)
• Instalación y actualización de paquetes de
software con Yum (y ejercicio guiado)
• Habilitación de repositorios de software Yum (y
ejercicio guiado)
• Administración de flujos de módulos de
paquete (y ejercicio guiado)

Trabajo de Instalación y actualización de paquetes de


software
laboratorio

RH124-RHEL8.2-es-1-20200928 499
capítulo 14 | Instalación y actualización de paquetes de software

Registro de sistemas para Soporte de


Red Hat

Objetivos
Tras completar esta sección, deberá ser capaz de registrar un sistema para su cuenta de Red Hat
y asignarle autorizaciones para actualizaciones de software y servicios de soporte mediante la
administración de suscripciones de Red Hat.

Administración de suscripciones de Red Hat


La administración de suscripciones de Red Hat proporciona herramientas que se pueden usar para
que los equipos tengan derecho a suscripciones de productos, de modo que los administradores
puedan obtener actualizaciones de paquetes de software y buscar información sobre contratos de
soporte y suscripciones usadas por sus sistemas. Las herramientas estándares, como PackageKit y
yum, pueden obtener paquetes y actualizaciones de software mediante una red de distribución de
contenido provista por Red Hat.

Existen cuatro tareas básicas que se realizan con las herramientas de administración de
suscripciones de Red Hat:

• Registrar un sistema para asociar ese sistema a una cuenta de Red Hat. Esto permite al
administrador de suscripciones realizar un inventario exclusivo del sistema. Cuando ya no se usa,
es posible anular la suscripción del sistema.

• Subscribir un sistema para autorizar las actualizaciones de productos de Red Hat


seleccionados. Las suscripciones tienen niveles específicos de asistencia, fechas de vencimiento
y repositorios predeterminados. Las herramientas pueden usarse para adjuntar en forma
automática o seleccionar una autorización específica. A medida que necesiten cambios, es
probable que se eliminen las suscripciones.

• Habilite los repositorios para proporcionar paquetes de software. De manera


predeterminada, se habilitan varios repositorios con cada suscripción, pero otros repositorios,
como las actualizaciones o el código de origen, pueden habilitarse o deshabilitarse según sea
necesario.

• Revisar y rastrear autorizaciones que están disponibles o se consumen. La información de


suscripción puede verse de forma local en un sistema específico o, para una cuenta, ya sea en
la página de suscripciones del portal del cliente de Red Hat o en el Administrador de activos de
suscripción (SAM).

Registro de un sistema
Hay varias formas diferentes de registrar un sistema con el portal de clientes de Red Hat. Hay una
interfaz gráfica a la que puede acceder con una aplicación de GNOME o mediante el servicio de
consola web, y hay una herramienta de línea de comando.

Para registrar un sistema con la aplicación GNOME, inicie el administrador de suscripciones de


Red Hat mediante la selección de Actividades. Escriba suscripción en el campo Escriba para
buscar... y haga clic en el Administrador de suscripciones de Red Hat. Ingrese la contraseña
correspondiente cuando se le solicite autenticarse. Esta acción muestra la ventana siguiente
Suscripciones.

500 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Figura 14.1: Ventana principal del administrador de suscripciones de Red Hat

Para registrar el sistema, haga clic en el botón Registrar situado en la ventana Suscripciones.
Esto muestra el siguiente cuadro de diálogo:

Figura 14.2: Cuadro de diálogo de información de cuenta y ubicación


del servicio del administrador de suscripciones de Red Hat

Este cuadro de diálogo registra un sistema con un servidor de suscripción. Por defecto, registra el
servidor para el portal del clientes de Red Hat. Proporcione el inicio de sesión y la contraseña
para la cuenta del portal de clientes de Red Hat a la que se debe registrar el sistema y haga clic en
el botón Registrar.

Cuando está registrado, el sistema tiene automáticamente una suscripción adjunta si hay una
disponible.

Después de que se haya asignado un registro y una suscripción, cierre la ventana Suscripciones.
El sistema está suscrito adecuadamente y está listo para recibir actualizaciones o instalar un
software nuevo de Red Hat

RH124-RHEL8.2-es-1-20200928 501
capítulo 14 | Instalación y actualización de paquetes de software

Registro desde la línea de comando


Use el comando subscription-manager(8) para registrar un sistema sin usar un entorno
gráfico. El comando subscription-manager puede adjuntar automáticamente un sistema a las
suscripciones compatibles que mejor coincidan para el sistema.

• Registre un sistema en una cuenta Red Hat:

[user@host ~]$ subscription-manager register --username=yourusername \


--password=yourpassword

• Visualizar las suscripciones disponibles:

[user@host ~]$ subscription-manager list --available | less

• Adjuntar automáticamente una suscripción:

[user@host ~]$ subscription-manager attach --auto

• Como alternativa, adjunte una suscripción de un grupo específico de la lista de suscripciones


disponibles:

[user@host ~]$ subscription-manager attach --pool=poolID

• Visualizar las suscripciones consumidas:

[user@host ~]$ subscription-manager list --consumed

• Eliminar la suscripción de un sistema:

[user@host ~]$ subscription-manager unregister

nota
subscription-manager también puede usarse junto con las claves de activación
que permiten el registro y la asignación de suscripciones definidas previamente sin
usar un nombre de usuario o contraseña. Este método de registro puede ser muy
útil para las instalaciones e implementaciones automáticas. Por lo general, las claves
de activación son emitidas por un servicio de administración de suscripciones in situ,
como el administrador de activos de suscripción o Red Hat Satellite; no se analizan
en detalle en este curso.

Certificados de autorización
Una autorización es una suscripción que se adjuntó a un sistema. Los certificados digitales se
usan para almacenar información actual sobre las autorizaciones en el sistema local. Una vez
registrados, los certificados de autorización se almacenan en /etc/pki y en sus subdirectorios.

• /etc/pki/product contiene certificados que indican que hay productos Red Hat instalados
en el sistema.

502 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

• /etc/pki/consumer contiene certificados que indican la cuenta Red Hat donde está
registrado el sistema.

• /etc/pki/entitlement contiene certificados que indican cuáles son las suscripciones que
están adjuntadas al sistema.

Los certificados pueden inspeccionarse en forma directa con la utilidad rct, pero las herramientas
de subscription-manager proporcionan maneras más prácticas de examinar las suscripciones
que están adjuntadas al sistema.

Referencias
Páginas de manual subscription-manager(8) y rct(8)

Comenzar con la Administración de suscripciones de Red Hat


https://access.redhat.com/site/articles/433903

RH124-RHEL8.2-es-1-20200928 503
capítulo 14 | Instalación y actualización de paquetes de software

Cuestionario

Registro de sistemas para Soporte de


Red Hat
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando se usa para registrar un sistema sin usar un entorno gráfico?
a. rct
b. subscription-manager
c. rpm
d. yum

2. ¿Qué herramienta GUI se usa para registrar y suscribir un sistema?


a. PackageKit
b. gpk-application
c. Administración de suscripciones de Red Hat
d. gnome-software

3. ¿Qué tareas se pueden realizar con las herramientas de la administración de


suscripciones de Red Hat?
a. Registrar un sistema.
b. Suscribir un sistema.
c. Habilitar repositorios.
d. Revisar y rastrear autorizaciones.
e. Todas las anteriores.

504 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Solución

Registro de sistemas para Soporte de


Red Hat
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Qué comando se usa para registrar un sistema sin usar un entorno gráfico?
a. rct
b. subscription-manager
c. rpm
d. yum

2. ¿Qué herramienta GUI se usa para registrar y suscribir un sistema?


a. PackageKit
b. gpk-application
c. Administración de suscripciones de Red Hat
d. gnome-software

3. ¿Qué tareas se pueden realizar con las herramientas de la administración de


suscripciones de Red Hat?
a. Registrar un sistema.
b. Suscribir un sistema.
c. Habilitar repositorios.
d. Revisar y rastrear autorizaciones.
e. Todas las anteriores.

RH124-RHEL8.2-es-1-20200928 505
capítulo 14 | Instalación y actualización de paquetes de software

Explicación y revisión de paquetes de


software RPM

Objetivos
Tras completar esta sección, debería poder explicar cómo se proporciona el software como
paquetes de RPM y revisar los paquetes instalados en el sistema con Yum y RPM.

Paquetes de software y RPM


El RPM Package Manager, originalmente desarrollado por Red Hat, ofrece una manera estándar
de colocar software en paquetes para su distribución. Administrar software en forma de paquetes
RPM es mucho más sencillo que trabajar con un software que simplemente se extrajo de un
archivo en una colección de archivos. Esta solución permite que los administradores controlen
qué archivos se instalaron con el paquete de software y cuáles deben quitarse si el software se
desinstala, y que verifiquen que los paquetes compatibles estén presentes cuando se instale.
La información sobre los paquetes instalados se almacena en una base de datos de RPM local
en cada sistema. Todo el software proporcionado por Red Hat para Red Hat Enterprise Linux se
ofrece como un paquete RPM.

Los nombres de los archivos del paquete RPM constan de cuatro elementos (más el sufijo .rpm):
name-version-release.architecture:

Figura 14.3: Elementos de nombre de archivo RPM

• NAME es una o más palabras que describen el contenido (coreutils).

• VERSION es el número de versión del software original (8.30).

• RELEASE es el número de lanzamiento del paquete que se basa en la versión y que es definido
por el empaquetador, que es posible que no sea el desarrollador del software original (4.el8).

• ARCH es la arquitectura de procesador en la que se compiló el paquete para su ejecución.


noarch indica que el contenido de este paquete no es específico de la arquitectura (en
oposición a x86_64 para 64 bits, aarch64 para ARM de 64 bits, etc..

Solo se necesita el nombre de paquete para instalar paquetes de repositorios. Si existen varias
versiones, se instala el paquete con el número de versión más alto. Si existen varios lanzamientos
de una sola versión, se instala el paquete con el número de lanzamiento más alto.

Cada paquete RPM es una colección de archivos especial con tres componentes:

• Los archivos instalados con el paquete.

506 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

• Información sobre el paquete (metadatos), como el nombre, la versión, el lanzamiento y la


arquitectura; un resumen y una descripción del paquete; determinación de si se necesita instalar
otros paquetes; licencias; un registro de cambio del paquete; y otros detalles.

• Scripts que pueden ejecutarse cuando el paquete se instala, se actualiza o se quita, o que se
desencadenan cuando otros paquetes se instalan, se actualizan o se quitan.

Por lo general, los proveedores de software firman digitalmente paquetes RPM con claves GPG
(Red Hat firma digitalmente todos los paquetes que lanza). El sistema RPM verifica la integridad
del paquete al confirmar que el paquete fue firmado por la clave GPG apropiada. El sistema RPM
rechaza la instalación de un paquete si la firma GPG no coincide.

Actualización de software con paquetes RPM


Red Hat genera un paquete RPM completo para actualizar el software. Un administrador que
instala ese paquete obtiene solo la versión más reciente del paquete. Red Hat no requiere
que los paquetes más antiguos estén instalados y, luego, que se instale el parche. Para
actualizar el software, RPM elimina la versión anterior del paquete e instala la nueva versión. Las
actualizaciones generalmente conservan los archivos de configuración, pero el empaquetador de
la nueva versión define el comportamiento exacto.

En la mayoría de los casos, solo una versión o un lanzamiento de un paquete puede instalarse a
la vez. Sin embargo, si un paquete se crea de modo que no haya nombres de archivo en conflicto,
pueden instalarse múltiples versiones. El ejemplo más importante de esto es el paquete kernel.
Como un kernel nuevo solo puede evaluarse mediante el inicio en ese kernel, el paquete está
específicamente diseñado para que puedan instalarse múltiples versiones simultáneamente. Si el
kernel nuevo no arranca, el kernel anterior sigue estando disponible y de arranque.

Análisis de los paquetes RPM


La utilidad rpm es una herramienta de nivel bajo que es útil para obtener información acerca
del contenido de los archivos de paquete y los paquetes instalados. De forma predeterminada,
obtiene información de la base de datos local de los paquetes instalados. Sin embargo, puede
utilizar la opción -p para especificar que desea obtener información sobre un archivo de paquete
descargado. Es posible que desee hacer esto para inspeccionar el contenido del archivo de
paquete antes de instalarlo.

La forma general de una consulta es:

• rpm -q [select-options] [query-options]

Consultas RPM: información general sobre paquetes instalados

• rpm -qa: enumera todos los paquetes instalados

• rpm -qf FILENAME: determina qué paquete proporciona FILENAME

[user@host ~]$ rpm -qf /etc/yum.repos.d


redhat-release-8.0-0.39.el8.x86_64

Consultas RPM: información general sobre paquetes específicos

• rpm -q: detalla qué versión del paquete está instalada actualmente

RH124-RHEL8.2-es-1-20200928 507
capítulo 14 | Instalación y actualización de paquetes de software

[user@host ~]$ rpm -q yum


yum-4.0.9.2-4.el8.noarch

• rpm -qi brinda información detallada sobre un paquete

• rpm -ql: enumera los archivos instalados con el paquete

[user@host ~]$ rpm -ql yum


/etc/yum.conf
/etc/yum/pluginconf.d
/etc/yum/protected.d
/etc/yum/vars
/usr/bin/yum
/usr/share/man/man1/yum-aliases.1.gz
/usr/share/man/man5/yum.conf.5.gz
/usr/share/man/man8/yum-shell.8.gz
/usr/share/man/man8/yum.8.gz

• rpm -qc: enumera los archivos de configuración instalados con el paquete

[user@host ~]$ rpm -qc openssh-clients


/etc/ssh/ssh_config
/etc/ssh/ssh_config.d/05-redhat.conf

• rpm -qd: enumera los archivos de documentos instalados con el paquete

[user@host ~]$ rpm -qd openssh-clients


/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz

• rpm -q --scripts: enumera los scripts de la shell que pueden ejecutarse antes o después de
que se instaló o eliminó el paquete

[user@host ~]$ rpm -q --scripts openssh-server


preinstall scriptlet (using /bin/sh):
getent group sshd >/dev/null || groupadd -g 74 -r sshd || :
getent passwd sshd >/dev/null || \
useradd -c "Privilege-separated SSH" -u 74 -g sshd \
-s /sbin/nologin -r -d /var/empty/sshd sshd 2> /dev/null || :
postinstall scriptlet (using /bin/sh):

if [ $1 -eq 1 ] ; then
# Initial installation
/usr/bin/systemctl preset sshd.service sshd.socket >/dev/null 2>&1 || :

508 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

fi
preuninstall scriptlet (using /bin/sh):

if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
/usr/bin/systemctl --no-reload disable sshd.service sshd.socket > /dev/
null 2>&1 || :
/usr/bin/systemctl stop sshd.service sshd.socket > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):

/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :


if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
/usr/bin/systemctl try-restart sshd.service >/dev/null 2>&1 || :
fi

• rpm -q --changelog: enumera la información de cambios para el paquete

[user@host ~]$ rpm -q --changelog audit


* Wed Jan 09 2019 Steve Grubb <[email protected]> 3.0-0.10.20180831git0047a6c
resolves: rhbz#1655270] Message "audit: backlog limit exceeded" reported
- Fix annobin failure

* Fri Dec 07 2018 Steve Grubb <[email protected]> 3.0-0.8.20180831git0047a6c


resolves: rhbz#1639745 - build requires go-toolset-7 which is not available
resolves: rhbz#1643567 - service auditd stop exits prematurely
resolves: rhbz#1616428 - Update git snapshot of audit package
- Remove static libs subpackage
...output omitted...

Consulta de archivos de paquete local:

[user@host ~]$ ls -l wonderwidgets-1.0-4.x86_64.rpm


-rw-rw-r--. 1 user user 257 Mar 13 20:06 wonderwidgets-1.0-4.x86_64.rpm
[user@host ~]$ rpm -qlp wonderwidgets-1.0-4.x86_64.rpm
/etc/wonderwidgets.conf
/usr/bin/wonderwidgets
/usr/share/doc/wonderwidgets-1.0
/usr/share/doc/wonderwidgets-1.0/README.txt

Instalación de paquetes RPM


El comando rpm también se puede usar para instalar un paquete RPM que ha descargado en su
directorio local.

[root@host ~]# rpm -ivh wonderwidgets-1.0-4.x86_64.rpm


Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:wonderwidgets-1.0-4 ################################# [100%]
[root@host ~]#

RH124-RHEL8.2-es-1-20200928 509
capítulo 14 | Instalación y actualización de paquetes de software

Sin embargo, la siguiente sección de este capítulo tratará una herramienta más poderosa para
administrar la instalación de RPM y las actualizaciones desde la línea de comandos, yum.

Advertencia
Tenga cuidado al instalar paquetes de terceros, no solo por el software que pueden
instalar, sino también porque el paquete RPM puede incluir scripts arbitrarios que se
ejecutan como usuario root durante el proceso de instalación.

nota
Puede extraer archivos de un archivo de paquete RPM sin instalar el paquete. La
utilidad rpm2cpio puede pasar el contenido del RPM a una herramienta de archivo
especial llamada cpio, que puede extraer todos los archivos o archivos individuales.

Canalice la salida de rpm2cpio PACKAGEFILE.rpm en cpio -id para


extraer todos los archivos almacenados en el paquete RPM. Se crean árboles de
subdirectorio, según sea necesario, con respecto al directorio de trabajo actual.

[user@host tmp-extract]$ rpm2cpio wonderwidgets-1.0-4.x86_64.rpm | cpio -id

Se extraen archivos individuales mediante la especificación de la ruta del archivo:

[user@host ~]$ rpm2cpio wonderwidgets-1.0-4.x86_64.rpm | cpio -id "*txt"


11 blocks
[user@host ~]$ ls -l usr/share/doc/wonderwidgets-1.0/
total 4
-rw-r--r--. 1 user user 76 Feb 13 19:27 README.txt

Resumen de los comandos de consulta RPM


Los paquetes instalados pueden consultarse directamente con el comando rpm. Agregue la
opción -p para consultar un archivo de paquete antes de la instalación.

Comando Tarea

rpm -qa Enumera todos los paquetes RPM


actualmente instalados.

rpm -q NAME Muestra la versión de NAME instalada en el


sistema.

rpm -qi NAME Brinda información detallada sobre un


paquete.

rpm -ql NAME Enumera todos los archivos que están


incluidos en el paquete.

rpm -qc NAME Enumera los archivos de configuración


incluidos en un paquete.

510 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Comando Tarea

rpm -qd NAME Enumera los archivos de documentación


incluidos en un paquete.

rpm -q --changelog NAME Muestra un resumen breve del motivo de


lanzamiento del paquete nuevo.

rpm -q --scripts NAME Muestra los scripts de shell ejecutados en la


instalación, actualización o eliminación de
paquetes.

Referencias
Páginas del manual rpm(8), rpm2cpio(8), cpio(1) y rpmkeys(8)

RH124-RHEL8.2-es-1-20200928 511
capítulo 14 | Instalación y actualización de paquetes de software

Ejercicio Guiado

Explicación y revisión de paquetes de


software RPM
En este ejercicio, recopilará información sobre un paquete de un tercero, extraerá los
archivos para su inspección y, luego, lo instalará en un servidor.

Resultados
Deberá ser capaz de instalar un paquete no proporcionado por los repositorios de software
en un servidor.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-rpm start. Este script ejecuta


un script de inicio que determina si el host servera es accesible en la red. El script también
descarga el paquete rhcsa-script-1.0.0-1.noarch.rpm en el directorio /home/student en
servera.

[student@workstation ~]$ lab software-rpm start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Ver información del paquete y enumerar archivos en el paquete rhcsa-


script-1.0.0-1.noarch.rpm. También vea el script que se ejecuta cuando se instala o
desinstala el paquete.

2.1. Vea información para el paquete rhcsa-script-1.0.0-1.noarch.rpm.

[student@servera ~]$ rpm -q -p rhcsa-script-1.0.0-1.noarch.rpm -i


Name : rhcsa-script
Version : 1.0.0
Release : 1
Architecture: noarch
Install Date: (not installed)
Group : System
Size : 1056
License : GPL
Signature : (none)
Source RPM : rhcsa-script-1.0.0-1.src.rpm
Build Date : Wed 06 Mar 2019 03:59:46 PM IST
Build Host : foundation0.ilt.example.com

512 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Relocations : (not relocatable)


Packager : Snehangshu Karmakar
URL : http://example.com
Summary : RHCSA Practice Script
Description :
A RHCSA practice script.
The package changes the motd.

2.2. Enumere archivos en el paquete rhcsa-script-1.0.0-1.noarch.rpm.

[student@servera ~]$ rpm -q -p rhcsa-script-1.0.0-1.noarch.rpm -l


/opt/rhcsa-script/mymotd

2.3. Vea el script que se ejecuta cuando se instala o desinstala el paquete rhcsa-
script-1.0.0-1.noarch.rpm.

[student@servera ~]$ rpm -q -p rhcsa-script-1.0.0-1.noarch.rpm --scripts


preinstall scriptlet (using /bin/sh):
if [ "$1" == "2" ]; then
if [ -e /etc/motd.orig ]; then
mv -f /etc/motd.orig /etc/motd
fi
fi
postinstall scriptlet (using /bin/sh):
...output omitted...

3. Extraiga el contenido del paquete rhcsa-script-1.0.0-1.noarch.rpm en el directorio /home/


student.

3.1. Use los comandos rpm2cpio y cpio -tv para enumerar los archivos en el paquete
rhcsa-script-1.0.0-1.noarch.rpm.

[student@servera ~]$ rpm2cpio rhcsa-script-1.0.0-1.noarch.rpm | cpio -tv


-rw-r--r-- 1 root root 1056 Mar 6 15:59 ./opt/rhcsa-script/mymotd
3 blocks

3.2. Extraiga todos los archivos del paquete rhcsa-script-1.0.0-1.noarch.rpm en el


directorio /home/student. Use los comandos rpm2cpio y cpio -idv para
extraer los archivos y crear los directorios principales cuando sea necesario en modo
detallado.

[student@servera ~]$ rpm2cpio rhcsa-script-1.0.0-1.noarch.rpm | cpio -idv


./opt/rhcsa-script/mymotd
3 blocks

3.3. Enumere para verificar los archivos extraídos en el directorio /home/student/opt.

RH124-RHEL8.2-es-1-20200928 513
capítulo 14 | Instalación y actualización de paquetes de software

[student@servera ~]$ ls -lR opt


opt:
total 0
drwxrwxr-x. 2 student student 20 Mar 7 14:44 rhcsa-script

opt/rhcsa-script:
total 4
-rw-r--r--. 1 student student 1056 Mar 7 14:44 mymotd

4. Instale el paquete rhcsa-script-1.0.0-1.noarch.rpm. Use el comando sudo para obtener


privilegios de superusuario para instalar el paquete.

4.1. Use el comando sudo rpm -ivh para instalar el paquete RPM rhcsa-
script-1.0.0-1.noarch.rpm.

[student@servera ~]$ sudo rpm -ivh rhcsa-script-1.0.0-1.noarch.rpm


[sudo] password for student: student
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:rhcsa-script-1.0.0-1 ################################# [100%]
[student@servera ~]$

4.2. Use el comando rpm para verificar que el paquete esté instalado.

[student@servera ~]$ rpm -q rhcsa-script


rhcsa-script-1.0.0-1.noarch

5. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab software-rpm finish para terminar este ejercicio.
Este script elimina todos los paquetes instalados en servera durante el ejercicio

[student@workstation ~]$ lab software-rpm finish

Esto concluye el ejercicio guiado.

514 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Instalación y actualización de paquetes


de software con Yum

Objetivos
Tras finalizar esta sección, debería poder encontrar, instalar y actualizar paquetes de software
mediante el uso del comando yum.

Administración de paquetes de software con yum


El comando de bajo nivel rpm se puede usar para instalar paquetes, pero no está diseñado
para trabajar con repositorios de paquetes o para resolver dependencias de múltiples fuentes
automáticamente.

Yum está diseñado para ser un mejor sistema de gestión de instalación y actualizaciones de
software basado en RPM. El comando yum le permite instalar, actualizar, eliminar y obtener
información sobre los paquetes de software y sus dependencias. Puede obtener un historial de
transacciones realizadas y trabajar con múltiples repositorios de software de Red Hat y terceros.

Búsqueda de software con Yum

• yum help muestra la información de uso.

• yum list muestra los paquetes instalados y aquellos disponibles.

[user@host ~]$ yum list 'http*'


Available Packages
http-parser.i686 2.8.0-2.el8 rhel8-appstream
http-parser.x86_64 2.8.0-2.el8 rhel8-appstream
httpcomponents-client.noarch 4.5.5-4.module+el8+2452+b359bfcd rhel8-appstream
httpcomponents-core.noarch 4.4.10-3.module+el8+2452+b359bfcd rhel8-appstream
httpd.x86_64 2.4.37-7.module+el8+2443+605475b7 rhel8-appstream
httpd-devel.x86_64 2.4.37-7.module+el8+2443+605475b7 rhel8-appstream
httpd-filesystem.noarch 2.4.37-7.module+el8+2443+605475b7 rhel8-appstream
httpd-manual.noarch 2.4.37-7.module+el8+2443+605475b7 rhel8-appstream
httpd-tools.x86_64 2.4.37-7.module+el8+2443+605475b7 rhel8-appstream

• yum search KEYWORD enumera paquetes por palabras clave que se encuentran en los
campos de nombre y resumen solamente.

Para buscar paquetes que contienen “servidor web” en los campos nombre, resumen y
descripción, use search all:

[user@host ~]$ yum search all 'web server'


================= Summary & Description Matched: web server ====================
pcp-pmda-weblog.x86_64 : Performance Co-Pilot (PCP) metrics from web server logs
nginx.x86_64 : A high performance web server and reverse proxy server
======================== Summary Matched: web server ===========================
libcurl.x86_64 : A library for getting files from web servers
libcurl.i686 : A library for getting files from web servers
libcurl.x86_64 : A library for getting files from web servers

RH124-RHEL8.2-es-1-20200928 515
capítulo 14 | Instalación y actualización de paquetes de software

====================== Description Matched: web server =========================


httpd.x86_64 : Apache HTTP Server
git-instaweb.x86_64 : Repository browser in gitweb
...output omitted...

• yum info PACKAGENAME arroja información detallada sobre un paquete, que incluye el
espacio en disco necesario para la instalación.

Para obtener información sobre el servidor HTTP Apache:

[user@host ~]$ yum info httpd


Available Packages
Name : httpd
Version : 2.4.37
Release : 7.module+el8+2443+605475b7
Arch : x86_64
Size : 1.4 M
Source : httpd-2.4.37-7.module+el8+2443+605475b7.src.rpm
Repo : rhel8-appstream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.

• yum provides PATHNAME muestra paquetes que coinciden con el nombre de ruta
especificado (que a menudo, incluye caracteres comodines).

Para encontrar paquetes que proporcionan el directorio /var/www/html, use lo siguiente:

[user@host ~]$ yum provides /var/www/html


httpd-filesystem-2.4.37-7.module+el8+2443+605475b7.noarch : The basic directory
layout for the Apache HTTP server
Repo : rhel8-appstream
Matched from:
Filename : /var/www/html

Instalación y eliminación de software con yum

• yum install PACKAGENAME obtiene e instala un paquete de software junto con cualquier
tipo de dependencia.

[user@host ~]$ yum install httpd


Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
httpd x86_64 2.4.37-7.module... rhel8-appstream 1.4 M
Installing dependencies:
apr x86_64 1.6.3-8.el8 rhel8-appstream 125 k
apr-util x86_64 1.6.1-6.el8 rhel8-appstream 105 k
...output omitted...
Transaction Summary

516 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

================================================================================
Install 9 Packages

Total download size: 2.0 M


Installed size: 5.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): apr-util-bdb-1.6.1-6.el8.x86_64.rpm 464 kB/s | 25 kB 00:00
(2/9): apr-1.6.3-8.el8.x86_64.rpm 1.9 MB/s | 125 kB 00:00
(3/9): apr-util-1.6.1-6.el8.x86_64.rpm 1.3 MB/s | 105 kB 00:00
...output omitted...
Total 8.6 MB/s | 2.0 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : apr-1.6.3-8.el8.x86_64 1/9
Running scriptlet: apr-1.6.3-8.el8.x86_64 1/9
Installing : apr-util-bdb-1.6.1-6.el8.x86_64 2/9
...output omitted...
Installed:
httpd-2.4.37-7.module+el8+2443+605475b7.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-openssl-1.6.1-6.el8.x86_64 apr-1.6.3-8.el8.x86_64
...output omitted...
Complete!

• yum update PACKAGENAME obtiene e instala una versión más reciente del paquete
especificado, incluidas las dependencias. Generalmente, el proceso intenta preservar los
archivos de configuración, pero en algunos casos, se les cambiará el nombre si el empaquetador
considera que el anterior no funcionará después de la actualización. Si no se especifica el
PACKAGENAME, instala todas las actualizaciones relevantes.

[user@host ~]$ sudo yum update

Como un kernel nuevo solo puede evaluarse mediante el inicio en ese kernel, el paquete está
específicamente diseñado para que puedan instalarse múltiples versiones simultáneamente.
Si el núcleo nuevo no arranca, el núcleo anterior sigue estando disponible. El uso de yum
update kernel producirá la instalación del kernel nuevo. Los archivos de configuración
contienen una lista de paquetes que siempre deben instalarse aunque el administrador solicite
una actualización.

RH124-RHEL8.2-es-1-20200928 517
capítulo 14 | Instalación y actualización de paquetes de software

nota
Use yum list kernel para detallar todos los núcleos instalados y disponibles.
Para ver el kernel en funcionamiento actualmente, use el comando uname. La
opción -r muestra solamente la versión y el lanzamiento del kernel, y la opción -a
muestra el lanzamiento e información adicional del kernel.

[user@host ~]$ yum list kernel


Installed Packages
kernel.x86_64 4.18.0-60.el8 @anaconda
kernel.x86_64 4.18.0-67.el8 @rhel-8-for-x86_64-baseos-htb-rpms
[user@host ~]$ uname -r
4.18.0-60.el8.x86_64
[user@host ~]$ uname -a
Linux host.lab.example.com 4.18.0-60.el8.x86_64 #1 SMP Fri Jan 11 19:08:11 UTC
2019 x86_64 x86_64 x86_64 GNU/Linux

• yum remove PACKAGENAME elimina un paquete de software instalado junto con cualquier
paquete compatible.

[user@host ~]$ sudo yum remove httpd

Advertencia
El comando yum remove quita los paquetes enumerados y cualquier paquete que
requiere que se eliminen los paquetes (y los paquetes que requieren esos paquetes,
etc.). Esto puede dar lugar a una eliminación inesperada de paquetes, por lo que
debe verificar detenidamente la lista de paquetes que se quitarán.

Instalación y eliminación de grupos de software con yum

• yum también representa el concepto de grupos, que son colecciones de software relacionados
e instalados en forma conjunta con un fin en particular. En Red Hat Enterprise Linux 8, hay dos
tipos de grupos. Los grupos regulares son colecciones de paquetes. Los grupos de entorno son
colecciones de grupos regulares. Los paquetes o grupos proporcionados por un grupo pueden
ser obligatorios (deben instalarse si el grupo se instala), predeterminados (normalmente
se instalan si el grupo se instala) u opcionales (no se instalan cuando se instala el grupo a
menos que se lo solicite específicamente).

Al igual que yum list, el comando yum group list muestra los nombres de grupos
instalados y disponibles.

[user@host ~]$ yum group list


Available Environment Groups:
Server with GUI
Minimal Install
Server
...output omitted...
Available Groups:
Container Management

518 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

.NET Core Development


RPM Development Tools
...output omitted...

Algunos grupos se instalan normalmente a través de grupos de entorno y se ocultan de manera


predeterminada. Muestre los grupos ocultos con el comando yum group list hidden.

• yum group info muestra información acerca de un grupo. Incluye una lista de nombres de
paquetes obligatorios, predeterminados u opcionales.

[user@host ~]$ yum group info "RPM Development Tools"


Group: RPM Development Tools
Description: These tools include core development tools such rpmbuild.
Mandatory Packages:
redhat-rpm-config
rpm-build
Default Packages:
rpmdevtools
Optional Packages:
rpmlint

• yum group install instala un grupo que instala sus paquetes obligatorios y
predeterminados, y los paquetes de los que depende.

[user@host ~]$ sudo yum group install "RPM Development Tools"


...output omitted...
Installing Groups:
RPM Development Tools

Transaction Summary
===============================================================================
Install 64 Packages

Total download size: 21 M


Installed size: 62 M
Is this ok [y/N]: y
...output omitted...

RH124-RHEL8.2-es-1-20200928 519
capítulo 14 | Instalación y actualización de paquetes de software

Importante
El comportamiento de los grupos Yum cambió a partir de Red Hat Enterprise
Linux 7. En RHEL 7 y versiones posteriores, los grupos se tratan como objetos y
son rastreados por el sistema. Si un grupo instalado se actualiza y el repositorio
Yum ha agregado paquetes nuevos obligatorios o predeterminados al grupo, dichos
paquetes nuevos se instalan en la actualización.

RHEL 6 y las versiones anteriores consideran la instalación de un grupo si todos


sus paquetes obligatorios han sido instalados; o, en caso de que no tenga ningún
paquete obligatorio, o si ningún paquete predeterminado u opcional en el
grupo se instaló En RHEL 7, un grupo se considera instalado solo si se usó yum
group install para su instalación. El comando yum group mark install
GROUPNAME puede usarse para marcar un grupo como instalado, y los paquetes
faltantes y sus dependencias se instalan en la próxima actualización.

Finalmente, RHEL 6 y las versiones anteriores no tenían la forma de dos palabras de


los comandos yum group. Es decir que, en RHEL 6, el comando yum grouplist
existía, pero el comando yum group listequivalente en RHEL 7 y RHEL 8 no.

Visualización del historial de transacciones

• Todas las transacciones de instalación y eliminación se registran en /var/log/dnf.rpm.log.

[user@host ~]$ tail -5 /var/log/dnf.rpm.log


2019-02-26T18:27:00Z SUBDEBUG Installed: rpm-build-4.14.2-9.el8.x86_64
2019-02-26T18:27:01Z SUBDEBUG Installed: rpm-build-4.14.2-9.el8.x86_64
2019-02-26T18:27:01Z SUBDEBUG Installed: rpmdevtools-8.10-7.el8.noarch
2019-02-26T18:27:01Z SUBDEBUG Installed: rpmdevtools-8.10-7.el8.noarch
2019-02-26T18:38:40Z INFO --- logging initialized ---

• yum history muestra un resumen de transacciones de instalación y eliminación.

[user@host ~]$ sudo yum history


ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
7 | group install RPM Develo | 2019-02-26 13:26 | Install | 65
6 | update kernel | 2019-02-26 11:41 | Install | 4
5 | install httpd | 2019-02-25 14:31 | Install | 9
4 | -y install @base firewal | 2019-02-04 11:27 | Install | 127 EE
3 | -C -y remove firewalld - | 2019-01-16 13:12 | Removed | 11 EE
2 | -C -y remove linux-firmw | 2019-01-16 13:12 | Removed | 1
1 | | 2019-01-16 13:05 | Install | 447 EE

• La opción history undo invierte una transacción.

520 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[user@host ~]$ sudo yum history undo 5


Undoing transaction 7, from Tue 26 Feb 2019 10:40:32 AM EST
Install apr-1.6.3-8.el8.x86_64 @rhel8-appstream
Install apr-util-1.6.1-6.el8.x86_64 @rhel8-appstream
Install apr-util-bdb-1.6.1-6.el8.x86_64 @rhel8-appstream
Install apr-util-openssl-1.6.1-6.el8.x86_64 @rhel8-appstream
Install httpd-2.4.37-7.module+el8+2443+605475b7.x86_64 @rhel8-appstream
...output omitted...

Resumen de comandos Yum


Los paquetes pueden ubicarse, instalarse, actualizarse y eliminarse por nombre o por grupos de
paquetes.

Tarea: Comando:

Enumerar paquetes instalados y disponibles yum list [NAME-PATTERN]


por nombre

Enumerar grupos instalados y disponibles yum group list

Buscar un paquete por palabra clave yum search KEYWORD

Mostrar detalles de un paquete yum info PACKAGENAME

Instalar un paquete yum install PACKAGENAME

Instalar un grupo de paquetes yum group install GROUPNAME

Actualizar todos los paquetes yum update

Eliminar un paquete yum remove PACKAGENAME

Mostrar historial de transacciones yum history

Referencias
Páginas de manual yum(1) y yum.conf(5)

Para obtener más información, consulte el capítulo Administración de paquetes


de software de la Guía de configuración básica de sistemas de Red Hat
Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/index#managing-software-
packages_configuring-basic-system-settings

RH124-RHEL8.2-es-1-20200928 521
capítulo 14 | Instalación y actualización de paquetes de software

Ejercicio Guiado

Instalación y actualización de paquetes


de software con Yum
En este ejercicio, instalará y quitará paquetes y grupos de paquetes.

Resultados
Debería poder instalar y eliminar paquetes con dependencias.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-yum start. El comando ejecuta


un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab software-yum start

1. Use el comando ssh para iniciar sesión en servera como el usuario student. Los
sistemas se configuran para que usen claves SSH para la autenticación, por lo que no se
necesita una contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando sudo -i para cambiar al usuario root en el prompt de shell.

[student@servera ~]$ sudo -i


Password: student
[root@servera ~]#

3. Busque un paquete específico.

3.1. Intente ejecutar el comando guile. Se le indicará que no está instalado.

[root@servera ~]# guile


-bash: guile: command not found

3.2. Use el comando yum search para buscar paquetes que tienen guile como parte
de su nombre o resumen.

522 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum search guile


========================= Name Exactly Matched: guile ===============
guile.i686 : A GNU implementation of Scheme for application extensibility
guile.x86_64 : A GNU implementation of Scheme for application extensibility

3.3. Use el comando yum info para obtener más información acerca del paquete guile.

[root@servera ~]# yum info guile


Available Packages
Name : guile
Epoch : 5
Version : 2.0.14
Release : 7.el8
...output omitted...

4. Use el comando yum install para instalar el paquete guile.

[root@servera ~]# yum install guile


...output omitted...
Dependencies resolved.
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
guile x86_64 5:2.0.14-7.el8 rhel-8.2-for-x86_64-appstream-rpms 3.5 M
Installing dependencies:
gc x86_64 7.6.4-3.el8 rhel-8.2-for-x86_64-appstream-rpms 109 k
libatomic_ops x86_64 7.6.2-3.el8 rhel-8.2-for-x86_64-appstream-rpms 38 k
libtool-ltdl x86_64 2.4.6-25.el8 rhel-8.2-for-x86_64-baseos-rpms 58 k

Transaction Summary
===============================================================================
Install 4 Packages

Total download size: 3.7 M


Installed size: 12 M
Is this ok [y/N]: y
...output omitted...
Complete!

5. Quite paquetes.

5.1. Use el comando yum remove para eliminar el paquete guile, pero responda con no
cuando se le solicite. ¿Cuántos paquetes se quitarían?

[root@servera ~]# yum remove guile


...output omitted...
Dependencies resolved.
===============================================================================
Package Arch Version Repository Size
===============================================================================

RH124-RHEL8.2-es-1-20200928 523
capítulo 14 | Instalación y actualización de paquetes de software

Removing:
guile x86_64 5:2.0.14-7.el8 @rhel-8.2-for-x86_64-appstream-rpms 12 M
Removing unused dependencies:
gc x86_64 7.6.4-3.el8 @rhel-8.2-for-x86_64-appstream-rpms 221 k
libatomic_ops x86_64 7.6.2-3.el8 @rhel-8.2-for-x86_64-appstream-rpms 75 k
libtool-ltdl x86_64 2.4.6-25.el8 @rhel-8.2-for-x86_64-baseos-rpms 69 k

Transaction Summary
===============================================================================
Remove 4 Packages

Freed space: 12 M
Is this ok [y/N]: n
Operation aborted.

5.2. Use el comando yum remove para eliminar el paquete gc, pero responda con no
cuando se le solicite. ¿Cuántos paquetes se quitarían?

[root@servera ~]# yum remove gc


...output omitted...
Dependencies resolved.
===============================================================================
Package Arch Version Repository Size
===============================================================================
Removing:
gc x86_64 7.6.4-3.el8 @rhel-8.2-for-x86_64-appstream-rpms 221 k
Removing dependent packages:
guile x86_64 5:2.0.14-7.el8 @rhel-8.2-for-x86_64-appstream-rpms 12 M
Removing unused dependencies:
libatomic_ops x86_64 7.6.2-3.el8 @rhel-8.2-for-x86_64-appstream-rpms 75 k
libtool-ltdl x86_64 2.4.6-25.el8 @rhel-8.2-for-x86_64-baseos-rpms 69 k

Transaction Summary
===============================================================================
Remove 4 Packages

Freed space: 12 M
Is this ok [y/N]: n
Operation aborted.

6. Recopile información sobre el grupo de componentes de “Herramientas de seguridad” e


instálelo en servera.

6.1. Use el comando yum group list para enumerar todos los grupos de componentes
disponibles.

[root@servera ~]# yum group list

6.2. Use el comando yum group info para obtener más información acerca del grupo
de componentes Herramientas de seguridad, incluida una lista de paquetes
incluidos.

524 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum group info "Security Tools"


Group: Security Tools
Description: Security tools for integrity and trust verification.
Default Packages:
scap-security-guide
Optional Packages:
aide
hmaccalc
openscap
openscap-engine-sce
openscap-utils
scap-security-guide-doc
scap-workbench
tpm-quote-tools
tpm-tools
tpm2-tools
trousers
udica

6.3. Use el comando yum group install para instalar el grupo de componentes
Herramientas de seguridad.

[root@servera ~]# yum group install "Security Tools"


Dependencies resolved.
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing group/module packages:
scap-security-guide noarch 0.1.48-7.el8 rhel-8-for-x86_64-appstream-rpms 6.9 M
Installing dependencies:
GConf2 x86_64 3.2.6-22.el8 rhel-8-for-x86_64-appstream-rpms 1.0 M
...output omitted...

Transaction Summary
===============================================================================
Install 6 Packages

Total download size: 12 M


Installed size: 247 M
Is this ok [y/N]: y
...output omitted...
Installed:
GConf2-3.2.6-22.el8.x86_64 libxslt-1.1.32-4.el8.x86_64
openscap-1.3.2-6.el8.x86_64 openscap-scanner-1.3.2-6.el8.x86_64
scap-security-guide-0.1.48-7.el8.noarch xml-common-0.6.3-50.el8.noarch

Complete!

7. Explore el historial y las opciones de anulación de yum.

7.1. Use el comando yum history para mostrar el historial de yum reciente.

RH124-RHEL8.2-es-1-20200928 525
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum history


ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
6 | group install Security T | 2019-02-26 17:11 | Install | 7
5 | install guile | 2019-05-26 17:05 | Install | 4
4 | -y install @base firewal | 2019-02-04 11:27 | Install | 127 EE
3 | -C -y remove firewalld - | 2019-01-16 13:12 | Removed | 11 EE
2 | -C -y remove linux-firmw | 2019-01-16 13:12 | Removed | 1
1 | | 2019-01-16 13:05 | Install | 447 EE

En su sistema, es probable que el historial sea diferente.

7.2. Use el comando yum history info para confirmar que la última transacción sea la
instalación del grupo. En el siguiente comando, reemplace el ID de transacción por el
que se menciona en el paso anterior.

[root@servera ~]# yum history info 6


Transaction ID : 6
Begin time : Tue 26 Feb 2019 05:11:25 PM EST
Begin rpmdb : 563:bf48c46156982a78e290795400482694072f5ebb
End time : Tue 26 Feb 2019 05:11:33 PM EST (8 seconds)
End rpmdb : 623:bf25b424ccf451dd0a6e674fb48e497e66636203
User : Student User <student>
Return-Code : Success
Releasever : 8
Command Line : group install Security Tools
Packages Altered:
Install libxslt-1.1.32-4.el8.x86_64 @rhel-8.2-for-x86_64-baseos-rpms
Install xml-common-0.6.3-50.el8.noarch @rhel-8.2-for-x86_64-baseos-rpms
...output omitted...

7.3. Use el comando yum history undo para eliminar el conjunto de paquetes que
se instalaron cuando se instaló el paquete guile. En su sistema, busque el ID de
transacción correcto de la salida del comando yum history y luego, use ese ID en el
siguiente comando.

[root@servera ~]# yum history undo 5

8. Cierre sesión en el sistema servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab software-yum finish para terminar este ejercicio.

[student@workstation ~]$ lab software-yum finish

526 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 527
capítulo 14 | Instalación y actualización de paquetes de software

Habilitación de repositorios de software


yum

Objetivos
Tras finalizar esta sección, los estudiantes deberán ser capaces de habilitar y deshabilitar el uso de
repositorios Yum de Red Hat o de terceros por parte de un servidor.

Habilitación de repositorios de software de Red Hat


Si se registra un sistema en el servicio de administración de suscripciones, se configura
automáticamente el acceso a los repositorios de software basado en las suscripciones que se
adjuntan. Para ver todos los repositorios disponibles:

[user@host ~]$ yum repolist all


...output omitted...
rhel-8-for-x86_64-appstream-debug-rpms ... AppStream (Debug RPMs) disabled
rhel-8-for-x86_64-appstream-rpms ... AppStream (RPMs) enabled:
5,045
rhel-8-for-x86_64-appstream-source-rpms ... AppStream (Source RPMs) disabled
rhel-8-for-x86_64-baseos-debug-rpms ... BaseOS (Debug RPMs) enabled:
2,270
rhel-8-for-x86_64-baseos-rpms ... BaseOS (RPMs) enabled:
1,963
...output omitted...

El comando yum config-manager se puede usar para habilitar o deshabilitar los repositorios.
Para habilitar un repositorio, el comando establece el parámetro habilitado en 1. Por ejemplo,
el siguiente comando habilita el repositorio rhel-8-server-debug-rpms:

[user@host ~]$ yum config-manager --enable rhel-8-server-debug-rpms


Updating Subscription Management repositories.
============= repo: rhel-8-for-x86_64-baseos-debug-rpms ============
[rhel-8-for-x86_64-baseos-debug-rpms]
bandwidth = 0
baseurl = [https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/debug]
cachedir = /var/cache/dnf
cost = 1000
deltarpm = 1
deltarpm_percentage = 75
enabled = 1
...output omitted...

La fuentes que no son Red Hat proporcionan software a través de repositorios de terceros, a los
que se puede acceder mediante el comando yum desde un sitio web, servidor FTP o el sistema
de archivos local. Por ejemplo, Adobe proporciona parte de su software para Linux a través
de un repositorio Yum. En un aula Red Hat, el servidor del aula content.example.com aloja
repositorios Yum.

528 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Cree un archivo en el directorio /etc/yum.repos.d/ para habilitar el soporte para un nuevo


repositorio de terceros. Los archivos de configuración de repositorio deben finalizar con la
extensión .repo. La definición de repositorio contiene la URL del repositorio, un nombre, si se
debe usar GPG para comprobar las firmas del paquete y, en ese caso, la URL que apunta a la clave
GPG de confianza.

Creación de repositorios Yum


Cree repositorios Yum con el comando yum config-manager. El
siguiente comando crea un archivo llamado /etc/yum.repos.d/
dl.fedoraproject.org_pub_epel_8_Everything_x86_64_.repo con la salida que se
muestra.

[user@host ~]$ yum config-manager \


--add-repo="https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/"
Adding repo from: https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/

[dl.fedoraproject.org_pub_epel_8_Everything_x86_64_]
name=created by yum config-manager from https://dl.fedoraproject.org/pub/epel/8/
Everything/x86_64/
baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
enabled=1

Modifique este archivo para proporcionar valores personalizados y la ubicación de una clave
GPG. Las claves se almacenan en diversas ubicaciones en el sitio del repositorio remoto, como,
http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8. Los administradores
deben descargar la clave en un archivo local en lugar de permitir que yum la recupere de una
fuente externa. Por ejemplo:

[EPEL]
name=EPEL 8
baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

Paquetes de configuración de RPM para repositorios locales


Algunos repositorios proporcionan un archivo de configuración y la clave pública de GPG
como parte del paquete de RPM que puede descargarse e instalarse con el comando yum
localinstall. Por ejemplo, el proyecto voluntario de Paquetes extra para Enterprise Linux
(EPEL), que proporciona software no admitido por Red Hat, pero que es compatible con Red Hat
Enterprise Linux.

El siguiente comando instala el paquete de repositorio de Red Hat Enterprise Linux 8 EPEL.

[user@host ~]$ rpm --import \


http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8
[user@host ~]$ yum install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

RH124-RHEL8.2-es-1-20200928 529
capítulo 14 | Instalación y actualización de paquetes de software

A menudo, los archivos de configuración enumeran varias referencias de repositorio en un solo


archivo. Cada referencia de repositorio comienza con un nombre de una sola palabra entre
corchetes.

[user@host ~]$ cat /etc/yum.repos.d/epel.repo


[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/
$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=
$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/
$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-
$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/SRPMS
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-
$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

Para definir un repositorio, pero no buscarlo de forma predeterminada, inserte el parámetro


enabled=0. Los repositorios pueden habilitarse o deshabilitarse en forma persistente con el
comando yum config-manager o en forma provisoria con las opciones de comando yum, --
enablerepo=PATTERN y --disablerepo=PATTERN.

Advertencia
Antes de instalar los paquetes firmados, instale la clave GPG de RPM. Esta acción
verifica que los paquetes pertenezcan a una clave que se haya importado. De lo
contrario, el comando yum el falla porque falta una clave. La opción --nogpgcheck
puede usarse para ignorar las claves GPG faltantes, pero esto podría provocar que
se instalen paquetes adulterados o dudosos en el sistema y que, posiblemente,
comprometan la seguridad.

530 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Referencias
Páginas de manual yum(1), yum.conf(5) y yum-config-manager(1)

Para obtener más información, consulte el capítulo Administración de repositorios


de software de la Guía de configuración básica de sistemas de Red Hat
Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/index#managing-software-
repositories_managing-software-packages

RH124-RHEL8.2-es-1-20200928 531
capítulo 14 | Instalación y actualización de paquetes de software

Ejercicio Guiado

Habilitación de repositorios de software


yum
En este ejercicio, configurará su servidor para obtener paquetes desde un repositorio Yum
remoto, luego actualizará o instalará un paquete desde ese repositorio.

Resultados
Deberá ser capaz de configurar un sistema para obtener actualizaciones de software de un
servidor de aula y actualizar el sistema para usar los paquetes más recientes.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-repo start. Este comando


ejecuta un script de inicio que determina si el host servera es accesible en la red. El script
también garantiza que el paquete yum esté instalado.

[student@workstation ~]$ lab software-repo start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando sudo -i para cambiar a root en el prompt de shell.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Configure repositorios de software en servera para obtener paquetes personalizados y


actualizaciones desde la siguiente URL:

• Paquetes personalizados proporcionados en http://content.example.com/


rhel8.2/x86_64/rhcsa-practice/rht
• Actualizaciones de paquetes personalizados proporcionados en http://
content.example.com/rhel8.2/x86_64/rhcsa-practice/errata

3.1. Use yum config-manager para agregar el repositorio de paquetes personalizado.

[root@servera ~]# yum config-manager \


--add-repo "http://content.example.com/rhel8.2/x86_64/rhcsa-practice/rht"
Adding repo from: http://content.example.com/rhel8.2/x86_64/rhcsa-practice/rht

532 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

3.2. Examine el archivo de repositorio de software creado por el comando anterior en el


directorio /etc/yum.repos.d. Use el comando vim para editar el archivo y agregue
el parámetro gpgcheck=0 para deshabilitar la comprobación de clave GPG para el
repositorio.

[root@servera ~]# vim \


/etc/yum.repos.d/content.example.com_rhel8.2_x86_64_rhcsa-practice_rht.repo
[content.example.com_rhel8.2_x86_64_rhcsa-practice_rht]
name=created by dnf config-manager from http://content.example.com/rhel8.2/x86_64/
rhcsa-practice/rht
baseurl=http://content.example.com/rhel8.2/x86_64/rhcsa-practice/rht
enabled=1
gpgcheck=0

3.3. Cree el archivo /etc/yum.repos.d/errata.repo para habilitar el repositorio de


actualizaciones con el siguiente contenido:

[rht-updates]
name=rht updates
baseurl=http://content.example.com/rhel8.2/x86_64/rhcsa-practice/errata
enabled=1
gpgcheck=0

3.4. Use el comando yum repolist all para enumerar todos los repositorios en el
sistema:

[root@servera ~]# yum repolist all


repo id repo name status
content.example.com_rhel8.2_x86_64_rhcsa-practice_rht created by .... enabled
rht-updates rht updates enabled
...output omitted...

4. Deshabilite el repositorio de software rht-updates e instale el paquete rht-system.

4.1. Use yum config-manager --disable para deshabilitar el repositorio rht-


updates.

[root@servera ~]# yum config-manager --disable rht-updates

4.2. Muestre el paquete rht-system y, luego, instálelo.

[root@servera ~]# yum list rht-system


Available Packages
rht-system.noarch 1.0.0-1 content.example.com_rhel8.2_x86_64_rhcsa-practice_rht
[root@servera ~]# yum install rht-system
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rht-system noarch 1.0.0-1 content..._rht 3.7 k
...output omitted...

RH124-RHEL8.2-es-1-20200928 533
capítulo 14 | Instalación y actualización de paquetes de software

Is this ok [y/N]: y
...output omitted...
Installed:
rht-system-1.0.0-1.noarch
Complete!

4.3. Verifique que el paquete rht-system esté instalado y anote el número de versión del
paquete.

[root@servera ~]# yum list rht-system


Installed Packages
rht-system.noarch 1.0.0-1 @content.example.com_rhel8.2_x86_64_rhcsa-practice_rht

5. Habilite el repositorio de software rht-updates y actualice todos los paquetes de


software relevantes.

5.1. Use yum config-manager --enable para habilitar el repositorio rht-updates.

[root@servera ~]# yum config-manager --enable rht-updates

5.2. Use el comando yum update para actualizar todos los paquetes de software en
servera.

[root@servera ~]# yum update


Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Upgrading:
rht-system x86_64 1.0.0-2.el7 rht-updates 3.9 k
...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

5.3. Verifique que el paquete rht-system esté actualizado y anote el número de versión
del paquete.

[root@servera ~]# yum list rht-system


Installed Packages
rht-system.noarch 1.0.0-2.el7 @rht-updates

6. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

534 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Finalizar
En workstation, ejecute el script lab software-repo finish para terminar este ejercicio.
Este script elimina todos los repositorios de software y paquetes instalados en servera durante
el ejercicio.

[student@workstation ~]$ lab software-repo finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 535
capítulo 14 | Instalación y actualización de paquetes de software

Administración de flujos de módulos de


paquete

Objetivos
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Explicar cómo los módulos permiten la instalación de versiones específicas de software.

• Cómo enumerar, habilitar y cambiar flujos de módulos.

• Instalar y actualizar paquetes desde un módulo.

Introducción a Application Stream


Red Hat Enterprise Linux 8.0 presenta el concepto de Application Streams. Ahora se entregan
al mismo tiempo varias versiones de los componentes de espacio de usuario que se envían con
la distribución. Pueden actualizarse con más frecuencia que los paquetes del sistema operativo
principal. Esto le proporciona una mayor flexibilidad para personalizar Red Hat Enterprise Linux sin
afectar la estabilidad subyacente de la plataforma o implementaciones específicas.

Tradicionalmente, administrar versiones alternativas del paquete de software de una aplicación


y sus paquetes relacionados significaba mantener diferentes repositorios para cada versión
diferente. Para los desarrolladores que querían la última versión de una aplicación y los
administradores que querían la versión más estable de la aplicación, esto creó una situación que
era tediosa de administrar. Este proceso se simplifica en Red Hat Enterprise Linux 8 mediante el
uso de una nueva tecnología llamada Modularidad. La modularidad permite que un solo repositorio
aloje varias versiones del paquete de una aplicación y sus dependencias.

El contenido de Red Hat Enterprise Linux 8 se distribuye a través de dos repositorios de software
principales: BaseOS y Flujo de aplicaciones (AppStream).

BaseOS
El repositorio de BaseOS proporciona el contenido del sistema operativo central para Red Hat
Enterprise Linux como paquetes RPM. Los componentes de BaseOS tienen un ciclo de vida
idéntico al del contenido de versiones anteriores de Red Hat Enterprise Linux.

Flujo de aplicaciones
El repositorio de Flujo de aplicaciones proporciona contenido con distintos ciclos de vida como
módulos y paquetes tradicionales. El Flujo de aplicaciones contiene las partes necesarias del
sistema, así como una amplia gama de aplicaciones previamente disponibles como parte de Red
Hat Software Collections y otros productos y programas.

Importante
Tanto BaseOS como AppStream son una parte necesaria de un sistema
Red Hat Enterprise Linux 8.

El repositorio del Flujo de aplicaciones contiene dos tipos de contenido: Módulos y paquetes RPM
tradicionales. Un módulo describe un conjunto de paquetes RPM que están relacionados. Los

536 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

módulos pueden contener varios flujos para que haya varias versiones de aplicaciones disponibles
para la instalación. Al habilitar un flujo de módulos, el sistema tiene acceso a los paquetes RPM
dentro de ese flujo de módulos.

Módulos
Un módulo es un conjunto de paquetes RPM que son un conjunto consistente que están
relacionados. Normalmente, esto se organiza en torno a una versión específica de una aplicación
de software o lenguaje de programación. Un módulo típico puede contener paquetes con una
aplicación, paquetes con las bibliotecas de dependencia específica de la aplicación, paquetes con
documentación para la aplicación y paquetes con utilidades auxiliares.

Flujos de módulos
Cada módulo puede tener uno o más flujos de módulos, que contienen diferentes versiones del
contenido. Cada uno de los flujos recibe actualizaciones de forma independiente. Piense en el
flujo de módulos como un repositorio virtual en el repositorio físico del flujo de aplicaciones.

Para cada módulo, solo una de sus secuencias puede habilitarse y proporcionar sus paquetes.

Perfiles de módulos
Cada módulo puede tener uno o más perfiles. Un perfil es una lista de ciertos paquetes que se
deben instalar juntos para un determinado caso de uso por ejemplo, para un servidor, cliente,
desarrollo, instalación mínima u otro.

La instalación de un perfil de módulo particular simplemente instala un conjunto particular de


paquetes desde la secuencia del módulo. Posteriormente puede instalar o desinstalar paquetes
normalmente. Si no especifica un perfil, el módulo instalará su perfil predeterminado.

Administración de módulos con Yum


La versión 4 de Yum, nueva en Red Hat Enterprise Linux 8, agrega soporte para las nuevas
características modulares del Flujo de aplicaciones.

Para el manejo del contenido modular, se agregó el comando yum module. De otro modo, yum
funciona con módulos como lo hace con paquetes regulares.

Listado de módulos
Para visualizar una lista de módulos disponibles, use yum module list:

[user@host ~]$ yum module list


Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name Stream Profiles Summary
389-ds 1.4 default 389 Directory Server (base)
ant 1.10 [d] common [d] Java build tool
container-tools 1.0 [d] common [d] Common tools and dependencies for
container runtimes
...output omitted...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

RH124-RHEL8.2-es-1-20200928 537
capítulo 14 | Instalación y actualización de paquetes de software

nota
Use Sugerencia al final de la salida para poder determinar qué flujos y perfiles
están habilitados, deshabilitados, instalados, así como cuáles son los valores
predeterminados.

Para mostrar una lista de los flujos de módulos para un módulo específico y recuperar su estado:

[user@host ~]$ yum module list perl


Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name Stream Profiles Summary
perl 5.24 common [d], minimal Practical Extraction and Report Language
perl 5.26 [d] common [d], minimal Practical Extraction and Report Language

Para visualizar detalles de un módulo:

[user@host ~]$ yum module info perl


Name : perl
Stream : 5.24
Version : 820190207164249
Context : ee766497
Profiles : common [d], minimal
Default profiles : common
Repo : rhel-8-for-x86_64-appstream-rpms
Summary : Practical Extraction and Report Language
...output omitted...
Artifacts : perl-4:5.24.4-403.module+el8+2770+c759b41a.x86_64
: perl-Algorithm-Diff-0:1.1903-9.module+el8+2464+d274aed1.noarch
: perl-Archive-Tar-0:2.30-1.module+el8+2464+d274aed1.noarch
...output omitted...

nota
Sin especificar un flujo de módulos, la información del módulo yum muestra
una lista de paquetes instalados de por el perfil predeterminado de un módulo que
usa el flujo predeterminado. Use el formato module-name:stream para ver un flujo
de módulos específico. Agregue la opción --profile para mostrar información
sobre los paquetes instalados por cada uno de los perfiles del módulo. Por ejemplo:

[user@host ~]$ yum module info --profile perl:5.24

Habilitación de flujos de módulos e instalación de módulos


Los flujos de módulos deben estar habilitados para instalar su módulo. Para simplificar este
proceso, cuando se instala un módulo, se habilita su flujo de módulos si es necesario. Los flujos de
módulos se pueden habilitar manualmente con yum module enable y proporcionar el nombre
del flujo de módulos.

538 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Importante
Solo se puede habilitar un flujo de módulos para un módulo dado. La habilitación de
un flujo de módulos adicional deshabilitará el flujo de módulos original.

Instale un módulo usando el flujo y los perfiles predeterminados:

[user@host ~]$ sudo yum module install perl


Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing group/module packages:
perl x86_64 4:5.26.3-416.el8
rhel-8-for-x86_64-appstream-htb-rpms 72 k
Installing dependencies:
...output omitted...
Running transaction
Preparing : 1/1
Installing : perl-Exporter-5.72-396.el8.noarch 1/155
Installing : perl-Carp-1.42-396.el8.noarch 2/155
...output omitted...
Installed:
perl-4:5.26.3-416.el8.x86_64
perl-Encode-Locale-1.05-9.el8.noarch
...output omitted...
Complete!

nota
Los mismos resultados podrían haberse logrado ejecutando yum install@perl.
La notación @ informa a yum que el argumento es un nombre de módulo en lugar de
un nombre de paquete.

Para verificar el estado del flujo de módulos y el perfil instalado:

[user@host ~]$ yum module list perl


Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name Stream Profiles Summary
perl 5.24 common, minimal Practical Extraction and Report Language
perl 5.26 [d][e] common [i], minimal Practical Extraction and Report Language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Eliminación de módulos y deshabilitación de flujos de módulos


Al eliminarse un módulo, se eliminan todos los paquetes instalados por los perfiles del flujo de
módulos actualmente habilitados, y cualquier otro paquete y módulo que depende de estos.
Los paquetes instalados desde este flujo de módulos que no figuran en ninguno de sus perfiles
permanecen instalados en el sistema y se pueden eliminar manualmente.

RH124-RHEL8.2-es-1-20200928 539
capítulo 14 | Instalación y actualización de paquetes de software

Advertencia
Eliminar módulos y cambiar las secuencias de módulos puede ser un poco
complicado. Cambiar el flujo habilitado para un módulo es equivalente a restablecer
el flujo actual y habilitar el nuevo flujo. No cambia automáticamente los paquetes
instalados. Tiene que hacerlo manualmente.

No se recomienda la instalación directa de un flujo de módulo que sea diferente


al que está instalado actualmente, ya que los scripts de actualización pueden
ejecutarse durante la instalación y generaría inconvenientes con el flujo del módulo
original. Eso podría llevar a la pérdida de datos u otros problemas de configuración.

Proceda con precaución.

Para eliminar un módulo instalado:

[user@host ~]$ sudo yum module remove perl


Dependencies resolved.
================================================================================
Package ArchVersion Repository
Size
================================================================================
Removing:
perl x86_644:5.26.3-416.el8 @rhel-8.0-for-x86_64-
appstream-rpms 0
Removing unused dependencies:
...output omitted...
Running transaction
Preparing : 1/1
Erasing : perl-4:5.26.3-416.el8.x86_64 1/155
Erasing : perl-CPAN-2.18-397.el8.noarch 2/155
...output omitted...
Removed:
perl-4:5.26.3-416.el8.x86_64
dwz-0.12-9.el8.x86_64
...output omitted...
Complete!

Después de que se elimine el módulo, el flujo de módulos aún está habilitado. Para verificar que el
flujo del módulos todavía esté habilitado:

[user@host ~]$ yum module list perl


Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name Stream Profiles Summary
perl 5.24 common [d], minimal Practical Extraction and Report Language
perl 5.26 [d][e] common [d], minimal Practical Extraction and Report Language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Para deshabilitar el flujo de módulos:

540 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[user@host ~]$ sudo yum module disable perl


...output omitted...
Dependencies resolved.
=================================================================================
Package Arch Version Repository Size
=================================================================================
Disabling module streams:
perl 5.26
Is this ok [y/N]: y
Complete!

Cambio de flujos de módulos


El cambio de flujos de módulos generalmente requiere actualizar o degradar el contenido a una
versión diferente.

Para garantizar un interruptor limpio, debe eliminar primero los módulos proporcionados por la
secuencia del módulo. Eso eliminará todos los paquetes instalados por los perfiles del módulo, y
cualquier módulo o paquete en el que esos paquetes tengan dependencias.

Para listar los paquetes instalados desde el módulo, en el siguiente ejemplo está instalado el
módulo postgresql:9.6:

[user@host ~]$ sudo yum module info postgresql | grep module+el8 | \


sed 's/.*: //g;s/\n/ /g' | xargs yum list installed
Installed Packages
postgresql.x86_64 9.6.10-1.module+el8+2470+d1bafa0e @rhel-8.0-for-
x86_64-appstream-rpms
postgresql-server.x86_64 9.6.10-1.module+el8+2470+d1bafa0e @rhel-8.0-for-
x86_64-appstream-rpms

Elimine los paquetes enumerados en el comando anterior. Marque los perfiles del módulo que se
desinstalará.

[user@host ~]$ sudo yum module remove postgresql


...output omitted...
Is this ok [y/N]: y
...output omitted...
Removed:
postgresql-server-9.6.10-1.module+el8+2470+d1bafa0e.x86_64
libpq-10.5-1.el8.x86_64 postgresql-9.6.10-1.module+el8+2470+d1bafa0e.x86_64
Complete

Después de quitar los perfiles del módulo, reinicie la secuencia del módulo. Use el comando yum
module reset para restablecer el flujo del módulo.

[user@host ~]$ sudo yum module reset postgresql


=================================================================
Package Arch Version Repository Size
=================================================================
Resetting module streams:
postgresql 9.6

RH124-RHEL8.2-es-1-20200928 541
capítulo 14 | Instalación y actualización de paquetes de software

Transaction Summary
=================================================================

Is this ok [y/N]: y
Complete!

Para habilitar un flujo de módulos diferente e instalar el módulo:

[user@host ~]$ sudo yum module install postgresql:10

Se habilitará el nuevo flujo de módulos y se deshabilitará el flujo actual. Puede ser necesario
actualizar o degradar los paquetes del flujo de módulos anterior que no se enumeran en el nuevo
perfil. Use yum distro-sync para realizar esta tarea si es necesario. También puede haber
paquetes que permanezcan instalados desde el flujo de módulos anterior. Elimínelos con yum
remove.

Referencias
Para obtener más información, consulte el capítulo Uso de AppStream en la Guía
Instalación, administración y eliminación de componentes de espacio de usuario de
Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/installing_managing_and_removing_user-space_components/index#using-
appstream_using-appstream

Modularidad
https://docs.fedoraproject.org/en-US/modularity/

542 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Ejercicio Guiado

Administración de flujos de módulos de


paquete
En este ejercicio, enumerará los módulos disponibles, habilitará un flujo de módulos
específico e instalará los paquetes desde ese flujo.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Enumerar los módulos instalados y examinar la información de un módulo.

• Habilitar e instalar un módulo desde un flujo.

• Cambiar a un flujo de módulos específico.

• Quitar y deshabilitar un módulo.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-module start. Este comando


ejecuta un script de inicio que determina si el host servera es accesible en la red. El script
también garantiza que los repositorios de software necesarios estén disponibles e instala el
módulo postgresql:9.6.

[student@workstation ~]$ lab software-module start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cambie a root en el prompt de shell.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Enumere los módulos disponibles, flujos y módulos instalados. Examine la información para
el módulo python36.

3.1. Use el comando yum module list para enumerar los módulos y los flujos
disponibles.

RH124-RHEL8.2-es-1-20200928 543
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum module list


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
...output omitted...
python27 2.7 [d] common [d] Python ... version 2.7
python36 3.6 [d][e] build, common [d] Python ... version 3.6
python38 3.8 [d] build, common [d] Python ... version 3.8
...output omitted...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

3.2. Use el comando yum module list --installed para enumerar los módulos y
las flujos instalados.

[root@servera ~]# yum module list --installed


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
postgresql 9.6 [e] client, server [d] [i] PostgreSQL server and client ...

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

3.3. Use el comando yum module info para examinar los detalles del módulo
python36.

[root@servera ~]# yum module info python36


Name : python36
Stream : 3.6 [d][e][a]
Version : 8010020190724083915
Context : a920e634
Architecture : x86_64
Profiles : build, common [d]
Default profiles : common
Repo : rhel-8.2-for-x86_64-appstream-rpms
Summary : Python programming language, version 3.6
...output omitted...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive]

4. Instale el módulo python36 desde el flujo 3.6 y el perfil común. Verifique el estado actual
del módulo.

4.1. Use el comando yum module install para instalar el módulo python36. Use la
sintaxis name:stream/profile para instalar el módulo python36 desde el flujo 3.6
y el perfil común.

nota
Puede omitir /profile para usar el perfil predeterminado y :stream para usar el
flujo predeterminado.

544 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum module install python36:3.6/common


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

4.2. Examine el estado actual del módulo python36.

[root@servera ~]# yum module list python36


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
python36 3.6 [d][e] build, common [d] [i] Python ... version 3.6

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

5. Cambie el módulo postgresql del perfil servidor para usar el flujo 10.

5.1. Use el comando yum module list para enumerar el módulo postgresql y el flujo.
Tenga en cuenta que el flujo del módulo postgresql:9.6 está instalado actualmente.

[root@servera ~]# yum module list postgresql


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
postgresql 9.6 [e] client, server [d] [i] PostgreSQL server and client ...
postgresql 10 [d] client, server [d] PostgreSQL server and client ...
postgresql 12 client, server [d] PostgreSQL server and client ...

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

5.2. Elimine y deshabilite el flujo del módulo postgresql junto con todos los paquetes
instalados por el perfil.

[root@servera ~]# yum module remove postgresql


...output omitted...
Is this ok [y/N]: y
...output omitted...
Removed:
postgresql-server-9.6.10-1.module+el8+2470+d1bafa0e.x86_64
libpq-10.5-1.el8.x86_64 postgresql-9.6.10-1.module+el8+2470+d1bafa0e.x86_64
Complete

5.3. Restablezca el módulo postgresql y sus flujos.

[root@servera ~]# yum module reset postgresql


=================================================================
Package Arch Version Repository Size
=================================================================
Resetting modules:
postgresql

RH124-RHEL8.2-es-1-20200928 545
capítulo 14 | Instalación y actualización de paquetes de software

Transaction Summary
=================================================================

Is this ok [y/N]: y
Complete!

5.4. Use el comando yum module install para cambiar al flujo del módulo
postgresql:10.

[root@servera ~]# yum module install postgresql:10


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

5.5. Verifique que el módulo postgresql cambie al flujo 10.

[root@servera ~]# yum module list postgresql


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client ...
postgresql 10 [d][e] client, server [d] [i] PostgreSQL server and client ...
postgresql 12 client, server [d] PostgreSQL server and client ...

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

6. Elimine y deshabilite el flujo del módulo postgresql junto con todos los paquetes instalados
por el perfil.

6.1. Use el comando yum module remove para eliminar el módulo postgresql. El
comando también elimina todos los paquetes instalados desde este módulo.

[root@servera ~]# yum module remove postgresql


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

6.2. Deshabilite el flujo del módulo postgresql.

[root@servera ~]# yum module disable postgresql


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

6.3. Verifique que el flujo del módulo postgresql se elimine y deshabilite.

546 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[root@servera ~]# yum module list postgresql


Red Hat Enterprise Linux 8.2 AppStream (dvd)
Name Stream Profiles Summary
postgresql 9.6 [x] client, server [d] PostgreSQL server and client ...
postgresql 10 [d][x] client, server [d] PostgreSQL server and client ...
postgresql 12 [x] client, server [d] PostgreSQL server and client ...

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

7. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab software-module finish para terminar este
ejercicio. Este script elimina todos los módulos instalados en servera durante el ejercicio.

[student@workstation ~]$ lab software-module finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 547
capítulo 14 | Instalación y actualización de paquetes de software

Trabajo de laboratorio

Instalación y actualización de paquetes


de software
Lista de verificación de rendimiento
En este trabajo de laboratorio, administrará repositorios de software y flujos de módulos, e
instalará y actualizará paquetes de esos repositorios y flujos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar repositorios de software y flujos de módulos.

• Instalar y actualizar paquetes desde repositorios y flujos.

• Instalar un paquete RPM.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-review start. Este script


asegura que serverb esté disponible. También descarga cualquier paquete necesario para
el ejercicio de laboratorio.

[student@workstation ~]$ lab software-review start

1. En serverb, configure un repositorio de software para obtener actualizaciones. Nombre


el repositorio como errata y configure el repositorio en el archivo /etc/yum.repos.d/
errata.repo. Debe acceder a http://content.example.com/rhel8.2/x86_64/
rhcsa-practice/errata. No controle las firmas de GPG.
2. En serverb, instale el nuevo paquete xsane-gimp y el módulo Servidor HTTP Apache del
flujo 2.4 y el perfil común.
3. Por razones de seguridad, serverb no deberá ser capaz de enviar nada para imprimir. Logre
esto mediante la eliminación del paquete cups. Salga de la cuenta root.
4. El script de inicio descarga el paquete rhcsa-script-1.0.0-1.noarch.rpm en el directorio /home/
student en serverb.
Confirme que el paquete rhcsa-script-1.0.0-1.noarch.rpm esté disponible en serverb. Instale
el paquete. Deberá obtener privilegios de superusuario para instalar el paquete. Verifique que
el paquete esté instalado. Salga de serverb.

Evaluación
En workstation, ejecute el script lab software-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

548 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[student@workstation ~]$ lab software-review grade

Finalizar
En workstation, ejecute el script lab software-review finish para terminar este
ejercicio. Este script elimina el repositorio y los paquetes creados durante este ejercicio.

[student@workstation ~]$ lab software-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 549
capítulo 14 | Instalación y actualización de paquetes de software

Solución

Instalación y actualización de paquetes


de software
Lista de verificación de rendimiento
En este trabajo de laboratorio, administrará repositorios de software y flujos de módulos, e
instalará y actualizará paquetes de esos repositorios y flujos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar repositorios de software y flujos de módulos.

• Instalar y actualizar paquetes desde repositorios y flujos.

• Instalar un paquete RPM.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab software-review start. Este script


asegura que serverb esté disponible. También descarga cualquier paquete necesario para
el ejercicio de laboratorio.

[student@workstation ~]$ lab software-review start

1. En serverb, configure un repositorio de software para obtener actualizaciones. Nombre


el repositorio como errata y configure el repositorio en el archivo /etc/yum.repos.d/
errata.repo. Debe acceder a http://content.example.com/rhel8.2/x86_64/
rhcsa-practice/errata. No controle las firmas de GPG.

1.1. En workstation, use el comando ssh para iniciar sesión en serverb con el usuario
student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando sudo -i para cambiar al usuario root.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

1.3. Cree el archivo /etc/yum.repos.d/errata.repo con el siguiente contenido:

550 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

[errata]
name=Red Hat Updates
baseurl=http://content.example.com/rhel8.2/x86_64/rhcsa-practice/errata
enabled=1
gpgcheck=0

2. En serverb, instale el nuevo paquete xsane-gimp y el módulo Servidor HTTP Apache del
flujo 2.4 y el perfil común.

2.1. Use el comando yum list para enumerar los paquetes disponibles para xsane-gimp.

[root@serverb ~]# yum list xsane-gimp


Last metadata expiration check: 0:24:30 ago on Thu 07 Mar 2019 03:50:55 PM CET.
Available Packages
xsane-gimp.x86_64 0.999-30.el8 rhel-8.2-for-x86_64-appstream-rpms

2.2. Instale la última versión del paquete xsane-gimp paquete con el comando yum
install.

[root@serverb ~]# yum install xsane-gimp


...output omitted...
Install 59 Packages

Total download size: 53 M


Installed size: 217 M
Is this ok [y/N]: y
...output omitted...
Complete!
[root@serverb ~]#

2.3. Enumere los módulos y flujos disponibles. Busque el módulo httpd. Use el comando
yum install para instalar el módulo httpd con el flujo 2.4 y el perfil común.

[student@serverb ~]$ yum module list


Name Stream Profiles Summary
...output omitted...
httpd 2.4 [d] common [d], devel, minimal Apache HTTP Server
...output omitted...
[root@serverb ~]# yum module install httpd:2.4/common
Install 10 Packages

Total download size: 2.1 M


Installed size: 5.7 M
Is this ok [y/N]: y
...output omitted...
Complete!
[root@serverb ~]#

3. Por razones de seguridad, serverb no deberá ser capaz de enviar nada para imprimir. Logre
esto mediante la eliminación del paquete cups. Salga de la cuenta root.

3.1. Use el comando yum list para mostrar el paquete cups instalado.

RH124-RHEL8.2-es-1-20200928 551
capítulo 14 | Instalación y actualización de paquetes de software

[root@serverb ~]# yum list cups


Installed Packages
cups.x86_64 1:2.2.6-33.el8 @rhel-8.2-for-x86_64-appstream-rpms
[root@serverb ~]#

3.2. Use el comando yum remove para eliminar el paquete cups.

[root@serverb ~]# yum remove cups.x86_64


...output omitted...
Remove 9 Packages

Freed space: 11 M
Is this ok [y/N]: y
...output omitted...
Complete!

3.3. Salga de la cuenta root.

[root@serverb ~]# exit


[student@serverb ~]$

4. El script de inicio descarga el paquete rhcsa-script-1.0.0-1.noarch.rpm en el directorio /home/


student en serverb.
Confirme que el paquete rhcsa-script-1.0.0-1.noarch.rpm esté disponible en serverb. Instale
el paquete. Deberá obtener privilegios de superusuario para instalar el paquete. Verifique que
el paquete esté instalado. Salga de serverb.

4.1. Use el comando rpm para confirmar que el paquete rhcsa-script-1.0.0-1.noarch.rpm está
disponible en serverb al ver la información del paquete.

[student@serverb ~]$ rpm -q -p rhcsa-script-1.0.0-1.noarch.rpm -i


Name : rhcsa-script
Version : 1.0.0
Release : 1
Architecture: noarch
Install Date: (not installed)
Group : System
Size : 1056
License : GPL
Signature : (none)
Source RPM : rhcsa-script-1.0.0-1.src.rpm
Build Date : Wed 06 Mar 2019 11:29:46 AM CET
Build Host : foundation0.ilt.example.com
Relocations : (not relocatable)
Packager : Snehangshu Karmakar
URL : http://example.com
Summary : RHCSA Practice Script
Description :
A RHCSA practice script.
The package changes the motd.

552 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

4.2. Use el comando sudo yum localinstall para instalar el paquete rhcsa-
script-1.0.0-1.noarch.rpm. La contraseña es student.

[student@serverb ~]$ sudo yum localinstall \


rhcsa-script-1.0.0-1.noarch.rpm
[sudo] password for student: student
Last metadata expiration check: 1:31:22 ago on Thu 07 Mar 2019 03:50:55 PM CET.
Dependencies resolved.
===================================================================
Package Arch Version Repository Size
===================================================================
Installing:
rhcsa-script noarch 1.0.0-1 @commandline 7.6 k

Transaction Summary
===================================================================
Install 1 Package

Total size: 7.6 k


Installed size: 1.0 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: rhcsa-script-1.0.0-1.noarch 1/1
Installing : rhcsa-script-1.0.0-1.noarch 1/1
Running scriptlet: rhcsa-script-1.0.0-1.noarch 1/1
Verifying : rhcsa-script-1.0.0-1.noarch 1/1

Installed:
rhcsa-script-1.0.0-1.noarch

Complete!

4.3. Use el comando rpm para verificar que el paquete esté instalado.

[student@serverb ~]$ rpm -q rhcsa-script


rhcsa-script-1.0.0-1.noarch
[student@serverb ~]$

4.4. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

RH124-RHEL8.2-es-1-20200928 553
capítulo 14 | Instalación y actualización de paquetes de software

Evaluación
En workstation, ejecute el script lab software-review grade para confirmar que ha
realizado correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab software-review grade

Finalizar
En workstation, ejecute el script lab software-review finish para terminar este
ejercicio. Este script elimina el repositorio y los paquetes creados durante este ejercicio.

[student@workstation ~]$ lab software-review finish

Esto concluye el trabajo de laboratorio.

554 RH124-RHEL8.2-es-1-20200928
capítulo 14 | Instalación y actualización de paquetes de software

Resumen
En este capítulo, aprendió lo siguiente:

• La administración de suscripciones de Red Hat proporciona herramientas para que los equipos
tengan derecho a suscripciones de productos, obtengan actualizaciones de paquetes de
software y busquen información sobre contratos de soporte y suscripciones usadas por sus
sistemas.

• El software se proporciona como paquetes RPM, que facilitan la instalación, la actualización y la


desinstalación del software del sistema.

• El comando rpm se puede usar para consultar una base de datos local para proporcionar
información sobre el contenido de los paquetes instalados e instalar archivos de paquetes
descargados.

• yum es una herramienta eficaz de la línea de comandos que puede usarse para instalar,
actualizar, eliminar y consultar los paquetes de software.

• Red Hat Enterprise Linux 8 usa flujos de aplicaciones para proporcionar un solo repositorio que
aloje varias versiones del paquete de una aplicación y sus dependencias.

RH124-RHEL8.2-es-1-20200928 555
556 RH124-RHEL8.2-es-1-20200928
capítulo 15

Acceso a los sistemas de


archivos de Linux
Meta Acceder, revisar y usar los sistemas de archivos
existentes en el almacenamiento conectado a un
servidor Linux.

Objetivos • Explicar qué es un dispositivo de bloque,


interpretar los nombres de archivo de
dispositivos de almacenamiento e identificar
el dispositivo de almacenamiento usado por el
sistema de archivos para un directorio o archivo
en particular.
• Acceder a los sistemas de archivos
conectándolos a un directorio en la jerarquía de
sistemas de archivos.
• Buscar archivos en sistemas de archivos
montados con los comandos find y locate.

Secciones • Identificación de dispositivos y sistemas de


archivos (y cuestionario)
• Montaje y desmontaje de sistemas de archivos
(y ejercicio guiado)
• Localización de archivos en el sistema (y
ejercicio guiado)

Trabajo de Acceso a los sistemas de archivos de Linux


laboratorio

RH124-RHEL8.2-es-1-20200928 557
capítulo 15 | Acceso a los sistemas de archivos de Linux

Identificación de dispositivos y sistemas


de archivos

Objetivos
Tras finalizar esta sección, deberá ser capaz de identificar un directorio en la jerarquía de sistemas
de archivos y en el dispositivo de almacenamiento en el que está almacenado.

Conceptos de la administración del almacenamiento


Se accede a los archivos en un servidor Linux a través de la jerarquía de sistemas de archivos,
un solo árbol de directorios invertido. Esta jerarquía del sistema de archivos se ensambla desde
sistemas de archivos provistos por los dispositivos de almacenamiento disponibles para su sistema.
Cada sistema de archivos es un dispositivo de almacenamiento que ha sido formateado para
almacenar archivos.

En cierto sentido, la jerarquía de sistemas de archivos Linux presenta una colección de sistemas de
archivos en dispositivos de almacenamiento separados como si fuera un conjunto de archivos en
un dispositivo de almacenamiento gigante en el que puede navegar. La mayoría de las veces, no
necesita saber en qué dispositivo de almacenamiento se encuentra un archivo en particular, solo
necesita saber en qué directorio se encuentra el archivo.

Sin embargo, a veces, puede ser importante. Es posible que deba determinar qué tan lleno está
un dispositivo de almacenamiento y qué directorios en la jerarquía de sistemas de archivos son
afectados. Es posible que haya errores en los registros de un dispositivo de almacenamiento,
y necesita saber qué sistemas de archivos están en riesgo. Es posible que solo desee crear un
vínculo rígido entre dos archivos, y necesita saber si están en el mismo sistema de archivos para
determinar si es posible.

Sistemas de archivos y puntos de montaje


Para que los contenidos de un sistema de archivos estén disponibles en la jerarquía de sistemas
de archivos, se debe montar en un directorio vacío. Este directorio se llama punto de montaje. Una
vez montado, si usa ls para enumerar ese directorio, verá el contenido del sistema de archivos
montado, y puede acceder y usar esos archivos normalmente. Muchos sistemas de archivos se
montan automáticamente como parte del proceso de arranque.

Si solo ha trabajado con letras de unidad de Microsoft Windows, este es un concepto


fundamentalmente diferente. Es algo similar a la característica de carpetas montadas de NTFS.

Sistemas de archivos, almacenamiento y dispositivos de


bloque
El acceso de bajo nivel a los dispositivos de almacenamiento en Linux se proporciona mediante
un tipo especial de archivo llamado dispositivo de bloque. Estos dispositivos de bloque deben
formatearse con un sistema de archivos para poder montarlos.

Los archivos de dispositivos de bloque se almacenan en el directorio /dev, junto con otros
archivos de dispositivo. Los archivos del dispositivo son creados automáticamente por el sistema
operativo. En Red Hat Enterprise Linux, el primer disco duro SATA/PATA, SAS, SCSI o USB
detectado se denomina /dev/sda, el segundo /dev/sdb, y así sucesivamente. Estos nombres
representan el disco duro en su totalidad.

558 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Otros tipos de almacenamiento tendrán otras formas de asignar nombres.

Nomenclatura de dispositivos de bloque

Tipo de dispositivo Patrón de nomenclatura de dispositivos

Almacenamiento adjunto a SATA/SAS/USB /dev/sda , /dev/sdb ...

Almacenamiento paravirtualizado virtio- /dev/vda , /dev/vdb ...


blk (algunas máquinas virtuales)

Almacenamiento adjunto a NVMe (muchos /dev/nvme0, /dev/nvme1 ...


SSD)

Almacenamiento SD/MMC/eMMC (tarjetas /dev/mmcblk0, /dev/mmcblk1 ...


SD)

nota
Muchas máquinas virtuales utilizan el almacenamiento paravirtualizado virtio-
scsi más nuevo que tendrá la nomenclatura de estilo /dev/sd*.

Particiones del disco


Normalmente, no hace que todo el dispositivo de almacenamiento se convierta en un sistema
de archivos. Los dispositivos de almacenamiento normalmente se dividen en fragmentos más
pequeños llamados particiones.

Las particiones le permiten compartimentar un disco; las diferentes particiones pueden


formatearse con diferentes sistemas de archivos o usarse con fines distintos. Por ejemplo, una
partición puede contener directorios de inicio de un usuario mientras que otra puede contener
registros y datos del sistema. Si un usuario llena la partición del directorio de inicio con datos, la
partición del sistema puede seguir teniendo espacio disponible.

Las particiones son dispositivos de bloque por derecho propio. En el almacenamiento adjunto a
SATA, la primera partición en el primer disco es /dev/sda1. La tercera partición en el segundo
disco es /dev/sdb3, y así sucesivamente. Los dispositivos de almacenamiento paravirtualizados
tienen un sistema de nomenclatura similar.

Los nombres del dispositivo SSD adjunto a NVMe nombra sus particiones de manera diferente.
En ese caso, la primera partición en el primer disco es /dev/nvme0p1. La tercera partición en el
segundo disco es /dev/nvme1p3, y así sucesivamente. Las tarjetas SD o MMC tienen un sistema
de nomenclatura similar.

Un listado extenso del archivo de dispositivo /dev/sda1 en host revela que su tipo de archivo
especial es b, que significa "dispositivo de bloque":

[user@host ~]$ ls -l /dev/sda1


brw-rw----. 1 root disk 8, 1 Feb 22 08:00 /dev/sda1

Volúmenes lógicos
Otra manera de organizar discos y particiones es mediante la administración de volúmenes lógicos
(LVM). Con la administración de volúmenes lógicos, uno o más dispositivos de bloque pueden

RH124-RHEL8.2-es-1-20200928 559
capítulo 15 | Acceso a los sistemas de archivos de Linux

agregarse a un conjunto de almacenamiento denominado grupo de volúmenes. El espacio en


disco en el grupo de volúmenes se divide en uno o más volúmenes lógicos, que son el equivalente
funcional de una partición que reside en un disco físico.

El sistema LVM asigna nombres a los grupos de volúmenes y volúmenes lógicos en el momento de
la creación. LVM crea un directorio en /dev que coincide con el nombre del grupo y, luego, crea
un enlace simbólico dentro de ese nuevo directorio con el mismo nombre que el volumen lógico.
Ese archivo de volumen lógico está disponible para ser montado. Por ejemplo, si un grupo de
volúmenes se llama myvg y el volumen lógico dentro de este se llama mylv, entonces el nombre
completo de la ruta al archivo de dispositivo de volumen lógico es /dev/myvg/mylv.

nota
La forma del nombre del dispositivo de volumen lógico mencionado anteriormente
se implementa en realidad como un enlace simbólico al archivo de dispositivo real
utilizado para acceder a este, que puede variar entre los arranques. Hay otra forma
de nombre de dispositivo de volumen lógico vinculado desde archivos en /dev/
mapper que se utilizan a menudo, y también son enlaces simbólicos al archivo del
dispositivo real.

Examen de sistemas de archivos


Para obtener una descripción general de los dispositivos de sistemas de archivos locales y remotos
y la cantidad de espacio libre disponible, ejecute el comando df. Cuando el comando df se
ejecuta sin argumentos, arroja un informe con el espacio en disco total, el espacio en disco usado,
el espacio en disco libre y el porcentaje del espacio total en disco usado en todos los sistemas de
archivos regulares montados. Informa sobre sistemas de archivos locales y remotos.

En el siguiente ejemplo, se muestran los sistemas de archivos y los puntos de montaje en host.

[user@host ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 912584 0 912584 0% /dev
tmpfs 936516 0 936516 0% /dev/shm
tmpfs 936516 16812 919704 2% /run
tmpfs 936516 0 936516 0% /sys/fs/cgroup
/dev/vda3 8377344 1411332 6966012 17% /
/dev/vda1 1038336 169896 868440 17% /boot
tmpfs 187300 0 187300 0% /run/user/1000

Las particiones en el sistema host muestran dos sistemas de archivos físicos, que se montan en /
y /boot. Esto es frecuente en el caso de máquinas virtuales. Los dispositivos tmpfs y devtmpfs
son sistemas de archivos en la memoria del sistema. Todos los archivos escritos en tmpfs o en
devtmpfs desaparecen después de que se reinicia el sistema.

A fin de mejorar la legibilidad de los tamaños de las salidas, hay dos opciones diferentes legibles
por el ojo humano: -h o -H. La diferencia entre estas dos opciones es que -h informa en KiB
(210 ), MiB (220 ), o GiB (230 ), mientras que la opción -H informa en unidades SI: KB (103 ), MB
(106 ), GB (109 ). Los fabricantes de discos duros normalmente usan las unidades SI cuando
anuncian sus productos.

Muestre un informe sobre los sistemas de archivos en el sistema host con todas las unidades
convertidas a formato legible por el ojo humano:

560 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[user@host ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 892M 0 892M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 17M 899M 2% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/vda3 8.0G 1.4G 6.7G 17% /
/dev/vda1 1014M 166M 849M 17% /boot
tmpfs 183M 0 183M 0% /run/user/1000

Para obtener información más detallada sobre el espacio usado por un árbol de directorios en
particular, use el comando du. El comando du ofrece las opciones -h y -H para convertir la salida
a formato legible por el ojo humano. El comando du muestra el tamaño de todos los archivos en el
árbol de directorios actual de modo recursivo.

Muestre un informe sobre el uso del disco para el directorio /usr/share en host:

[root@host ~]# du /usr/share


...output omitted...
176 /usr/share/smartmontools
184 /usr/share/nano
8 /usr/share/cmake/bash-completion
8 /usr/share/cmake
356676 /usr/share

Muestre un informe sobre el uso del disco en formato legible por el ojo humano, para el directorio
/usr/share en host:

[root@host ~]# du -h /var/log


...output omitted...
176K /usr/share/smartmontools
184K /usr/share/nano
8.0K /usr/share/cmake/bash-completion
8.0K /usr/share/cmake
369M /usr/share

Referencias
Páginas de manual df(1) y du(1)

RH124-RHEL8.2-es-1-20200928 561
capítulo 15 | Acceso a los sistemas de archivos de Linux

Cuestionario

Identificación de dispositivos y sistemas


de archivos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Cuál es el nombre del archivo de dispositivo de un disco duro SATA completo en el


directorio /dev?
a. /dev/vda
b. /dev/sda1
c. /dev/sda
d. /dev/vg_install/lv_home

2. Seleccione el nombre del archivo de dispositivo de la tercera partición en el segundo


disco duro SATA.
a. /dev/vda2
b. /dev/sda3
c. /dev/sdb2
d. /dev/sdb3

3. ¿Cuál es el nombre del archivo de dispositivo del segundo disco virtio-blk


conectado a una máquina virtual?
a. /dev/vda2
b. /dev/sda2
c. /dev/vdb2
d. /dev/vdb

4. ¿Cuál es el nombre del archivo de dispositivo del tercer disco virtio-blk conectado a
una máquina virtual?
a. /dev/vda3
b. /dev/sda3
c. /dev/vdb3
d. /dev/vda3

5. ¿Qué comando brinda una descripción general sobre los puntos de montaje de
sistemas de archivos y la cantidad de espacio libre disponible en las unidades SI?
a. df
b. df -H
c. df -h
d. du -h

562 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Solución

Identificación de dispositivos y sistemas


de archivos
Elija las respuestas correctas para las siguientes preguntas:

1. ¿Cuál es el nombre del archivo de dispositivo de un disco duro SATA completo en el


directorio /dev?
a. /dev/vda
b. /dev/sda1
c. /dev/sda
d. /dev/vg_install/lv_home

2. Seleccione el nombre del archivo de dispositivo de la tercera partición en el segundo


disco duro SATA.
a. /dev/vda2
b. /dev/sda3
c. /dev/sdb2
d. /dev/sdb3

3. ¿Cuál es el nombre del archivo de dispositivo del segundo disco virtio-blk


conectado a una máquina virtual?
a. /dev/vda2
b. /dev/sda2
c. /dev/vdb2
d. /dev/vdb

4. ¿Cuál es el nombre del archivo de dispositivo del tercer disco virtio-blk conectado a
una máquina virtual?
a. /dev/vda3
b. /dev/sda3
c. /dev/vdb3
d. /dev/vda3

5. ¿Qué comando brinda una descripción general sobre los puntos de montaje de
sistemas de archivos y la cantidad de espacio libre disponible en las unidades SI?
a. df
b. df -H
c. df -h
d. du -h

RH124-RHEL8.2-es-1-20200928 563
capítulo 15 | Acceso a los sistemas de archivos de Linux

Montaje y desmontaje de sistemas de


archivos

Objetivos
Tras finalizar esta sección, deberá ser capaz de acceder al contenido de sistemas de archivos
mediante la adición y la eliminación de sistemas de archivos de la jerarquía de sistemas de
archivos.

Montaje manual de sistemas de archivos


Un sistema de archivos que reside en un dispositivo de almacenamiento extraíble debe montarse
para acceder a este. El comando mount permite que el usuario root monte manualmente un
sistema de archivos. El primer argumento del comando mount especifica el sistema de archivos
que se debe montar. El segundo argumento especifica el directorio que se usará como punto de
montaje en la jerarquía de sistemas de archivos.

Hay dos formas comunes de especificar el sistema de archivos en una partición de disco para el
comando mount:

• Con el nombre del archivo del dispositivo en /dev que contiene el sistema de archivos.
• Con el UUID escrito en el sistema de archivos, un identificador universalmente único.

El montaje de un dispositivo es relativamente simple. Debe identificar el dispositivo que desea


montar, asegurarse de que exista el punto de montaje y montar el dispositivo en el punto de
montaje.

Identificación del dispositivo de bloque


Un dispositivo de almacenamiento conectable en funcionamiento, ya sea como unidad de disco
duro (HDD) o dispositivo de estado sólido (SSD) o un portadiscos de almacenamiento USB, estos
dispositivos pueden conectarse a un puerto diferente cada vez que se conectan a un sistema.

Use el comando lsblk para enumerar los detalles de un dispositivo de bloque especificado o
todos los dispositivos disponibles.

[root@host ~]# lsblk


NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 12G 0 disk
├─vda1 253:1 0 1G 0 part /boot
├─vda2 253:2 0 1G 0 part [SWAP]
└─vda3 253:3 0 11G 0 part /
vdb 253:16 0 64G 0 disk
└─vdb1 253:17 0 64G 0 part

Si sabe que acaba de agregar un dispositivo de almacenamiento de 64 GB con una partición,


puede deducir a partir del resultado anterior que /dev/vdb1 es la partición que desea montar.

Montaje por nombre de dispositivo de bloque


El siguiente ejemplo monta el sistema de archivos en la partición /dev/vdb1 en el directorio /
mnt/data.

564 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[root@host ~]# mount /dev/vdb1 /mnt/data

Para montar un sistema de archivos, ya debe existir el directorio de destino. El directorio /mnt
existe de forma predeterminada y está destinado a ser utilizado como punto de montaje temporal.

Puedes usar el directorio /mnt, o mejor aún crear un subdirectorio de /mnt para usar como
punto de montaje temporal, a menos que tenga una buena razón para montarlo en una ubicación
específica en la jerarquía de sistemas de archivos.

Importante
Si el directorio que funciona como punto de montaje no está vacío, no se puede
acceder a los archivos copiados en ese directorio antes de que el sistema de
archivos se montara hasta que el sistema de archivos se desmonte nuevamente.

Este enfoque funciona bien a corto plazo. Sin embargo, el orden en que el sistema operativo
detecta discos puede cambiar si se agregan o eliminan dispositivos del sistema. Esto cambiará el
nombre del dispositivo asociado con ese dispositivo de almacenamiento. Un mejor enfoque sería
montar por alguna característica incorporada en el sistema de archivos.

Montaje por UUID de sistema de archivos


Un identificador estable que está asociado con un sistema de archivos es su UUID, un número
hexadecimal muy largo que actúa como identificador único universal. Este UUID es parte del
sistema de archivos y permanece igual siempre que el sistema de archivos no se recree.

El comando lsblk -fp detalla la ruta completa del dispositivo, junto con los UUID y los puntos
de montajes, así como el tipo de sistema de archivos en la partición. Si el sistema de archivos no
está montado, el punto de montaje estará en blanco.

[root@host ~]# lsblk -fp


NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/vda
├─/dev/vda1 xfs 23ea8803-a396-494a-8e95-1538a53b821c /boot
├─/dev/vda2 swap cdf61ded-534c-4bd6-b458-cab18b1a72ea [SWAP]
└─/dev/vda3 xfs 44330f15-2f9d-4745-ae2e-20844f22762d /
/dev/vdb
└─/dev/vdb1 xfs 46f543fd-78c9-4526-a857-244811be2d88

Monte el sistema de archivos por el UUID del sistema de archivos.

[root@host ~]# mount UUID="46f543fd-78c9-4526-a857-244811be2d88" /mnt/data

Montaje automático de dispositivos de


almacenamiento extraíbles
Si ha iniciado sesión y está utilizando el entorno de escritorio gráfico, montará automáticamente
cualquier medio de almacenamiento extraíble cuando se inserte.

El dispositivo de almacenamiento extraíble se monta en /run/media/USERNAME/LABEL donde


NOMBRE DE USUARIO es el nombre del usuario que ha iniciado sesión en el entorno gráfico y

RH124-RHEL8.2-es-1-20200928 565
capítulo 15 | Acceso a los sistemas de archivos de Linux

ETIQUETA es un identificador, a menudo, el nombre que recibe el sistema de archivos al crearse, si


estaba disponible.

Antes de retirar el dispositivo, debe desmontarlo manualmente.

Desmontaje de sistemas de archivos


Los procedimientos de apagado y reinicio desmontan todos los sistemas de archivos
automáticamente. Como parte de este proceso, todos los datos del sistema de archivos
almacenados en la memoria caché se transfieren al dispositivo de almacenamiento, lo que
garantiza que el sistema de archivos no sufra daños en los datos.

Advertencia
Los datos del sistema de archivos son a menudo almacenados en la memoria caché.
Por lo tanto, para evitar dañar los datos en el disco, es esencial que desmonte las
unidades extraíbles antes de desenchufarlas. El procedimiento de desmontaje
sincroniza los datos antes de liberar la unidad, lo que garantiza la integridad de los
datos.

Para desmontar un sistema de archivos, el comando umount espera el punto de montaje como
argumento.

[root@host ~]# umount /mnt/data

No se puede desmontar si el sistema de archivos montado está en uso. Para que el comando
umount se ejecute correctamente, todos los procesos deben dejar de acceder a los datos en el
punto de montaje.

En el siguiente ejemplo, el umount falla porque el sistema de archivos está en uso (la shell está
usando /mnt/data como su directorio de trabajo actual), y genera un mensaje de error.

[root@host ~]# cd /mnt/data


[root@host data]# umount /mnt/data
umount: /mnt/data: target is busy.

El comando lsof enumera todos los archivos abiertos y el proceso que accede a ellos en el
directorio proporcionado. Resulta útil identificar los procesos que actualmente impiden un
correcto desmontaje del sistema de archivos.

[root@host data]# lsof /mnt/data


COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1593 root cwd DIR 253,17 6 128 /mnt/data
lsof 2532 root cwd DIR 253,17 19 128 /mnt/data
lsof 2533 root cwd DIR 253,17 19 128 /mnt/data

Una vez que se identifican los procesos, puede tomarse una medida, como esperar a que finalice
el proceso o enviar una señal SIGTERM o SIGKILL al proceso. En este caso, basta con cambiar el
directorio en funcionamiento actual por un directorio fuera del punto de montaje.

[root@host data]# cd
[root@host ~]# umount /mnt/data

566 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

nota
Una razón común para que los sistemas de archivos no puedan desmontarse es que
una shell Bash está usando el punto de montaje o un subdirectorio como directorio
de trabajo actual. Use el comando cd para cambiar el sistema de archivos para
resolver este problema.

Referencias
Páginas de manual lsblk(8), mount(8), umount(8) y lsof(8)

RH124-RHEL8.2-es-1-20200928 567
capítulo 15 | Acceso a los sistemas de archivos de Linux

Ejercicio Guiado

Montaje y desmontaje de sistemas de


archivos
En este ejercicio, practicará montar y desmontar sistemas de archivos.

Resultados
El usuario deberá identificar y montar un nuevo sistema de archivos en un punto de montaje
especificado; luego, desmontarlo.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab fs-mount start. El comando ejecuta un


script de inicio que determina si el host servera es accesible en la red. El script también
crea una partición en el segundo disco conectado a servera.

[student@workstation ~]$ lab fs-mount start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Se ha agregado una nueva partición con un sistema de archivos al segundo disco (/dev/
vdb) en servera. Monte la partición disponible recientemente mediante UUID en el punto
de montaje creado recientemente /mnt/newspace.

2.1. Use el comando sudo -i para cambiar a root, ya que solo el usuario root puede
montar un dispositivo manualmente.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

2.2. Cree el directorio /mnt/newspace.

[root@servera ~]# mkdir /mnt/newspace

2.3. Use el comando lsblk con la opción -fp para descubrir el UUID del dispositivo, /
dev/vdb1.

568 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[root@servera ~]# lsblk -fp /dev/vdb


NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/vdb
└─/dev/vdb1 xfs a04c511a-b805-4ec2-981f-42d190fc9a65

2.4. Monte el sistema de archivos mediante el uso del UUID en el directorio /mnt/
newspace. Reemplace el UUID con el del disco /dev/vdb1 de la salida del comando
anterior.

[root@servera ~]# mount \


UUID="a04c511a-b805-4ec2-981f-42d190fc9a65" /mnt/newspace

2.5. Verifique que el dispositivo /dev/vdb1 esté montado en el directorio /mnt/


newspace.

[root@servera ~]# lsblk -fp /dev/vdb


NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/vdb
└─/dev/vdb1 xfs a04c511a-b805-4ec2-981f-42d190fc9a65 /mnt/newspace

3. Cambie al directorio /mnt/newspace y cree un directorio nuevo, /mnt/newspace/


newdir, con un archivo vacío, /mnt/newspace/newdir/newfile.

3.1. Cambie al directorio /mnt/newspace.

[root@servera ~]# cd /mnt/newspace

3.2. Cree un nuevo directorio, /mnt/newspace/newdir.

[root@servera newspace]# mkdir newdir

3.3. Cree un nuevo archivo vacío, /mnt/newspace/newdir/newfile.

[root@servera newspace]# touch newdir/newfile

4. Desmonte el sistema de archivos montado en el directorio /mnt/newspace.

4.1. Use el comando umount para desmontar /mnt/newspace mientras el directorio


actual en la shell aún es /mnt/newspace. El comando umount no puede desmontar
el dispositivo.

[root@servera newspace]# umount /mnt/newspace


umount: /mnt/newspace: target is busy.

4.2. Cambie el directorio actual en la shell a /root.

[root@servera newspace]# cd
[root@servera ~]#

RH124-RHEL8.2-es-1-20200928 569
capítulo 15 | Acceso a los sistemas de archivos de Linux

4.3. Ahora, desmonte /mnt/newspace correctamente.

[root@servera ~]# umount /mnt/newspace

5. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab fs-mount finish para terminar este ejercicio.

[student@workstation ~]$ lab fs-mount finish

Esto concluye el ejercicio guiado.

570 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Localización de archivos en el sistema

Objetivos
Tras finalizar esta sección, deberá poder buscar archivos en los sistemas de archivos montados
usando los comandos find y locate.

Búsqueda de archivos
Un administrador de sistemas necesita herramientas para buscar archivos que coincidan con
ciertos criterios en el sistema de archivos. En esta sección, se analizan dos comandos que pueden
buscar archivos en la jerarquía de sistemas de archivos.

• El comando locate busca una base de datos generada previamente para nombres de archivo o
rutas de archivos y arroja los resultados instantáneamente.

• El comando find busca archivos en tiempo real mediante un rastreo de la jerarquía de sistemas
de archivos.

Localización de archivos por nombre


El comando locate busca archivos en función del nombre o la ruta al archivo. Es rápido porque
busca esta información de la base de datos mlocate. Sin embargo, esta base de datos no se
actualiza en tiempo real, y debe actualizarse con frecuencia para que los resultados sean precisos.
Esto también significa que locate no encontrará los archivos que se han creado desde la última
actualización de la base de datos.

La base de datos locate se actualiza automáticamente todos los días. Sin embargo, en cualquier
momento el usuario root puede emitir el comando updatedb para forzar una actualización
inmediata.

[root@host ~]# updatedb

El comando locate restringe los resultados para los usuarios sin privilegios. Para ver el nombre
del archivo resultante, el usuario debe tener permiso de búsqueda en el directorio en el que reside
el archivo.

Busque archivos con passwd en el nombre o en la ruta en los árboles de directorios legibles por el
usuario en host.

[user@host ~]$ locate passwd


/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/lppasswd
/usr/bin/passwd
...output omitted...

RH124-RHEL8.2-es-1-20200928 571
capítulo 15 | Acceso a los sistemas de archivos de Linux

Los resultados se presentan incluso cuando la ruta o el nombre de archivo es solo una coincidencia
parcial con la consulta de búsqueda.

[root@host ~]# locate image


/etc/selinux/targeted/contexts/virtual_image_context
/usr/bin/grub2-mkimage
/usr/lib/sysimage
/usr/lib/dracut/dracut.conf.d/02-generic-image.conf
/usr/lib/firewalld/services/ovirt-imageio.xml
/usr/lib/grub/i386-pc/lnxboot.image
...output omitted...

La opción -i realiza una búsqueda que distingue entre mayúsculas y minúsculas. Con esta opción,
todas las combinaciones posibles de letras en mayúsculas y minúsculas coinciden con la búsqueda.

[user@host ~]$ locate -i messages


...output omitted...
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES/vim.mo
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES/vim.mo
/usr/share/vim/vim80/syntax/messages.vim
/usr/share/vim/vim80/syntax/msmessages.vim
/var/log/messages

La opción -n limita el número de resultados de búsqueda arrojados por el comando locate. En


el siguiente ejemplo, se limitan los resultados de búsqueda arrojados por locate a las primeras
cinco coincidencias.

[user@host ~]$ locate -n 5 snow.png


/usr/share/icons/HighContrast/16x16/status/weather-snow.png
/usr/share/icons/HighContrast/22x22/status/weather-snow.png
/usr/share/icons/HighContrast/24x24/status/weather-snow.png
/usr/share/icons/HighContrast/256x256/status/weather-snow.png
/usr/share/icons/HighContrast/32x32/status/weather-snow.png

Búsqueda de archivos en tiempo real


El comando find localiza los archivos mediante la realización de una búsqueda en tiempo real en
la jerarquía de sistemas de archivos. Es mas lento que locate, pero mas preciso. También puede
buscar archivos según criterios que no sean el nombre del archivo, como los permisos del archivo,
el tipo de archivo, su tamaño o la hora de su modificación.

El comando find examina los archivos en el sistema de archivos usando la cuenta de usuario que
ejecutó la búsqueda. El usuario que invoca el comando find debe tener permiso de lectura y
ejecución en un directorio para examinar su contenido.

El primer argumento para el comando find es el directorio en que se realizará la búsqueda. Si


el argumento del directorio se omite, find comienza la búsqueda en el directorio actual y busca
coincidencias en los subdirectorios.

Para buscar archivos por nombre de archivo, use la opción -name FILENAME. Con esta opción,
find arroja la ruta a los archivos que coinciden exactamente con el NOMBRE DE ARCHIVO. Por

572 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

ejemplo, para buscar archivos con el nombre sshd_config comenzando con el directorio /,
ejecute el siguiente comando:

[root@host ~]# find / -name sshd_config


/etc/ssh/sshd_config

nota
Con el comando find, las opciones de palabra completa usan un solo guión y las
opciones siguen el argumento del nombre de la ruta, a diferencia de la mayoría de
otros comandos de Linux.

Los comodines están disponibles para buscar el nombre de un archivo y arrojan todos los
resultados que son coincidencias parciales. Al usar comodines, es importante poner entre comillas
el nombre del archivo para evitar que el terminal interprete el comodín.

En el siguiente ejemplo, busque archivos comenzando en el directorio / que finalizan en .txt:

[root@host ~]# find / -name '*.txt'


/etc/pki/nssdb/pkcs11.txt
/etc/brltty/brl-lt-all.txt
/etc/brltty/brl-mb-all.txt
/etc/brltty/brl-md-all.txt
/etc/brltty/brl-mn-all.txt
...output omitted...

Para buscar archivos en el directorio /etc/ que contienen la palabra pass en cualquier parte de
sus nombres en host, ejecute el siguiente comando:

[root@host ~]# find /etc -name '*pass*'


/etc/security/opasswd
/etc/pam.d/passwd
/etc/pam.d/password-auth
/etc/passwd-
/etc/passwd
/etc/authselect/password-auth

Para realizar una búsqueda que no distinga entre mayúsculas y minúsculas de un nombre de
archivo determinado, use la opción -iname, seguida del nombre del archivo que desea buscar.
Para buscar archivos con texto que no distinga entre mayúsculas y minúsculas, messages, en sus
nombres en el directorio / en host, ejecute el siguiente comando:

[root@host ~]# find / -iname '*messages*'


...output omitted...
/usr/share/vim/vim80/lang/zh_CN.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_CN.cp936/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW/LC_MESSAGES
/usr/share/vim/vim80/lang/zh_TW.UTF-8/LC_MESSAGES
/usr/share/vim/vim80/syntax/messages.vim
/usr/share/vim/vim80/syntax/msmessages.vim

RH124-RHEL8.2-es-1-20200928 573
capítulo 15 | Acceso a los sistemas de archivos de Linux

Búsqueda de archivos en función de la propiedad o los


permisos
El comando find puede buscar archivos en función de la propiedad o los permisos. Las opciones
útiles al buscar por propietario son -user y -group, que buscan por nombre, y -uid y -gid, que
buscan por ID.

Busque archivos de propiedad del usuario en el directorio /home/user en host.

[user@host ~]$ find -user user


.
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

Busque archivos de propiedad del usuario de grupo en el directorio /home/user en host.

[user@host ~]$ find -group user


.
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

Busque archivos de propiedad del ID de usuario 1000 en el directorio /home/user en host.

[user@host ~]$ find -uid 1000


.
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

Busque archivos de propiedad del ID de grupo 1000 en el directorio /home/user en host.

[user@host ~]$ find -gid 1000


.
./.bash_logout
./.bash_profile
./.bashrc
./.bash_history

-user y las opciones de -group se pueden usar juntas para buscar archivos donde el propietario
del archivo y el propietario del grupo son diferentes. En el siguiente ejemplo, se enumeran los
archivos que son propiedad del usuario root y afiliado al grupo mail.

[root@host ~]# find / -user root -group mail


/var/spool/mail
...output omitted...

574 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Se usa la opción -perm para buscar archivos con una serie de permisos particulares. Los permisos
se pueden describir como valores octales, con alguna combinación de 4, 2 y 1 para lectura,
escritura y ejecución. Los permisos deben estar precedidos por el signo / o el signo -.

Un permiso numérico precedido por / coincide con archivos que tengan al menos un bit de
usuario, grupo u otro, para esa serie de permisos. Un archivo con permisos r--r--r-- no
coincide con /222, pero uno con rw-r--r-- sí. Un signo menos - antes de un permiso significa
que las tres instancias de ese bit deben estar activadas; por lo tanto, ningún ejemplo anterior
coincidirá, pero algo como rw-rw-rw-> sí lo hará.

Para usar un ejemplo más complejo, el siguiente comando coincide con cualquier archivo para
el cual el usuario tiene permisos de lectura, escritura y ejecución, los miembros del grupo tienen
permisos de lectura y escritura, y los demás tienen acceso de solo lectura:

[root@host ~]# find /home -perm 764

Para que coincidan los archivos para los cuales el usuario tiene al menos permisos de escritura
y ejecución, y el grupo tiene por lo menos permisos de lectura y los demás tienen por lo menos
acceso de lectura:

[root@host ~]# find /home -perm -324

Para que coincidan los archivos para los cuales el usuario tiene permisos de lectura, o el grupo
tiene por lo menos permisos de lectura o los demás tienen por lo menos acceso de lectura:

[root@host ~]# find /home -perm /442

Cuando se usa con / o bien -, un valor de 0 funciona como un comodín, ya que significa un
permiso de por lo menos nada.

Para que coincida con cualquier archivo en el directorio /home/user para el cual los demás
tienen al menos acceso de lectura en el host, ejecute lo siguiente:

[user@host ~]$ find -perm -004

Encuentre todos los archivos en el directorio /home/user donde other tiene permisos de
escritura en el host.

[user@host ~]$ find -perm -002

Búsqueda de archivos en función del tamaño


El comando find puede buscar archivos que coincidan con un tamaño especificado con la opción
-size, seguida de un valor numérico y la unidad. Use la siguiente lista como las unidades con la
opción -size:

• k, para kilobyte
• M, para megabyte
• G, para gigabyte

En el siguiente ejemplo, se muestra cómo buscar archivos con un tamaño de 10 megabytes,


redondeados.

RH124-RHEL8.2-es-1-20200928 575
capítulo 15 | Acceso a los sistemas de archivos de Linux

[user@host ~]$ find -size 10M

Para buscar archivos con un tamaño mayor que 10 gigabytes.

[user@host ~]$ find -size +10G

Para enumerar todos los archivos con un tamaño menor que 10 kilobytes.

[user@host ~]$ find -size -10k

Importante
Los modificadores de la unidad de la opción -size redondean todo para arriba a
unidades enteras. Por ejemplo, el comando find -size 1M muestra archivos de
un tamaño menor que 1 MB porque redondea todos los archivos para arriba a 1 MB.

Búsqueda de archivos en función del tiempo de modificación


La opción -mmin, seguida de la hora en minutos, busca todos los archivos de los cuales se ha
cambiado su contenido hace n minutos en el pasado. El sello de hora del archivo se redondea
siempre hacia abajo. También admite valores fraccionarios cuando se usa con rangos (+n y -n).

Para encontrar todos los archivos de los cuales se modificó su contenido hace 120 minutos en el
host, ejecute lo siguiente:

[root@host ~]# find / -mmin 120

El modificador + delante de la cantidad de minutos busca todos los archivos en / que se


modificaron hace más de n minutos. En este ejemplo, se enumeran los archivos que se modificaron
hace más de 200 minutos.

[root@host ~]# find / -mmin +200

El modificador - cambia la búsqueda para buscar todos los archivos en el directorio / que han
sido modificados hace menos de n minutos. En este ejemplo, se enumeran los archivos que se
modificaron hace menos de 150 minutos.

[root@host ~]# find / -mmin -150

Búsqueda de archivos en función del tipo de archivo


La opción -type en el comando find limita el alcance de la búsqueda a un tipo de archivo dado:
Use la siguiente lista para pasar los indicadores necesarios para limitar el alcance de la búsqueda:

• f, para archivo regular


• d, para directorio
• l, para enlace simbólico
• b, para dispositivo de bloque

Busque en todos los directorios en el directorio /etc en host.

576 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[root@host ~]# find /etc -type d


/etc
/etc/tmpfiles.d
/etc/systemd
/etc/systemd/system
/etc/systemd/system/getty.target.wants
...output omitted...

Busque todos los enlaces simbólicos en host.

[root@host ~]# find / -type l

Genere una lista de dispositivos de bloque en el directorio /dev en host:

[root@host ~]# find /dev -type b


/dev/vda1
/dev/vda

La opción -links seguida de un número busca todos los archivos que tienen un determinado
conteo de enlaces duros. El número puede ser precedido por un modificador + para buscar
archivos con un conteo más alto que el conteo de enlaces duros dado. Si el número es precedido
por un modificador -, la búsqueda se limita a todos los archivos con un conteo de enlaces duros
que sea menor que el número dado.

Busque todos los archivos regulares con más de un enlace físico en host:

[root@host ~]# find / -type f -links +1

Referencias
Páginas de manual locate(1), updatedb(8) y find(1)

RH124-RHEL8.2-es-1-20200928 577
capítulo 15 | Acceso a los sistemas de archivos de Linux

Ejercicio Guiado

Localización de archivos en el sistema


En este ejercicio, encontrará archivos específicos en sistemas de archivos montados con los
comandos find y locate.

Resultados
Deberá ser capaz de buscar archivos con los comandos find y locate.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab fs-locate start. Este comando ejecuta un


script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab fs-locate start

1. Use el comando ssh para iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando locate para buscar archivos en servera.

2.1. Aunque la base de datos locate se actualiza a diario de manera automática,


asegúrese de que esté actualizada; para ello, inicie una actualización manual en
servera. Use el comando sudo updatedb para actualizar la base de datos usada
por el comando locate.

[student@servera ~]$ sudo updatedb


[sudo] password for student: student
[student@servera ~]$

2.2. Busque el archivo de configuración logrotate.conf.

[student@servera ~]$ locate logrotate.conf


/etc/logrotate.conf
/usr/share/man/man5/logrotate.conf.5.gz

2.3. Busque el archivo de configuración networkmanager.conf e ignore la distinción


entre mayúsculas y minúsculas.

578 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[student@servera ~]$ locate -i networkmanager.conf


/etc/NetworkManager/NetworkManager.conf
/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
/usr/share/man/man5/NetworkManager.conf.5.gz

3. Use el comando find a fin de realizar búsquedas en tiempo real en servera de acuerdo
con los siguientes requisitos:

• Busque todos los archivos en el directorio /var/lib que son propiedad del usuario
chrony.
• Enumere todos los archivos en el directorio /var que sean propiedad de root y el
propietario del grupo mail.
• Enumere todos los archivos en el directorio /usr/bin que tengan un tamaño superior a
50 KB.
• Busque todos los archivos en el directorio /home/student que no se hayan modificado
en los últimos 120 minutos.
• Enumere todos los archivos del dispositivo de bloque en el directorio /dev.

3.1. Use el comando find para buscar todos los archivos en el directorio /var/lib que
son propiedad del usuario chrony. Use el comando sudo dado que los archivos
dentro del directorio /var/lib son propiedad de root.

[student@servera ~]$ sudo find /var/lib -user chrony


[sudo] password for student: student
/var/lib/chrony
/var/lib/chrony/drift

3.2. Enumere todos los archivos en el directorio /var que sean propiedad de root y que
estén afiliados al grupo mail.

[student@servera ~]$ sudo find /var -user root -group mail


/var/spool/mail

3.3. Enumere todos los archivos en el directorio /usr/bin que tengan un tamaño
superior a 50 KB.

[student@servera ~]$ find /usr/bin -size +50k


/usr/bin/iconv
/usr/bin/locale
/usr/bin/localedef
/usr/bin/cmp
...output omitted...

3.4. Busque todos los archivos en el directorio /home/student que no se hayan


modificado en los últimos 120 minutos.

[student@servera ~]$ find /home/student -mmin +120


/home/student/.bash_logout
/home/student/.bash_profile
/home/student/.bashrc
...output omitted...

RH124-RHEL8.2-es-1-20200928 579
capítulo 15 | Acceso a los sistemas de archivos de Linux

3.5. Enumere todos los archivos del dispositivo de bloque en el directorio /dev.

[student@servera ~]$ find /dev -type b


/dev/vdd
/dev/vdc
/dev/vdb
/dev/vda3
/dev/vda2
/dev/vda1
/dev/vda

4. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation]$

Finalizar
En workstation, ejecute el script lab fs-locate finish para terminar este ejercicio.

[student@workstation ~]$ lab fs-locate finish

Esto concluye el ejercicio guiado.

580 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Trabajo de laboratorio

Acceso a los sistemas de archivos de


Linux
Lista de verificación de rendimiento
En este trabajo de laboratorio, montará un sistema de archivos local y buscará archivos
específicos en ese sistema de archivos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Montar un sistema de archivos.

• Generar un informe de uso del disco.

• Buscar archivos en el sistema de archivos local.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab fs-review start. El comando ejecuta un


script de inicio que determina si el host, serverb, es accesible en la red. El script también
crea una partición en el segundo disco conectado a serverb.

[student@workstation ~]$ lab fs-review start

1. En serverb como root, identifique el UUID para /dev/vdb1 y monte /dev/vdb1


mediante su UUID en el directorio /mnt/freespace.
2. Genere un informe de uso del disco del directorio /usr/share y guarde el resultado en el
archivo /mnt/freespace/results.txt.
3. Use el comando locate para buscar todos los archivos de configuración rsyslog.conf y
almacenar el resultado en el archivo /mnt/freespace/search1.txt.
4. Almacena el resultado de la búsqueda de todos los archivos en el directorio /usr/
share que tiene más de 50 MB y menos de 100 MB en el archivo /mnt/freespace/
search2.txt.
5. Salga de serverb.

Evaluación
En workstation, ejecute el script lab fs-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab fs-review grade

RH124-RHEL8.2-es-1-20200928 581
capítulo 15 | Acceso a los sistemas de archivos de Linux

Finalizar
En workstation, ejecute el script lab fs-review finish para terminar este ejercicio.

[student@workstation ~]$ lab fs-review finish

Esto concluye el trabajo de laboratorio.

582 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

Solución

Acceso a los sistemas de archivos de


Linux
Lista de verificación de rendimiento
En este trabajo de laboratorio, montará un sistema de archivos local y buscará archivos
específicos en ese sistema de archivos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Montar un sistema de archivos.

• Generar un informe de uso del disco.

• Buscar archivos en el sistema de archivos local.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab fs-review start. El comando ejecuta un


script de inicio que determina si el host, serverb, es accesible en la red. El script también
crea una partición en el segundo disco conectado a serverb.

[student@workstation ~]$ lab fs-review start

1. En serverb como root, identifique el UUID para /dev/vdb1 y monte /dev/vdb1


mediante su UUID en el directorio /mnt/freespace.

1.1. Use el comando ssh para iniciar sesión en serverb como el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando su - para cambiar a root.

[student@serverb ~]$ su -
Password: redhat
[root@serverb ~]#

1.3. Use el comando lsblk para determinar el UUID del dispositivo /dev/vdb1.

RH124-RHEL8.2-es-1-20200928 583
capítulo 15 | Acceso a los sistemas de archivos de Linux

[root@serverb ~]# lsblk -fp /dev/vdb


NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/vdb
└─/dev/vdb1 xfs a04c511a-b805-4ec2-981f-42d190fc9a65

1.4. Cree el directorio /mnt/freespace.

[root@serverb ~]# mkdir /mnt/freespace

1.5. Monte el dispositivo /dev/vdb1 mediante el uso del UUID en el directorio /mnt/
freespace.

[root@serverb ~]# mount UUID="a04c511a-b805-4ec2-981f-42d190fc9a65" /mnt/freespace

1.6. Verifique que el dispositivo /dev/vdb1 esté montado en el directorio /mnt/


freespace.

[root@serverb ~]# lsblk -fp /dev/vdb1


NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/vdb
└─/dev/vdb1 xfs a04c511a-b805-4ec2-981f-42d190fc9a65 /mnt/freespace

2. Genere un informe de uso del disco del directorio /usr/share y guarde el resultado en el
archivo /mnt/freespace/results.txt.

[root@serverb ~]# du /usr/share > /mnt/freespace/results.txt

3. Use el comando locate para buscar todos los archivos de configuración rsyslog.conf y
almacenar el resultado en el archivo /mnt/freespace/search1.txt.

3.1. Use el comando updatedb para actualizar la base de datos usada por locate.

[root@serverb ~]# updatedb

3.2. Busque archivos de configuración rsyslog.conf guarde el resultado en el archivo /


mnt/freespace/search1.txt.

[root@serverb ~]# locate rsyslog.conf > /mnt/freespace/search1.txt

4. Almacena el resultado de la búsqueda de todos los archivos en el directorio /usr/


share que tiene más de 50 MB y menos de 100 MB en el archivo /mnt/freespace/
search2.txt.

[root@serverb ~]# find /usr/share -size +50M -size -100M > \


/mnt/freespace/search2.txt

5. Salga de serverb.

584 RH124-RHEL8.2-es-1-20200928
capítulo 15 | Acceso a los sistemas de archivos de Linux

[root@serverb ~]$ exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation]$

Evaluación
En workstation, ejecute el script lab fs-review grade para confirmar que ha realizado
correctamente este trabajo de laboratorio.

[student@workstation ~]$ lab fs-review grade

Finalizar
En workstation, ejecute el script lab fs-review finish para terminar este ejercicio.

[student@workstation ~]$ lab fs-review finish

Esto concluye el trabajo de laboratorio.

RH124-RHEL8.2-es-1-20200928 585
capítulo 15 | Acceso a los sistemas de archivos de Linux

Resumen
En este capítulo, aprendió lo siguiente:

• Los dispositivos de almacenamiento se representan como un tipo de archivo especial


denominado dispositivo de bloque.

• El comando df arroja un informe con el espacio en disco total, el espacio en disco usado y el
espacio en disco libre en todos los sistemas de archivos regulares montados.

• El comando mount permite que el usuario root monte manualmente un sistema de archivos.

• Todos los procesos deben dejar de acceder al punto de montaje para desmontar correctamente
el dispositivo.

• Los dispositivos de almacenamiento extraíbles están montados en el directorio /run/media al


usar el entorno gráfico.

• El comando find realiza una búsqueda en tiempo real en los sistemas de archivos locales para
encontrar archivos en función de los criterios de búsqueda.

586 RH124-RHEL8.2-es-1-20200928
capítulo 16

Cómo analizar servidores y


obtener soporte
Meta Investigar y resolver problemas en la interfaz de
administración web, y obtener soporte de Red Hat
para resolver problemas.

Objetivos • Activar la interfaz de administración de la


consola web para administrar y monitorear de
forma remota el rendimiento de un servidor de
Red Hat Enterprise Linux.
• Describir los recursos clave disponibles en
el portal de clientes de Red Hat y encontrar
información en la documentación y la base de
conocimientos de Red Hat.
• Analizar los servidores en busca de problemas,
corregirlos o resolverlos, y confirmar la solución
con Red Hat Insights.

Secciones • Análisis y administración de servidores remotos


(y ejercicio guiado)
• Obtención de ayuda en el portal de clientes de
Red Hat (y ejercicio guiado)
• Detección y resolución de problemas con
Red Hat Insights (y cuestionario)

RH124-RHEL8.2-es-1-20200928 587
capítulo 16 | Cómo analizar servidores y obtener soporte

Análisis y administración de servidores


remotos

Objetivos
Tras finalizar esta sección, deberá poder activar la interfaz de administración de la consola
web para administrar y monitorear de forma remota el rendimiento de un servidor de Red Hat
Enterprise Linux.

Descripción de la consola web


La consola web es una interfaz de administración web para Red Hat Enterprise Linux 8 diseñada
para administrar y monitorear sus servidores. Se basa en el servicio de código abierto Cockpit.

Puede usar la consola web para monitorear los registros del sistema y ver gráficos del rendimiento
del sistema. Además, puede usar su navegador web para cambiar la configuración con
herramientas gráficas en la interfaz de la consola web, que incluye una sesión interactiva de
terminal totalmente funcional.

Habilitación de la consola web


Red Hat Enterprise Linux 8 instala la consola web de manera predeterminada en todas las
variantes de instalación, excepto en una instalación mínima. Use el siguiente comando para instalar
la consola web:

[user@host ~]$ sudo yum install cockpit

Habilite e inicie el servicio cockpit.socket, que ejecuta un servidor web. Este paso es necesario
si necesita conectarse al sistema a través de la interfaz web.

[user@host ~]$ sudo systemctl enable --now cockpit.socket


Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/
lib/systemd/system/cockpit.socket.

Si está usando un perfil de firewall personalizado, debe agregar el servicio cockpit a firewalld
para abrir el puerto 9090 en el firewall:

[user@host ~]$ sudo firewall-cmd --add-service=cockpit --permanent


success
[user@host ~]$ sudo firewall-cmd --reload
success

Inicio de sesión en la consola web


La consola web proporciona su propio servidor web. Inicie Firefox para iniciar sesión en la consola
web. Puede iniciar sesión con el nombre de usuario y la contraseña de cualquier cuenta local del
sistema, incluido el usuario root.

Abra https://servername:9090 en su navegador web, donde servername es el nombre de


host o dirección IP de su servidor. La conexión estará protegida por una sesión de TLS. De manera

588 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

predeterminada, el sistema se instalará con un certificado TLS autofirmado, y la primera vez


que se conecte, su navegador web probablemente mostrará una advertencia de seguridad. En
la página del manual cockpit-ws(8), se proporcionan instrucciones sobre cómo reemplazar el
certificado TLS con uno que esté debidamente firmado.

Ingrese su nombre de usuario y contraseña en la pantalla de inicio de sesión.

Figura 16.1: La pantalla de inicio de sesión de la consola web

De manera opcional, puede hacer clic en la opción Reuse my password for privileged tasks
(Volver a usar mi contraseña para tareas privilegiadas). Esto permite ejecutar comandos con
privilegios de sudo, lo que le permite realizar tareas como modificar la información del sistema o
configurar cuentas nuevas.

Haga clic en Log In (Iniciar sesión).

En la consola web, se muestra el nombre de usuario en el lado derecho de la barra de título. Si


elige la opción Reuse my password for privileged tasks (Volver a usar mi contraseña para
tareas privilegiadas), el icono Privileged (Con privilegios) se muestra a la izquierda del nombre de
usuario.

Figura 16.2: Barra de título del usuario con privilegios

Si ha iniciado sesión como un usuario sin privilegios, el icono Privileged (Con privilegios) no se
muestra.

RH124-RHEL8.2-es-1-20200928 589
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.3: Barra de título del usuario sin privilegios

Cambio de contraseñas
Los usuarios con y sin privilegios pueden cambiar sus propias contraseñas mientras están
conectados a la consola web. Haga clic en Accounts (Cuentas) en la barra de navegación. Haga
clic en la etiqueta de su cuenta para abrir la página de detalles de la cuenta.

Figura 16.4: Visualización de cuentas de usuario

Como usuario sin privilegios, solo puede configurar o restablecer su contraseña y administrar
claves SSH públicas. Para configurar o restablecer su contraseña, haga clic en Set Password
(Configurar contraseña).

Figura 16.5: Detalles de la cuenta de usuario

Ingrese su información en los campos Old Password (Contraseña anterior), New Password
(Contraseña nueva) y Confirm New Password (Confirmar contraseña nueva). Haga clic en Set
(Configurar) para activar la contraseña nueva.

590 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.6: Configuración y restablecimiento de contraseñas

Solución de problemas con la consola web


La consola web es una poderosa herramienta de solución de problemas. Puede monitorear las
estadísticas básicas del sistema en tiempo real, inspeccionar los registros del sistema y cambiar
rápidamente a una sesión de terminal dentro de la consola web para recopilar información
adicional de la interfaz de línea de comandos.

Monitoreo de estadísticas del sistema en tiempo real


Haga clic en Overview (Descripción general) en la barra de navegación para ver información
sobre el sistema, como su tipo de hardware, sistema operativo, nombre de host y más. Tenga en
cuenta que si ha iniciado sesión como usuario sin privilegios, verá toda la información, pero no
tendrá permiso para modificar los valores. En la siguiente imagen, se muestra parte de la página
Overview (Descripción general).

Figura 16.7: Página de Descripción general del usuario sin privilegios

Haga clic en View graphs (Ver gráficos) en la página Overview (Descripción general) para ver
gráficos del rendimiento actual del sistema, como la actividad de la CPU, el uso de memoria, las E/
S del disco y el uso de la red.

RH124-RHEL8.2-es-1-20200928 591
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.8: Indicadores de rendimiento del sistema del usuario sin privilegios

Inspección y filtrado de eventos de Syslog


Logs (Registros) en la barra de navegación proporciona acceso a herramientas de análisis para
los registros del sistema. Puede usar los menús de la página para filtrar los mensajes de registro
por un rango de fechas de registro, por nivel de gravedad o ambos. La consola web usa la fecha
actual como predeterminada, pero puede hacer clic en el menú de fecha y seleccionar un rango de
fechas. De manera similar, el menú Severity (Gravedad) ofrece opciones que van de Everything
(Todo) a condiciones de gravedad más específicas, como Alert and above (Alerta o más
grave), Debug and above (Depuración o más grave, y así).

592 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.9: Selecciones de gravedad de registro

Haga clic en una fila para ver los detalles del informe de registro. En el siguiente ejemplo, observe
la primera fila que informa sobre un mensaje de registro de sudo.

Figura 16.10: Selección de entrada de registro

En el siguiente ejemplo, se muestran los detalles que se visualizan cuando hace clic en la fila
sudo. Los detalles del informe incluyen la entrada de registro seleccionada (sudo), la fecha, hora,
prioridad y tipo de syslog de la entrada de registro, el nombre de host del sistema que informó el
mensaje de registro, y más.

RH124-RHEL8.2-es-1-20200928 593
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.11: Detalles de la entrada de registro

Ejecución de comandos desde una sesión de terminal


Terminal en la barra de navegación proporciona acceso a una sesión de terminal totalmente
funcional dentro de la interfaz de la consola web. Esto permite ejecutar comandos arbitrarios
para administrar y trabajar con el sistema y realizar tareas que no son compatibles con las otras
herramientas proporcionadas por la consola web.

En la siguiente imagen, se muestran ejemplos de comandos comunes usados para recopilar


información adicional. Listar el contenido del directorio /var/log proporciona recordatorios
de los archivos de registro que pueden tener información valiosa. El comando id proporciona
información rápida, como la pertenencia a un grupo, que puede ayudar a solucionar los problemas
de restricciones de acceso a los archivos. El comando ps au proporciona una vista rápida de los
procesos que se ejecutan en el terminal y el usuario asociado con el proceso.

594 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.12: Solución de problemas de sesión de terminal sin privilegios

Creación de informes de diagnóstico


Un informe de diagnóstico es una recopilación de detalles de configuración, información del
sistema e información de diagnóstico de un sistema de Red Hat Enterprise Linux. Los datos
recopilados en el informe completo incluyen los registros del sistema y la información de
depuración que se puede usar para solucionar problemas.

Inicie sesión en la consola web como un usuario privilegiado. Haga clic en Diagnostic Reports
(Informes de diagnostico) en la barra de navegación para abrir la página que crea estos informes.
Haga clic en Create Report (Crear informe) para generar un nuevo informe de diagnóstico.

RH124-RHEL8.2-es-1-20200928 595
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.13: Creación de un informe de diagnóstico

En la interfaz, se muestra Done! (Listo) cuando el informe está completo. Haga clic en Download
report (Descargar informe) para guardar el informe.

Figura 16.14: Descarga de un informe completo

Haga clic en Save File (Guardar archivo) para guardar el archivo y completar el proceso.

596 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.15: Guardado de un informe de diagnóstico

El informe completo se guarda en el directorio Downloads en el sistema que aloja el navegador


web usado para acceder a la consola web. En este ejemplo, el host es workstation.

Figura 16.16: Acceso a un informe completado

Administración de servicios del sistema con la consola


web
Como usuario privilegiado en la consola web, puede detener, iniciar, habilitar y reiniciar los
servicios del sistema. Además, puede configurar interfaces de red, configurar servicios de firewall,
administrar cuentas de usuario y más. En las siguientes imágenes, se muestran ejemplos comunes
de uso de las herramientas de administración de la consola web.

Opciones de cierre del sistema


La consola web le permite reiniciar o apagar el sistema. Inicie sesión en la consola web como un
usuario privilegiado. Haga clic en Overview (Descripción general) en la barra de navegación para
acceder a las opciones de cierre del sistema.

Seleccione la opción deseada en el menú en el extremo superior derecho para reiniciar o apagar
un sistema.

RH124-RHEL8.2-es-1-20200928 597
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.17: Opciones de cierre del sistema

Control de servicios del sistema en ejecución


Puede iniciar, habilitar, deshabilitar y detener servicios con herramientas gráficas en la consola
web. Haga clic en Services (Servicios) en la barra de navegación para acceder a la página inicial
de servicios de la consola web. Para gestionar servicios, haga clic en System Services (Servicios
del sistema) en la parte superior de la página inicial de servicios. Busque en la barra de búsqueda o
desplácese por la página para seleccionar el servicio que desea administrar.

En el siguiente ejemplo, seleccione la fila chronyd.service para abrir la página de


administración de servicios.

598 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.18: Servicios: vista inicial

Haga clic en Stop (Detener), Restart (Reiniciar) o Disallow running (mask) (No permitir
(máscara} en ejecución) según corresponda para administrar el servicio. En esta vista, el servicio
ya se está ejecutando. La información adicional relacionada con el servicio está disponible al
hacer clic en cualquiera de los enlaces seleccionados o al desplazarse a través de los registros de
servicio, que se muestran debajo de la sección de administración de servicios.

Figura 16.19: Servicios: detalles de servicio e interfaz de administración

RH124-RHEL8.2-es-1-20200928 599
capítulo 16 | Cómo analizar servidores y obtener soporte

Configuración de interfaces de red y firewall


Para administrar las reglas de firewall y las interfaces de red, haga clic en Networking (Redes) en
la barra de navegación. En el siguiente ejemplo, se muestran cómo recopilar información sobre las
interfaces de red y cómo administrarlas.

Figura 16.20: Redes: vista inicial

Haga clic en el nombre de la interfaz deseada en la sección Interfaces para acceder a la página
de administración. En este ejemplo, la interfaz eth0 está seleccionada.

Figura 16.21: Redes: interfaces

En la parte superior de la página de administración, se muestra la actividad del tráfico de red para
el dispositivo seleccionado. Desplácese hacia abajo para ver los ajustes de configuración y las
opciones de administración.

600 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.22: Redes: detalles de la interfaz

Para modificar o agregar opciones de configuración a una interfaz, haga clic en los enlaces
seleccionados para la configuración deseada. En este ejemplo, el enlace IPv4 muestra una única
dirección IP y máscara de red, 172.25.250.10/24, para la interfaz de red eth0. Para agregar
una dirección IP adicional a la interfaz de red eth0, haga clic en el enlace seleccionado.

Figura 16.23: Redes: sección de configuración de eth0

Haga clic en + en el lado derecho de la selección de lista Manual para agregar una dirección IP
adicional. Introduzca una dirección IP y una máscara de red en los campos correspondientes. Haga
clic en Apply (Aplicar) para activar la nueva configuración.

RH124-RHEL8.2-es-1-20200928 601
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.24: Adición de una dirección IP a una interfaz existente

La pantalla vuelve automáticamente a la página de administración de la interfaz, donde puede


confirmar la nueva dirección IP.

Figura 16.25: Confirmación de la nueva dirección IP

Administración de cuentas de usuario


Como usuario privilegiado, puede crear nuevas cuentas de usuario en la consola web. Haga clic
en Accounts (Cuentas) en la barra de navegación para ver las cuentas existentes. Haga clic en
Create New Account (Crear cuenta nueva) para abrir la página de administración de cuentas.

602 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.26: Cuentas de usuario existentes

Ingrese la información para la nueva cuenta y haga clic en Create (Crear).

Figura 16.27: Creación de una nueva cuenta

La pantalla vuelve automáticamente a la página de administración de la cuenta, donde puede


confirmar la nueva cuenta de usuario.

Figura 16.28: Página de administración de la cuenta

RH124-RHEL8.2-es-1-20200928 603
capítulo 16 | Cómo analizar servidores y obtener soporte

Referencias
Páginas del manual: cockpit(1), cockpit-ws(8) y cockpit.conf(5)

Para obtener más información, consulte la sección Administración de sistemas con


la consola web en la guía de uso de Cockpit para administrar sistemas en Red Hat
Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/managing_systems_using_the_web_console/

604 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Ejercicio Guiado

Análisis y administración de servidores


remotos
En este ejercicio, habilitará y accederá a la consola web en un servidor para administrarla, y
diagnosticar y resolver problemas.

Resultados
Debe ser capaz de usar la consola web para monitorear las funciones básicas del sistema,
inspeccionar los archivos de registro, crear cuentas de usuario y acceder al terminal.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab support-cockpit start. El comando


ejecuta un script de inicio para determinar y alterar si los hosts servera y serverb son
accesibles en la red.

[student@workstation ~]$ lab support-cockpit start

1. Use el comando ssh para iniciar sesión en servera como usuario student. Los sistemas
se configuran para que usen claves SSH para la autenticación, por lo que no se necesita una
contraseña para iniciar sesión en servera.

[student@workstation ~]$ ssh student@servera


Activate the web console with: systemctl enable --now cockpit.socket

[student@servera ~]$

2. La consola web ya está instalada en el sistema, pero no está activada. Habilite e inicie el
servicio cockpit.

2.1. Use el comando systemctl enable --now cockpit.socket para habilitar


el servicio de consola web. Utilice el comando sudo para obtener privilegios de
superusuario, y cuando se le solicite use student como la contraseña.

[student@servera ~]$ sudo systemctl enable --now cockpit.socket


[sudo] password for student: student
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/
lib/systemd/system/cockpit.socket.

3. En workstation, abra Firefox e inicie sesión en la interfaz de la consola web en


servera.lab.example.com. Inicie sesión como student usando student como
contraseña.

3.1. Abra Firefox y diríjase a https://servera.lab.example.com:9090.

RH124-RHEL8.2-es-1-20200928 605
capítulo 16 | Cómo analizar servidores y obtener soporte

3.2. Acepte el certificado autofirmado agregándolo como una excepción.

3.3. Quite la marca de la casilla de verificación Reuse my password for privileged


tasks (Reutilizar mi contraseña para tareas privilegiadas).

3.4. Inicie sesión como student usando student como contraseña.


Ya ha iniciado sesión como usuario normal, con privilegios mínimos.

4. Verifique su autorización actual en la interfaz de la consola web.

4.1. Haga clic en Terminal en la barra de navegación izquierda para acceder al terminal.
Se abre una sesión de terminal con la sesión del usuario student ya iniciada. Use el
comando id para confirmar que la ejecución del comando funciona en el terminal
incorporado.

[student@servera ~]$ id
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
context=unconfined_u:unconfined_r:unconfined_t:s0

4.2. Haga clic en Accounts (Cuentas) en la barra de navegación izquierda para


administrar usuarios.
Mueva el puntero del mouse sobre el botón Create New Account (Crear cuenta
nueva) situado en la esquina superior izquierda. Tenga en cuenta que el usuario
student no está autorizado a crear cuentas nuevas.

4.3. Haga clic en el vínculo Student User (Usuario estudiante).


En la página de detalles de cuenta del usuario student, observe que el usuario solo
puede establecer una nueva contraseña o agregar claves públicas SSH autorizadas.

4.4. En la esquina superior derecha, haga clic en Student User (Usuario student) →
Log Out (Cerrar sesión).

5. Acceda a la consola web con privilegios administrativos.

5.1. Vuelva a iniciar sesión en la interfaz de la consola web como el usuario student con
student como contraseña, pero esta vez seleccione la casilla Reuse my password
for privileged tasks (Volver a usar mi contraseña para tareas privilegiadas).

5.2. Para verificar el acceso administrativo, confirme que la etiqueta Privileged


(Privilegiado) se muestra al lado del nombre de cuenta de Student User (Usuario
estudiante) en la parte superior derecha de la interfaz de la consola web.

6. Para consultar las estadísticas del sistema, haga clic en Overview (Descripción general) en
la barra de navegación izquierda.
En esta página, se muestran varias de las estadísticas básicas del sistema operativo, como
la carga actual, el uso del disco, las E/S del disco y el tráfico de red.

7. Para inspeccionar los registros del sistema, haga clic en Logs (Registros) en la barra de
navegación izquierda.
En esta página, se muestran los registros del sistema de systemd. Use los botones
ubicados en la esquina superior izquierda para modificar la manera en que se muestran las
entradas de registro según la fecha y la gravedad de los registros.

7.1. Haga clic en la lista Severity (Gravedad) y elija Everything (Todo).

606 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

7.2. En función del día actual del mes, haga clic en cualquier entrada de registro de la lista.
Se abre una página de detalles de entrada de registro con información adicional sobre
el evento, como el nombre de host, el contexto de SELinux o el número de PID del
proceso al que corresponde la entrada.

8. Agregue una segunda dirección IP a un dispositivo de interfaz de red existente.

8.1. Haga clic en Networking (Redes) en la barra de navegación izquierda.


En esta página, se muestran los detalles de la configuración de red actual para
servera, así como las estadísticas de red en tiempo real, la configuración de firewall
y las entradas de registro relacionadas con la red.

8.2. Desplácese hacia abajo hasta la sección Interfaces y haga clic en la fila del nombre
de interfaz de red.
En una página de detalles, se muestran las estadísticas de red en tiempo real y la
configuración actual de la interfaz de red.

8.3. Haga clic en el enlace Address 172.25.250.10/24 via 172.25.250.254 (Dirección


172.25.250.10/24 a través de 172.25.250.254).
Se abre una ventana de IPv4 Settings (Configuración de IPv4), donde puede
cambiar la configuración de la interfaz de red.

8.4. En la ventana IPv4 Settings (Configuración de IPv4), haga clic en + junto a Manual.

8.5. En el cuadro de texto Address (Dirección), ingrese 172.25.250.99 como la


segunda dirección IP.

8.6. En el cuadro de texto Prefix length or Netmask (Longitud del prefijo o máscara de
red), ingrese 24 como el valor de la máscara de red.

8.7. Haga clic en Apply (Aplicar) para guardar la nueva configuración de red.
Vale notar que la nueva configuración se aplica inmediatamente. La nueva dirección
IP es visible en la línea IPv4.

9. Cree una nueva cuenta de usuario.

9.1. Haga clic en Accounts (Cuentas) en la barra de navegación izquierda.

9.2. Haga clic en Create New Account (Crear cuenta nueva).

9.3. En la ventana Create New Account (Crear cuenta nueva), agregue los siguientes
detalles:

Campo Valor

Full Name (Nombre completo) manager1

User Name (Nombre de usuario) manager1

Contraseña redh@t!23

Confirm (Confirmar) redh@t!23

9.4. Haga clic en Create (Crear).

RH124-RHEL8.2-es-1-20200928 607
capítulo 16 | Cómo analizar servidores y obtener soporte

10. Acceda a una sesión de terminal dentro de la consola web para agregar el usuario
manager1 al grupo wheel.

10.1. Haga clic en Terminal en la barra de navegación izquierda.

10.2. Use el comando id manager1 para ver los miembros del grupo del usuario
manager1.

[student@servera ~]$ id manager1


uid=1001(manager1) gid=1001(manager1) groups=1001(manager1)
[student@servera ~]$

10.3. Use el comando sudo usermod -aG wheel manager1 para agregar manager1 al
grupo wheel.

[student@servera ~]$ sudo usermod -aG wheel manager1


[sudo] password for student: student
[student@servera ~]$

10.4. Use el comando id manager1 para verificar que manager1 sea miembro del grupo
wheel.

[student@servera ~]$ id manager1


uid=1001(manager1) gid=1001(manager1) groups=1001(manager1),10(wheel)
[student@servera ~]$

11. Habilite e inicie el servicio Kernel process accounting (Contabilidad de procesos de kernel)
(psacct).

11.1. Haga clic en Services (Servicios) en la barra de navegación izquierda.

11.2. Busque el servicio Kernel process accounting (Contabilidad de procesos de


kernel). Haga clic en el enlace de servicio. Una página de detalles muestra el estado
del servicio como deshabilitado.

11.3. Haga clic en el botón Start and Enable (Iniciar y habilitar) junto al nombre del
servicio.

11.4. El servicio ya está habilitado e iniciado.

12. Cierre sesión en la interfaz de la consola web.

13. Cierre sesión en servera.

[student@servera ~]$ exit


[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab support-cockpit finish para terminar este
ejercicio.

[student@workstation ~]$ lab support-cockpit finish

608 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 609
capítulo 16 | Cómo analizar servidores y obtener soporte

Obtención de ayuda en el portal de


clientes de Red Hat

Objetivos
Tras finalizar esta sección, usted deberá poder describir los recursos clave disponibles en el portal
de clientes de Red Hat y usarlos para encontrar información en la documentación y la base de
conocimientos de Red Hat.

Acceso a los recursos de soporte del portal de clientes


de Red Hat
El portal de clientes de Red Hat (https://access.redhat.com) proporciona a los clientes acceso
a documentación, descargas, herramientas y experiencia técnica. Los clientes pueden buscar
soluciones, preguntas frecuentes y artículos a través de la base de conocimientos. Desde el portal
de clientes, puede:

• acceder a la documentación oficial de los productos;

• enviar y administrar tickets de asistencia;

• gestionar las suscripciones y derechos de software;

• obtener descargas, actualizaciones y evaluaciones de software;

• consultar herramientas que pueden ayudarlo a optimizar la configuración de sus sistemas.

Hay algunas secciones del sitio de acceso público y otras áreas están solo disponibles para
clientes con suscripciones activas. Obtenga ayuda para acceder al portal de clientes en https://
access.redhat.com/help/.

Orientación al portal de clientes


Puede acceder al portal de clientes de Red Hat a través de un navegador web. Esta sección
presenta el Tour the Customer Portal (Recorrido del portal de clientes). El recorrido se puede
encontrar en https://access.redhat.com/start.

El recorrido es una herramienta muy útil para descubrir todo lo que el portal tiene para ofrecer y la
manera de aprovechar al máximo su suscripción de Red Hat. Una vez que haya iniciado sesión en
el portal de clientes de Red Hat, haga clic en Tour the Customer Portal (Recorrido del portal de
clientes).

Figura 16.29: Recorrido del portal de clientes

La ventana WELCOME TO THE RED HAT CUSTOMER PORTAL (BIENVENIDO AL PORTAL


DE CLIENTES DE RED HAT) se abre con dos opciones: CLOSE (CERRAR) y NEXT (SIGUIENTE).
Haga clic en NEXT (SIGUIENTE) para iniciar el recorrido. Esta es la primera de una secuencia de
ventanas que destaca las diferentes partes de la interfaz.

610 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Barra de navegación superior


Las primeras tres paradas del recorrido del portal de clientes se pueden encontrar en la barra de
navegación superior del sitio web del portal de clientes de Red Hat:

Figura 16.30: Barra de navegación superior

Subscriptions (Suscripciones) abre una página nueva donde puede administrar los sistemas
registrados y el uso de suscripciones y derechos. Enumera información sobre las erratas que se
aplican y le permite crear claves de activación que puede usar al registrar sistemas para garantizar
que obtengan los derechos de las suscripciones correctas. Tenga en cuenta que si usted es parte
de una organización, el administrador de su organización puede limitar su acceso a esta página.

Downloads (Descargas) abre una página nueva que le permite acceder a las descargas de
productos y solicitar derechos de evaluación para productos para los que no tiene derechos.

Support Cases (Casos de soporte) abre una página nueva que brinda acceso para crear, rastrear
y administrar los casos de soporte a través del sistema de administración de casos, suponiendo
que su organización ha autorizado ese nivel de acceso.

Su nombre es el título de User Menu (Menú del usuario), que le permite administrar su cuenta,
las cuentas para las que es administrador de la organización, su perfil personal y las opciones de
notificaciones por correo electrónico de contenido nuevo que está disponible.

El icono de globo terráqueo abre el menú Select Your Language (Elija su idioma) para
especificar sus preferencias de idioma para el portal de clientes.

Menús de temas
Debajo de la barra de navegación superior en la página principal del portal de clientes hay menús
que puede usar para navegar a las cuatro categorías principales de recursos disponibles en el sitio.

Figura 16.31: Menús de recursos

Products & Services (Productos y servicios) proporciona acceso a Product Hubs (Centros de
productos), páginas que proporcionan acceso a evaluaciones, resúmenes, guías de inicio y otra
información de soporte específica para el producto. También puede acceder a la documentación
para productos de Red Hat, vínculos directos a la base de conocimientos de artículos de soporte, e
información sobre políticas de soporte y cómo ponerse en contacto con el soporte de Red Hat.

RH124-RHEL8.2-es-1-20200928 611
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.32: Productos y servicios

El menú Tools (Herramientas) proporciona vínculos a herramientas para ayudarlo a tener éxito
con los productos de Red Hat. La sección Solution Engine (Motor de soluciones) proporciona
una manera eficiente de buscar soluciones a sus problemas rápidamente, por producto, y de
abrir un ticket de soporte si no encuentra una solución satisfactoria. La sección Customer Portal
Labs (Trabajos de laboratorio del portal de clientes) proporciona una colección de aplicaciones
y herramientas web para ayudarlo a mejorar el rendimiento, diagnosticar problemas, identificar
problemas de seguridad y optimizar sus configuraciones. Por ejemplo, Product Life Cycle Checker
(Comprobador del ciclo de vida del producto) permite seleccionar un producto en particular y ver
su programa de ciclo de vida de soporte. Otra herramienta, Rescue Mode Assistant (Asistente de
modo de rescate), ayuda a restablecer la contraseña de root de un sistema, generar informes de
diagnóstico o corregir problemas de arranque con los sistemas de archivos. Pero hay muchas otras
herramientas disponibles en ese sitio.

Figura 16.33: Menú de herramientas en el portal del cliente

La sección Security (Seguridad) proporciona acceso al Centro de seguridad de productos de


Red Hat en https://access.redhat.com/security/. Esta sección también proporciona información
sobre problemas de seguridad de alto perfil, acceso a la base de datos de CVE de Red Hat, el
canal de seguridad del blog de Red Hat, y recursos sobre el proceso de respuesta de seguridad de
Red Hat y la manera en que calificamos los problemas y los resolvemos.

Finalmente, la sección Community (Comunidad) permite que los expertos, clientes y partners de
Red Hat se comuniquen y colaboren. Aquí encontrará foros de debate, blogs e información sobre
los próximos eventos en su zona.

612 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

nota
Debe completar todo el recorrido en Iniciación con Red Hat [https://
access.redhat.com/start], incluidas las secciones sobre cómo personalizar su
experiencia en el portal de clientes y explorar los beneficios de su suscripción de
Red Hat, para obtener toda la información sobre el portal de clientes. Necesitará al
menos una suscripción activa en su cuenta del portal de clientes para acceder a esta
página.

Búsqueda en la base de conocimientos con la


herramienta de soporte de Red Hat
La utilidad de Red Hat, redhat-support-tool, proporciona una interfaz basada en texto que
le permite buscar artículos de la base de conocimiento y presentar casos de soporte en el portal
de clientes desde la línea de comandos de su sistema. La herramienta no tiene una interfaz gráfica
y, para interactuar con el portal de clientes de Red Hat, requiere acceso a Internet. Ejecute el
comando redhat-support-tool con cualquier terminal o conexión SSH.

El comando redhat-support-tool puede usarse en un modo interactivo o invocarse como


si fuera un comando con opciones y argumentos. La sintaxis de la herramienta es idéntica para
los dos métodos. De manera predeterminada, el programa se inicia en modo interactivo. Use el
subcomando help proporcionado para ver todos los comandos disponibles. El modo interactivo
admite el autocompletado con tab y la capacidad de solicitar programas en la shell principal.

[user@host ~]$ redhat-support-tool


Welcome to the Red Hat Support Tool.
Command (? for help):

Cuando se invoca por primera vez, redhat-support-tool solicita la información de inicio de


sesión del suscriptor al portal de clientes de Red Hat. Para evitar proporcionar esta información
en reiteradas ocasiones, la herramienta le pregunta si desea almacenar la información de la
cuenta en el directorio de inicio del usuario (~/.redhat-support-tool/redhat-support-
tool.conf). Si todos los problemas se presentan con una cuenta en particular del portal
de clientes de Red Hat, la opción --global puede guardar la información de la cuenta en /
etc/redhat-support-tool.conf, junto con otras configuraciones globales del sistema. El
comando config modifica los valores de configuración de la herramienta.

El comando redhat-support-tool permite que los suscriptores busquen y muestren contenido


de la base de conocimientos del portal de clientes de Red Hat. La base de conocimientos permite
realizar búsquedas por palabras claves, similar al comando man. Puede ingresar códigos de error,
sintaxis de archivos de registro o cualquier combinación de palabras clave para producir una lista
de documentos de soluciones relevantes.

A continuación, se incluye una demostración de búsqueda básica y configuración inicial:

RH124-RHEL8.2-es-1-20200928 613
capítulo 16 | Cómo analizar servidores y obtener soporte

[user@host ~]$ redhat-support-tool


Welcome to the Red Hat Support Tool.
Command (? for help): search How to manage system entitlements with subscription-
manager
Please enter your RHN user ID: subscriber
Save the user ID in /home/student/.redhat-support-tool/redhat-support-tool.conf
(y/n): y
Please enter the password for subscriber: password
Save the password for subscriber in /home/student/.redhat-support-tool/redhat-
support-tool.conf (y/n): y

La herramienta, tras solicitarle al usuario la configuración de usuario requerida, continúa con la


solicitud de búsqueda original.

Type the number of the solution to view or 'e' to return to the previous menu.
1 [ 253273:VER] How to register and subscribe a system to the Red Hat Customer
Portal using Red Hat Subscription-Manager
2 [ 265523:VER] Enabling or disabling a repository using Red Hat Subscription
Management
3 [ 100423:VER] Why does subscription-manager list return: "No Installed
Products found" ?
...output omitted...
Select a Solution: 1

Seleccione el artículo número 1 como se indica arriba y se le solicitará que seleccione la sección del
documento para leer. Finalmente, use la tecla Q para salir de la sección en la que se encuentra o
úsela repetidamente para salir del comando redhat-support-tool.

Select a Solution: 1

Type the number of the section to view or 'e' to return to the previous menu.
1 Title
2 Issue
3 Environment
4 Resolution
5 Display all sections
End of options.
Section: 1

Title
===============================================================================
How to register and subscribe a system to the Red Hat Customer Portal using Red
Hat Subscription-Manager
URL: https://access.redhat.com/solutions/253273
Created On: None
Modified On: 2017-11-29T15:33:51Z

(END) q
Section:
Section: q

Select a Solution: q

614 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Command (? for help): q


[user@hosts ~]#

Acceso a artículos de la base de conocimientos por ID de


documento
Encuentre artículos en línea en forma directa con el comando kb de la herramienta con el ID de
documento de la base de conocimientos. Un documento devuelto se desplaza en la pantalla sin
paginación, pero puede redirigirlo a un archivo para guardarlo y usar less para desplazarse por
este una pantalla a la vez.

[user@host ~]$ redhat-support-tool kb 253273

Title
===============================================================================
How to register and subscribe a system to the Red Hat Customer Portal using Red
Hat Subscription-Manager
URL: https://access.redhat.com/solutions/253273
Created On: None
Modified On: 2017-11-29T15:33:51Z

Issue
===============================================================================
* How to register a new `Red Hat Enterprise Linux` system to the Customer Portal
using `Red Hat Subscription-Manager`
...output omitted...

Administración de casos de soporte con la herramienta


de soporte de Red Hat
Un beneficio de la suscripción a un producto es el acceso a asistencia técnica a través del
portal de clientes de Red Hat. Según el nivel de soporte de suscripción del sistema, Red Hat
puede comunicarse mediante herramientas en línea o por teléfono. Consulte https://
access.redhat.com/site/support/policy/support_process para obtener información
detallada.

Preparación de un informe de error


Antes de comunicarse con la asistencia de Red Hat, es importante reunir la información relevante
para un informe de errores.

Defina el problema. Indique el problema y los síntomas con claridad. Sea lo más específico posible.
Detalle los pasos que reproducirían el problema.

Reúna información básica. ¿Qué producto y versión se ven afectados? Esté preparado para brindar
información de diagnóstico relevante. que puede incluir la salida de sosreport, que se abordará
posteriormente en esta sección. En el caso de problemas del kernel, dicha información podría
incluir un vuelco de errores de kdump del sistema o una fotografía digital del seguimiento de kernel
mostrado en el monitor de un sistema bloqueado.

Determine el nivel de gravedad. Red Hat utiliza niveles de gravedad para clasificar problemas.
Los informes de problemas de gravedad Urgent (Urgente) y High (Alta) debe seguirse

RH124-RHEL8.2-es-1-20200928 615
capítulo 16 | Cómo analizar servidores y obtener soporte

mediante una llamada telefónica al centro de asistencia local pertinente (consulte https://
access.redhat.com/site/support/contact/technicalSupport).

Gravedad Descripción

Urgente (Gravedad 1) Un problema que afecta gravemente su uso del software en


un entorno de producción. Esto incluye la pérdida de datos de
producción o el mal funcionamiento de los sistemas de producción.
La situación interrumpe las operaciones empresariales y no existe un
procedimiento de resolución.

Alta (Gravedad 2) Un problema donde el software funciona, pero el uso en un entorno


de producción se ve gravemente reducido. La situación tiene un
gran impacto en sus operaciones empresariales y no existe un
procedimiento de resolución.

Media (Gravedad 3) Un problema que implica una pérdida parcial no fundamental de


la capacidad de uso del software en un entorno de producción o
desarrollo. Para los entornos de producción, hay un impacto medio a
bajo en su empresa. La empresa sigue funcionando con una solución
procesal. En entornos de desarrollo, la situación provoca problemas al
migrar el proyecto a producción.

Baja (Gravedad 4) Un asunto de uso general, la comunicación de un error de


documentación o una recomendación para una mejora o modificación
futura del producto. En entornos de producción, el impacto en el
negocio o en el rendimiento o funcionalidad del sistema es bajo o
inexistente. En entornos de desarrollo, tiene un impacto de medio
a bajo en el negocio, pero la empresa continúa funcionando con un
procedimiento de resolución.

Administración de un informe de errores con redhat-


support-tool
Puede crear, ver, modificar y cerrar casos de asistencia de Red Hat mediante el uso de
redhat-support-tool. Cuando los casos de asistencia están en estado opened (abierto)
o maintained (mantenido), los usuarios pueden adjuntar archivos o documentación, como
informes de diagnóstico (sosreport). La herramienta carga y adjunta archivos a los casos.

Los detalles del caso, como producto, versión, resumen, descripción, gravedad y grupo de
caso, pueden asignarse con opciones de comandos o si se deja la solicitud de la herramienta de
información necesaria. En el siguiente ejemplo, se abre un caso nuevo. Se especifican las opciones
--product y --version.

[user@host ~]$ redhat-support-tool


Welcome to the Red Hat Support Tool.
Command (? for help): opencase --product="Red Hat Enterprise Linux" --
version="7.0"
Please enter a summary (or 'q' to exit): System fails to run without power
Please enter a description (Ctrl-D on an empty line when complete):
When the server is unplugged, the operating system fails to continue.
1 Urgent
2 High
3 Normal
4 Low

616 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Please select a severity (or 'q' to exit): 4


Would you like to assign a case group to this case (y/N)? N
Would see if there is a solution to this problem before opening a support case?
(y/N) N
-------------------------------------------------------------------------------
Support case 01034421 has successfully been opened.

Si las opciones --product y --version no están especificadas, redhat-support-tool


proporciona una lista de elecciones para esas opciones.

[user@host ~]$ redhat-support-tool


Welcome to the Red Hat Support Tool.
Command (? for help): opencase
Do you want to use the default product - "Red Hat Enterprise Linux" (y/N)?: y
...output omitted...
29 7.4
30 7.5
31 7.6
32 8.0 Beta
Please select a version (or 'q' to exit): 32
Please enter a summary (or 'q' to exit): yum fails to install apache
Please enter a description (Ctrl-D on an empty line when complete):
yum cannot find correct repo
1 Urgent
2 High
3 Normal
4 Low
Please select a severity (or 'q' to exit): 4
Would you like to use the default (Ungrouped Case) Case Group (y/N)? : y
Would you like to see if there's a solution to this problem before opening a
support case? (y/N) N
-------------------------------------------------------------------------------
Support case 010355678 has successfully been opened.

Adjuntar información de diagnóstico a un caso de soporte


Incluir información de diagnóstico puede llevar a una resolución más rápida. Adjunte el informe
sosreport cuando se abra el caso. El comando sosreport genera una colección de archivos tar
comprimida de información de diagnóstico reunida del sistema en ejecución. La herramienta
redhat-support-tool le solicita que incluya una si se creó una colección de archivos
previamente:

Please attach a SoS report to support case 01034421. Create a SoS report as
the root user and execute the following command to attach the SoS report
directly to the case:
redhat-support-tool addattachment -c 01034421 path to sosreport

Would you like to attach a file to 01034421 at this time? (y/N) N


Command (? for help):

Si no existe un informe de SoS actual, un administrador puede generar y adjuntar uno más tarde.
Use el comando redhat-support-tool addattachment para adjuntar el informe.

RH124-RHEL8.2-es-1-20200928 617
capítulo 16 | Cómo analizar servidores y obtener soporte

El suscriptor también puede ver, modificar y cerrar los casos de asistencia:

Command (? for help): listcases

Type the number of the case to view or 'e' to return to the previous menu.
1 [Waiting on Red Hat] System fails to run without power
No more cases to display
Select a Case: 1

Type the number of the section to view or 'e' to return to the previous menu.
1 Case Details
2 Modify Case
3 Description
4 Recommendations
5 Get Attachment
6 Add Attachment
7 Add Comment
End of options.
Option: q

Select a Case: q

Command (? for help):q

[user@host ~]$ redhat-support-tool modifycase --status=Closed 01034421


Successfully updated case 01034421
[user@host ~]$

La herramienta Red Hat Support Tool cuenta con capacidades avanzadas de análisis y diagnóstico
de aplicaciones. Mediante el uso de archivos core (principales) de volcado de memoria tras fallas
del kernel, redhat-support-tool puede crear y extraer un seguimiento de pila. Un seguimiento
de pila es un informe de los marcos de pila (stack) activos en el punto de un volcado de memoria
tras falla y proporciona diagnósticos en las instalaciones. Una de las opciones de redhat-
support-tool es abrir un caso de soporte.

La herramienta también proporciona análisis de archivo de registro. Mediante el uso del comando
analyze de la herramienta, los archivos de registro de muchos tipos, como de sistema operativo,
JBoss, Python, Tomcat y oVirt, pueden analizarse para reconocer síntomas de problemas.
Los archivos de registro se pueden ver y diagnosticar individualmente. Proporcionar análisis
preprocesado, en oposición a datos sin procesar, como archivos de registro o vuelcos de errores,
permite que se abran los casos de asistencia y que se pongan a disposición de ingenieros más
rápidamente.

Participación en Red Hat Developer


Otro recurso útil disponible de Red Hat es Red Hat Developer. Alojado en https://
developer.redhat.com, este programa proporciona derechos de suscripción al software de Red Hat
para propósitos de desarrollo, documentación y libros de primera calidad de nuestros expertos en
microservicios, computación sin servidor, Kubernetes y Linux. También incluye un blog, enlaces a
información sobre próximos eventos y capacitación, y otros recursos de ayuda, así como enlaces al
portal de clientes de Red Hat.

La inscripción es gratuita y puede realizarse en https://developer.redhat.com/register.

618 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Referencias
Página del manual: sosreport(1)

Acceso a Red Hat Access: Herramienta de soporte de Red Hat


https://access.redhat.com/site/articles/445443

Primer uso de la Herramienta de soporte de Red Hat


https://access.redhat.com/site/videos/534293

Contacto con la Asistencia técnica de Red Hat


https://access.redhat.com/site/support/policy/support_process/

Ayuda: Portal de clientes de Red Hat


https://access.redhat.com/site/help/

RH124-RHEL8.2-es-1-20200928 619
capítulo 16 | Cómo analizar servidores y obtener soporte

Ejercicio Guiado

Obtención de ayuda en el portal de


clientes de Red Hat
En este ejercicio, generará un informe de diagnóstico con la consola web.

Resultados
Deberá ser capaz de generar un informe de diagnóstico con la consola web que podría
enviarse al portal de clientes de Red Hat como parte de un caso de soporte.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab support-portal start. El comando


ejecuta un script de inicio que determina si servera es accesible en la red. También inicia y
habilita la consola web en servera.

[student@workstation ~]$ lab support-portal start

1. En workstation, use el comando ssh para iniciar sesión en servera con el usuario
student.

[student@workstation ~]$ ssh student@servera


Web console: https://servera.lab.example.com:9090/ or https://172.25.250.10:9090/
[student@servera ~]$

2. Use el comando systemctl para confirmar que el servicio cockpit se está ejecutando.
Introduzca student como contraseña cuando se le solicite.

[student@servera ~]$ systemctl status cockpit.socket


● cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor preset:
disabled)
Active: active (listening) since Thu 2019-05-16 10:32:33 IST; 4min 37s ago
Docs: man:cockpit-ws(8)
Listen: [::]:9090 (Stream)
Process: 676 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd
(code=exited, status=0/SUCCESS)
Process: 668 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost
(code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 11405)
Memory: 1.5M
CGroup: /system.slice/cockpit.socket
...output omitted...

620 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

3. Cierre sesión en servera.

[student@servera ~]$ exit


[student@workstation ~]$

4. En workstation, abra Firefox e inicie sesión en la interfaz de la consola web que se


ejecuta en servera.lab.example.com como el usuario root con la contraseña
redhat.

4.1. Abra Firefox y vaya a la dirección https://servera.lab.example.com:9090.

4.2. Si se le solicita, acepte el certificado autofirmado agregándolo como una excepción.

4.3. Inicie sesión como el usuario root con redhat como contraseña. Ya ha iniciado
sesión como usuario privilegiado, lo cual es necesario para crear un informe de
diagnóstico.

4.4. Haga clic en Diagnostic Reports (Informes de diagnóstico) en la barra de


navegación izquierda. Haga clic en Create Report (Crear informe). El informe tarda
unos minutos en crearse.

5. Cuando el informe esté listo, haga clic en Download report (Descargar informe). Guarde
el archivo.

5.1. Haga clic en el botón Download report (Descargar informe) y, luego, en el botón
Save File (Guardar archivo).

5.2. Haga clic en el botón Close (Cerrar).

5.3. Cierre sesión en la interfaz de la consola web.

Finalizar
En workstation, ejecute el script lab support-portal finish para terminar este ejercicio.

[student@workstation ~]$ lab support-portal finish

Esto concluye el ejercicio guiado.

RH124-RHEL8.2-es-1-20200928 621
capítulo 16 | Cómo analizar servidores y obtener soporte

Detección y resolución de problemas con


Red Hat Insights

Objetivos
Después de completar esta sección, deberá ser capaz de usar Red Hat Insights para analizar los
servidores en busca de problemas, corregirlos o resolverlos, y confirmar que la solución funcionó.

Presentación de Red Hat Insights


Red Hat Insights es una herramienta de análisis predictivo que ayuda a identificar y remediar las
amenazas de seguridad, el rendimiento, la disponibilidad y la estabilidad de los sistemas en su
infraestructura que ejecutan productos de Red Hat. Insights se proporciona como un producto
de software como servicio (SaaS), para que pueda implementarlo y escalarlo rápidamente sin
requisitos de infraestructura adicionales. Además, puede aprovechar inmediatamente las últimas
recomendaciones y actualizaciones de Red Hat específicas para los sistemas implementados.

Red Hat actualiza regularmente la base de conocimientos usada por Insights, en conformidad con
los riesgos de soporte comunes, las vulnerabilidades de seguridad, las configuraciones erróneas
conocidas y otros problemas identificados por Red Hat. Las acciones para mitigar o remediar
estos problemas son validadas y verificadas por Red Hat. Este soporte permite identificar, priorizar
y resolver proactivamente los problemas antes de que se conviertan en un problema mayor.

Para cada problema detectado, Insights proporciona estimaciones del riesgo presentado y
recomendaciones sobre cómo mitigar o remediar el problema. Estas recomendaciones pueden
proporcionar materiales, como Ansible Playbooks o instrucciones detalladas y legibles por
humanos para ayudarle a resolver el problema.

Insights adapta las recomendaciones a cada sistema registrado en el servicio. Cada sistema cliente
se instala con un agente que recopila metadatos sobre la configuración de tiempo de ejecución
del sistema. Estos datos son un subconjunto de lo que podría proporcionar a Red Hat Support con
el comando sosreport para resolver un ticket de soporte. Puede limitar u ocultar los datos que
envían sus clientes. Esto impide el funcionamiento de algunas de las reglas analíticas, en función
de lo que usted limite.

Casi inmediatamente después de registrar un servidor y de completar la sincronización inicial de


metadatos del sistema, debería poder ver su servidor y todas las recomendaciones para este en la
consola de Insights en el portal de la nube de Red Hat.

Insights actualmente proporciona análisis predictivos y recomendaciones para los siguientes


productos de Red Hat:

• Red Hat Enterprise Linux 6.4 y versiones posteriores


• Red Hat Virtualization 4 y versiones posteriores
• Red Hat OpenShift Container Platform
• Red Hat OpenStack Platform 7 y versiones posteriores

Descripción de la arquitectura de Insights


Cuando registra un sistema con Insights, envía inmediatamente metadatos acerca de su
configuración actual a la plataforma Insights. Después del registro, el sistema actualiza
periódicamente los metadatos provistos a Insights. El sistema envía los metadatos con cifrado TLS
para protegerlos en tránsito.

622 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Cuando la información recibe los datos, los analiza y muestra el resultado en la consola web de
Insights en https://cloud.redhat.com/insights.

Figura 16.34: Arquitectura de alto nivel de Insights

Instalación de clientes de Insights


Insights está incluido con Red Hat Enterprise Linux 8 como parte de la suscripción. Las versiones
anteriores de los servidores de Red Hat Enterprise Linux requieren la instalación del paquete
insights-client en el sistema.

Importante
El paquete insights-client reemplaza el paquete redhat-access-insights que se inicia
con Red Hat Enterprise Linux 7.5.

Si su sistema está registrado para obtener derechos de software a través del servicio de
administración de suscripciones del portal de clientes, puede activar Insights con un comando. Use
el comando insights-client --register para registrar el sistema.

[root@host ~]# insights-client --register

El cliente de Insights actualiza periódicamente los metadatos proporcionados a Insights. Use el


comando insights-client para actualizar los metadatos del cliente en cualquier momento.

[root@host ~]# insights-client


Starting to collect Insights data for host.example.com
Uploading Insights data.
Successfully uploaded report for host.example.com.
View details about this system on cloud.redhat.com:
https://cloud.redhat.com/insights/inventory/dc480efd-4782-417e-a496-cb33e23642f0

Registro de un sistema de RHEL con Insights


Para registrar un servidor de RHEL en Insights, el proceso es el siguiente:

RH124-RHEL8.2-es-1-20200928 623
capítulo 16 | Cómo analizar servidores y obtener soporte

• Registre interactivamente el sistema con el servicio de administración de suscripciones de


Red Hat.

[root@host ~]# subscription-manager register --auto-attach

• Asegúrese de que el paquete insights-client esté instalado en el sistema. En RHEL 7, este


paquete está en el canal rhel-7-server-rpms.

nota
Este paso no es necesario en sistemas Red Hat Enterprise Linux 8.

[root@host ~]# yum install insights-client

• Use el comando insights-client --register para registrar el sistema con el servicio de


Insights y cargar los metadatos iniciales del sistema.

[root@host ~]# insights-client --register

• Confirme que el sistema esté visible en Inventory (Inventario) en la consola web de Insights en
https://cloud.redhat.com/insights.

Figura 16.35: Inventario de Insights en el portal de nube

Navegación de la consola de Insights


Insights proporciona una familia de servicios a los que accede a través de la consola web en
https://cloud.redhat.com/insights.

624 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Detección de problemas de configuración mediante el servicio


de asesores
El servicio de asesores informa problemas de configuración que afectan sus sistemas.
Puede acceder al servicio desde el menú Advisor (Asesor) → Recommendations
(Recomendaciones).

Figura 16.36: Recomendaciones del servicio de asesores

Para cada problema, Insights proporciona información adicional para ayudarlo a comprender
el problema, priorizar las tareas para resolverlo, determinar qué mitigación o corrección está
disponible y automatizar su resolución con Ansible Playbook. Insights también proporciona enlaces
a artículos de la base de conocimiento en el Portal de clientes.

RH124-RHEL8.2-es-1-20200928 625
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.37: Detalles de un problema

El servicio de asesores evalúa el riesgo de que se presente un problema en su sistema en dos


categorías.

Riesgo total
Indica el impacto del problema en su sistema.

Riesgo de cambio
Indica el impacto de la acción de corrección en su sistema. Por ejemplo, es posible que deba
reiniciar el sistema.

Evaluación de la seguridad mediante el servicio de


vulnerabilidades
El servicio de vulnerabilidades informa las Common Vulnerabilities and Exposures (CVE)
(Vulnerabilidades y exposiciones comunes, CVE) que afectan sus sistemas. Puede acceder al
servicio desde el menú Vulnerability (Vulnerabilidad) → CVEs (CVE).

626 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.38: Informe del servicio de vulnerabilidades

Para cada CVE, Insights proporciona información adicional y enumera los sistemas expuestos.
Puede hacer clic en Remediate (Corregir) para crear una Ansible Playbook para la corrección.

Figura 16.39: Detalles de un CVE

RH124-RHEL8.2-es-1-20200928 627
capítulo 16 | Cómo analizar servidores y obtener soporte

Análisis del cumplimiento mediante el servicio de


cumplimiento
El servicio de cumplimiento analiza sus sistemas e informa su nivel de conformidad con una
política de OpenSCAP. El proyecto OpenSCAP implementa herramientas para verificar la
compatibilidad de un sistema con un conjunto de reglas. Insights proporciona las reglas para
evaluar sus sistemas con respecto a diferentes políticas, como el Norma de seguridad de datos del
sector de tarjetas de pago (PCI DSS).

Actualización de paquetes con el servicio de parches


El servicio de parches enumera las recomendaciones de productos Red Hat que se aplican a
sus sistemas. También puede generar una Ansible Playbook que puede ejecutar para actualizar
los paquetes RPM asociados con los documentos adjuntos aplicables. Para acceder a la lista
de recomendaciones para un sistema específico, use el menú Patch (Parche) → Systems
(Sistemas). Haga clic en Apply all applicable advisories i(Aplicar todas las recomendaciones
aplicables) para que un sistema genere la Ansible Playbook.

Figura 16.40: Aplicación de parches a un sistema

Comparación de sistemas con el servicio de desajuste


Con el servicio de desajuste, puede comparar los sistemas o un historial del sistema. Este servicio
puede ayudarlo a solucionar los problemas de un sistema comparando ese sistema con un sistema
similar o con un estado anterior del sistema. Puede acceder al servicio desde el menú Drift
(Desajustes) → Comparison (Comparación).

628 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Figura 16.41: Comparación de un historial del sistema

En la captura de pantalla anterior, Insights compara el mismo sistema en dos momentos diferentes.

Activación de alertas mediante el servicio de políticas


Con el servicio de políticas, usted crea reglas para monitorear sus sistemas y enviar alertas cuando
un sistema no cumple con las reglas. La información evalúa las reglas cada vez que un sistema
sincroniza sus metadatos. Puede acceder al servicio desde el menú Policies (Políticas).

Figura 16.42: Detalles de una regla personalizada

RH124-RHEL8.2-es-1-20200928 629
capítulo 16 | Cómo analizar servidores y obtener soporte

Acceso a las guías de inventario y corrección, y monitoreo de


suscripciones
En la página Inventory (Inventario), se proporciona una lista de los sistemas que ha registrado
con Red Hat Insights. En la columna Last seen (Visto por última vez), se muestra la hora de
la actualización de metadatos más reciente para cada sistema. Al hacer clic en el nombre
de un sistema, puede revisar sus detalles y acceder directamente a los servicios de asesor,
vulnerabilidad, cumplimiento y parches para ese sistema.

En la página Remediations (Correcciones), se enumeran todas las Ansible Playbooks que creó
para la corrección. Puede descargar las guías de esa página.

Mediante la página Subscription Watch (Inspección de la suscripción), puede monitorear su uso


de la suscripción de Red Hat.

Referencias
páginas de manual insights-client(8) y insights-client.conf(5)

Para obtener más información acerca de Red Hat Insights, consulte la


documentación del producto para Red Hat Insights en
https://access.redhat.com/documentation/en-us/red_hat_insights

Para obtener más información sobre la exclusión de datos recopilados por Insights,
consulte los capítulos Ocultamiento de datos de cliente de Red Hat Insights y
Redacción de datos de cliente de Red Hat Insights en la Guía de configuración de
clientes para Red Hat Insights en
https://access.redhat.com/documentation/en-us/red_hat_insights/2020-04/html-
single/client_configuration_guide_for_red_hat_insights/index

Hay información disponible sobre los datos recopilados por Red Hat Insights en
Información del sistema recopilada por Red Hat Insights
https://access.redhat.com/articles/1598863

630 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Cuestionario

Detección y resolución de problemas con


Red Hat Insights
Elija las respuestas correctas para las siguientes preguntas:

1. ¿En qué orden ocurren los siguientes eventos cuando se administra un sistema de
Red Hat Enterprise Linux con Red Hat Insights?

1. Red Hat Insights analiza los metadatos del sistema para determinar qué problemas y
recomendaciones se aplican.
2. El cliente de Insights carga los metadatos del sistema al servicio de Red Hat Insights.
3. El administrador ve las acciones recomendadas en el portal de clientes de Red Hat
Insights.
4. El cliente de Insights recopila metadatos del sistema en el sistema Red Hat Enterprise
Linux.

a. 1, 2, 3, 4
b. 4, 2, 1, 3
c. 4, 2, 3, 1
d. 4, 1, 2, 3

2. ¿Qué comando se usa para registrar un cliente en Red Hat Insights?


a. insights-client --register
b. insights-client --no-upload
c. subscription-manager register
d. insights-client --unregister

3. ¿Desde qué página de la consola de Red Hat Insights puede generar una Ansible
Playbook para actualizar los paquetes RPM en un sistema?
a. Advisor (Asesor) → Recommendations (Recomendaciones)
b. Vulnerability (Vulnerabilidad) → Systems (Sistemas)
c. Patch (Parche) → Systems (Sistemas)
d. Remediations (Remediaciones)

RH124-RHEL8.2-es-1-20200928 631
capítulo 16 | Cómo analizar servidores y obtener soporte

Solución

Detección y resolución de problemas con


Red Hat Insights
Elija las respuestas correctas para las siguientes preguntas:

1. ¿En qué orden ocurren los siguientes eventos cuando se administra un sistema de
Red Hat Enterprise Linux con Red Hat Insights?

1. Red Hat Insights analiza los metadatos del sistema para determinar qué problemas y
recomendaciones se aplican.
2. El cliente de Insights carga los metadatos del sistema al servicio de Red Hat Insights.
3. El administrador ve las acciones recomendadas en el portal de clientes de Red Hat
Insights.
4. El cliente de Insights recopila metadatos del sistema en el sistema Red Hat Enterprise
Linux.

a. 1, 2, 3, 4
b. 4, 2, 1, 3
c. 4, 2, 3, 1
d. 4, 1, 2, 3

2. ¿Qué comando se usa para registrar un cliente en Red Hat Insights?


a. insights-client --register
b. insights-client --no-upload
c. subscription-manager register
d. insights-client --unregister

3. ¿Desde qué página de la consola de Red Hat Insights puede generar una Ansible
Playbook para actualizar los paquetes RPM en un sistema?
a. Advisor (Asesor) → Recommendations (Recomendaciones)
b. Vulnerability (Vulnerabilidad) → Systems (Sistemas)
c. Patch (Parche) → Systems (Sistemas)
d. Remediations (Remediaciones)

632 RH124-RHEL8.2-es-1-20200928
capítulo 16 | Cómo analizar servidores y obtener soporte

Resumen
En este capítulo, aprendió lo siguiente:

• La consola web es una interfaz de administración web de servidores basada en el servicio de


código abierto Cockpit.

• La consola web proporciona gráficos del rendimiento del sistema, herramientas gráficas para
administrar la configuración del sistema e inspeccionar los registros, e interfaces de terminal
interactivas.

• El portal de clientes de Red Hat brinda acceso a documentación, descargas, herramientas de


optimización, administración de casos de soporte y administración de suscripciones y derechos
para los productos de Red Hat.

• redhat-support-tool es una herramienta de línea de comandos para consultar la base de


conocimientos y trabajar con casos de soporte desde la línea de comandos del servidor.

• Red Hat Insights es una herramienta de análisis predictivo de SaaS que ayuda a identificar y
corregir las amenazas a la seguridad, el rendimiento, la disponibilidad y la estabilidad de los
sistemas.

RH124-RHEL8.2-es-1-20200928 633
634 RH124-RHEL8.2-es-1-20200928
capítulo 17

Revisión completa
Meta Revisar tareas de Red Hat System Administration I .

Objetivos • Revisar tareas de Red Hat System


Administration I .

Secciones • Revisión exhaustiva

Trabajo de • Trabajo de laboratorio: Administración de


archivos desde la línea de comandos
laboratorio
• Trabajo de laboratorio: Administración de
usuarios y grupos, permisos y procesos
• Trabajo de laboratorio: Configuración y
administración de un servidor
• Trabajo de laboratorio: Administración de redes
• Trabajo de laboratorio: Montaje de sistemas de
archivos y búsqueda de archivos

RH124-RHEL8.2-es-1-20200928 635
capítulo 17 | Revisión completa

Revisión completa

Objetivos
Tras finalizar esta sección, los estudiantes deberán haber revisado y actualizado las habilidades y
los conocimientos aprendidos en Red Hat System Administration I.

Revisión de Red Hat System Administration I


Antes de comenzar la revisión integral de este curso, los estudiantes deben sentirse cómodos con
los temas que se abordaron en cada capítulo.

Los estudiantes pueden consultar las secciones anteriores en el libro de textos para lecturas
complementarias.

Capítulo 1, Primeros pasos con Red Hat Enterprise Linux


Describir y definir código abierto, Linux, distribuciones de Linux y Red Hat Enterprise Linux.

• Definir y explicar el propósito de Linux, el código abierto, las distribuciones de Linux y Red Hat
Enterprise Linux.

Capítulo 2, Acceso a la línea de comandos


Iniciar sesión en el sistema Linux y ejecutar comandos simples mediante la shell.

• Iniciar sesión en el sistema Linux en una consola de texto local y ejecutar comandos simples
mediante la shell.

• Iniciar sesión en el sistema Linux usando el entorno de escritorio GNOME 3 y ejecutar


comandos desde un prompt de shell en un programa de terminal.

• Ahorrar tiempo al usar Autocompletado con tab, el historial de comandos y los métodos
abreviados de edición de comandos para ejecutar comandos en la shell Bash.

Capítulo 3, Administración de archivos desde la línea de


comandos
Copiar, mover, crear, eliminar y organizar archivos mientras se trabaja desde la shell Bash.

• Describir cómo Linux organiza los archivos y los propósitos de diversos directorios en la
jerarquía del sistema de archivos.

• Especificar la ubicación de los archivos en relación con el directorio de trabajo actual y por
ubicación absoluta, determinar y cambiar su directorio de trabajo, y hacer una lista del contenido
de los directorios.

• Crear, copiar, mover y eliminar archivos y directorios.

• Hacer que varios nombres de archivo hagan referencia al mismo archivo con enlaces duros y
simbólicos (o "blandos").

• Ejecutar con eficiencia los comandos que afectan a muchos archivos mediante el uso de las
funciones de coincidencia de patrones de la shell Bash.

636 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Capítulo 4, Obtener ayuda en Red Hat Enterprise Linux


Resolver problemas mediante el uso de sistemas de ayuda locales.

• Encontrar información en las páginas de manual del sistema Linux local.

• Encontrar información en la documentación local de GNU Info.

Capítulo 5, Creación, visualización y edición de archivos de


texto
Crear, visualizar y editar archivos de texto desde una salida de comando o en un editor de texto.

• Guardar la salida de comando o los errores en un archivo con la redirección de shell y procesar la
salida de comando a través de varios programas de línea de comandos con las tuberías.

• Crear y editar archivos de texto con el editor vim.

• Usar las variables de shell para facilitar la ejecución de comandos, y editar los scripts de
arranque de Bash para configurar las variables de shell y del entorno a fin de modificar el
comportamiento de la shell y de los programas ejecutados desde la shell.

Capítulo 6, Administración de usuarios y grupos locales


Crear, administrar y eliminar usuarios y grupos locales y administrar políticas de contraseña locales.

• Describir el propósito de los usuarios y grupos en un sistema Linux.

• Cambiar a la cuenta de superusuario para administrar un sistema Linux y otorgar a otros


usuarios acceso de superusuario a través del comando sudo.

• Crear, modificar y eliminar cuentas de usuario definidas a nivel local.

• Crear, modificar y eliminar cuentas de grupo definidas a nivel local.

• Establecer una política de administración de contraseñas para los usuarios, y bloquear y


desbloquear manualmente las cuentas de los usuarios.

Capítulo 7, Control de acceso a los archivos


Configurar los permisos del sistema de archivos Linux en los archivos e interpretar los efectos de
seguridad de los distintos parámetros de configuración de permisos.

• Enumerar los permisos del sistema de archivos en archivos y directorios, e interpretar el efecto
de esos permisos en el acceso de los usuarios y grupos.

• Cambiar los permisos y la propiedad de los archivos con las herramientas de línea de comandos.

• Controlar los permisos predeterminados de los nuevos archivos creados por los usuarios,
explicar el efecto de los permisos especiales y usar permisos especiales y permisos
predeterminados para configurar el propietario del grupo de archivos creados en un directorio
en particular.

Capítulo 8, Monitoreo y administración de procesos Linux


Evaluar y controlar los procesos que se ejecutan en un sistema Red Hat Enterprise Linux.

• Obtener información sobre los programas que se ejecutan en el sistema para poder determinar
el estado, el uso de los recursos y la propiedad para poder controlarlos.

RH124-RHEL8.2-es-1-20200928 637
capítulo 17 | Revisión completa

• Usar el control de trabajo Bash para gestionar múltiples procesos iniciados desde la misma
sesión de terminal.

• Controlar y finalizar los procesos que no están asociados con su shell y forzar la finalización de
las sesiones y los procesos de los usuarios.

• Describir qué es el promedio de carga y determinar los procesos responsables del alto uso de
recursos en un servidor.

Capítulo 9, Control de servicios y daemons


Controlar y monitorear los servicios de red y los daemons del sistema con Systemd.

• Enumerar daemons del sistema y los servicios de red iniciados por el servicio systemd y las
unidades socket.

• Controlar los daemons del sistema y los servicios de red con systemctl.

Capítulo 10, Configuración y seguridad de SSH


Configurar un servicio seguro de línea de comandos en sistemas remotos con OpenSSH.

• Iniciar sesión en un sistema remoto y ejecutar comandos con ssh.

• Configurar la autenticación basada en claves para que una cuenta de usuario inicie sesión en
sistemas remotos de forma segura y sin una contraseña.

• Restringir los inicios de sesión directos como root y deshabilitar la autenticación basada en
contraseñas para el servicio OpenSSH.

Capítulo 11, Análisis y almacenamiento de registros


Ubicar e interpretar correctamente registros de eventos del sistema para la resolución de
problemas.

• Describir la arquitectura básica de registro que emplea Red Hat Enterprise Linux para registrar
eventos

• Interpretar eventos en archivos syslog relevantes a los fines de resolver problemas o revisar el
estado del sistema

• Buscar e interpretar entradas en el diario del sistema para resolver problemas o revisar el estado
del sistema

• Configurar el diario del sistema para resguardar el registro de eventos cuando se reinicia un
servidor

• Mantener una sincronización de hora precisa por medio de NTP y configurar la zona horaria para
garantizar marcas de tiempo correctas para los eventos registrados por el diario y los registros
del sistema

Capítulo 12, Administración de redes


Configure las interfaces de red y la configuración en servidores Red Hat Enterprise Linux.

• Describir conceptos fundamentales de direccionamiento y enrutamiento de redes para un


servidor

• Probar e inspeccionar la configuración de red actual con las utilidades de la línea de comando

638 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

• Administrar la configuración de red y los dispositivos usando nmcli

• Modificar la configuración de la red mediante la edición de los archivos de configuración

• Configurar el nombre de host estático del servidor y su resolución de nombre, y probar los
resultados

Capítulo 13, Almacenamiento y transferencia de archivos


Almacenar archivos y copiarlos de un sistema a otro.

• Archivar archivos y directorios en un archivo comprimido con tar, y extraer el contenido de una
colección de archivos tar existente.

• Transferir archivos desde o hacia un sistema remoto de forma segura con SSH.

• Sincronizar el contenido de un archivo o directorio local con una copia en un servidor remoto.

Capítulo 14, Instalación y actualización de paquetes de


software
Descargar, instalar, actualizar y gestionar paquetes de software de Red Hat y repositorios de
paquetes Yum.

• Registrar un sistema para su cuenta de Red Hat y asignarle autorizaciones para actualizaciones
de software y servicios de soporte mediante Red Hat Suscription Management.

• Explicar cómo se proporciona el software como paquetes de RPM y revisar los paquetes
instalados en el sistema con Yum y RPM.

• Buscar, instalar y actualizar paquetes de software usando el comando yum.

• Habilitar y deshabilitar el uso de repositorios Yum de terceros o de Red Hat por parte de un
servidor.

• Explicar cómo los módulos permiten la instalación de versiones específicas de software,


enumerar, habilitar y cambiar flujos de módulos, e instalar y actualizar paquetes desde un
módulo.

Capítulo 15, Acceso a los sistemas de archivos de Linux


Acceder, revisar y usar los sistemas de archivos existentes en el almacenamiento conectado a un
servidor Linux.

• Explicar qué es un dispositivo de bloque, interpretar los nombres de archivo de dispositivos de


almacenamiento e identificar el dispositivo de almacenamiento usado por el sistema de archivos
para un directorio o archivo en particular.

• Acceder a los sistemas de archivos conectándolos a un directorio en la jerarquía de sistemas de


archivos.

• Buscar archivos en sistemas de archivos montados con los comandos find y locate.

Capítulo 16, Cómo analizar servidores y obtener soporte


Investigar y resolver problemas en la interfaz de administración web, y obtener soporte de Red Hat
para resolver problemas.

• Activar la interfaz de administración de la consola web para administrar y monitorear de forma


remota el rendimiento de un servidor de Red Hat Enterprise Linux.

RH124-RHEL8.2-es-1-20200928 639
capítulo 17 | Revisión completa

• Describir los recursos clave disponibles en el portal de clientes de Red Hat y encontrar
información en la documentación y la base de conocimientos de Red Hat.

• Analizar los servidores en busca de problemas, corregirlos o resolverlos, y confirmar la solución


con Red Hat Insights.

640 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Trabajo de laboratorio

Administración de archivos desde la línea


de comandos
En esta revisión, administrará los archivos, redirigirá un conjunto específico de líneas de un
archivo de texto a otro archivo y editará los archivos de texto.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar archivos desde la línea de comandos.

• Visualizar un cierto número de líneas de archivos de texto y redirigir la salida a otro archivo.

• Editar archivos de texto.

Andes De Comenzar
Copie los archivos o el trabajo que desee preservar en otros sistemas antes de restablecer el
sistema. Restablezca los sistemas workstation, servera y serverb ahora. Espere a que
los sistemas workstation, servera y serverb se inicien.

Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review1 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review1 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Cree un nuevo directorio denominado /home/student/grading.

• Cree tres archivos vacíos en el directorio /home/student/grading: grade1, grade2 y


grade3.

• Capture las primeras cinco líneas del archivo /home/student/bin/manage-files en


el archivo /home/student/grading/manage-files.txt.

• Anexe las últimas tres líneas de /home/student/bin/manage-files al archivo /


home/student/grading/manage-files.txt. No debe sobrescribir ninguna parte del
texto que ya esté en el archivo /home/student/grading/manage-files.txt.

• Copie /home/student/grading/manage-files.txt en /home/student/


grading/manage-files-copy.txt.

• Edite el archivo /home/student/grading/manage-files-copy.txt para que haya


dos líneas secuenciales de lectura de texto que digan Test JJ (Prueba JJ).

• Edite el archivo /home/student/grading/manage-files-copy.txt de manera que


la línea de texto Test HH (Prueba HH) no exista en el archivo.

RH124-RHEL8.2-es-1-20200928 641
capítulo 17 | Revisión completa

• Edite el archivo /home/student/grading/manage-files-copy.txt para que la


línea A new line (Una nueva línea) esté entre la línea que dice Test BB (Prueba BB) y
la línea que dice Test CC (Prueba CC).

• Cree un enlace duro denominado /home/student/hardlink al archivo /home/


student/grading/grade1. Deberá hacer esto después de crear el archivo vacío /
home/student/grading/grade1, como se especifica anteriormente.

• Cree un enlace blando denominado /home/student/softlink al archivo /home/


student/grading/grade2.

• Guarde la salida de un comando que enumera el contenido del directorio /boot en el


archivo /home/student/grading/longlisting.txt. La salida debe ser un “listado
largo” que incluye permisos de archivo, propietario y propietario del grupo, tamaño y fecha
de modificación de cada archivo.

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review1 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review1 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review1 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review1 finish

Con esto concluye la revisión completa.

642 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Solución

Administración de archivos desde la línea


de comandos
En esta revisión, administrará los archivos, redirigirá un conjunto específico de líneas de un
archivo de texto a otro archivo y editará los archivos de texto.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar archivos desde la línea de comandos.

• Visualizar un cierto número de líneas de archivos de texto y redirigir la salida a otro archivo.

• Editar archivos de texto.

Andes De Comenzar
Copie los archivos o el trabajo que desee preservar en otros sistemas antes de restablecer el
sistema. Restablezca los sistemas workstation, servera y serverb ahora. Espere a que
los sistemas workstation, servera y serverb se inicien.

Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review1 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review1 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Cree un nuevo directorio denominado /home/student/grading.

• Cree tres archivos vacíos en el directorio /home/student/grading: grade1, grade2 y


grade3.

• Capture las primeras cinco líneas del archivo /home/student/bin/manage-files en


el archivo /home/student/grading/manage-files.txt.

• Anexe las últimas tres líneas de /home/student/bin/manage-files al archivo /


home/student/grading/manage-files.txt. No debe sobrescribir ninguna parte del
texto que ya esté en el archivo /home/student/grading/manage-files.txt.

• Copie /home/student/grading/manage-files.txt en /home/student/


grading/manage-files-copy.txt.

• Edite el archivo /home/student/grading/manage-files-copy.txt para que haya


dos líneas secuenciales de lectura de texto que digan Test JJ (Prueba JJ).

• Edite el archivo /home/student/grading/manage-files-copy.txt de manera que


la línea de texto Test HH (Prueba HH) no exista en el archivo.

RH124-RHEL8.2-es-1-20200928 643
capítulo 17 | Revisión completa

• Edite el archivo /home/student/grading/manage-files-copy.txt para que la


línea A new line (Una nueva línea) esté entre la línea que dice Test BB (Prueba BB) y
la línea que dice Test CC (Prueba CC).

• Cree un enlace duro denominado /home/student/hardlink al archivo /home/


student/grading/grade1. Deberá hacer esto después de crear el archivo vacío /
home/student/grading/grade1, como se especifica anteriormente.

• Cree un enlace blando denominado /home/student/softlink al archivo /home/


student/grading/grade2.

• Guarde la salida de un comando que enumera el contenido del directorio /boot en el


archivo /home/student/grading/longlisting.txt. La salida debe ser un “listado
largo” que incluye permisos de archivo, propietario y propietario del grupo, tamaño y fecha
de modificación de cada archivo.

1. Cree un nuevo directorio denominado /home/student/grading.

1.1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando mkdir para crear el directorio /home/student/grading.

[student@serverb ~]$ mkdir grading

Cuando ejecutó el comando anterior desde el directorio de inicio del usuario student,
no especificó la ruta absoluta al directorio grading mientras lo creaba.

2. Cree tres archivos vacíos en el directorio /home/student/grading: grade1, grade2 y


grade3.

2.1. Use el comando touch para crear los archivos vacíos denominados grade1, grade2
y grade3 en el directorio /home/student/grading. Aplique la función de shell de
expansión de llaves para crear los tres archivos con un solo comando touch.

[student@serverb ~]$ touch grading/grade{1,2,3}

2.2. Use el comando ls para verificar que los archivos grade1, grade2 y grade3 existan
en el directorio /home/student/grading.

[student@serverb ~]$ ls grading/


grade1 grade2 grade3

3. Capture las primeras cinco líneas del archivo /home/student/bin/manage-files en el


archivo /home/student/grading/manage-files.txt.

3.1. Use el comando head para ver las primeras cinco líneas del archivo /home/student/
bin/manage-files y redirija la salida al archivo /home/student/grading/
manage-files.txt.

644 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

[student@serverb ~]$ head -5 bin/manage-files > grading/manage-files.txt

El comando anterior usa el símbolo simple de redirección (>) para guardar la salida
del comando en /home/student/grading/manage-files.txt para que se
sobrescriba todo el contenido existente en el archivo.

3.2. Verifique que el archivo /home/student/grading/manage-files.txt contenga


el siguiente texto.

Test AA
Test BB
Test CC
Test DD
Test EE

4. Anexe las últimas tres líneas de /home/student/bin/manage-files al archivo /home/


student/grading/manage-files.txt. No debe sobrescribir ninguna parte del texto
que ya esté en el archivo /home/student/grading/manage-files.txt.

4.1. Use el comando tail para ver las primeras tres líneas del archivo /home/student/
bin/manage-files y anexe la salida a /home/student/grading/manage-
files.txt.

[student@serverb ~]$ tail -3 bin/manage-files >> grading/manage-files.txt

El comando anterior usa el símbolo doble de redirección (>>) para anexar la salida a /
home/student/grading/manage-files.txt para que se conserve el contenido
existente del archivo.

4.2. Verifique que el archivo /home/student/grading/manage-files.txt contenga


el siguiente texto.

Test AA
Test BB
Test CC
Test DD
Test EE
Test HH
Test II
Test JJ

5. Copie el archivo /home/student/grading/manage-files.txt en /home/student/


grading/manage-files-copy.txt.

5.1. Use el comando cd para ir al directorio /home/student/grading.

[student@serverb ~]$ cd grading/


[student@serverb grading]$

5.2. Use el comando cp para copiar el archivo /home/student/grading/manage-


files.txt a /home/student/grading/manage-files-copy.txt.

RH124-RHEL8.2-es-1-20200928 645
capítulo 17 | Revisión completa

[student@serverb grading]$ cp manage-files.txt manage-files-copy.txt

5.3. Vuelva al directorio de inicio del usuario student.

[student@serverb grading]$ cd
[student@serverb ~]$

6. Edite el archivo /home/student/grading/manage-files-copy.txt para que haya dos


líneas secuenciales de lectura de texto que digan Test JJ (Prueba JJ).

6.1. Use el editor de texto vim para abrir el archivo /home/student/grading/manage-


files-copy.txt.

[student@serverb ~]$ vim grading/manage-files-copy.txt

6.2. Desde el modo de comandos en vim, desplácese hacia abajo hasta la línea que
contenga la línea de texto Test JJ (Prueba JJ). Presione dos veces la tecla y en el
teclado para copiar la línea de texto y presione la tecla p para pegarla debajo del cursor.
Escriba :wq para guardar los cambios y salir de vim. Verifique que el archivo /home/
student/grading/manage-files-copy.txt contenga el siguiente texto.

Test AA
Test BB
Test CC
Test DD
Test EE
Test HH
Test II
Test JJ
Test JJ

Tenga en cuenta que el contenido anterior incluye dos copias de la línea de texto Test
JJ (Prueba JJ).

7. Edite el archivo /home/student/grading/manage-files-copy.txt de manera que la


línea de texto Test HH (Prueba HH) no exista en el archivo.

7.1. Use el editor de texto vim para abrir el archivo /home/student/grading/manage-


files-copy.txt.

[student@serverb ~]$ vim grading/manage-files-copy.txt

7.2. Desde el modo de comandos en vim, desplácese hacia abajo hasta la línea que
contenga la línea de texto Test HH (Prueba HH). Presione dos veces la tecla d en
el teclado para eliminar la línea de texto. Escriba :wq para guardar los cambios y
salir de vim. Verifique que el archivo /home/student/grading/manage-files-
copy.txt contenga el siguiente texto.

646 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Test AA
Test BB
Test CC
Test DD
Test EE
Test II
Test JJ
Test JJ

Tenga en cuenta que el contenido anterior no incluye la línea de texto Test HH


(Prueba HH).

8. Edite el archivo /home/student/grading/manage-files-copy.txt para que la linea


A new line (Una nueva linea) se ubique entre la línea que dice Test BB (Prueba BB) y la
línea que dice Test CC (Prueba CC).

8.1. Use el editor de texto vim para abrir el archivo /home/student/grading/manage-


files-copy.txt.

[student@serverb ~]$ vim grading/manage-files-copy.txt

8.2. Desde el modo de comandos en vim, desplácese hacia abajo hasta la línea que
contenga la línea de texto Test CC (Prueba CC). Presione la tecla i en el teclado para
cambiar al modo de inserción mientras mantiene el cursor al principio de la línea de
texto Test CC (Prueba CC). En el modo de inserción, presione la tecla Intro en el
teclado para crear una línea en blanco sobre el cursor. Use la flecha hacia arriba para ir
a la línea en blanco y cree la línea de texto A new line (Una nueva linea). Presione la
tecla Esc en el teclado para volver al modo de comandos. Escriba :wq para guardar los
cambios y salir de vim. Verifique que el archivo /home/student/grading/manage-
files-copy.txt contenga el siguiente texto.

Test AA
Test BB
A new line
Test CC
Test DD
Test EE
Test II
Test JJ
Test JJ

Tenga en cuenta que el contenido anterior incluye la línea de texto A new line (Una
nueva línea).

9. Cree un enlace duro denominado /home/student/hardlink al archivo /home/student/


grading/grade1.

9.1. Use el comando ln para crear el enlace duro denominado /home/student/


hardlink al archivo /home/student/grading/grade1. Deberá hacer esto
después de crear el archivo vacío /home/student/grading/grade1, como se
especifica anteriormente.

[student@serverb ~]$ ln grading/grade1 hardlink

RH124-RHEL8.2-es-1-20200928 647
capítulo 17 | Revisión completa

9.2. Use el comando ls -l para ver el conteo de enlaces del archivo /home/student/
grading/grade1.

[student@serverb ~]$ ls -l grading/grade1


-rw-rw-r--. 2 student student 0 Mar 6 16:45 grading/grade1

10. Cree un enlace blando denominado /home/student/softlink al archivo /home/


student/grading/grade2.

10.1. Use el comando ln -s para crear el enlace blando denominado /home/student/


softlink al archivo /home/student/grading/grade2.

[student@serverb ~]$ ln -s grading/grade2 softlink

10.2. Use el comando ls -l para ver las propiedades del enlace blando /home/student/
softlink.

[student@serverb ~]$ ls -l softlink


lrwxrwxrwx. 1 student student 14 Mar 6 17:58 softlink -> grading/grade2

11. Guarde la salida de un comando que enumera el contenido del directorio /boot en el archivo
/home/student/grading/longlisting.txt. La salida debe ser un “listado largo”
que incluye permisos de archivo, propietario y propietario del grupo, tamaño y fecha de
modificación de cada archivo.

11.1. Use el comando ls -l para ver el contenido del directorio /boot en el formato
de “listado largo” y redirija la salida al archivo /home/student/grading/
longlisting.txt.

[student@serverb ~]$ ls -l /boot > grading/longlisting.txt

11.2. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review1 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review1 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review1 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review1 finish

648 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Con esto concluye la revisión completa.

RH124-RHEL8.2-es-1-20200928 649
capítulo 17 | Revisión completa

Trabajo de laboratorio

Administración de usuarios y grupos,


permisos y procesos
En esta revisión, administrará cuentas de usuarios y grupos, establecerá permisos en
archivos y directorios, y administrará procesos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar usuarios y grupos.

• Establecer permisos en archivos y directorios.

• Eliminar procesos que consuman demasiados recursos de CPU.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review2 start para iniciar la revisión


completa. Este script ejecuta un proceso que consume la cantidad máxima de recursos de
CPU y crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review2 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Cierre el proceso que actualmente usa la mayor cantidad de tiempo de CPU.

• Cree un grupo nuevo denominado database que tenga el GID 50000.

• Cree un nuevo usuario denominado dbuser1 que use el grupo database como uno de
sus grupos secundarios. La contraseña inicial de dbuser1 debe establecerse en redhat.
Configure el usuario dbuser1 para forzar un cambio de contraseña en su primer inicio de
sesión. El usuario dbuser1 debe ser capaz de cambiar su contraseña después de 10 días
desde el día del cambio de contraseña. La contraseña de dbuser1 debe vencer a los 30
días del último día del cambio de contraseña.

• Configure el usuario dbuser1 para que use sudo para ejecutar cualquier comando como
el superusuario.

• Configure el usuario dbuser1 con un valor predeterminado de unmask de 007.

• Los permisos de /home/student/grading/review2 deben permitir que los miembros


del grupo database y el usuario student accedan al directorio y crear contenido en él.
Todos los demás usuarios deben tener permisos de lectura y ejecución en el directorio.
Además, asegúrese de que los usuarios solo tengan permitido eliminar archivos de los que
son propietarios en /home/student/grading/review2 y no puedan eliminar archivos
pertenecientes a otros.

650 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review2 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review2 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review2 finish para completar la revisión
completa. Este script cierra el proceso y elimina los archivos y directorios creados durante el inicio
de la revisión completa, y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review2 finish

Con esto concluye la revisión completa.

RH124-RHEL8.2-es-1-20200928 651
capítulo 17 | Revisión completa

Solución

Administración de usuarios y grupos,


permisos y procesos
En esta revisión, administrará cuentas de usuarios y grupos, establecerá permisos en
archivos y directorios, y administrará procesos.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Administrar usuarios y grupos.

• Establecer permisos en archivos y directorios.

• Eliminar procesos que consuman demasiados recursos de CPU.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review2 start para iniciar la revisión


completa. Este script ejecuta un proceso que consume la cantidad máxima de recursos de
CPU y crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review2 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Cierre el proceso que actualmente usa la mayor cantidad de tiempo de CPU.

• Cree un grupo nuevo denominado database que tenga el GID 50000.

• Cree un nuevo usuario denominado dbuser1 que use el grupo database como uno de
sus grupos secundarios. La contraseña inicial de dbuser1 debe establecerse en redhat.
Configure el usuario dbuser1 para forzar un cambio de contraseña en su primer inicio de
sesión. El usuario dbuser1 debe ser capaz de cambiar su contraseña después de 10 días
desde el día del cambio de contraseña. La contraseña de dbuser1 debe vencer a los 30
días del último día del cambio de contraseña.

• Configure el usuario dbuser1 para que use sudo para ejecutar cualquier comando como
el superusuario.

• Configure el usuario dbuser1 con un valor predeterminado de unmask de 007.

• Los permisos de /home/student/grading/review2 deben permitir que los miembros


del grupo database y el usuario student accedan al directorio y crear contenido en él.
Todos los demás usuarios deben tener permisos de lectura y ejecución en el directorio.
Además, asegúrese de que los usuarios solo tengan permitido eliminar archivos de los que
son propietarios en /home/student/grading/review2 y no puedan eliminar archivos
pertenecientes a otros.

652 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

1. Cierre el proceso que actualmente usa la mayor cantidad de tiempo de CPU.

1.1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando top para ver el estado del sistema en tiempo real.

[student@serverb ~]$ top

1.3. Desde la interfaz interactiva de top, preste atención a la columna %CPU y confirme que
haya un proceso denominado dd que consume la mayoría de los recursos de CPU.

...output omitted...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2303 student 20 0 217048 944 876 R 99.7 0.1 100:11.64 dd
...output omitted...

Observe el proceso dd con el PID 2303 en la salida anterior, que consume la mayoría
de los recursos de CPU, un 99,7 %. El PID y el porcentaje de consumo de recursos de
CPU pueden variar en su sistema.

1.4. Desde la interfaz interactiva de top, escriba k para cerrar el proceso dd con PID 2303,
según lo determinado en el paso anterior. Si el PID predeterminado que se muestra
en el prompt coincide con el del proceso que consume la mayoría de los recursos de
CPU, presione la tecla Intro en el teclado. Si no coincide, especifique el PID de forma
interactiva.

...output omitted...
PID to signal/kill [default pid = 2303] Enter
...output omitted...

1.5. Use la señal predeterminada SIGTERM para cerrar el proceso.

...output omitted...
Send pid 2833 signal [15/sigterm] Enter
...output omitted...

1.6. Desde la interfaz interactiva, presione la tecla q en el teclado para salir de top.

2. Cree un grupo nuevo denominado database con el GID 50000.

2.1. Cambie al usuario root.

[student@serverb ~]$ sudo su -


[sudo] password for student: student
[root@serverb ~]#

2.2. Use el comando groupadd para crear un grupo nuevo denominado database con el
GID 50000.

RH124-RHEL8.2-es-1-20200928 653
capítulo 17 | Revisión completa

[root@serverb ~]# groupadd -g 50000 database

3. Cree un nuevo usuario denominado dbuser1 con el grupo database como uno de sus
grupos secundarios. Establezca la contraseña inicial de dbuser1 en redhat. Configure
el usuario dbuser1 para forzar un cambio de contraseña en su primer inicio de sesión. El
usuario dbuser1 debe ser capaz de cambiar su contraseña después de 10 días del último
cambio de contraseña. La contraseña de dbuser1 debe vencer a los 30 días del último día
del cambio de contraseña.

3.1. Use el comando useradd para crear un nuevo usuario denominado dbuser1 que use
el grupo database como uno de sus grupos secundarios.

[root@serverb ~]# useradd -G database dbuser1

3.2. Use el comando passwd para establecer la contraseña de dbuser1 en redhat.

[root@serverb ~]# passwd dbuser1


Changing password for user dbuser1.
New password: redhat
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: redhat
passwd: all authentication tokens updated successfully.

3.3. Use el comando chage para forzar a dbuser1 a que cambie de contraseña en el
primer inicio de sesión.

[root@serverb ~]# chage -d 0 dbuser1

3.4. Use el comando chage para establecer la antigüedad mínima de la contraseña de


dbuser1 en 10 días.

[root@serverb ~]# chage -m 10 dbuser1

3.5. Use el comando chage para establecer la antigüedad máxima de la contraseña de


dbuser1 en 30 días.

[root@serverb ~]# chage -M 30 dbuser1

4. Cree el archivo /etc/sudoers.d/dbuser1 para configurar dbuser1 de manera que el


usuario pueda usar sudo para ejecutar cualquier comando como el superusuario. Puede usar
el comando vim /etc/sudoers.d/dbuser1 para crear el archivo. /etc/sudoers.d/
dbuser1 debe contener el siguiente contenido.

4.1.

dbuser1 ALL=(ALL) ALL

5. Configure el usuario dbuser1 con un valor predeterminado de unmask de 007.

5.1. Cambie al usuario dbuser1.

654 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

[root@serverb ~]# su - dbuser1


[dbuser1@serverb ~]$

5.2. Anexe la linea umask 007 a los archivos /home/dbuser1/.bash_profile y /


home/dbuser1/.bashrc.

[dbuser1@serverb ~]$ echo "umask 007" >> .bash_profile


[dbuser1@serverb ~]$ echo "umask 007" >> .bashrc

5.3. Salga de la shell del usuario dbuser1.

[dbuser1@serverb ~]$ exit


logout
[root@serverb ~]#

6. Cree un directorio nuevo denominado /home/student/grading/review2 con student


y database como su usuario propietario y su grupo, respectivamente. Configure los
permisos de ese directorio para que todos sus archivos hereden database como su
grupo propietario, independientemente del usuario que los cree. Los permisos de /home/
student/grading/review2 deben permitir que los miembros del grupo database y el
usuario student accedan al directorio y crear contenido en él. Todos los demás usuarios
deben tener permisos de lectura y ejecución en el directorio. Además, asegúrese de que
los usuarios solo tengan permitido eliminar archivos de los que son propietarios en /home/
student/grading/review2 y no puedan eliminar los archivos de otros.

6.1. Use el comando mkdir para crear /home/student/grading/review2.

[root@serverb ~]# mkdir /home/student/grading/review2

6.2. En el archivo /home/student/grading/review2, use el comando chown


para establecer student y database como el usuario propietario y el grupo,
respectivamente.

[root@serverb ~]# chown student:database /home/student/grading/review2

6.3. Use el comando chmod para aplicar el permiso especial SetGID en /home/student/
grading/review2.

[root@serverb ~]# chmod g+s /home/student/grading/review2

6.4. Use el comando chmod para aplicar el modo de permiso 775 en /home/student/
grading/review2.

[root@serverb ~]# chmod 775 /home/student/grading/review2

6.5. Use el comando chmod para aplicar el permiso especial stickybit en /home/student/
grading/review2.

[root@serverb ~]# chmod o+t /home/student/grading/review2

RH124-RHEL8.2-es-1-20200928 655
capítulo 17 | Revisión completa

6.6. Salga de la shell del usuario root.

[root@serverb ~]# exit


logout
[student@serverb ~]$

6.7. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review2 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review2 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review2 finish para completar la revisión
completa. Este script cierra el proceso y elimina los archivos y directorios creados durante el inicio
de la revisión completa, y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review2 finish

Con esto concluye la revisión completa.

656 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Trabajo de laboratorio

Configuración y administración de un
servidor
En esta revisión, configurará, protegerá y usará el servicio SSH para acceder a la máquina
remota, configurar el servicio rsyslog, archivar archivos locales, transferir archivos locales a
una máquina remota y administrar paquetes con yum.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear un nuevo par de claves SSH.

• Deshabilitar los inicios de sesión de SSH como el usuario root.

• Deshabilitar los inicios de sesión de SSH con la contraseña.

• Actualizar la zona horaria de un servidor.

• Instalar paquetes y módulos de paquetes con yum.

• Archivar archivos locales para copia de seguridad.

• Transferir archivos locales a la máquina remota.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review3 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review3 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Genere claves de SSH para el usuario student en serverb. No proteja la clave privada
con una frase de contraseña. Los archivos de clave privada y pública deben denominarse
/home/student/.ssh/review3_key y /home/student/.ssh/review3_key.pub,
respectivamente.

• En servera, configure el usuario student para aceptar inicios de sesión autenticados


por el par de claves SSH que creó para el usuario student en serverb. El usuario
student en serverb debe ser capaz de iniciar sesión en servera con SSH sin ingresar
una contraseña.

• En serverb, configure el servicio sshd para evitar que los usuarios inicien sesión como
root por SSH.

• En serverb, configure el servicio sshd para evitar que los usuarios usen su contraseña
para iniciar sesión. Los usuarios aún deben ser capaces de autenticar los inicios de sesión
con un par de claves SSH.

RH124-RHEL8.2-es-1-20200928 657
capítulo 17 | Revisión completa

• Cree una colección de archivos tar denominada /tmp/log.tar con el contenido de /


var/log en serverb. Transfiera remotamente la colección de archivos tar al directorio /
tmp en servera; para la autenticación, use el usuario student y la clave privada del par
de claves SSH del usuario student.

• Configure el servicio rsyslog en serverb para que registre en el archivo /var/log/


grading-debug todos los mensajes que reciba con el nivel de prioridad de debug
(depurar) o superior. Esta configuración se debe establecer en un archivo /etc/
rsyslog.d/grading-debug.conf, que debe crear.

• Instale el paquete zsh, disponible en el repositorio de BaseOS, en serverb.

• Habilite el flujo de módulo predeterminado para el módulo python36 e instale todos los
paquetes provistos por ese flujo en serverb.

• Establezca la zona horaria de serverb en Asia/Kolkata.

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review3 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review3 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review3 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review3 finish

Con esto concluye la revisión completa.

658 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Solución

Configuración y administración de un
servidor
En esta revisión, configurará, protegerá y usará el servicio SSH para acceder a la máquina
remota, configurar el servicio rsyslog, archivar archivos locales, transferir archivos locales a
una máquina remota y administrar paquetes con yum.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Crear un nuevo par de claves SSH.

• Deshabilitar los inicios de sesión de SSH como el usuario root.

• Deshabilitar los inicios de sesión de SSH con la contraseña.

• Actualizar la zona horaria de un servidor.

• Instalar paquetes y módulos de paquetes con yum.

• Archivar archivos locales para copia de seguridad.

• Transferir archivos locales a la máquina remota.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review3 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review3 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• Genere claves de SSH para el usuario student en serverb. No proteja la clave privada
con una frase de contraseña. Los archivos de clave privada y pública deben denominarse
/home/student/.ssh/review3_key y /home/student/.ssh/review3_key.pub,
respectivamente.

• En servera, configure el usuario student para aceptar inicios de sesión autenticados


por el par de claves SSH que creó para el usuario student en serverb. El usuario
student en serverb debe ser capaz de iniciar sesión en servera con SSH sin ingresar
una contraseña.

• En serverb, configure el servicio sshd para evitar que los usuarios inicien sesión como
root por SSH.

• En serverb, configure el servicio sshd para evitar que los usuarios usen su contraseña
para iniciar sesión. Los usuarios aún deben ser capaces de autenticar los inicios de sesión
con un par de claves SSH.

RH124-RHEL8.2-es-1-20200928 659
capítulo 17 | Revisión completa

• Cree una colección de archivos tar denominada /tmp/log.tar con el contenido de /


var/log en serverb. Transfiera remotamente la colección de archivos tar al directorio /
tmp en servera; para la autenticación, use el usuario student y la clave privada del par
de claves SSH del usuario student.

• Configure el servicio rsyslog en serverb para que registre en el archivo /var/log/


grading-debug todos los mensajes que reciba con el nivel de prioridad de debug
(depurar) o superior. Esta configuración se debe establecer en un archivo /etc/
rsyslog.d/grading-debug.conf, que debe crear.

• Instale el paquete zsh, disponible en el repositorio de BaseOS, en serverb.

• Habilite el flujo de módulo predeterminado para el módulo python36 e instale todos los
paquetes provistos por ese flujo en serverb.

• Establezca la zona horaria de serverb en Asia/Kolkata.

1. Genere claves de SSH para el usuario student en serverb. No proteja la clave privada
con una frase de contraseña. Los archivos de clave privada y pública deben denominarse
/home/student/.ssh/review3_key y /home/student/.ssh/review3_key.pub,
respectivamente.

1.1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando ssh-keygen para generar las claves SSH para el usuario student.

[student@serverb ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/student/.ssh/id_rsa): /home/
student/.ssh/review3_key
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/student/.ssh/review3_key.
Your public key has been saved in /home/student/.ssh/review3_key.pub.
The key fingerprint is:
SHA256:Uqefehw+vRfm94fQZDoz/6IfNYSLK/OpiQ4n6lrKIbY [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| . |
| . . . . |
| . o . = |
| . S . * ..|
| . ...B +..|
|.o . o . =o+ O.o |
|+ = . + ..X o *.o|
| Eoo .o.+.+o=.+=|
+----[SHA256]-----+

660 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

2. En servera, configure el usuario student para aceptar inicios de sesión autenticados por
el par de claves SSH que creó para el usuario student en serverb. El usuario student en
serverb debe ser capaz de iniciar sesión en servera con SSH sin ingresar una contraseña.

2.1. Use el comando ssh-copy-id para exportar la clave pública /home/


student/.ssh/review3_key.pub de servera a serverb.

[student@serverb ~]$ ssh-copy-id -i .ssh/review3_key.pub student@servera


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/review3.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
student@servera's password: student

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'student@servera'"


and check to make sure that only the key(s) you wanted were added.

2.2. Use el comando ssh para confirmar que puede iniciar sesión en servera desde
serverb como student con la clave privada SSH /home/student/.ssh/
review3_key sin que se le solicite la contraseña.

[student@serverb ~]$ ssh -i .ssh/review3_key student@servera


...output omitted...
[student@servera ~]$

2.3. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@serverb ~]$

3. En serverb, configure el servicio sshd para evitar que los usuarios inicien sesión como
root con SSH.

3.1. Establezca el parámetro PermitRootLogin en no en el archivo /etc/ssh/


sshd_config. Puede usar el comando sudo vim /etc/ssh/sshd_config para
editar el archivo de configuración.

3.2. Recargue el servicio sshd.

[student@serverb ~]$ sudo systemctl reload sshd.service

4. En serverb, configure el servicio sshd para evitar que los usuarios usen su contraseña para
iniciar sesión. Los usuarios aún deben ser capaces de autenticar los inicios de sesión con su
clave privada del par de claves SSH.

4.1. Establezca el parámetro PasswordAuthentication en no en el archivo /etc/ssh/


sshd_config. Puede usar el comando sudo vim /etc/ssh/sshd_config para
editar el archivo de configuración.

RH124-RHEL8.2-es-1-20200928 661
capítulo 17 | Revisión completa

4.2. Use el comando sudo systemctl para recargar el servicio sshd.

[student@serverb ~]$ sudo systemctl reload sshd.service

5. Cree una colección de archivos tar denominada /tmp/log.tar con el contenido de /


var/log en serverb. Transfiera remotamente la colección de archivos tar al directorio /
tmp en servera; para la autenticación, use el usuario student y la clave privada /home/
student/.ssh/review3_key del par de claves SSH del usuario student.

5.1. Use el comando sudo tar para crear una colección de archivos denominada /tmp/
log.tar con el contenido de /var/log como el superusuario.

[student@serverb ~]$ sudo tar -cvf /tmp/log.tar /var/log


[sudo] password for student: student
...output omitted...

5.2. Use el comando scp para transferir remotamente el archivo de almacenamiento /


tmp/log.tar al directorio /tmp en servera. Especifique /home/student/.ssh/
review3_key como la clave privada del par de claves SSH.

[student@serverb ~]$ scp -i .ssh/review3_key /tmp/log.tar student@servera:/tmp


log.tar 100% 14MB 57.4MB/s 00:00

6. Configure el servicio rsyslog en serverb para que registre en el archivo /var/log/


grading-debug todos los mensajes que reciba con el nivel de prioridad de debug (depurar)
o superior. Esta configuración se debe establecer en un archivo /etc/rsyslog.d/
grading-debug.conf, que debe crear.

6.1. Cree el archivo /etc/rsyslog.d/grading-debug.conf con el siguiente


contenido. Puede usar el comando sudo vim /etc/rsyslog.d/grading-
debug.conf para crear el archivo.

*.debug /var/log/grading-debug

6.2. Use el comando sudo systemctl para reiniciar el servicio rsyslog.

[student@serverb ~]$ sudo systemctl restart rsyslog.service

6.3. Use el comando logger para generar el mensaje de registro Debug Testing
(Pruebas de depuración) con la prioridad debug.

[student@serverb ~]$ logger -p debug Debug Testing

6.4. Confirme que el mensaje de registro Debug Testing se guarde en el archivo /var/
log/grading-debug.

[student@serverb ~]$ sudo tail /var/log/grading-debug


...output omitted...
Mar 12 09:55:23 serverb student[32383]: Debug Testing

7. Use el comando sudo yum para instalar el paquete zsh, disponible en el repositorio de
BaseOS, en serverb.

662 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

7.1.

[student@serverb ~]$ sudo yum install zsh


...output omitted...
Is this ok [y/N]: y
...output omitted...
Installed:
zsh-5.5.1-6.el8.x86_64
Complete!

8. Use el comando yum para habilitar el flujo de módulo predeterminado para el módulo
python36 e instale todos los paquetes provistos por ese flujo en serverb.

8.1.

[student@serverb ~]$ sudo yum module install python36


...output omitted...
Is this ok [y/N]: y
...output omitted...
Installed:
python36-3.6.6-18.module+el8+2339+1a6691f8.x86_64 python3-
pip-9.0.3-13.el8.noarch

Complete!

9. Establezca la zona horaria de serverb en Asia/Kolkata.

9.1. Use el comando sudo timedatectl para establecer la zona horaria de serverb en
Asia/Kolkata.

[student@serverb ~]$ sudo timedatectl set-timezone Asia/Kolkata

9.2. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review3 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review3 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review3 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

RH124-RHEL8.2-es-1-20200928 663
capítulo 17 | Revisión completa

[student@workstation ~]$ lab rhcsa-rh124-review3 finish

Con esto concluye la revisión completa.

664 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Trabajo de laboratorio

Administración de redes
En esta revisión, configurará y probará la conectividad de red.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Configurar los ajustes de red.

• Probar la conectividad de red.

• Establecer un nombre de host estático para el sistema.

• Usar nombres de host canónicos que se puedan resolver localmente para conectarse a los
sistemas.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review4 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review4 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

Advertencia
Es una práctica útil realizar cambios en la red desde la consola del servidor,
ya sea localmente o a través del hardware de acceso a la consola remota.
Cuando usa ssh para ajustar la configuración de red, un comando erróneo
puede bloquear o bloquear su sesión. Las correcciones de configuración de la
red se deben hacer a través de la consola.

En la página web que controla su entorno de laboratorio, haga clic en el botón


OPEN CONSOLE para serverb. Se abrirá una pestaña en su navegador con
la sesión de consola para serverb. Inicie sesión como el usuario student en
el prompt.

• Determine el nombre de la interfaz Ethernet y su perfil de conexión activa en serverb.

• En serverb, cree un nuevo perfil de conexión llamado static para la interfaz Ethernet
disponible que establece de forma estática la configuración de red y no usa DHCP. Use la
configuración en la siguiente tabla.

Dirección IPv4 172.25.250.111

Máscara de red 255.255.255.0

RH124-RHEL8.2-es-1-20200928 665
capítulo 17 | Revisión completa

Puerta de enlace 172.25.250.254

Servidor DNS 172.25.250.254

Configure la interfaz Ethernet del servidor para usar la configuración de red actualizada
que se muestra en la tabla anterior.

• Asegúrese de que el nombre de host de serverb esté configurado estáticamente en


server-review4. lab4.example.com.

• En serverb, establezca client-review4 como el nombre de host canónico para la


dirección IPv4 172.25.250.10 del host servera.lab.example.com.

• Configure la dirección IPv4 adicional 172.25.250.211 con la máscara de red


255.255.255.0 en la misma interfaz de serverb que tiene la configuración de red
estática existente. No elimine la dirección IPv4 existente. Asegúrese de que serverb
responda a todas las direcciones cuando la conexión que está configurada estáticamente
en su interfaz está activa.

• En serverb, restaure la configuración de red original activando la conexión de red original


y desactivando la conexión de red static que creó manualmente.

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review4 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review4 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review4 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review4 finish

Con esto concluye la revisión completa.

666 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Solución

Administración de redes
En esta revisión, configurará y probará la conectividad de red.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Configurar los ajustes de red.

• Probar la conectividad de red.

• Establecer un nombre de host estático para el sistema.

• Usar nombres de host canónicos que se puedan resolver localmente para conectarse a los
sistemas.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review4 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-rh124-review4 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

Advertencia
Es una práctica útil realizar cambios en la red desde la consola del servidor,
ya sea localmente o a través del hardware de acceso a la consola remota.
Cuando usa ssh para ajustar la configuración de red, un comando erróneo
puede bloquear o bloquear su sesión. Las correcciones de configuración de la
red se deben hacer a través de la consola.

En la página web que controla su entorno de laboratorio, haga clic en el botón


OPEN CONSOLE para serverb. Se abrirá una pestaña en su navegador con
la sesión de consola para serverb. Inicie sesión como el usuario student en
el prompt.

• Determine el nombre de la interfaz Ethernet y su perfil de conexión activa en serverb.

• En serverb, cree un nuevo perfil de conexión llamado static para la interfaz Ethernet
disponible que establece de forma estática la configuración de red y no usa DHCP. Use la
configuración en la siguiente tabla.

Dirección IPv4 172.25.250.111

Máscara de red 255.255.255.0

RH124-RHEL8.2-es-1-20200928 667
capítulo 17 | Revisión completa

Puerta de enlace 172.25.250.254

Servidor DNS 172.25.250.254

Configure la interfaz Ethernet del servidor para usar la configuración de red actualizada
que se muestra en la tabla anterior.

• Asegúrese de que el nombre de host de serverb esté configurado estáticamente en


server-review4. lab4.example.com.

• En serverb, establezca client-review4 como el nombre de host canónico para la


dirección IPv4 172.25.250.10 del host servera.lab.example.com.

• Configure la dirección IPv4 adicional 172.25.250.211 con la máscara de red


255.255.255.0 en la misma interfaz de serverb que tiene la configuración de red
estática existente. No elimine la dirección IPv4 existente. Asegúrese de que serverb
responda a todas las direcciones cuando la conexión que está configurada estáticamente
en su interfaz está activa.

• En serverb, restaure la configuración de red original activando la conexión de red original


y desactivando la conexión de red static que creó manualmente.

1. Use la consola para iniciar sesión como student en serverb localmente.

1.1. En la página web que controla su entorno de laboratorio, haga clic en el botón OPEN
CONSOLE para serverb. Se abrirá una pestaña en su navegador con la sesión de
consola para serverb. Inicie sesión como el usuario student en el prompt.
Es una práctica útil realizar cambios en la red desde la consola del servidor, ya sea
localmente o a través del hardware de acceso a la consola remota. Cuando usa ssh
para ajustar la configuración de red, un comando erróneo puede bloquear o bloquear
su sesión. Las correcciones de configuración de la red se deben hacer a través de la
consola.

2. Determine el nombre de la interfaz Ethernet en serverb y el nombre del perfil de la


conexión que utiliza.

2.1. En este ejemplo, enX es el nombre de la interfaz de Ethernet. El nombre del perfil de
conexión es Wired connection 1 (Conexión por cable 1). Cree el perfil de conexión
static (estático) para esta conexión.

2.2. Los nombres de la interfaz de red y del perfil de conexión inicial pueden diferir en su
serverb. Utilice el nombre que se muestra en su sistema para reemplazar el nombre
del marcador de posición enX en los pasos de esta solución.

3. En serverb, cree un nuevo perfil de conexión llamado static (estático) para la interfaz
Ethernet disponible. Establezca la configuración de red de forma estática para que no use
DHCP. Base la configuración en la siguiente tabla:

668 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

Dirección IPv4 172.25.250.111

Máscara de red 255.255.255.0

Puerta de enlace 172.25.250.254

Servidor DNS 172.25.250.254

La interfaz Ethernet del servidor serverb debe usar la configuración de red actualizada,
como se menciona en la tabla anterior.

3.1. Use nmcli para crear la conexión static (estático) con la configuración de red dada.

[student@serverb ~]$ sudo nmcli connection add con-name static type ethernet \
ifname enX ipv4.addresses '172.25.250.111/24' ipv4.gateway '172.25.250.254' \
ipv4.dns '172.25.250.254' ipv4.method manual
[sudo] password for student: student
Connection 'static' (ac8620e6-b77e-499f-9931-118b8b015807) successfully added.

3.2. Use el comando nmcli para activar la nueva configuración de conexión.

[student@serverb ~]$ sudo nmcli connection up static

4. Utilice el comando hostnamectl para establecer el nombre del host serverb en server-
review4.lab4.example.com. Verifique el nuevo nombre de host.

4.1.

[student@serverb ~]$ sudo hostnamectl set-hostname server-review4.lab4.example.com


[sudo] password for student: student
[student@serverb ~]$ hostname
server-review4.lab4.example.com

5. En serverb, edite el archivo /etc/hosts para establecer client-review4


como el nombre de host canónico para la dirección IPv4 172.25.250.10 del host
servera.lab.example.com.

5.1. Edite el archivo /etc/hosts para agregar client-review4 como un nombre para la
dirección IPv4 172.25.250.10.

172.25.250.10 servera.lab.example.com servera client-review4

5.2. Use el comando ping para verificar que pueda conectarse a 172.25.250.10 con el
nombre de host canónico client-review4.

RH124-RHEL8.2-es-1-20200928 669
capítulo 17 | Revisión completa

[student@serverb ~]$ ping -c2 client-review4


PING servera.lab.example.com (172.25.250.10) 56(84) bytes of data.
64 bytes from servera.lab.example.com (172.25.250.10): icmp_seq=1 ttl=64
time=0.259 ms
64 bytes from servera.lab.example.com (172.25.250.10): icmp_seq=2 ttl=64
time=0.391 ms

--- servera.lab.example.com ping statistics ---


2 packets transmitted, 2 received, 0% packet loss, time 33ms
rtt min/avg/max/mdev = 0.259/0.325/0.391/0.066 ms

6. Modifique el perfil de conexión static (estático) para configurar la dirección IPv4 adicional
172.25.250.211 con la máscara de red 255.255.255.0 en la misma interfaz de serverb
que tiene la configuración de red estática existente. No elimine la dirección IPv4 existente.
Verifique que serverb responde a todas las direcciones cuando el perfil de conexión
modificado está activo.

6.1. Use el comando nmcli para agregar la nueva dirección IP.

[student@serverb ~]$ sudo nmcli connection modify static \


+ipv4.addresses '172.25.250.211/24'

6.2. Use el comando nmcli para activar la nueva dirección IP.

[student@serverb ~]$ sudo nmcli connection up static


...output omitted...

6.3. Desde workstation, use el comando ping para verificar que se puede acceder a la
dirección IPv4 172.25.250.211.

[student@workstation ~]$ ping -c2 172.25.250.211


PING 172.25.250.211 (172.25.250.211) 56(84) bytes of data.
64 bytes from 172.25.250.211: icmp_seq=1 ttl=64 time=0.246 ms
64 bytes from 172.25.250.211: icmp_seq=2 ttl=64 time=0.296 ms

--- 172.25.250.211 ping statistics ---


2 packets transmitted, 2 received, 0% packet loss, time 50ms
rtt min/avg/max/mdev = 0.246/0.271/0.296/0.025 ms

7. En serverb, restaure la configuración original activando la conexión de red original.

7.1. Regrese a la consola y use el comando nmcli para activar el perfil de red original.

[student@serverb ~]$ sudo nmcli connection up "Wired connection 1"


...output omitted...

El nombre de perfil de conexión inicial podría diferir en su serverb. Reemplace el


nombre que se muestra en esta solución con el nombre de su sistema. Encuentra el
nombre con nmcli connection show .

7.2. Desde workstation, abra una sesión de SSH en serverb como student para
verificar que la configuración de red original se active con éxito.

670 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@server-review4 ~]$

7.3. Cierre sesión en serverb y salga de todos menos un terminal de workstation.

[student@server-review4 ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review4 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review4 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review4 finish para completar la revisión
completa. Este script elimina los archivos y directorios creados durante el inicio de la revisión
completa y garantiza que el entorno de serverb esté limpio.

[student@workstation ~]$ lab rhcsa-rh124-review4 finish

Con esto concluye la revisión completa.

RH124-RHEL8.2-es-1-20200928 671
capítulo 17 | Revisión completa

Trabajo de laboratorio

Montaje de sistemas de archivos y


búsqueda de archivos
En esta revisión, montará un sistema de archivos y localizará archivos según diferentes
criterios.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Montar un sistema de archivos existente.

• Buscar archivos por nombre de archivo, permisos y tamaño.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review5 start para iniciar la revisión


completa. Este script crea el sistema de archivos, las cuentas de usuario y las cuentas de
grupo necesarios.

[student@workstation ~]$ lab rhcsa-rh124-review5 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• En serverb, hay un dispositivo de bloque que contiene el sistema de archivos XFS, pero
aún no está montado. Determine el dispositivo de bloque y móntelo en el directorio /
review5-disk. Cree el directorio /review5-disk, de ser necesario.

• En serverb, ubique el archivo denominado review5-path. Cree un archivo denominado


/review5-disk/review5-path.txt con una sola línea que consiste en la ruta
absoluta al archivo review5.

• En serverb, ubique todos los archivos con contractor1 y contractor como usuario
propietario y grupo, respectivamente. Los archivos también deben tener los permisos
octales de 640. Guarde la lista de estos archivos en /review5-disk/review5-
perms.txt.

• En serverb, busque todos los archivos de 100 bytes de tamaño. Guarde las rutas
absolutas de estos archivos en /review5-disk/review5-size.txt.

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review5 grade para confirmar que
ha realizado correctamente este ejercicio.

672 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

[student@workstation ~]$ lab rhcsa-rh124-review5 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review5 finish para completar la revisión
completa. Este script elimina el sistema de archivos, las cuentas de usuario y las cuentas de grupo
creados durante el inicio de la revisión completa y garantiza que el entorno de serverb esté
limpio.

[student@workstation ~]$ lab rhcsa-rh124-review5 finish

Con esto concluye la revisión completa.

RH124-RHEL8.2-es-1-20200928 673
capítulo 17 | Revisión completa

Solución

Montaje de sistemas de archivos y


búsqueda de archivos
En esta revisión, montará un sistema de archivos y localizará archivos según diferentes
criterios.

Resultados
Usted deberá ser capaz de realizar lo siguiente:

• Montar un sistema de archivos existente.

• Buscar archivos por nombre de archivo, permisos y tamaño.

Andes De Comenzar
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-rh124-review5 start para iniciar la revisión


completa. Este script crea el sistema de archivos, las cuentas de usuario y las cuentas de
grupo necesarios.

[student@workstation ~]$ lab rhcsa-rh124-review5 start

Instrucciones
Realice las siguientes tareas en serverb para completar el ejercicio.

• En serverb, hay un dispositivo de bloque que contiene el sistema de archivos XFS, pero
aún no está montado. Determine el dispositivo de bloque y móntelo en el directorio /
review5-disk. Cree el directorio /review5-disk, de ser necesario.

• En serverb, ubique el archivo denominado review5-path. Cree un archivo denominado


/review5-disk/review5-path.txt con una sola línea que consiste en la ruta
absoluta al archivo review5.

• En serverb, ubique todos los archivos con contractor1 y contractor como usuario
propietario y grupo, respectivamente. Los archivos también deben tener los permisos
octales de 640. Guarde la lista de estos archivos en /review5-disk/review5-
perms.txt.

• En serverb, busque todos los archivos de 100 bytes de tamaño. Guarde las rutas
absolutas de estos archivos en /review5-disk/review5-size.txt.

1. En serverb, monte el dispositivo de bloque inactivo que contiene el sistema de archivos XF


en el directorio /review5-disk.

1.1. Desde workstation, abra una sesión de SSH en serverb como student.

674 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

1.2. Use el comando lsblk -fs para determinar el dispositivo de bloque inactivo que
contiene el sistema de archivos XFS.

[student@serverb ~]$ lsblk -fs


NAME FSTYPE LABEL UUID MOUNTPOINT
...output omitted...
vdb1 xfs 3d97c5ef-23e7-4c1c-a9be-d5c475b3d0d5
└─vdb
...output omitted...

De la salida anterior, tenga en cuenta que el dispositivo de bloque vdb1 contiene el


sistema de archivos XFS, que no está montado en ningún directorio.

1.3. Use el comando sudo mkdir para crear el directorio /review5-disk como
superusuario. Cuando el comando sudo le solicite una contraseña, use la contraseña
student.

[student@serverb ~]$ sudo mkdir /review5-disk


[sudo] password for student: student

1.4. Use el comando sudo mount para montar el dispositivo de bloque vdb1 en el
directorio /review5-disk como superusuario.

[student@serverb ~]$ sudo mount /dev/vdb1 /review5-disk

1.5. Verifique que el dispositivo de bloque vdb1 esté montado correctamente en el


directorio /review5-disk.

[student@serverb ~]$ df -Th


Filesystem Type Size Used Avail Use% Mounted on
...output omitted...
/dev/vdb1 xfs 2.0G 47M 2.0G 3% /review5-disk
...output omitted...

2. En serverb, ubique el archivo denominado review5-path. Registre su ruta absoluta en el


archivo de texto /review5-disk/review5-path.txt.

2.1. Use el comando find para ubicar el archivo denominado review5-path. Redirija
todos los errores del comando find a /dev/null. Esta redirección le permite
descartar cualquier error de la salida del comando find.

[student@serverb ~]$ find / -iname review5-path 2>/dev/null


/var/tmp/review5-path

Observe la ruta absoluta al archivo review5-path de la salida anterior.

2.2. Cree el archivo de texto /review5-disk/review5-path.txt. Registre la ruta


absoluta al archivo review5-path, como se determinó en el paso anterior, en el

RH124-RHEL8.2-es-1-20200928 675
capítulo 17 | Revisión completa

archivo de texto /review5-disk/review5-path.txt. Puede usar el comando


sudo vim /review5-disk/review5-path.txt para crear el archivo de texto.
Escriba :wq! desde el modo de comando en vim para guardar los cambios y salir del
archivo. En la siguiente salida, se muestra el contenido del archivo de texto /review5-
disk/review5-path.txt.

/var/tmp/review5-path

3. En serverb, ubique todos los archivos con contractor1 y contractor como usuario
propietario y grupo, respectivamente. Los archivos también deben tener los permisos octales
de 640. Registre las rutas absolutas a todos estos archivos en el archivo de texto /review5-
disk/review5-perms.txt.

3.1. Use las opciones -user, -group, -perm con el comando find para localizar todos los
archivos que tienen el usuario propietario, el grupo propietario y los permisos octales
de contractor1, contractor y 640, respectivamente. Redirija todos los errores del
comando find a /dev/null.

[student@serverb ~]$ find / -user contractor1 \


-group contractor \
-perm 640 2>/dev/null
/usr/share/review5-perms

Observe la ruta absoluta al archivo review5-perms de la salida anterior. El archivo /


usr/share/review5-perms es el único que cumple los criterios del comando find
anterior.

3.2. Cree el archivo de texto /review5-disk/review5-perms.txt. Registre en el


archivo de texto /review5-disk/review5-perms.txt la ruta absoluta al único
archivo (review5-perms) que tiene el usuario propietario, el grupo propietario y
los permisos octales contractor1, contractor y 640, respectivamente, según
lo determinado en el paso anterior. Puede usar el comando sudo vim /review5-
disk/review5-perms.txt para crear el archivo de texto. Escriba :wq! desde el
modo de comando en vim para guardar los cambios y salir del archivo. En la siguiente
salida, se muestra el contenido del archivo de texto /review5-disk/review5-
perms.txt.

/usr/share/review5-perms

4. En serverb, busque todos los archivos de 100 bytes de tamaño. Registre las rutas absolutas
a todos estos archivos en /review5-disk/review5-size.txt.

4.1. Use la opción -size con el comando find para ubicar todos los archivos que sean de
100 bytes de tamaño. Redirija todos los errores del comando find a /dev/null.

[student@serverb ~]$ find / -size 100c 2>/dev/null


/dev/disk
/run/initramfs
/etc/lvm
/etc/audit
/etc/sos.conf
/usr/lib/python3.6/site-packages/dnf/conf
/usr/lib/python3.6/site-packages/ptyprocess
/usr/share/licenses/ethtool/LICENSE

676 RH124-RHEL8.2-es-1-20200928
capítulo 17 | Revisión completa

/usr/share/doc/libuser
/usr/share/doc/python3-cryptography/docs/x509
/usr/share/doc/python3-jinja2/ext
/usr/share/doc/plymouth/AUTHORS
/usr/share/vim/vim80/macros/maze/main.aap
/usr/libexec/plymouth
/opt/review5-size

La salida anterior puede variar en su sistema según el número de archivos de 100 bytes
de tamaño en su sistema. Observe las rutas absolutas a todos los archivos de la salida
anterior.

4.2. Cree el archivo de texto /review5-disk/review5-size.txt. Registre en el


archivo de texto /review5-disk/review5-size.txt las rutas absolutas a todos
los archivos de 100 bytes de tamaño, como se determinó en el paso anterior. Puede
usar el comando sudo vim /review5-disk/review5-size.txt para crear el
archivo de texto. Escriba :wq! desde el modo de comando en vim para guardar los
cambios y salir del archivo. El archivo de texto /review5-disk/review5-size.txt
debe contener la ruta absoluta al archivo review5-size, entre otras rutas.

...output omitted...
/opt/review5-size
...output omitted...

4.3. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab rhcsa-rh124-review5 grade para confirmar que
ha realizado correctamente este ejercicio.

[student@workstation ~]$ lab rhcsa-rh124-review5 grade

Finalizar
En workstation, ejecute lab rhcsa-rh124-review5 finish para completar la revisión
completa. Este script elimina el sistema de archivos, las cuentas de usuario y las cuentas de grupo
creados durante el inicio de la revisión completa y garantiza que el entorno de serverb esté
limpio.

[student@workstation ~]$ lab rhcsa-rh124-review5 finish

Con esto concluye la revisión completa.

RH124-RHEL8.2-es-1-20200928 677
678 RH124-RHEL8.2-es-1-20200928

También podría gustarte