You are on page 1of 626

Únase a los exploradores, constructores e individuos que, de

manera sólida, ofrecen nuevas soluciones a viejos problemas.


Para el código abierto, la innovación solo es posible gracias a la
gente que está detrás de ella.

LIBRO DE TRABAJO DEL ESTUDIANTE


(ROLE)
Red Hat Enterprise Linux 8.0 RH199
RHCSA RAPID TRACK
Edición 1

RH199-RHEL8.0-es-1-20190531 Copyright ©2019 Red Hat, Inc.


RHCSA RAPID
TRACK

RH199-RHEL8.0-es-1-20190531 Copyright ©2019 Red Hat, Inc.


Red Hat Enterprise Linux 8.0 RH199
RHCSA Rapid Track
Edición 1 20190531
fecha de publicación 20190531

Autores: Adrian Andrade, Fiona Allen, Herve Quatremain, Marc Kesler,


Saumik Paul, Snehangshu Karmakar, Victor Costea
Editor: Steven Bonneville, Philip Sweany, Ralph Rodriguez, David Sacco, Heather
Charles, David O'Brien, Seth Kenlon
Copyright © 2019 Red Hat, Inc.

The contents of this course and all its modules and related materials, including handouts to audience members, are
Copyright © 2019 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 e-mail
training@redhat.com or phone toll-free (USA) +1 (866) 626-2994 or +1 (919) 754-3700.

Red Hat, Red Hat Enterprise Linux, the Shadowman 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 OpenStack Logo are either registered trademarks/service marks or trademarks/
service marks of the OpenStack Foundation, in the United States and other countries and are used with the
OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack
Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Colaboradores: Achyut Madhusudan, Rudolf Kastl, Rob Locke, Heider Souza, Michael Phillips,
Dallas Spohn
Convenciones del documento                                                                                                                                                                                   ix
Introducción                                                                                                                                                                                                                                       xi
RHCSA Rapid Track ................................................................................................. xi
Orientación sobre el entorno del aula ........................................................................ xii
Internacionalización ................................................................................................ xvi
1. Acceder a sistemas y obtener soporte                                                                                                                                                       1
Acceso a la línea de comandos .................................................................................. 2
Cuestionario: Acceso a la línea de comandos ............................................................... 8
Configuración de autenticación basada en claves SSH ................................................. 12
Ejercicio Guiado: Configuración de autenticación basada en claves SSH ......................... 17
Obtención de ayuda en el portal de clientes de Red Hat .............................................. 23
Ejercicio Guiado: Obtención de ayuda en el portal de clientes de Red Hat ...................... 33
Detección y resolución de problemas con Red Hat Insights .......................................... 35
Cuestionario: Detección y resolución de problemas con Red Hat Insights ....................... 44
Resumen ............................................................................................................... 46
2. Navegar por sistemas de archivos                                                                                                                                                             47
Descripción de conceptos de la jerarquía del sistema de archivos Linux ......................... 48
Cuestionario: Descripción de conceptos de la jerarquía del sistema de archivos Linux ....... 51
Administración de archivos con las herramientas de línea de comandos ......................... 55
Ejercicio Guiado: Administración de archivos con las herramientas de línea de
comandos .............................................................................................................. 61
Creación de enlaces entre archivos .......................................................................... 66
Ejercicio Guiado: Creación de enlaces entre archivos .................................................. 70
Resumen ............................................................................................................... 72
3. Administración de usuarios y grupos locales                                                                                                                               73
Descripción de conceptos de usuarios y grupos ......................................................... 74
Cuestionario: Descripción de conceptos de usuarios y grupos ...................................... 78
Obtención de acceso de superusuario ...................................................................... 82
Ejercicio Guiado: Obtención de acceso de superusuario .............................................. 88
Administración de cuentas de usuarios locales ........................................................... 93
Ejercicio Guiado: Administración de cuentas de usuarios locales ................................... 97
Administración de cuentas de grupos locales ............................................................ 100
Ejercicio Guiado: Administración de cuentas de grupos locales .................................... 103
Administración de contraseñas de usuarios .............................................................. 106
Ejercicio Guiado: Administración de contraseñas de usuarios ....................................... 110
Trabajo de laboratorio: Administración de usuarios y grupos locales .............................. 114
Resumen ............................................................................................................... 119
4. Control de acceso a los archivos                                                                                                                                                                 121
Administración de permisos del sistema de archivos desde la línea de comandos ............ 122
Ejercicio Guiado: Administración de permisos del sistema de archivos desde la línea de
comandos ............................................................................................................. 126
Administración de permisos predeterminados y acceso a archivos ............................... 130
Ejercicio Guiado: Administración de permisos predeterminados y acceso a archivos ........ 135
Trabajo de laboratorio: Control de acceso a los archivos ............................................. 140
Resumen .............................................................................................................. 146
5. Administración de seguridad de SELinux                                                                                                                                       147
Cambio del modo de cumplimiento de SELinux ........................................................ 148
Ejercicio Guiado: Cambio del modo de cumplimiento de SELinux ................................ 152
Control de contextos de archivo de SELinux ............................................................. 155
Ejercicio Guiado: Control de contextos de archivo de SELinux ..................................... 159
Ajuste de la política de SELinux con booleanos ......................................................... 162
Ejercicio Guiado: Ajuste de la política de SELinux con booleanos ................................. 164

RH199-RHEL8.0-es-1-20190531 v
Investigación y resolución de problemas de SELinux .................................................. 167
Ejercicio Guiado: Investigación y resolución de problemas de SELinux .......................... 172
Trabajo de laboratorio: Administración de seguridad de SELinux .................................. 176
Resumen .............................................................................................................. 182

6. Ajuste del rendimiento del sistema                                                                                                                                                       183


Finalización de procesos ........................................................................................ 184
Ejercicio Guiado: Finalización de procesos ................................................................ 190
Monitoreo de la actividad de procesos ..................................................................... 195
Ejercicio Guiado: Monitoreo de la actividad de procesos ............................................ 199
Ajuste de perfiles de ajuste ................................................................................... 204
Ejercicio Guiado: Ajuste de perfiles de ajuste ........................................................... 209
Influencia en la programación de procesos ................................................................ 211
Ejercicio Guiado: Influencia en la programación de procesos ....................................... 215
Trabajo de laboratorio: Ajuste del rendimiento del sistema .......................................... 218
Resumen .............................................................................................................. 223

7. Instalación y actualización de paquetes de software                                                                                                     225


Registro de sistemas para Soporte de Red Hat ......................................................... 226
Cuestionario: Registro de sistemas para Soporte de Red Hat ..................................... 230
Instalación y actualización de paquetes de software con Yum ..................................... 232
Ejercicio Guiado: Instalación y actualización de paquetes de software con Yum ............. 239
Habilitación de repositorios de software yum ........................................................... 244
Ejercicio Guiado: Habilitación de repositorios de software yum ................................... 248
Administración de flujos de módulos de paquete ...................................................... 252
Ejercicio Guiado: Administración de flujos de módulos de paquete .............................. 259
Trabajo de laboratorio: Instalación y actualización de paquetes de software ................. 264
Resumen .............................................................................................................. 271

8. Administración de almacenamiento básico                                                                                                                                 273


Montaje y desmontaje de sistemas de archivos ........................................................ 274
Ejercicio Guiado: Montaje y desmontaje de sistemas de archivos ................................ 278
Adición de particiones, sistemas de archivos y montajes persistentes ........................... 281
Ejercicio Guiado: Adición de particiones, sistemas de archivos y montajes persistentes ... 291
Administración de espacio de intercambio ............................................................... 295
Ejercicio Guiado: Administración de espacio de intercambio ...................................... 300
Trabajo de laboratorio: Administración de almacenamiento básico .............................. 305
Resumen .............................................................................................................. 313

9. Control de servicios y del proceso de arranque                                                                                                                     315


Identificación de procesos del sistema iniciados en forma automática .......................... 316
Ejercicio Guiado: Identificación de procesos del sistema iniciados en forma
automática ........................................................................................................... 322
Control de servicios del sistema ............................................................................. 326
Ejercicio Guiado: Control de servicios del sistema ...................................................... 331
Selección del objetivo de arranque ......................................................................... 335
Ejercicio Guiado: Selección del objetivo de arranque ................................................ 340
Restablecimiento de la contraseña de root .............................................................. 343
Ejercicio Guiado: Restablecimiento de la contraseña de root ...................................... 347
Reparación de problemas del sistema de archivos en el arranque ................................ 349
Ejercicio Guiado: Reparación de problemas del sistema de archivos en el arranque ......... 351
Trabajo de laboratorio: Control de servicios y daemons ............................................. 354
Resumen ............................................................................................................. 358

10. Administración de redes                                                                                                                                                                                   359


Validación de la configuración de red ...................................................................... 360
Ejercicio Guiado: Validación de la configuración de red ............................................. 366

vi RH199-RHEL8.0-es-1-20190531
Configuración de redes desde la línea de comandos ................................................. 369
Ejercicio Guiado: Configuración de redes desde la línea de comandos ......................... 375
Edición de archivos de configuración de red ............................................................. 381
Ejercicio Guiado: Edición de archivos de configuración de red .................................... 385
Configuración de nombres de host y resolución de nombre ....................................... 389
Ejercicio Guiado: Configuración de nombres de host y resolución de nombre ................ 392
Trabajo de laboratorio: Administración de redes ....................................................... 396
Resumen .............................................................................................................. 401
11. Análisis y almacenamiento de registros                                                                                                                                         403
Descripción de la arquitectura de registro del sistema ............................................... 404
Cuestionario: Descripción de la arquitectura de registro del sistema ........................... 406
Revisión de archivos Syslog .................................................................................... 410
Ejercicio Guiado: Revisión de archivos Syslog ........................................................... 414
Revisión de las entradas del diario (journal) del sistema ............................................. 417
Ejercicio Guiado: Revisión de las entradas del diario (journal) del sistema ..................... 423
Resguardo del diario (journal) del sistema ............................................................... 427
Ejercicio Guiado: Resguardo del diario (journal) del sistema ....................................... 430
Mantenimiento de la hora correcta ......................................................................... 433
Ejercicio Guiado: Mantenimiento de la hora correcta ................................................. 437
Trabajo de laboratorio: Análisis y almacenamiento de registros .................................... 441
Resumen ............................................................................................................. 447
12. Implementación de funciones avanzadas de almacenamiento                                                                       449
Creación de volúmenes lógicos .............................................................................. 450
Ejercicio Guiado: Creación de volúmenes lógicos ...................................................... 458
Ampliación de volúmenes lógicos ........................................................................... 463
Ejercicio Guiado: Ampliación de volúmenes lógicos .................................................. 468
Gestión de almacenamiento en capas con Stratis ..................................................... 472
Ejercicio Guiado: Gestión de almacenamiento en capas con Stratis ............................. 478
Compresión y desduplicación de almacenamiento con VDO ...................................... 484
Ejercicio Guiado: Compresión y desduplicación de almacenamiento con VDO .............. 487
Trabajo de laboratorio: Implementación de funciones avanzadas de almacenamiento ..... 491
Resumen ............................................................................................................. 500
13. Programación de tareas futuras                                                                                                                                                             501
Programación de trabajos del sistema recurrentes .................................................... 502
Ejercicio Guiado: Programación de trabajos del sistema recurrentes ............................ 506
Administración de archivos temporales .................................................................... 510
Ejercicio Guiado: Administración de archivos temporales ............................................ 514
Cuestionario: Programación de tareas futuras ........................................................... 518
Resumen .............................................................................................................. 522
14. Acceso al almacenamiento conectado a la red                                                                                                                   523
Montaje de almacenamiento conectado a la red con NFS .......................................... 524
Ejercicio Guiado: Administración de almacenamiento conectado a la red con NFS ......... 529
Montaje automático de almacenamiento conectado a la red ...................................... 533
Ejercicio Guiado: Montaje automático de almacenamiento conectado a la red .............. 537
Trabajo de laboratorio: Acceso al almacenamiento conectado a la red ......................... 543
Resumen ............................................................................................................. 550
15. Administración de la seguridad de redes                                                                                                                                     551
Administración de firewalls del servidor ................................................................... 552
Ejercicio Guiado: Administración de firewalls del servidor ............................................ 561
Trabajo de laboratorio: Administración de la seguridad de redes ................................. 565
Resumen ............................................................................................................. 573
16. Revisión completa                                                                                                                                                                                                     575

RH199-RHEL8.0-es-1-20190531 vii
Revisión completa ................................................................................................ 576
Trabajo de laboratorio: Corrección de problemas de arranque y mantenimiento de
servidores ............................................................................................................. 581
Trabajo de laboratorio: Configuración y administración de sistemas de archivos y
almacenamiento ................................................................................................... 588
Trabajo de laboratorio: Configuración y administración de seguridad del servidor .......... 595

viii RH199-RHEL8.0-es-1-20190531
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 omitir las advertencias
provoque pérdida de datos.

RH199-RHEL8.0-es-1-20190531 ix
x RH199-RHEL8.0-es-1-20190531
INTRODUCCIÓN

RHCSA RAPID TRACK


El curso RHCSA Rapid Track (RH199) está diseñado para estudiantes que
ya tienen una experiencia significativa en la administración de Linux. El
curso RHCSA Rapid Track revisa las tareas tratadas en los cursos System
Administration I y II a un ritmo acelerado. El curso se desarrolla sobre la
comprensión fundacional de los estudiantes respecto de la administración
de Linux basada en la línea de comando. Los estudiantes deberán poder
ejecutar comandos comunes, tales como cp, grep, sort, mkdir, tar, mkfs, ssh
y yum desde el prompt de comandos. Además, deben estar familiarizados
con opciones de comando comunes y con el acceso a las páginas del manual
para obtener ayuda. Se recomienda a los estudiantes que no posean estos
conocimientos que realicen el curso Red Hat System Administration I
(RH124).

OBJETIVOS • Ampliar las habilidades obtenidas durante


DEL CURSO el curso de Red Hat System Administration I
(RH124).
• Desarrollar las habilidades necesarias para
un administrador de sistemas Red Hat
Enterprise Linux con certificación RHCSA.

DESTINATARIOS • El curso RHCSA Rapid Track (RH199/RH200)


se encuentra entre los cursos más importantes
en la cartera de Linux. Está diseñado para
ser un punto de entrada de currículos para
profesionales de TI con significativa exposición
a la administración de Linux. Este curso cubre
9 días de contenido compactado de System
Administration I y II en 4 días. Para hacerlo, se
requiere que los conceptos elementales no se
cubran o que solo se lo haga rápidamente. Se
recomienda firmemente a los estudiantes que
no estén seguros si están calificados para tomar
el RH199 que realicen la evaluación previa en
línea.

REQUISITOS • Los estudiantes de este curso deben tener una


PREVIOS experiencia de entre uno y tres años a tiempo
completo en la administración de sistemas
Linux.

RH199-RHEL8.0-es-1-20190531 xi
Introducción

ORIENTACIÓN SOBRE EL ENTORNO DEL


AULA

Figura 0.1: Entorno del aula

En este curso, el sistema de cómputo principal usado para las actividades prácticas de aprendizaje
es workstation. Los estudiantes también usan otras tres máquinas para estas actividades:
servera y serverb. Estos tres sistemas se encuentran en el dominio DNS lab.example.com.

Todos los sistemas de cómputo 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 RH199-RHEL8.0-es-1-20190531
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.

CONTROL DE SUS SISTEMAS


A los estudiantes se les 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]. Los estudiantes deben 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)

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 Cree 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)

RH199-RHEL8.0-es-1-20190531 xiii
Introducción

BOTÓN O ACCIÓN DESCRIPCIÓN

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

START LAB (INICIAR Inicie todas las máquinas virtuales en el aula.


TRABAJO DE
LABORATORIO)

SHUTDOWN LAB Detenga todas las máquinas virtuales en el aula.


(APAGAR TRABAJO
DE LABORATORIO)

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


(ABRIR CONSOLA) la máquina virtual. Los estudiantes pueden iniciar sesión directamente
en la máquina virtual y ejecutar los comandos. En la mayoría de los
casos, los estudiantes deben 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 (ACCIÓN) Apague la máquina virtual correctamente y preserve el contenido del


→ Shutdown disco.
(Apagar)

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


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

ACTION (ACCIÓN) Fuerce el apagado de la máquina virtual y restablezca el disco para que
→ Reset vuelva a su estado original. Precaución: Se perderán los trabajos
(Restablecer) generados en el disco.

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.

xiv RH199-RHEL8.0-es-1-20190531
Introducción

Temporizador de detención automática


La inscripción al aprendizaje en línea de Red Hat otorga a los estudiantes 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. Haga clic en ADJUST TIME (AJUSTAR
TIEMPO) para aplicar este cambio en los ajustes del temporizador.

RH199-RHEL8.0-es-1-20190531 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 en la barra superior, desde el menú del
sistema en la esquina derecha, seleccionar el botón de configuración (que tiene un ícono de un
destornillador y una llave cruzados) desde 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 mediante 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 RH199-RHEL8.0-es-1-20190531
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 se 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 de EE. UU.) y haga clic en el icono de
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 (Fuentes de entrada). 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, dentro de English (United States) (Inglés [Estados Unidos]) está la configuración del
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.

RH199-RHEL8.0-es-1-20190531 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.

VALORES 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 tendrá efecto para
usuarios en su próximo 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 de Language (Idioma) de la
pantalla de inicio de sesión gráfico, también ajustará el valor de idioma predeterminado de todo el
sistema 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 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 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 configuraciones 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 esta tabla no refleje 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

LENGUAJE 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 RH199-RHEL8.0-es-1-20190531
Introducción

LENGUAJE 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

RH199-RHEL8.0-es-1-20190531 xxi
xxii RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1

ACCEDER A SISTEMAS Y
OBTENER SOPORTE
META Inicie sesión en el sistema Linux local y remoto e
investigue los métodos de resolución de problemas
provistos a través de Red Hat Support y Red Hat
Insights.

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


de texto local y ejecutar comandos simples
mediante la shell.
• 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.
• 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 • Acceso a la línea de comandos (y cuestionario)


• Configuración de autenticación basada en
claves de SSH (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)

RH199-RHEL8.0-es-1-20190531 1
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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:

2 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

• 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

RH199-RHEL8.0-es-1-20190531 3
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 de Ctrl+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

4 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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.

RH199-RHEL8.0-es-1-20190531 5
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 ~]$

6 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/securing_networks/assembly_using-secure-communications-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.

RH199-RHEL8.0-es-1-20190531 7
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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

8 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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

RH199-RHEL8.0-es-1-20190531 9
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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

10 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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

RH199-RHEL8.0-es-1-20190531 11
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 user@host.lab.example.com
The key's randomart image is:
+---[RSA 2048]----+
| |
| . . |
| o o o |
| . = o o . |
| o + = S E . |
| ..O o + * + |

12 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

|.+% 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 user@host.lab.example.com
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.

RH199-RHEL8.0-es-1-20190531 13
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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.

14 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 (user@host.lab.example.com)
[user@host ~]$ ssh-add .ssh/key-with-pass
Enter passphrase for .ssh/key-with-pass: redhatpass
Identity added: .ssh/key-with-pass (user@host.lab.example.com)

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 ~]$

RH199-RHEL8.0-es-1-20190531 15
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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)

16 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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

RH199-RHEL8.0-es-1-20190531 17
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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
operator1@serverb.lab.example.com
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.

18 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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
operator1@serverb.lab.example.com
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.

RH199-RHEL8.0-es-1-20190531 19
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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 (operator1@serverb.lab.example.com)

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.

20 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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.

RH199-RHEL8.0-es-1-20190531 21
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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.

22 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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 1.1: 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.

RH199-RHEL8.0-es-1-20190531 23
CAPÍTULO 1 | Acceder a sistemas 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 1.2: 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 1.3: 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.

24 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Figura 1.4: 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 1.5: 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.

RH199-RHEL8.0-es-1-20190531 25
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

NOTA
Debe completar todo el recorrido en Primeros pasos 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:

26 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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

RH199-RHEL8.0-es-1-20190531 27
CAPÍTULO 1 | Acceder a sistemas 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

28 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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

RH199-RHEL8.0-es-1-20190531 29
CAPÍTULO 1 | Acceder a sistemas 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.

30 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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. El archivo
core (principal) de volcado de memoria tras fallas del kernel se crea con el comando kdump. 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.

RH199-RHEL8.0-es-1-20190531 31
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

REFERENCIAS
Página del manual: sosreport(1)

Red Hat Access: Red Hat Support Tool


https://access.redhat.com/site/articles/445443

Primer uso de Red Hat Support Tool


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/

32 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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 ~]$ sudo systemctl status cockpit.socket


[sudo] password for student: student
● 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...

RH199-RHEL8.0-es-1-20190531 33
CAPÍTULO 1 | Acceder a sistemas 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.

34 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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 que
ejecutan productos de Red Hat en su infraestructura. 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, esto significa que 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 Red Hat 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. Esto permite
identificar, priorizar y resolver proactivamente los problemas antes de que se conviertan en un
problema mayor.

Para cada problema detectado, Red Hat 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.

Las recomendaciones de Red Hat Insights se adaptan 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 sosreport para resolver un ticket de soporte. Puede limitar u ocultar los
datos que envían sus clientes. Esto impedirá 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 Red Hat Insights en el portal de la nube de Red Hat.

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 Red Hat Insights


Puede registrar un sistema en Red Hat Insights mediante el portal de la nube de Red Hat.
Cuando se registra el sistema, se proporcionan metadatos sobre su configuración actual a

RH199-RHEL8.0-es-1-20190531 35
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Red Hat Insights. Estos datos se envían a Red Hat Insights con cifrado TLS para protegerlos en la
transferencia. También se anonimizan antes de enviarse.

Basado en las recomendaciones proporcionadas por el motor de reglas de Red Hat Insights, los
resultados del análisis se muestran en la consola de Red Hat Insights en el portal de la nube de
Red Hat en https://cloud.redhat.com/insights.

Figura 1.6: Arquitectura de alto nivel de Red Hat Insights

INSTALACIÓN DE CLIENTES DE RED HAT INSIGHTS


Red Hat Insights está incluido con Red Hat Enterprise Linux 8 como parte de la suscripción. Los
servidores de la versión anterior Red Hat Enterprise Linux requieren la instalación del paquete
insights-client en el sistema.

IMPORTANTE
El paquete insights-client reemplaza el paquete anterior 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 Red Hat Insights con un
comando. Use el comando insights-client --register para registrar el sistema.

[root@demo ~]# insights-client --register

El cliente de Insights actualiza periódicamente los metadatos proporcionados a Red Hat Insights.


Use el comando insights-client para actualizar los metadatos del cliente en cualquier
momento.

[root@demo ~]# insights-client


Starting to collect Insights data for demo.lab.example.com
Uploading Insights data.
Successfully uploaded report from 773b351b-dfb1-4393-afa8-915cc2875e06 to
account XXXXX.

36 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Registro de un sistema de RHEL con Red Hat Insights

Para registrar un servidor de RHEL en Red Hat Insights, el proceso general es el siguiente:

1. Registre interactivamente el sistema con el servicio de administración de suscripciones de


Red Hat.

[root@demo ~]# subscription-manager register --auto-attach

Un derecho válido para Red Hat Insights debe adjuntarse al sistema; puede recibirlo como
parte de una suscripción de Red Hat Enterprise Linux.

2. 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@demo ~]# yum install insights-client

3. Use el comando insights-client --register para registrar el sistema con el servicio


de Red Hat Insights y cargar los metadatos iniciales del sistema.

[root@demo ~]# insights-client --register

4. Verifique que el sistema sea visible en https://cloud.redhat.com/insights.

Figura 1.7: Descripción general de Red Hat Insights en el portal de la nube

VISUALIZACIÓN DE INFORMES PROPORCIONADOS


POR RED HAT INSIGHTS
En un informe de Red Hat Insights, se muestra el estado de un sistema con el tiempo. Con estos
informes, puede ver fácilmente las evaluaciones actuales de riesgos e identificar tendencias
históricas para mejorar la toma de decisiones.

La interfaz de Red Hat Insights proporciona, entre otros datos, la siguiente información:

RH199-RHEL8.0-es-1-20190531 37
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

• Una puntuación de riesgo global actual basada en los sistemas registrados.


• Acciones recomendadas para tomar en sus sistemas, que se desglosan por categoría y
gravedad.
• Información sobre la última vez que los sistemas se registraron con Red Hat Insights.
• Problemas a los que debe darse prioridad en función de su impacto.

Navegación de la consola de Red Hat Insights


La consola de Red Hat Insights en el portal de la nube proporciona las siguientes páginas:

Overview (Descripción general)


La página Overview (Descripción general) proporciona una vista de los riesgos actuales para
la infraestructura registrada. Overview (Descripción general) proporciona una vista para
investigar cómo una regla específica está afectando a los sistemas registrados, o ver todas las
reglas que representan un riesgo para un sistema seleccionado.

La página le permite ver las reglas según la gravedad y clasificar el riesgo de infraestructura
según la categoría. Cada regla se clasifica según el impacto potencial en una de las siguientes
áreas de operaciones: Disponibilidad, Estabilidad, Actuación y Seguridad

Rules (Reglas)
La página Rules (Reglas) proporciona una lista de las reglas de Insights y los hosts afectados.

En la página Rules (Reglas), notará que algunos de estos problemas están marcados con
una marca de verificación debajo de la columna del logotipo Ansible. Esto indica que el
problema tiene una guía de corrección de Ansible disponible. Los problemas con una marca de
verificación, no tienen una guía de corrección de Ansible, pero pueden tener instrucciones de
mitigación o corrección manuales en los detalles del problema.

Puede hacer clic en el nombre de la regla para ver todos los sistemas afectados. Cada
problema proporciona una descripción de cómo se puede manifestar el problema en
el sistema, y Remediate con Ansible (Remediar con Ansible) para crear una guía para la
remediación.

Figura 1.8: Página Rules (Reglas) en la consola Red Hat Insights

Inventory (Inventario)
En la página Inventory (Inventario), se proporciona una lista de los sistemas que ha registrado
con Red Hat Insights.

38 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Puede filtrar fácilmente el inventario para ver sistemas específicos. En la columna Last Sync
(Última sincronización), se muestra la hora de la actualización de metadatos más reciente para
cada sistema.

Figura 1.9: Página Inventory (Inventario) en la consola Red Hat Insights

Remediations (Remediaciones)
La página Remediations (Remediaciones) proporciona una lista de guías de Ansible creadas y
permite descargarlos.

Figura 1.10: Página Remediations (Remediaciones) en la consola Red Hat Insights

Visualización de problemas proporcionados por Red Hat Insights

Para ver los problemas informados por Red Hat Insights, el proceso general es el siguiente:

1. Inicie sesión en el portal de la nube de Red Hat y acceda a la página de Red Hat Insights en


https://cloud.redhat.com/insights.

2. En el portal, vaya a la página Overview (Descripción general).

3. Seleccione Rule hits by severity (Resultados para regla por gravedad) para ver las
reglas según el Total Risk (Riesgo total) que plantean a la infraestructura registrada.
Alternativamente, seleccione Rule hits by category (Resultados para regla por categoría) para
ver el tipo de riesgo en función de la categoría.

4. Desplácese por la lista de reglas para ver información de alto nivel sobre riesgos, sistemas
expuestos y disponibilidad de la guía de Ansible para automatizar la remediación.

5. Haga clic en una regla para ver una descripción más detallada de la regla, haga clic en el
enlace para leer los artículos relevantes de la base de conocimiento y vea la lista de todos los
hosts afectados.

6. Haga clic en un host para ver información específica sobre los problemas detectados y los
pasos para resolver el problema.

RH199-RHEL8.0-es-1-20190531 39
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

INTERPRETACIÓN DE INFORMES DE RED HAT


INSIGHTS
En Red Hat Insights, las reglas determinan los problemas que busca en sus sistemas. Red Hat
agrega frecuentemente nuevas reglas a Red Hat Insights para detectar problemas recientemente
identificados. Las reglas pueden buscar incidentes que hayan ocurrido en su sistema que indiquen
un problema, o pueden anticiparse proactivamente a los problemas según la configuración actual
del sistema.

Cuando una regla coincide con su sistema e indica que existe un problema, se proporciona
información adicional con la regla para ayudarlo a comprender el problema, priorizar las tareas
para resolverlo, determinar qué mitigación o corrección está disponible y ayudarlo a automatizar
su resolución.

Cada regla se clasifica por tipo y tiene un nombre resumido y una descripción más larga para
explicar cuál es el problema. Normalmente, las reglas están vinculadas a los artículos de la base
de conocimientos en el portal de clientes con información adicional. El artículo de la base de
conocimientos puede proporcionar información sobre diferentes formas de mitigar o remediar un
problema, y brindar Ansible Playbooks u otros materiales para ayudar a automatizar la mitigación y
la corrección.

Algunos problemas son complejos de tratar y una solución completa puede requerir un reinicio o
un tiempo de inactividad. En ese caso, puede haber opciones para mitigar los problemas al reducir
su riesgo como medida temporal. La regla proporcionará puntuaciones del riesgo presentado por
el problema, en varias categorías diferentes.

Por ejemplo, considere un problema de seguridad que requiere una actualización de los paquetes
del kernel y un reinicio para corregirse, pero que también puede volverse muy difícil de explotar
con ciertos cambios de configuración temporales. Puede elegir aplicar los cambios temporales
inmediatamente y aplazar el reinicio hasta que pueda programar una ventana de mantenimiento
de emergencia.

Red Hat Insights clasifica el riesgo que presenta un problema para su sistema en cuatro categorías.
Evalúa el nivel de riesgo con estos niveles: Low (Bajo), Moderate (Moderado), Important
(Importante) y Critical (Crítico).

Las categorías Likelihood (Probabilidad), Impact (Impacto), Total Risk (Riesgo total)
y Risk of change (Riesgo del cambio) pronostican los factores de riesgo de un problema
detectado en sus sistemas suscritos.

Impact (Impacto)
Indica el nivel previsto de impacto de este problema en el sistema.

Likelihood (Probabilidad)
Indica la probabilidad de que un problema dado afecte al sistema.

Total Risk (Riesgo total)


Indica el impacto de los problemas de seguridad localizados en los productos Red Hat
utilizando una escala de cuatro puntos (bajo, moderado, importante y crítico), así como las
calificaciones base de Common Vulnerability Scoring System (CVSS, sistema de puntuación
de vulnerabilidades comunes). Estos proporcionan una evaluación de riesgos priorizada
para ayudarlo a tomar decisiones informadas sobre el riesgo que cada problema pone en su
infraestructura.

Risk of change (Riesgo de cambio)


Indica el riesgo de que la acción de corrección recomendada pueda causar una interrupción en
un sistema.

40 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Para ver los factores de riesgo previstos por varias reglas en Red Hat Insights, vaya a Overview
(Descripción general) o a la página Rules (Reglas). Cada regla muestra el icono para Total Risk
(Riesgo total) y Risk of Change (Riesgo de cambio)

Figura 1.11: Reglas de Red Hat Insights que se aplican a un host

Cuando haya identificado los problemas que desea abordar, puede resolverlos de forma manual o
automática. Una vez que el problema esté resuelto y el cliente de Red Hat Insights haya cargado
nuevos metadatos, la regla ya no debe coincidir con ese sistema y el problema debe desaparecer
de la lista de acciones recomendadas.

Corrección manual de un problema notificado por Red Hat Insights

1. Inicie sesión en el portal de la nube de Red Hat y acceda a la página de Red Hat Insights en


https://cloud.redhat.com/insights.

Navegue a la página Rules (Reglas). Haga clic en el nombre de la regla que se debe resolver.

2. Desplácese hacia abajo hasta Affected systems (Sistemas afectados) para ver todos los
sistemas afectados debido a la regla.

3. Haga clic en uno de los enlaces de sistemas afectados debajo de la columna Name (Nombre).
La página muestra una descripción de cómo el problema puede afectar al sistema y los pasos
para resolver el problema en el sistema. Siga las instrucciones en Pasos para resolver para
remediar el problema en el sistema.

RH199-RHEL8.0-es-1-20190531 41
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

Figura 1.12: Remediación de reglas en sistemas de forma manual.

4. Realice estos pasos en el sistema afectado para resolver el problema.

5. Después de aplicar los pasos de corrección, ejecute el siguiente comando como root en el
sistema para informar de los cambios a Red Hat Insights:

[root@demo ~]# insights-client


Starting to collect Insights data for demo.lab.example.com
Uploading Insights data.
Successfully uploaded report from 773b351b-dfb1-4393-afa8-915cc2875e06 to
account xxxxxx.

6. En la consola Red Hat Insights, navegue a la página Rules (Reglas). Haga clic en la regla y
desplácese hacia abajo a Affected systems (Sistemas afectados) y verifique que el problema
ya no aparezca en la lista de sistemas afectados.

42 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

REFERENCIAS
Páginas del manual: insights-client(8) y insights-client.conf(5)

Para obtener más información, consulte el capítulo GET STARTED (PRIMEROS


PASOS) de la Guía de inicio Red Hat Insights 1.0 en
https://access.redhat.com/products/red-hat-insights/#getstarted

Puede obtener más información sobre actualizaciones de funciones de Red Hat


Insights en
https://access.redhat.com/documentation/en-us/red_hat_insights/1.0/html-single/
release_notes/#release_information

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

Hay información disponible sobre cómo excluir datos recopilados por Red Hat
Insights en
Optar por no enviar metadatos desde el cliente de Red Hat Insights
https://access.redhat.com/articles/2025273

RH199-RHEL8.0-es-1-20190531 43
CAPÍTULO 1 | Acceder a sistemas 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. Red Hat Insights recopila metadatos del sistema de 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. ¿Qué dos páginas en la consola de Red Hat Insights le permite mostrar una lista de
reglas, usando filtros basados en la categoría de riesgo? (Elija dos opciones).
a. Overview (Descripción general)
b. Inventory (Inventario)
c. Rules (Reglas)
d. Remediation (Remediación)

44 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 1 | Acceder a sistemas 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. Red Hat Insights recopila metadatos del sistema de 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. ¿Qué dos páginas en la consola de Red Hat Insights le permite mostrar una lista de
reglas, usando filtros basados en la categoría de riesgo? (Elija dos opciones).
a. Overview (Descripción general)
b. Inventory (Inventario)
c. Rules (Reglas)
d. Remediation (Remediación)

RH199-RHEL8.0-es-1-20190531 45
CAPÍTULO 1 | Acceder a sistemas y obtener soporte

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.

• 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 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.

46 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2

NAVEGAR POR SISTEMAS DE


ARCHIVOS
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.
• 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").

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


sistema de archivos Linux (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)

RH199-RHEL8.0-es-1-20190531 47
CAPÍTULO 2 | Navegar por sistemas de archivos

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 2.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.

48 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

RH199-RHEL8.0-es-1-20190531 49
CAPÍTULO 2 | Navegar por sistemas de archivos

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

50 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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

RH199-RHEL8.0-es-1-20190531 51
CAPÍTULO 2 | Navegar por sistemas de archivos

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

52 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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

RH199-RHEL8.0-es-1-20190531 53
CAPÍTULO 2 | Navegar por sistemas de archivos

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

54 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

RH199-RHEL8.0-es-1-20190531 55
CAPÍTULO 2 | Navegar por sistemas de archivos

[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:

56 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

RH199-RHEL8.0-es-1-20190531 57
CAPÍTULO 2 | Navegar por sistemas de archivos

[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.

58 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

RH199-RHEL8.0-es-1-20190531 59
CAPÍTULO 2 | Navegar por sistemas de archivos

[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)

60 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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

RH199-RHEL8.0-es-1-20190531 61
CAPÍTULO 2 | Navegar por sistemas de archivos

[student@servera ~]$ touch film1.avi film2.avi film3.avi film4.avi \


film5.avi film6.avi
[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

62 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

-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

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

RH199-RHEL8.0-es-1-20190531 63
CAPÍTULO 2 | Navegar por sistemas de archivos

-rw-rw-r--. 1 student student 0 Feb 4 18:42 song2.mp3


[student@servera friends]$ cd ../family
[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

64 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

RH199-RHEL8.0-es-1-20190531 65
CAPÍTULO 2 | Navegar por sistemas de archivos

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

66 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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 ~]$

RH199-RHEL8.0-es-1-20190531 67
CAPÍTULO 2 | Navegar por sistemas de archivos

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

68 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

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)

RH199-RHEL8.0-es-1-20190531 69
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

70 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 2 | Navegar por sistemas de archivos

[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.

RH199-RHEL8.0-es-1-20190531 71
CAPÍTULO 2 | Navegar por sistemas de archivos

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.

72 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3

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

RH199-RHEL8.0-es-1-20190531 73
CAPÍTULO 3 | 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.

74 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 75
CAPÍTULO 3 | 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

76 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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).

RH199-RHEL8.0-es-1-20190531 77
CAPÍTULO 3 | 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

78 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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

RH199-RHEL8.0-es-1-20190531 79
CAPÍTULO 3 | 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

80 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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

RH199-RHEL8.0-es-1-20190531 81
CAPÍTULO 3 | 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.

82 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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:

RH199-RHEL8.0-es-1-20190531 83
CAPÍTULO 3 | 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

84 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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:

RH199-RHEL8.0-es-1-20190531 85
CAPÍTULO 3 | 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.

86 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | Administración de usuarios y grupos locales

NOTA
En este curso, verá frecuentemente 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 en su mayoría utilizan
sudo su - en los ejemplos

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).

RH199-RHEL8.0-es-1-20190531 87
CAPÍTULO 3 | 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.

88 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | Administración de usuarios y grupos locales

[student@servera ~]$ pwd


/home/student

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.

RH199-RHEL8.0-es-1-20190531 89
CAPÍTULO 3 | Administración de usuarios y grupos locales

[root@servera student]# exit


exit
[student@servera ~]$

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 ~]$

90 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | Administración de usuarios y grupos locales

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

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 ~]$

RH199-RHEL8.0-es-1-20190531 91
CAPÍTULO 3 | Administración de usuarios y grupos locales

6.6. Intente eliminar /etc/motdOLD sin usar sudo. Debería fallar.

[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.

92 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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:

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.

RH199-RHEL8.0-es-1-20190531 93
CAPÍTULO 3 | Administración de usuarios y grupos locales

OPCIONES DE USERMOD: USO

-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.

94 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 95
CAPÍTULO 3 | 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)

96 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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:1001:1001::/home/operator1:/bin/bash

4. Establezca la contraseña para operator1 como redhat.

RH199-RHEL8.0-es-1-20190531 97
CAPÍTULO 3 | 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.

98 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | Administración de usuarios y grupos locales

[root@servera ~]# tail /etc/passwd


...output omitted...
operator1:x:1001:1001:Operator One:/home/operator1:/bin/bash
operator2:x:1002:1002:Operator Two:/home/operator2:/bin/bash
operator3:x:1003:1003::/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:1001:1001:Operator One:/home/operator1:/bin/bash
operator2:x:1002:1002: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.

RH199-RHEL8.0-es-1-20190531 99
CAPÍTULO 3 | 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.

100 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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)

RH199-RHEL8.0-es-1-20190531 101
CAPÍTULO 3 | 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)

102 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 103
CAPÍTULO 3 | 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=1001(operator1) gid=1001(operator1) groups=1001(operator1),30000(operators)
[root@servera ~]# id operator2
uid=1002(operator2) gid=1002(operator2) groups=1002(operator2),30000(operators)
[root@servera ~]# id operator3
uid=1003(operator3) gid=1003(operator3) groups=1003(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=1004(sysadmin1) gid=1004(sysadmin1) groups=1004(sysadmin1),30001(admin)
[root@servera ~]# id sysadmin2
uid=1005(sysadmin2) gid=1005(sysadmin2) groups=1005(sysadmin2),30001(admin)
[root@servera ~]# id sysadmin3
uid=1006(sysadmin3) gid=1006(sysadmin3) groups=1006(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

104 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 105
CAPÍTULO 3 | 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 contraseña. 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...

106 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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 uso del valor aleatorio evita que dos usuarios con la misma contraseña tengan entradas
idénticas en el archivo /etc/shadow. Por ejemplo, incluso si user01 y user02 usan redhat
como contraseña, sus contraseñas cifradas en /etc/shadow serán diferentes si los valores
aleatorios son diferentes.

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.

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).

RH199-RHEL8.0-es-1-20190531 107
CAPÍTULO 3 | Administración de usuarios y grupos locales

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, es aconsejable deshabilitar el inicio de sesión de la cuenta de usuario en el sistema
cuando la cuenta del usuario tiene una responsabilidad que no requiere que el usuario inicie sesión
en el sistema. 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 de correo
usado para recuperar correo. Dicho usuario no debe iniciar sesión directamente en el sistema.

108 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | Administración de usuarios y grupos locales

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)

RH199-RHEL8.0-es-1-20190531 109
CAPÍTULO 3 | 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.

110 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 111
CAPÍTULO 3 | 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.

112 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 113
CAPÍTULO 3 | 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.

114 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 115
CAPÍTULO 3 | 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.

116 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 117
CAPÍTULO 3 | 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.

118 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 3 | 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.

RH199-RHEL8.0-es-1-20190531 119
120 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4

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 • 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 • 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

RH199-RHEL8.0-es-1-20190531 121
CAPÍTULO 4 | 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.

122 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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.

RH199-RHEL8.0-es-1-20190531 123
CAPÍTULO 4 | 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
el grupo de test_dir a admins:

[root@host ~]# chown :admins test_dir

124 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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)

RH199-RHEL8.0-es-1-20190531 125
CAPÍTULO 4 | 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

126 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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

RH199-RHEL8.0-es-1-20190531 127
CAPÍTULO 4 | 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.

128 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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.

RH199-RHEL8.0-es-1-20190531 129
CAPÍTULO 4 | 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

130 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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

RH199-RHEL8.0-es-1-20190531 131
CAPÍTULO 4 | 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.

132 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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:

RH199-RHEL8.0-es-1-20190531 133
CAPÍTULO 4 | 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)

134 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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.

RH199-RHEL8.0-es-1-20190531 135
CAPÍTULO 4 | Control de acceso a los archivos

[operator1@servera ~]$ umask


0002

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.

136 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | Control de acceso a los archivos

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.

[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 echo para crear un archivo denominado operations_network.txt


en el directorio /tmp/shared.

[operator1@servera ~]$ echo text >> /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 4 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.

RH199-RHEL8.0-es-1-20190531 137
CAPÍTULO 4 | Control de acceso a los archivos

[operator1@servera ~]$ touch /tmp/shared/operations_production.txt


[operator1@servera ~]$ ls -l /tmp/shared/operations_production.txt
-rw-r-----. 1 operator1 operators 0 Feb 4 15:56 /tmp/shared/
operations_production.txt

8. Abra una nueva ventana de terminal e inicie sesión en servera como operator1.

[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.

138 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | Control de acceso a los archivos

ADVERTENCIA
Salga de todas las shells que fueron abiertas por operator1. Si no sale de todas las
shells, el script de finalización fallará.

[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.

RH199-RHEL8.0-es-1-20190531 139
CAPÍTULO 4 | 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 pueden crear y editar 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.

140 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | 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.

RH199-RHEL8.0-es-1-20190531 141
CAPÍTULO 4 | 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

142 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | Control de acceso a los archivos

4. Verifique que los usuarios en el grupo techdocs pueden crear y editar 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 a pesar de que 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.

RH199-RHEL8.0-es-1-20190531 143
CAPÍTULO 4 | 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 /
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
/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.

[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 student. Salga de la shell cuando termine.

[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 umask en 007 para los usuarios con una UID mayor que 199 y con

144 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 4 | Control de acceso a los archivos

un nombre de usuario y un nombre de grupo primario iguales, y en 022 para todos los
demás:

[root@serverb ~]# 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

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

RH199-RHEL8.0-es-1-20190531 145
CAPÍTULO 4 | 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.

146 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5

ADMINISTRACIÓN DE
SEGURIDAD DE SELINUX
META Proteger y administrar la seguridad de un servidor
con SELinux.

OBJETIVOS • Describir cómo funciona SELinux y cómo


cambiar un servidor entre sus diferentes modos
de cumplimiento.
• Ajustar el tipo SELinux de un archivo para
controlar los procesos que pueden acceder a él.
• Cambiar los accesos permitidos por la política
de SELinux mediante la configuración de
parámetros ajustables denominados booleanos
de SELinux.
• Realizar una investigación básica y resolución
de problemas de los accesos bloqueados por
SELinux.

SECCIONES • Cambio del modo de cumplimiento de SELinux


(y ejercicio guiado)
• Control de contextos de archivo de SELinux (y
ejercicio guiado)
• Ajuste de la política de SELinux con booleanos
(y ejercicio guiado)
• Investigación y resolución de problemas de
SELinux (y ejercicio guiado)

TRABAJO DE Administración de seguridad de SELinux


LABORATORIO

RH199-RHEL8.0-es-1-20190531 147
CAPÍTULO 5 | Administración de seguridad de SELinux

CAMBIO DEL MODO DE CUMPLIMIENTO


DE SELINUX

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Explicar la manera en que SELinux protege los recursos.

• Modificar el modo actual de SELinux de un sistema.

• Configurar el modo predeterminado de SELinux de un sistema

PROTECCIÓN DE RECURSOS DE SELINUX


SELinux proporciona una función de seguridad vital en Linux, que permite o deniega el acceso a
archivos y otros recursos que son significativamente más precisos que los permisos de usuario.

Los permisos de archivo controlan qué usuarios o grupos de usuarios pueden acceder a qué
archivos específicos. Sin embargo, un usuario con acceso de lectura o escritura a cualquier archivo
específico puede usar ese archivo de cualquier manera que el usuario elija, incluso si ese uso no es
la forma en que se debe usar el archivo.

Por ejemplo, con acceso de escritura a un archivo, ¿un archivo de datos estructurados, diseñado
para escribirse y usar un único programa, debería poder ser abierto y modificado por otros
editores que podrían resultar en daños?

Los permisos de archivo no pueden detener este acceso no deseado. No fueron diseñados para
controlar cómo se usa un archivo, sino solo quién tiene permiso para leer, escribir o ejecutar un
archivo.

SELinux consiste en conjuntos de políticas, definidas por los desarrolladores de la aplicación, que
declaran exactamente qué acciones y accesos son adecuados y permitidos para cada ejecutable
binario, archivo de configuración y archivo de datos usados por una aplicación. Esto se conoce
como política dirigida porque se escribe una política para cubrir las actividades de una sola
aplicación. Las políticas declaran etiquetas predefinidas que se colocan en programas, archivos y
puertos de red individuales.

¿POR QUÉ USAR SECURITY ENHANCED LINUX?


No todos los problemas de seguridad se pueden predecir de antemano. SELinux aplica un
conjunto de reglas de acceso que impiden que una debilidad en una aplicación afecte a otras
aplicaciones o al sistema subyacente. SELinux proporciona una capa adicional de seguridad;
también agrega una capa de complejidad que puede ser desalentadora para las personas
que recién empiezan a usar este subsistema. Aprender a trabajar con SELinux puede llevar
tiempo, pero la política de cumplimiento significa que una debilidad en una parte del sistema
no se extiende a otras partes. Si SELinux funciona mal con un subsistema en particular, puede
desactivar la aplicación para ese servicio específico hasta que encuentre una solución al problema
subyacente.

SELinux tiene tres modos:

• Enforcing (Cumplimiento): SELinux hace cumplir las reglas de control de acceso. Las
computadoras generalmente se ejecutan en este modo.

148 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

• Permissive (Permisivo): SELinux está activo, pero en lugar de aplicar las reglas de control de
acceso, registra advertencias de reglas que se han infringido. Este modo se usa principalmente
para pruebas y solución de problemas.

• Disabled (Deshabilitado): SELinux está desactivado por completo; no se niegan las infracciones
de SELinux, ni siquiera se registran. No se recomienda usarlo.

CONCEPTOS BÁSICOS DE SEGURIDAD DE SELINUX


Security Enhanced Linux (SELinux) es una capa adicional de seguridad del sistema. El objetivo
principal de SELinux es proteger los datos del usuario de los servicios del sistema que han sido
comprometidos. La mayoría de los administradores de Linux están familiarizados con el modelo
de seguridad de permisos de usuario/grupo/otro. Este es un modelo basado en usuarios y
grupos conocido como control de acceso discrecional. SELinux proporciona un nivel adicional de
seguridad que está basado en objetos y controlado por reglas más sofisticadas, conocido como
control de acceso obligatorio.

Para permitir el acceso anónimo remoto a un servidor web, se deben abrir los puertos de firewall.
Sin embargo, esta acción otorga a las personas malintencionadas la oportunidad de aprovecharse
del sistema al explotar una vulnerabilidad de seguridad. Si logran comprometer el proceso del
servidor web, obtienen sus permisos. En concreto, los permisos del usuario apache y del grupo
apache. Ese usuario y grupo tiene acceso de lectura a la raíz del documento, /var/www/html.
También tiene acceso a /tmp y /var/tmp, y cualquier otro archivo y directorio que se pueda
escribir en todo el mundo.

SELinux es un conjunto de reglas de seguridad que determina qué proceso puede acceder a qué
archivos, directorios y puertos. Los archivos, procesos, directorios y puertos tienen etiquetas de
seguridad especiales denominadas contextos de SELinux. Un contexto es un nombre que usa la
política de SELinux para determinar si un proceso puede o no acceder a un archivo, directorio o
puerto. De forma predeterminada, la política no permite ninguna interacción, a menos que una
regla explícita otorgue acceso. Si no hay ninguna regla de permiso, no se permite ningún tipo de
acceso.

Las etiquetas de SELinux tienen varios contextos: user (usuario), role (rol), type (tipo) y
sensitivity (sensibilidad). La política de destino, que es la política predeterminada habilitada
en Red Hat Enterprise Linux, basa sus reglas en el tercer contexto: el contexto de tipo. Por lo
general, los nombres de contexto de tipo finalizan en _t.

Figura 5.1: Contexto de archivo de SELinux

El contexto de tipo para un servidor web es httpd_t. El contexto de tipo para los archivos y los
directorios que generalmente se encuentran en /var/www/html es httpd_sys_content_t. El
contexto para los archivos y directorios que normalmente se encuentran en /tmp y /var/tmp es
tmp_t. El contexto de tipo para los puertos del servidor web es http_port_t.

Apache tiene un contexto de tipo de httpd_t. Hay una regla de política que permite que Apache
acceda a archivos y directorios con el contexto de tipo httpd_sys_content_t. De manera
predeterminada, los archivos encontrados en /var/www/html y otros directorios del servidor
web tienen el contexto de tipo httpd_sys_content_t. No hay una regla allow (permitir) en la
política para los archivos que normalmente se encuentran en /tmp y /var/tmp, de modo que no

RH199-RHEL8.0-es-1-20190531 149
CAPÍTULO 5 | Administración de seguridad de SELinux

se permite el acceso. Con SELinux habilitado, un usuario malintencionado que haya comprometido
el proceso del servidor web no podría acceder al directorio /tmp.

El servidor MariaDB tiene un contexto de tipo de mysqld_t. De manera predeterminada, los


archivos encontrados en /data/mysql tienen el contexto de tipo de mysqld_db_t. Este tipo
de contexto permite que MariaDB acceda a esos archivos, pero deshabilita el acceso de otros
servicios, como el servicio web de Apache.

Figura 5.2: Acceso de SELinux

Muchos comandos que tienen que ver con archivos usan la opción -Z para mostrar o configurar
contextos de SELinux. Por ejemplo, ps, ls, cp y mkdir usan la opción -Z para mostrar o
configurar contextos de SELinux.

[root@host ~]# ps axZ


LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:09 /usr/lib/systemd/...
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 3 ? S 0:00 [ksoftirqd/0]
...output omitted...
[root@host ~]# systemctl start httpd
[root@host ~]# ps -ZC httpd
LABEL PID TTY TIME CMD
system_u:system_r:httpd_t:s0 1608 ? 00:00:05 httpd
system_u:system_r:httpd_t:s0 1609 ? 00:00:00 httpd
...output omitted...
[root@host ~]# ls -Z /home
drwx------. root root system_u:object_r:lost_found_t:s0 lost+found
drwx------. student student unconfined_u:object_r:user_home_dir_t:s0 student
drwx------. visitor visitor unconfined_u:object_r:user_home_dir_t:s0 visitor
[root@host ~]# ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons

CAMBIO DEL MODO ACTUAL DE SELINUX


El subsistema de SELinux proporciona herramientas para mostrar y cambiar los modos. Para
determinar el modo actual de SELinux, ejecute el comando getenforce. Para configurar SELinux
en un modo diferente, use el comando setenforce:

150 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

[user@host ~]# getenforce


Enforcing
[user@host ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[user@host ~]# setenforce 0
[user@host ~]# getenforce
Permissive
[user@host ~]# setenforce Enforcing
[user@host ~]# getenforce
Enforcing

Alternativamente, puede establecer el modo de SELinux en el momento del arranque pasando


un parámetro al kernel: el argumento del kernel de enforcing=0 arranca el sistema en modo
permisivo; un valor de enforcing=1 establece el modo de cumplimiento. También puede
desactivar SELinux completamente pasando el parámetro del kernel selinux=0. Un valor de
selinux=1 habilita SELinux.

CONFIGURACIÓN DEL MODO PREDETERMINADO DE


SELINUX
También puede configurar SELinux de manera persistente con el archivo /etc/selinux/
config. En el siguiente ejemplo (la configuración predeterminada), el archivo de configuración
establece SELinux en enforcing. Los comentarios también muestran los otros valores válidos:
permissive y disabled.

# This file controls the state of SELinux on the system.


# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes
# are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

El sistema lee este archivo en el momento del arranque y configura SELinux como se muestra. Lo
argumentos del kernel (selinux=0|1 y enforcing=0|1) anulan esta configuración.

REFERENCIAS
Páginas del manual: getenforce(8), setenforce(8) y selinux_config(5)

RH199-RHEL8.0-es-1-20190531 151
CAPÍTULO 5 | Administración de seguridad de SELinux

EJERCICIO GUIADO

CAMBIO DEL MODO DE CUMPLIMIENTO


DE SELINUX
En este trabajo de laboratorio, administrará modos de SELinux, tanto de forma temporal
como de forma persistente.

RESULTADOS
Debería ser capaz de ver y configurar el modo de SELinux actual.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-opsmode start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la red.

[student@workstation ~]$ lab selinux-opsmode 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. 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. Cambie el modo predeterminado de SELinux a permisivo y reinicie.

3.1. Use el comando getenforce para verificar que servera está en modo enforcing.

[root@servera ~]# getenforce


Enforcing

3.2. Use el comando vim para abrir el archivo de configuración /etc/selinux/config.


Cambie el parámetro SELINUX de enforcing a permissive.

[root@servera ~]# vim /etc/selinux/config

152 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

3.3. Use el comando grep para confirmar que el parámetro SELINUX se establece en
permissive.

[root@servera ~]# grep '^SELINUX' /etc/selinux/config


SELINUX=permissive
SELINUXTYPE=targeted

3.4. Use el comando systemctl reboot para reiniciar servera.

[root@servera ~]# systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

4. servera tarda unos minutos en reiniciarse. Después de unos minutos, inicie sesión en
servera como el usuario student. Use el comando sudo -i para convertirse en root.
Visualice el modo de SELinux actual con el comando getenforce.

4.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 ~]$

4.2. Use el comando sudo -i para convertirse en root.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

4.3. Visualice el modo de SELinux actual con el comando getenforce.

[root@servera ~]# getenforce


Permissive

5. En el archivo /etc/selinux/config, cambie el modo predeterminado de SELinux a


enforcing. Este cambio solo tendrá efecto en el siguiente reinicio.

5.1. Use el comando vim para abrir el archivo de configuración /etc/selinux/config.


Vuelva a cambiar SELINUX a enforcing.

[root@servera ~]# vim /etc/selinux/config

5.2. Use el comando grep para confirmar que el parámetro SELINUX se establece en
enforcing.

[root@servera ~]# grep '^SELINUX' /etc/selinux/config


SELINUX=enforcing
SELINUXTYPE=targeted

RH199-RHEL8.0-es-1-20190531 153
CAPÍTULO 5 | Administración de seguridad de SELinux

6. Use el comando setenforce para configurar el modo de SELinux actual en enforcing


sin reiniciar. Confirme que el modo se ha configurado en enforcing con el comando
getenforce.

[root@servera ~]# setenforce 1


[root@servera ~]# getenforce
Enforcing

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 selinux-opsmode finish para terminar este
ejercicio.

[student@workstation ~]$ lab selinux-opsmode finish

Esto concluye el ejercicio guiado.

154 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

CONTROL DE CONTEXTOS DE ARCHIVO


DE SELINUX

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Administrar las reglas de políticas de SELinux que determinan el contexto predeterminado para
archivos y directorios con el comando semanage fcontext.

• Aplicar el contexto definido por la política de SELinux a archivos y directorios con el comando
restorecon.

CONTEXTO INICIAL DE SELINUX


En los sistemas que ejecutan SELinux, todos los procesos y archivos están etiquetados. La
etiqueta representa la información relevante de seguridad, conocida como el contexto de SELinux.

En general, los nuevos archivos heredan su contexto de SELinux del directorio principal,
garantizando así que tengan el contexto adecuado.

Sin embargo, este procedimiento de herencia puede verse comprometido de dos maneras
diferentes. Primero, si crea un archivo en una ubicación diferente de la ubicación final y, luego,
mueve el archivo, este aún tiene el contexto de SELinux del directorio donde se creó, no del
directorio de destino. Segundo, si copia un archivo conservando el contexto de SELinux, como con
el comando cp -a, el contexto de SELinux refleja la ubicación del archivo original.

En el siguiente ejemplo, se demuestran la herencia y sus escollos. Considere estos dos archivos
creados en /tmp, uno se movió a /var/www/html y el segundo se copió al mismo directorio.
Tenga en cuenta los contextos de SELinux de los archivos. El archivo que se movió al directorio /
var/www/html conserva el contexto de archivo para el directorio /tmp. El archivo que se copió al
directorio /var/www/html heredó el contexto de SELinux del directorio /var/www/html.

El comando ls -Z muestra el contexto de SELinux de un archivo. Tenga en cuenta la etiqueta del


archivo.

[root@host ~]# ls -Z /var/www/html/index.html


-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/
index.html

El comando ls -Zd muestra el contexto de SELinux de un directorio:

[root@host ~]# ls -Zd /var/www/html/


drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Tenga en cuenta que el /var/www/html/index.html tiene la misma etiqueta que el directorio


principal /var/www/html/. Ahora, cree archivos fuera del directorio /var/www/html y observe
su contexto de archivo:

RH199-RHEL8.0-es-1-20190531 155
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@host ~]# touch /tmp/file1 /tmp/file2


[root@host ~]# ls -Z /tmp/file*
unconfined_u:object_r:user_tmp_t:s0 /tmp/file1
unconfined_u:object_r:user_tmp_t:s0 /tmp/file2

Mueva uno de estos archivos al directorio /var/www/html, copie otro, y observe la etiqueta de
cada uno:

[root@host ~]# mv /tmp/file1 /var/www/html/


[root@host ~]# cp /tmp/file2 /var/www/html/

[root@host ~]# ls -Z /var/www/html/file*


unconfined_u:object_r:user_tmp_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2

El archivo movido mantiene su etiqueta original, mientras que el archivo copiado hereda la
etiqueta del directorio /var/www/html. unconfined_u: es el usuario, object_r: denota el rol
y s0 es el nivel. Un nivel de sensibilidad de 0 es el nivel de sensibilidad más bajo posible.

CAMBIO DEL CONTEXTO DE SELINUX DE UN


ARCHIVO
Los comandos para cambiar el contexto de SELinux de los archivos incluyen semanage
fcontext, restorecon y chcon.

El método preferido para establecer el contexto de SELinux para un archivo es declarar el


etiquetado predeterminado para un archivo con el comando semanage fcontext y, luego,
aplicar ese contexto al archivo con el comando restorecon. Esto asegura que el etiquetado sea
el deseado incluso después de haber etiquetado de nuevo todo el sistema de archivos.

El comando chcon cambia los contextos de SELinux. chcon establece el contexto de seguridad
en el archivo, almacenado en el sistema de archivos. Es útil para pruebas y experimentos. Sin
embargo, no guarda los cambios de contexto en la base de datos de contexto de SELinux. Cuando
se ejecuta un comando restorecon, los cambios realizados por el comando chcon tampoco se
guardan. Además, si se vuelve a etiquetar todo el sistema de archivos, se revierte el contexto de
SELinux para los archivos modificados con chcon.

En la siguiente pantalla, se muestra un directorio que se está creando. El directorio tiene un valor
de tipo de default_t.

[root@host ~]# mkdir /virtual


[root@host ~]# ls -Zd /virtual
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /virtual

El comando chcon cambia el contexto de archivo del directorio /virtual: el valor de tipo cambia
a httpd_sys_content_t.

[root@host ~]# chcon -t httpd_sys_content_t /virtual


[root@host ~]# ls -Zd /virtual
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /virtual

156 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

El comando restorecon se ejecuta y el valor de tipo vuelve al valor de default_t. Observe el


mensaje Relabeled (reetiquetado).

[root@host ~]# restorecon -v /virtual


Relabeled /virtual from unconfined_u:object_r:httpd_sys_content_t:s0 to
unconfined_u:object_r:default_t:s0
[root@host ~]# ls -Zd /virtual
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /virtual

DEFINICIÓN DE LAS REGLAS DE CONTEXTOS DE


ARCHIVOS PREDETERMINADOS DE SELINUX
El comando semanage fcontext muestra o modifica las reglas que usa restorecon para
configurar los contextos de archivos predeterminados. Usa expresiones regulares ampliadas
para especificar los nombres de archivo y las rutas de acceso. La expresión regular ampliada más
frecuente usada en las reglas fcontext es (/.*)?, que significa “como opción, coincidir con un /
seguido por una serie de caracteres”. Busca coincidencias con el directorio detallado antes de la
expresión y todo lo que contiene ese directorio de forma recursiva.

Operaciones básicas de contexto de archivo


La siguiente tabla es una referencia para las opciones semanage fcontext para agregar,
eliminar o enumerar contextos de archivos de SELinux.

Comandos de semanage fcontext

OPCIÓN DESCRIPCIÓN

-a, --add Agregar un registro del tipo de objeto especificado

-d, --delete Eliminar un registro del tipo de objeto especificado

-l, --list Mostrar registros del tipo de objeto especificado

Para asegurarse de tener las herramientas para administrar los contextos de SELinux, instale
el paquete policycoreutil y el paquete policycoreutil-python si es necesario. Estos
contienen el comando restorecon y el comando semanage, respectivamente.

Para asegurarse de que todos los archivos de un directorio tengan el contexto de archivo correcto,
ejecute el comando semanage fcontext -l seguido por el comando restorecon. En el
siguiente ejemplo, observe el contexto de archivo de cada archivo antes y después de que se
ejecuten los comandos semanage y restorecon.

[root@host ~]# ls -Z /var/www/html/file*


unconfined_u:object_r:user_tmp_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2

[root@host ~]# semanage fcontext -l


...output omitted...
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
...output omitted...

RH199-RHEL8.0-es-1-20190531 157
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@host; ~]# restorecon -Rv /var/www/


Relabeled /var/www/html/file1 from unconfined_u:object_r:user_tmp_t:s0 to
unconfined_u:object_r:httpd_sys_content_t:s0
[root@host ~]# ls -Z /var/www/html/file*
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2

En el siguiente ejemplo, se muestra cómo usar semanage para agregar un contexto para un
directorio nuevo.

[root@host ~]# mkdir /virtual


[root@host ~]# touch /virtual/index.html
[root@host ~]# ls -Zd /virtual/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /virtual/

[root@host ~]# ls -Z /virtual/


-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html
[root@host ~]# semanage fcontext -a -t httpd_sys_content_t '/virtual(/.*)?'
[root@host ~]# restorecon -RFvv /virtual
[root@host ~]# ls -Zd /virtual/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /virtual/
[root@host ~]# ls -Z /virtual/
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html

REFERENCIAS
Páginas del manual: chcon(1), restorecon(8), semanage(8) y semanage-
fcontext(8)

158 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

EJERCICIO GUIADO

CONTROL DE CONTEXTOS DE ARCHIVO


DE SELINUX
En este trabajo de laboratorio, realizará un cambio persistente en el contexto de SELinux de
un directorio y su contenido.

RESULTADOS
Debe poder configurar el servidor HTTP Apache para publicar contenido web desde una raíz
de documento no estándar.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-filecontexts start. Este


comando ejecuta un script de inicio que determina si la máquina servera es accesible en
la red. También instala el servicio httpd y configura el firewall en servera para permitir
conexiones http.

[student@workstation ~]$ lab selinux-filecontexts 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. 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. Configure Apache para usar una root de documento en una ubicación no estándar.

3.1. Cree la nueva root del documento, /custom, con el comando mkdir.

[root@servera ~]# mkdir /custom

3.2. Cree el archivo index.html en la raíz del documento /custom con el comando echo.

RH199-RHEL8.0-es-1-20190531 159
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@servera ~]# echo 'This is SERVERA.' > /custom/index.html

3.3. Configure Apache para que use la nueva ubicación de la raíz del documento. Debe
reemplazar las dos apariciones de /var/www/html con /custom en el archivo de
configuración de Apache, /etc/httpd/conf/httpd.conf.

[root@servera ~]# vim /etc/httpd/conf/httpd.conf


[root@servera ~]# grep custom /etc/httpd/conf/httpd.conf
DocumentRoot "/custom"
<Directory "/custom">

4. Inicie y habilite el servicio web Apache y confirme que el servicio se está ejecutando.

4.1. Inicie y habilite el servicio web Apache con el comando systemctl.

[root@servera ~]# systemctl enable --now httpd

4.2. Use el comando systemctl para confirmar que el servicio se está ejecutando.

[root@servera ~]# systemctl status httpd


● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset:
disabled)
Active: active (running) since Mon 2019-03-25 19:16:48 CET; 15h ago
Docs: man:httpd.service(8)
Main PID: 6565 (httpd)
Status: "Total requests: 16; Idle/Busy workers 100/0;Requests/sec: 0.000285;
Bytes served/sec: 0 B/sec"
Tasks: 213 (limit: 11406)
Memory: 37.3M
CGroup: /system.slice/httpd.service
├─6565 /usr/sbin/httpd -DFOREGROUND
├─6566 /usr/sbin/httpd -DFOREGROUND
├─6567 /usr/sbin/httpd -DFOREGROUND
├─6568 /usr/sbin/httpd -DFOREGROUND
└─6569 /usr/sbin/httpd -DFOREGROUND

Mar 25 19:16:48 servera.lab.example.com systemd[1]: Starting The Apache HTTP


Server...
Mar 25 19:16:48 servera.lab.example.com httpd[6565]: Server configured, listening
on: port 80
Mar 25 19:16:48 servera.lab.example.com systemd[1]: Started The Apache HTTP
Server.

5. Abra un navegador web en workstation e intente ver http://servera/index.html.


Recibirá un mensaje de error que dice que no tiene permiso para acceder al archivo.

6. Para permitir el acceso al archivo index.html en servera, SELinux debe estar


configurado. Defina una regla de contextos de archivos de SELinux que establezca el tipo
de contexto en httpd_sys_content_t para el directorio /custom y todos los archivos
debajo de este.

160 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@servera ~]# semanage fcontext -a -t httpd_sys_content_t '/custom(/.*)?'

7. Use el comando restorecon para cambiar los contextos de archivos.

[root@servera ~]# restorecon -Rv /custom


Relabeled /custom from unconfined_u:object_r:default_t:s0 to
unconfined_u:object_r:httpd_sys_content_t:s0
Relabeled /custom/index.html from unconfined_u:object_r:default_t:s0 to
unconfined_u:object_r:httpd_sys_content_t:s0

8. Intente ver http://servera/index.html nuevamente. Debería ver el mensaje This


is SERVERA. (Este es SERVERA).

9. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab selinux-filecontexts finish para terminar este
ejercicio.

[student@workstation ~]$ lab selinux-filecontexts finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 161
CAPÍTULO 5 | Administración de seguridad de SELinux

AJUSTE DE LA POLÍTICA DE SELINUX


CON BOOLEANOS

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Activar y desactivar las reglas de políticas de SELinux con setsebool.

• Administrar el valor persistente de los booleanos SELinux con el comando semanage boolean
-l.

• Consultar las páginas del manual que finalizan con _selinux para encontrar información útil
sobre los booleanos de SELinux.

BOOLEANOS DE SELINUX
Los booleanos de SELinux son opciones que modifican el comportamiento de la política de
SELinux. Los booleanos de SELinux son reglas que pueden habilitarse o deshabilitarse. Los
administradores de seguridad pueden usarlos para realizar ajustes selectivos en la política.

Las páginas del manual de SELinux, provistas con el paquete selinux-policy-doc, describen el
propósito de los booleanos disponibles. El comando man -k '_selinux' enumera estas
páginas del manual.

Los comandos útiles para la gestión de booleanos de SELinux incluyen getsebool, que enumera
los booleanos y su estado, y setsebool, que modifica los booleanos. setsebool -P modifica la
política de SELinux para hacer la modificación persistente. semanage boolean -l informa si un
booleano es persistente o no, junto con una breve descripción del booleano.

Los usuarios no privilegiados pueden ejecutar el comando getsebool, pero solo los
superusuarios pueden ejecutar semanage boolean -l y setsebool -P.

[user@host ~]$ getsebool -a


abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
...output omitted...
[user@host ~]$ getsebool httpd_enable_homedirs
httpd_enable_homedirs --> off

[user@host ~]$ setsebool httpd_enable_homedirs on


Could not change active booleans. Please try as root: Permission denied
[user@host ~]$ sudo setsebool httpd_enable_homedirs on
[user@host ~]$ sudo semanage boolean -l | grep httpd_enable_homedirs
httpd_enable_homedirs (on , off) Allow httpd to enable homedirs
[user@host ~]$ getsebool httpd_enable_homedirs
httpd_enable_homedirs --> on

162 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

La opción -P escribe todos los valores pendientes en la política, haciéndolos persistentes en los
reinicios. En el ejemplo que sigue, tenga en cuenta los valores entre paréntesis: ambos ahora están
configurados en on (activado).

[user@host ~]$ setsebool -P httpd_enable_homedirs on


[user@host ~]$ sudo semanage boolean -l | grep httpd_enable_homedirs
httpd_enable_homedirs (on , on) Allow httpd to enable homedirs

Para enumerar los valores booleanos en los que el estado actual difiere del estado
predeterminado, ejecute semanage boolean -l -C.

[user@host ~]$ sudo semanage boolean -l -C


SELinux boolean State Default Description

cron_can_relabel (off , on) Allow cron to can relabel

REFERENCIAS
Páginas del manual: booleans(8), getsebool(8), setsebool(8), semanage(8),
semanage-boolean(8)

RH199-RHEL8.0-es-1-20190531 163
CAPÍTULO 5 | Administración de seguridad de SELinux

EJERCICIO GUIADO

AJUSTE DE LA POLÍTICA DE SELINUX


CON BOOLEANOS
Apache puede publicar contenido web alojado en los directorios de inicio de los usuarios,
pero SELinux lo impide de forma predeterminada. En este ejercicio, identificará y cambiará
el booleano de SELinux que permite a Apache acceder a los directorios de inicio de los
usuarios.

RESULTADOS
Debe poder configurar Apache para publicar contenido web desde los directorios de inicio
de los usuarios.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-booleans start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la
red. También instala el servicio httpd y configura el firewall en servera para permitir
conexiones http.

[student@workstation ~]$ lab selinux-booleans 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. 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. Para habilitar la función Apache que permite que los usuarios publiquen contenido web
desde sus directorios de inicio, debe editar el archivo de configuración /etc/httpd/
conf.d/userdir.conf. Comente la línea que establece UserDir en disabled
(desactivado) y quite el comentario de la línea que establece UserDir en public_html.

164 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@servera ~]# vim /etc/httpd/conf.d/userdir.conf


#UserDir disabled
UserDir public_html

4. Use el comando grep para confirmar los cambios.

[root@servera ~]# grep '#UserDir' /etc/httpd/conf.d/userdir.conf


#UserDir disabled
[root@servera ~]# grep '^ *UserDir' /etc/httpd/conf.d/userdir.conf
UserDir public_html

5. Inicie y habilite el servicio web Apache para que tengan efecto los cambios realizados.

[root@servera ~]# systemctl enable --now httpd

6. En otra ventana de terminal inicie sesión como student. SSH en servera. Cree algo de
contenido web que sea publicado desde un directorio de inicio de los usuarios.

6.1. En otra ventana de terminal inicie sesión como student. Use el comando ssh para
iniciar sesión en servera como el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

6.2. Use el comando mkdir para crear un directorio denominado ~/public_html.

[student@servera ~]$ mkdir ~/public_html

6.3. Cree el archivo index.html con el siguiente contenido:

[student@servera ~]$ echo 'This is student content on SERVERA.' > \


~/public_html/index.html

6.4. Use el comando chmod para cambiar los permisos en el directorio de inicio de
student de modo que Apache pueda acceder al subdirectorio public_html.

[student@servera ~]$ chmod 711 ~

7. Abra un navegador web en workstation e intente ver la siguiente URL: http://


servera/~student/index.html. Recibe un mensaje de error que dice que no tiene
permiso para acceder al archivo.

8. En la ventana de terminal con acceso root, use el comando getsebool para ver si hay
booleanos que restrinjan el acceso a los directorios de inicio.

RH199-RHEL8.0-es-1-20190531 165
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@servera ~]# getsebool -a | grep home


...output omitted...
httpd_enable_homedirs --> off
...output omitted...

9. En la ventana de terminal con acceso root, use el comando setsebool para habilitar el
acceso al directorio de inicio de forma persistente.

[root@servera ~]# setsebool -P httpd_enable_homedirs on

10. Intente ver http://servera/~student/index.html nuevamente. Debe ver el


mensaje: This is student content on SERVERA. (Este es contenido de student en
SERVERA).

11. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab selinux-booleans finish para terminar este
ejercicio.

[student@workstation ~]$ lab selinux-booleans finish

Esto concluye el ejercicio guiado.

166 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

INVESTIGACIÓN Y RESOLUCIÓN DE
PROBLEMAS DE SELINUX

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Usar las herramientas de análisis de registros de SELinux.

• Visualizar información útil durante la resolución de problemas de SELinux con el comando


sealert.

SOLUCIÓN DE PROBLEMAS DE SELINUX


Es importante comprender qué acciones debe tomar cuando SELinux impide el acceso a
los archivos en un servidor que debe ser accesible. Use los siguientes pasos como guía para
solucionar estos problemas:

1. Antes de pensar en hacer ajustes, considere que SELinux puede estar haciendo este trabajo
correctamente al prohibir el intento de acceso. Si un servidor web intenta acceder a archivos
en /home, esto podría indicar un riesgo para el servicio si el contenido web no es publicado
por usuarios. Si el acceso debería haberse otorgado, es necesario realizar pasos adicionales
para solucionar el problema.

2. El problema más frecuente de SELinux es un contexto de archivos incorrecto. Esto puede


ocurrir cuando un archivo se crea en una ubicación con un contexto de archivos y se traslada a
una ubicación donde se espera un contexto diferente. En la mayoría de los casos, la ejecución
de restorecon corregirá el problema. Corregir los problemas de este modo tiene poco
impacto en la seguridad del resto del sistema.

3. Otra solución para un acceso demasiado restrictivo podría ser el ajuste de un booleano. Por
ejemplo, el booleano ftpd_anon_write controla si usuarios del FTP anónimos pueden
cargar archivos. Debe activar este booleano para permitir que los usuarios anónimos de FTP
carguen archivos en un servidor. El ajuste de booleanos requiere más cuidado porque estos
pueden tener un amplio impacto en la seguridad del sistema.

4. Es posible que la política de SELinux tenga un error que impida un acceso legítimo. Debido a
que SELinux se ha consolidado, es poco común que esto ocurra. Cuando está claro que se ha
identificado un error en la política, comuníquese con el soporte de Red Hat para informar el
error de modo que se pueda resolver.

MONITOREO DE LAS VIOLACIONES DE SELINUX


Instale el paquete setroubleshoot-server para enviar mensajes de SELinux a /var/log/
messages. setroubleshoot-server escucha mensajes de auditoría en /var/log/
audit/audit.log y envía un breve resumen a /var/log/messages. Este resumen incluye
identificadores únicos (UUID) para violaciones de SELinux que se pueden usar para reunir más
información. El comando sealert -l UUID se usa para generar un informe para un incidente
específico. Use sealert -a /var/log/audit/audit.log para generar informes para todos
los incidentes en ese archivo.

Considere el siguiente ejemplo de secuencia de comandos en un servidor web Apache estándar:

RH199-RHEL8.0-es-1-20190531 167
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@host ~]# touch /root/file3


[root@host ~]# mv /root/file3 /var/www/html
[root@host ~]# systemctl start httpd
[root@host ~]# curl http://localhost/file3
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /file3
on this server.</p>
</body></html>

Se espera que el servidor web envíe el contenido de file3, pero en cambio, devuelve un error de
permission denied (Permiso denegado). Si se inspeccionan /var/log/audit/audit.log y
/var/log/messages, se puede obtener más información sobre este error.

[root@host ~]# tail /var/log/audit/audit.log


...output omitted...
type=AVC msg=audit(1392944135.482:429): avc: denied { getattr } for
pid=1609 comm="httpd" path="/var/www/html/file3" dev="vda1" ino=8980981
scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file
...output omitted...
[root@host ~]# tail /var/log/messages
...output omitted...
Feb 20 19:55:42 host setroubleshoot: SELinux is preventing /usr/sbin/httpd
from getattr access on the file . For complete SELinux messages. run
sealert -l 613ca624-248d-48a2-a7d9-d28f5bbe2763

Ambos archivos de registro indican que el motivo del error es una denegación de SELinux.
El comando sealert que es parte de la salida de /var/log/messages proporciona más
información, que incluye una posible corrección.

[root@host ~]# sealert -l 613ca624-248d-48a2-a7d9-d28f5bbe2763


SELinux is preventing /usr/sbin/httpd from getattr access on the file .

***** Plugin catchall (100. confidence) suggests **************************

If you believe that httpd should be allowed getattr access on the


file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

Additional Information:
Source Context system_u:system_r:httpd_t:s0
Target Context unconfined_u:object_r:admin_home_t:s0
Target Objects [ file ]

168 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

Source httpd
Source Path /usr/sbin/httpd
Port <Unknown>
Host servera
Source RPM Packages httpd-2.4.6-14.el7.x86_64
Target RPM Packages
Policy RPM selinux-policy-3.12.1-124.el7.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name servera
Platform Linux servera 3.10.0-84.el7.x86_64 #1
SMP Tue Feb 4 16:28:19 EST 2014 x86_64 x86_64
Alert Count 2
First Seen 2014-02-20 19:55:35 EST
Last Seen 2014-02-20 19:55:35 EST
Local ID 613ca624-248d-48a2-a7d9-d28f5bbe2763

Raw Audit Messages


type=AVC msg=audit(1392944135.482:429): avc: denied { getattr } for
pid=1609 comm="httpd" path="/var/www/html/file3" dev="vda1" ino=8980981
scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

type=SYSCALL msg=audit(1392944135.482:429): arch=x86_64 syscall=lstat


success=no exit=EACCES a0=7f9fed0edea8 a1=7fff7bffc770 a2=7fff7bffc770
a3=0 items=0 ppid=1608 pid=1609 auid=4294967295 uid=48 gid=48 euid=48
suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295
comm=httpd exe=/usr/sbin/httpd subj=system_u:system_r:httpd_t:s0 key=(null)

Hash: httpd,httpd_t,admin_home_t,file,getattr

NOTA
La sección Raw Audit Messages (Mensajes de auditoría sin formato) revela el
archivo de destino que presenta el problema, /var/www/html/file3. Además,
el contexto objetivo, tcontext, no parece pertenecer a un servidor web. Use el
comando restorecon /var/www/html/file3 para corregir el contexto de
archivos. Si deben ajustarse otros archivos, restorecon puede restablecer de
forma recursiva el contexto: restorecon -R /var/www/.

La sección Raw Audit Messages (Mensajes de auditoría en bruto) del comando sealert
contiene información de /var/log/audit.log. Para buscar el archivo /var/log/audit.log,
use el comando ausearch. La opción -m busca en el tipo de mensaje. La opción -ts busca en
función del tiempo.

RH199-RHEL8.0-es-1-20190531 169
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@host ~]# ausearch -m AVC -ts recent


----
time->Tue Apr 9 13:13:07 2019
type=PROCTITLE msg=audit(1554808387.778:4002):
proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44
type=SYSCALL msg=audit(1554808387.778:4002): arch=c000003e syscall=49
success=no exit=-13 a0=3 a1=55620b8c9280 a2=10 a3=7ffed967661c items=0
ppid=1 pid=9340 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0
sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd"
subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1554808387.778:4002): avc: denied { name_bind }
for pid=9340 comm="httpd" src=82 scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket permissive=0

CONSOLA WEB
Si la Consola web está instalada, también se puede usar para solucionar problemas de SELinux.
Inicie sesión en la Consola Web y seleccione SELinux en el menú de la izquierda. La ventana
SELinux Policy (Política de SELinux) le informa de la política de cumplimiento actual. Cualquier
problema se detalla en la sección SELinux Access Control Errors (Errores de control de acceso de
SELinux).

Figura 5.3: Política de SELinux en la consola web

Haga clic en el carácter > para mostrar los detalles del error. Haga clic en solution details (detalles
de la solución) para mostrar todos los detalles y la posible solución.

Figura 5.4: Solución de política de SELinux en la consola web

Una vez resuelto el problema, la sección SELinux Access Control Errors ya no debería mostrar el
error. Si aparece el mensaje No SELinux alerts (No hay alertas de SELinux), se han corregido
todos los problemas.

170 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

Figura 5.5: No hay alertas de SELinux en la consola web

REFERENCIAS
Página del manual: sealert(8)

RH199-RHEL8.0-es-1-20190531 171
CAPÍTULO 5 | Administración de seguridad de SELinux

EJERCICIO GUIADO

INVESTIGACIÓN Y RESOLUCIÓN DE
PROBLEMAS DE SELINUX
En este trabajo de laboratorio, aprenderá cómo solucionar problemas de denegaciones por
seguridad de SELinux.

RESULTADOS
Obtendrá algo de experiencia en el uso de herramientas de solución de problemas de
SELinux.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-issues start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la red.
Instala el servicio httpd, configura el firewall en servera para permitir conexiones HTTP y
elimina el contexto de SELinux del directorio /custom.

[student@workstation ~]$ lab selinux-issues 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. 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. Abra un navegador web en workstation e intente ver http://servera/index.html.


Recibirá un mensaje de error que dice que no tiene permiso para acceder al archivo.

4. Con el comando less, vea el contenido de /var/log/messages. Use la tecla / para


buscar sealert. Copie el comando sugerido sealert para que pueda usarse en el
siguiente paso. Use la tecla q para salir del comando less.

172 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@servera ~]# less /var/log/messages


...output omitted...
Mar 28 06:07:03 servera setroubleshoot[15326]: SELinux is preventing /usr/sbin/
httpd from getattr access on the file /custom/index.html. For complete SELinux
messages run: sealert -l b1c9cc8f-a953-4625-b79b-82c4f4f1fee3
Mar 28 06:07:03 servera platform-python[15326]: SELinux is preventing /usr/sbin/
httpd from getattr access on the file /custom/index.html.#012#012***** Plugin
catchall (100. confidence) suggests **************************#012#012If
you believe that httpd should be allowed getattr access on the index.html file
by default.#012Then you should report this as a bug.#012You can generate a
local policy module to allow this access.#012Do#012allow this access for now by
executing:#012# ausearch -c 'httpd' --raw | audit2allow -M my-httpd#012# semodule
-X 300 -i my-httpd.pp#012
Mar 28 06:07:04 servera setroubleshoot[15326]: failed to retrieve rpm info for /
custom/index.html
...output omitted...

5. Ejecute el comando sugerido sealert. Tenga en cuenta el contexto de origen, los objetos
de destino, la política y el modo de cumplimiento.

[root@servera ~]# sealert -l b1c9cc8f-a953-4625-b79b-82c4f4f1fee3


SELinux is preventing /usr/sbin/httpd from getattr access on the file /custom/
index.html.

***** Plugin catchall (100. confidence) suggests **************************

If you believe that httpd should be allowed getattr access on the index.html file
by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -X 300 -i my-httpd.pp

Additional Information:
Source Context system_u:system_r:httpd_t:s0
Target Context unconfined_u:object_r:default_t:s0
Target Objects /custom/index.html [ file ]
Source httpd
Source Path /usr/sbin/httpd
Port <Unknown>
Host servera.lab.example.com
Source RPM Packages
Target RPM Packages
Policy RPM selinux-policy-3.14.1-59.el8.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name servera.lab.example.com
Platform Linux servera.lab.example.com 4.18.0-67.el8.x86_64
#1 SMP Sat Feb 9 12:44:00 UTC 2019 x86_64 x86_64

RH199-RHEL8.0-es-1-20190531 173
CAPÍTULO 5 | Administración de seguridad de SELinux

Alert Count 18
First Seen 2019-03-25 19:25:28
CET
Last Seen 2019-03-28 11:07:00
CET
Local ID b1c9cc8f-a953-4625-
b79b-82c4f4f1fee3

Raw Audit Messages


type=AVC msg=audit(1553767620.970:16958):
avc: denied { getattr } for pid=15067 comm="httpd" path="/custom/
index.html" dev="vda1" ino=4208311 scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=0

Hash: httpd,httpd_t,default_t,file,getattr

6. La sección Raw Audit Messages (Mensajes de auditoría en bruto) del comando


sealert contiene información de /var/log/audit/audit.log. Use el comando
ausearch para buscar el archivo /var/log/audit/audit.log. La opción -m busca en
el tipo de mensaje. La opción -ts busca en función del tiempo. Esta entrada identifica el
proceso relevante y el archivo que causa la alerta. El proceso es el servidor web Apache
httpd, el archivo es /custom/index.html y el contexto es system_r:httpd_t.

[root@servera ~]# ausearch -m AVC -ts recent


----
time->Thu Mar 28 13:39:30 2019
type=PROCTITLE msg=audit(1553776770.651:17000):
proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44
type=SYSCALL msg=audit(1553776770.651:17000): arch=c000003e syscall=257
success=no exit=-13 a0=ffffff9c a1=7f8db803f598 a2=80000 a3=0 items=0 ppid=15063
pid=15065 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48
sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd"
subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1553776770.651:17000): avc: denied
{ open } for pid=15065 comm="httpd" path="/custom/index.html"
dev="vda1" ino=4208311 scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=0

7. Para resolver el problema, use los comandos semanage y restorecon. El contexto que se
debe administrar es httpd_sys_content_t .

[root@servera ~]# semanage fcontext -a -t httpd_sys_content_t '/custom(/.*)?'


[root@servera ~]# restorecon -Rv /custom
Relabeled /custom from unconfined_u:object_r:default_t:s0 to
unconfined_u:object_r:httpd_sys_content_t:s0
Relabeled /custom/index.html from unconfined_u:object_r:default_t:s0 to
unconfined_u:object_r:httpd_sys_content_t:s0

8. Intente ver http://servera/index.html nuevamente. Debería ver el mensaje This


is SERVERA. (Este es SERVERA).

174 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

9. Salga de servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab selinux-issues finish para terminar este ejercicio.

[student@workstation ~]$ lab selinux-issues finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 175
CAPÍTULO 5 | Administración de seguridad de SELinux

TRABAJO DE LABORATORIO

ADMINISTRACIÓN DE SEGURIDAD DE
SELINUX
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, solucionará un problema de denegación de acceso de
SELinux. Los administradores de sistemas tienen problemas para obtener un nuevo servidor
web para proporcionar contenido a clientes cuando SELinux está en modo de cumplimiento.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Identificar problemas en los archivos de registro del sistema.

• Ajustar la configuración de SELinux.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-review start. Este comando


ejecuta un script de inicio que determina si la máquina serverb es accesible en la red.
También instala el servidor httpd Apache, crea un nuevo DocumentRoot para Apache y
actualiza el archivo de configuración.

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

1. Inicie sesión en serverb como el usuario root.


2. Inicie un navegador web en workstation y diríjase a http://serverb/lab.html. Verá el
mensaje de error: You do not have permission to access /lab.html on this
server (No tiene permiso para acceder a /lab.html en este servidor).
3. Investigue e identifique el problema de SELinux que impide que Apache proporcione el
contenido web.
4. Muestre el contexto de SELinux de la nueva raíz de documentos HTTP y la raíz de
documentos HTTP original. Resuelva el problema de SELinux que impide que Apache
proporcione el contenido web.
5. Verifique que el problema de SELinux se haya resuelto y que Apache pueda proporcionar
contenido web.
6. Salga de serverb.

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

176 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

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

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

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

Esto concluye el trabajo de laboratorio.

RH199-RHEL8.0-es-1-20190531 177
CAPÍTULO 5 | Administración de seguridad de SELinux

SOLUCIÓN

ADMINISTRACIÓN DE SEGURIDAD DE
SELINUX
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, solucionará un problema de denegación de acceso de
SELinux. Los administradores de sistemas tienen problemas para obtener un nuevo servidor
web para proporcionar contenido a clientes cuando SELinux está en modo de cumplimiento.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Identificar problemas en los archivos de registro del sistema.

• Ajustar la configuración de SELinux.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab selinux-review start. Este comando


ejecuta un script de inicio que determina si la máquina serverb es accesible en la red.
También instala el servidor httpd Apache, crea un nuevo DocumentRoot para Apache y
actualiza el archivo de configuración.

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

1. Inicie sesión en serverb como el usuario root.

1.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 ~]$

1.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 ~]#

2. Inicie un navegador web en workstation y diríjase a http://serverb/lab.html. Verá el


mensaje de error: You do not have permission to access /lab.html on this
server (No tiene permiso para acceder a /lab.html en este servidor).

178 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

3. Investigue e identifique el problema de SELinux que impide que Apache proporcione el


contenido web.

3.1. Con el comando less, vea el contenido de /var/log/messages. Use la tecla / para
buscar sealert. Use la tecla q para salir del comando less.

[root@serverb ~]# less /var/log/messages


Mar 28 10:19:51 serverb setroubleshoot[27387]: SELinux is preventing /usr/sbin/
httpd from getattr access on the file /lab-content/lab.html. For complete SELinux
messages run: sealert -l 8824e73d-3ab0-4caf-8258-86e8792fee2d
Mar 28 10:19:51 serverb platform-python[27387]: SELinux is preventing /usr/sbin/
httpd from getattr access on the file /lab-content/lab.html.#012#012***** Plugin
catchall (100. confidence) suggests **************************#012#012If
you believe that httpd should be allowed getattr access on the lab.html file
by default.#012Then you should report this as a bug.#012You can generate a
local policy module to allow this access.#012Do#012allow this access for now by
executing:#012# ausearch -c 'httpd' --raw | audit2allow -M my-httpd#012# semodule
-X 300 -i my-httpd.pp#012

3.2. Ejecute el comando sugerido sealert. Tenga en cuenta el contexto de origen, los
objetos de destino, la política y el modo de cumplimiento.

[root@serverb ~]# sealert -l 8824e73d-3ab0-4caf-8258-86e8792fee2d


SELinux is preventing /usr/sbin/httpd from getattr access on the file /lab-
content/lab.html.

***** Plugin catchall (100. confidence) suggests **************************

If you believe that httpd should be allowed getattr access on the lab.html file by
default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -X 300 -i my-httpd.pp

Additional Information:
Source Context system_u:system_r:httpd_t:s0
Target Context unconfined_u:object_r:default_t:s0
Target Objects /lab-content/lab.html [ file ]
Source httpd
Source Path /usr/sbin/httpd
Port <Unknown>
Host serverb.lab.example.com
Source RPM Packages
Target RPM Packages
Policy RPM selinux-policy-3.14.1-59.el8.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name serverb.lab.example.com
Platform Linux serverb.lab.example.com 4.18.0-67.el8.x86_64

RH199-RHEL8.0-es-1-20190531 179
CAPÍTULO 5 | Administración de seguridad de SELinux

#1 SMP Sat Feb 9 12:44:00 UTC 2019 x86_64 x86_64


Alert Count 2
First Seen 2019-03-28 15:19:46
CET
Last Seen 2019-03-28 15:19:46
CET
Local ID
8824e73d-3ab0-4caf-8258-86e8792fee2d

Raw Audit Messages


type=AVC msg=audit(1553782786.213:864):
avc: denied { getattr } for pid=15606 comm="httpd" path="/lab-content/
lab.html" dev="vda1" ino=8763212 scontext=system_u:system_r:httpd_t:s0
tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=0

Hash: httpd,httpd_t,default_t,file,getattr

3.3. La sección Raw Audit Messages (Mensajes de auditoría en bruto) del comando
sealert contiene información de /var/log/audit/audit.log. Use el comando
ausearch para buscar el archivo /var/log/audit/audit.log. La opción -m
busca en el tipo de mensaje. La opción ts busca en función del tiempo. Esta entrada
identifica el proceso relevante y el archivo que causa la alerta. El proceso es el servidor
web Apache httpd, el archivo es /lab-content/lab.html y el contexto es
system_r:httpd_t.

[root@serverb ~]# ausearch -m AVC -ts recent


time->Thu Mar 28 15:19:46 2019
type=PROCTITLE msg=audit(1553782786.213:864):
proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44
type=SYSCALL msg=audit(1553782786.213:864): arch=c000003e syscall=6 success=no
exit=-13 a0=7fb900004930 a1=7fb92dfca8e0 a2=7fb92dfca8e0 a3=1 items=0 ppid=15491
pid=15606 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48
sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd"
subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1553782786.213:864): avc: denied { getattr } for
pid=15606 comm="httpd" path="/lab-content/lab.html" dev="vda1" ino=8763212
scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0
tclass=file permissive=0

4. Muestre el contexto de SELinux de la nueva raíz de documentos HTTP y la raíz de


documentos HTTP original. Resuelva el problema de SELinux que impide que Apache
proporcione el contenido web.

4.1. Use ls -dZ para comparar la raíz del documento de /lab-content y /var/www/
html.

[root@serverb ~]# ls -dZ /lab-content /var/www/html


unconfined_u:object_r:default_t:s0 /lab-content/
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

4.2. Cree una regla de contextos de archivos que establezca el tipo predeterminado en
httpd_sys_content_ para /lab-content y todos los archivos debajo de este.

180 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 5 | Administración de seguridad de SELinux

[root@serverb ~]# semanage fcontext -a -t httpd_sys_content_t '/lab-content(/.*)?'

4.3. Use el comando restorecon para establecer el contexto de SELinux para los archivos
de /lab-content.

[root@serverb ~]# restorecon -R /lab-content/

5. Verifique que el problema de SELinux se haya resuelto y que Apache pueda proporcionar
contenido web.
Use su navegador web para actualizar el enlace http://serverb/lab.html. Ahora
debería ver algo de contenido web.

This is the html file for the SELinux final lab on SERVERB.

6. Salga de serverb.

[root@serverb ~]# exit


logout
[student@serverb ~]$ exit
logout
Connection to serverb closed.
[student@workstation ~]$

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

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

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

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

Esto concluye el trabajo de laboratorio.

RH199-RHEL8.0-es-1-20190531 181
CAPÍTULO 5 | Administración de seguridad de SELinux

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

• Los comandos getenforce y setenforce se usan para administrar el modo de SELinux de un


sistema.

• El comando semanage se usa para administrar las reglas de políticas de SELinux. El comando
restorecon aplica el contexto definido por la política.

• Los booleanos son opciones que modifican el comportamiento de la política de SELinux. Se


pueden habilitar o deshabilitar, y se usan para ajustar la política.

• El comando sealert muestra información útil que ayuda con la solución de problemas de
SELinux.

182 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6

AJUSTE DEL RENDIMIENTO


DEL SISTEMA
META Evaluar y controlar los procesos, configurar los
parámetros de ajuste y ajustar las prioridades de
programación de procesos en un sistema Red Hat
Enterprise Linux.

OBJETIVOS • 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.
• Optimizar el rendimiento del sistema
seleccionando un perfil de ajuste administrado
por el daemon tuned.
• Dar o quitar la prioridad a procesos específicos
con los comandos nice y renice.

SECCIONES • Finalización de procesos (y ejercicio guiado)


• Monitoreo de actividades del proceso (y
ejercicio guiado)
• Ajuste de perfiles de optimización (y ejercicio
guiado)
• Influencia en la programación de procesos (y
ejercicio guiado)

TRABAJO DE Ajuste del rendimiento del sistema


LABORATORIO

RH199-RHEL8.0-es-1-20190531 183
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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

NÚMERO NOMBRE
DEFINICIÓN PROPÓSITO
DE SEÑAL ABREVIADO

Se usa para informar la finalización del


proceso de control de una terminal.
1 HUP Colgar Además, se usa para solicitar que se
reinicie el proceso (volver a cargar la
configuración) sin finalización.

Provoca la finalización del programa.


Interrupción Puede bloquearse o manipularse. Enviado
2 INT
del teclado al presionar una secuencia de teclas INTR
(Ctrl+c).

Es similar a SIGINT, pero añade el volcado


Salida del de un proceso en la finalización. Enviado
3 QUIT
teclado al presionar una secuencia de teclas QUIT
(Ctrl+\).

Finalización, Provoca la finalización abrupta del


9 KILL no se puede programa. No se puede bloquear, ignorar
bloquear. ni manipular; siempre es grave.

184 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

NÚMERO NOMBRE
DEFINICIÓN PROPÓSITO
DE SEÑAL ABREVIADO

Provoca la finalización del programa. A


diferencia de SIGKILL, puede bloquearse,
15
TÉRMINO Terminar ignorarse o manipularse. Es la manera
predeterminado
“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 puede
18 CONT Continuar
bloquearse. Aún si se manipula, reinicia
siempre el proceso.

Detener, no Suspende el proceso. No puede


19 STOP se puede bloquearse ni manipularse.
bloquear.

A diferencia de SIGSTOP, puede


Detención bloquearse, ignorarse o manipularse.
20 TSTP
del teclado Enviado al 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.

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.

RH199-RHEL8.0-es-1-20190531 185
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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.

[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

186 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[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 ~]$

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.

RH199-RHEL8.0-es-1-20190531 187
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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.

[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

188 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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 ~]#

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)

RH199-RHEL8.0-es-1-20190531 189
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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

190 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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.

RH199-RHEL8.0-es-1-20190531 191
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[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 -SIGSTERM 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.

192 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

...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 ~]$

RH199-RHEL8.0-es-1-20190531 193
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[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.

194 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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 se basa esencialmente en la cantidad de procesos que están listos para
ejecutarse (estado en proceso R) y 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

RH199-RHEL8.0-es-1-20190531 195
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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.

196 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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).

RH199-RHEL8.0-es-1-20190531 197
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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)

198 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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. 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. Use el comando vim para crear un script denominado monitor 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/monitor


#!/bin/bash
while true; do
var=1
while [[ var -lt 50000 ]]; do
var=$(($var+1))

RH199-RHEL8.0-es-1-20190531 199
CAPÍTULO 6 | Ajuste del rendimiento del sistema

done
sleep 1
done

NOTA
El script monitor se ejecuta hasta que termine. Genera carga artificial de CPU al
realizar cincuenta 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

200 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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 20 %.

[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 20 %.

[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

RH199-RHEL8.0-es-1-20190531 201
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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 20 %.

[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

202 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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.

RH199-RHEL8.0-es-1-20190531 203
CAPÍTULO 6 | Ajuste del rendimiento del sistema

AJUSTE DE PERFILES DE AJUSTE

OBJETIVOS
Después de completar esta sección, debe ser capaz de optimizar el rendimiento del sistema
seleccionando un perfil de ajuste administrado por el daemon tuned.

SISTEMAS DE AJUSTE
Los administradores del sistema pueden optimizar el rendimiento de un sistema ajustando
diversas configuraciones de dispositivos basadas en una variedad de cargas de trabajo de casos
de uso. El daemon tuned aplica la configuración de ajuste de forma estática y dinámica, con
perfiles de optimización que reflejan los requisitos particulares de la carga de trabajo.

Configuración de ajuste estático


El daemon tuned aplica la configuración del sistema cuando se inicia el servicio o al seleccionar
un nuevo perfil de ajuste. El ajuste estático configura los parámetros predefinidos del kernel
en los perfiles a los que se aplica tuned en el tiempo de ejecución. Con el ajuste estático, los
parámetros del kernel se establecen para las expectativas de rendimiento general y no se ajustan a
medida que cambian los niveles de actividad.

Configuración de ajuste dinámico


Con el ajuste dinámico, el daemon tuned monitorea la actividad del sistema y ajusta la
configuración según los cambios de comportamiento del tiempo de ejecución. El ajuste dinámico
se ajusta continuamente para adaptarse a la carga de trabajo actual, comenzando con las
configuraciones iniciales declaradas en el perfil de ajuste elegido.

Por ejemplo, los dispositivos de almacenamiento experimentan un alto uso durante el arranque y
el inicio de sesión, pero tienen una actividad mínima cuando las cargas de trabajo de los usuarios
consisten en el uso de navegadores web y clientes de correo electrónico. De manera similar, la
actividad de la CPU y los dispositivos de red aumentan durante el uso máximo en un día laboral.
El daemon tuned monitorea la actividad de estos componentes y ajusta la configuración de
parámetros para maximizar el rendimiento durante momentos de mucha actividad y reducir
los ajustes durante momentos de poca actividad. El daemon tuned usa los parámetros de
rendimiento proporcionados en los perfiles de ajuste predefinidos.

INSTALACIÓN Y HABILITACIÓN DE AJUSTE


La instalación mínima de Red Hat Enterprise Linux 8 incluye y habilita el paquete tuned de manera
predeterminada. Para instalar y habilitar el paquete manualmente:

[root@host ~]$ yum install tuned


[root@host ~]$ systemctl enable --now tuned
Created symlink /etc/systemd/system/multi-user.target.wants/tuned.service → /usr/
lib/systemd/system/tuned.service.

204 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

SELECCIÓN DE UN PERFIL DE AJUSTE


La aplicación Tuned proporciona perfiles divididos en las siguientes categorías:

• Perfiles de ahorro de energía


• Perfiles de aumento de rendimiento

Los perfiles de aumento de rendimiento incluyen perfiles que se centran en los siguientes
aspectos:

• Baja latencia de almacenamiento y red


• Alto rendimiento de almacenamiento y red
• Rendimiento de máquinas virtuales
• Rendimiento del host de virtualización

Perfiles de ajuste distribuidos con Red Hat Enterprise Linux 8

PERFIL DE TUNED PROPÓSITO

balanced (balanceado) Ideal para los sistemas que requieren un balance entre
ahorro de energía y rendimiento.

desktop (escritorio) Derivado del perfil balanced. Proporciona una


respuesta más rápida de las aplicaciones interactivas.

throughput-performance Ajusta el sistema para maximizar el rendimiento.


(rendimiento de productividad)

latency-performance Ideal para los sistemas de servidores que requieren baja


(rendimiento de latencia) latencia a expensas del consumo de energía.

network-latency (latencia de Derivado del perfil latency-performance.


red) Habilita parámetros de ajuste de red adicionales para
proporcionar una baja latencia de red.

network-throughput Derivado del perfil throughput-performance. Se


(rendimiento de red) aplican parámetros de ajuste de red adicionales para
maximizar el rendimiento de la red.

powersave (ahorro de energía) Ajusta el sistema para maximizar el ahorro de energía.

oracle Optimizado para cargas de base de datos de Oracle,


basado en el perfil throughput-performance.

virtual-guest (invitado virtual) Ajusta el sistema para maximizar el rendimiento si se


ejecuta en una máquina virtual.

virtual-host (host virtual) Ajusta el sistema para maximizar el rendimiento si actúa


como host de máquinas virtuales.

ADMINISTRACIÓN DE PERFILES DESDE LA LÍNEA DE


COMANDOS
El comando tuned-adm puede usarse para modificar la configuración del daemon tuned. El
comando tuned-adm puede consultar la configuración actual, listar los perfiles disponibles,

RH199-RHEL8.0-es-1-20190531 205
CAPÍTULO 6 | Ajuste del rendimiento del sistema

recomendar un perfil de ajuste para el sistema, modificar los perfiles directamente o desactivar los
ajustes.

Un administrador del sistema identifica el perfil de ajuste activo actualmente con tuned-adm
active.

[root@host ~]# tuned-adm active


Current active profile: virtual-guest

El comando tuned-adm list enumera todos los perfiles de optimización disponibles, incluidos
ambos perfiles incorporados y los perfiles de optimización personalizados creados por un
administrador del sistema.

[root@host ~]# tuned-adm list


Available profiles:
- balanced
- desktop
- latency-performance
- network-latency
- network-throughput
- powersave
- sap
- throughput-performance
- virtual-guest
- virtual-host
Current active profile: virtual-guest

Use tuned-adm profile profilename para cambiar el perfil activo a uno diferente que se
adapte mejor a los requisitos de ajuste actuales del sistema.

[root@host ~]$ tuned-adm profile throughput-performance


[root@host ~]$ tuned-adm active
Current active profile: throughput-performance

El comando tuned-adm puede recomendar un perfil de ajuste para el sistema. Este mecanismo se
usa para determinar el perfil predeterminado de un sistema después de la instalación.

[root@host ~]$ tuned-adm recommend


virtual-guest

NOTA
La salida tuned-adm recommend se basa en diversas características del sistema,
entre ellas, si el sistema es una máquina virtual y otras categorías predefinidas
seleccionadas durante la instalación del sistema.

Para revertir los cambios de configuración realizados por el perfil actual, cambie a otro perfil o
desactive el daemon ajustado. Desactive la actividad de ajuste de tuned con tuned-adm off.

206 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[root@host ~]$ tuned-adm off


[root@host ~]$ tuned-adm active
No current active profile.

ADMINISTRACIÓN DE PERFILES CON LA CONSOLA


WEB
Para administrar los perfiles de rendimiento del sistema con la consola web, inicie sesión con
acceso privilegiado. Haga clic en la opción Reuse my password for privileged tasks (Reutilizar
mi contraseña para tareas privilegiadas). Esto permite que el usuario ejecute comandos, con
privilegios de sudo, que modifican los perfiles de rendimiento del sistema.

Figura 6.1: Inicio de sesión privilegiado con la consola web

Como usuario privilegiado, haga clic en la opción del menú Systems (Sistemas) en la barra de
navegación izquierda. El perfil activo actual se muestra en el campo Performance Profile (Perfil de
rendimiento). Para seleccionar un perfil diferente, haga clic en el enlace del perfil activo.

Figura 6.2: Perfil de rendimiento activo

En la interfaz de usuario de Change Performance Profile (Cambiar perfil de rendimiento),


desplácese por la lista de perfiles para seleccionar el que mejor se adapte al propósito del sistema.

RH199-RHEL8.0-es-1-20190531 207
CAPÍTULO 6 | Ajuste del rendimiento del sistema

Figura 6.3: Seleccione un perfil de rendimiento preferido

Para verificar los cambios, vuelva a la página principal de System y confirme que se muestra el
perfil activo en el campo Performance Profile.

Figura 6.4: Verifique el perfil de rendimiento activo

REFERENCIAS
Páginas del manual: tuned(8), tuned.conf(5), tuned-main.conf(5) y tuned-
adm(1)

208 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

EJERCICIO GUIADO

AJUSTE DE PERFILES DE AJUSTE


En este ejercicio, ajustará el rendimiento de un servidor activando el servicio tuned y
aplicando un perfil de ajuste.

RESULTADOS
Debe ser capaz de configurar un sistema para usar un perfil de ajuste.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab tuning-profiles start. El comando


ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab tuning-profiles start

1. En workstation, use SSH para iniciar sesión en servera con el usuario student. Los
sistemas se configuran a fin de 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. Verifique que el paquete tuned esté instalado, habilitado e iniciado.

2.1. Use yum para confirmar que el paquete tuned está instalado.

[student@servera ~]$ yum list tuned


...output omitted...
Installed Packages
tuned.noarch 2.10.0-15.el8 @anaconda

2.2. El comando systemctl is-enabled tuned; systemctl is-active tuned


muestra su estado de habilitación y ejecución.

[student@servera ~]$ systemctl is-enabled tuned; systemctl is-active tuned


enabled
active

3. Enumere los perfiles de ajuste disponibles e identifique el perfil activo. Si sudo solicita una
contraseña, ingrese student después del aviso.

RH199-RHEL8.0-es-1-20190531 209
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[student@servera ~]$ sudo tuned-adm list


[sudo] password for student: student
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- latency-performance - Optimize for deterministic performance at the cost of
increased power consumption
- network-latency - Optimize for deterministic performance at the cost of
increased power consumption, focused on low latency
network performance
- network-throughput - Optimize for streaming network throughput, generally
only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent
performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest

4. Cambie el perfil de ajuste activo actual a powersave y, a continuación, confirme los


resultados. Si sudo solicita una contraseña, ingrese student después del aviso.

4.1. Cambie el perfil de ajuste activo actual.

[student@servera ~]$ sudo tuned-adm profile powersave

4.2. Confirme que powersave es el perfil de ajuste activo.

[student@servera ~]$ sudo tuned-adm active


Current active profile: powersave

5. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab tuning-profiles finish para terminar este
ejercicio.

[student@workstation ~]$ lab tuning-profiles finish

Esto concluye el ejercicio guiado.

210 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

INFLUENCIA EN LA PROGRAMACIÓN DE
PROCESOS

OBJETIVOS
Después de completar esta sección, debe ser capaz de priorizar o quitar la prioridad de procesos
específicos, con los comandos nice y renice.

PROGRAMACIÓN Y MULTITAREAS DE PROCESOS DE


LINUX
Los sistemas de computación modernos varían de los sistemas de gama baja, que tienen una
CPU y solo pueden ejecutar una única instrucción a la vez, hasta las supercomputadoras de
alto rendimiento con cientos de CPU cada una y decenas o incluso centenas de núcleos de
procesamiento en cada CPU, que permiten ejecutar enormes cantidades de instrucciones en
paralelo. Aun así, todos estos sistemas tienen algo en común: la necesidad de ejecutar más
procesos y subprocesos que la cantidad de CPU que tienen.

Linux y otros sistemas operativos ejecutan más procesos que la cantidad de unidades de
procesamiento que tienen, con una técnica llamada particionamiento de tiempo o multitarea. El
programador de procesos del sistema operativo cambia rápidamente entre procesos en un único
núcleo, lo que da la impresión de que hay varios procesos ejecutándose al mismo tiempo.

PRIORIDADES RELATIVAS
Los diferentes procesos tienen diferentes niveles de importancia. El programador de procesos
se puede configurar para usar diferentes políticas de programación para diferentes procesos. La
política de programación usada para la mayoría de los procesos que se ejecutan en un sistema
normal se denomina SCHED_OTHER (también denominada SCHED_NORMAL), pero hay otras
políticas disponibles para las diversas necesidades de cargas de trabajo.

Debido a que no todos los procesos son igual de importantes, a los procesos que se ejecutan con
la política SCHED_NORMAL se les puede dar una prioridad relativa. Esta prioridad se denomina
el valor bueno de un proceso, y se organizan en 40 niveles buenos diferentes para todos los
procesos.

Los valores de nivel bueno van desde -20 (prioridad más alta) a 19 (prioridad más baja). De
forma predeterminada, los procesos heredan su nivel bueno de sus procesos principales, que es
generalmente 0. Los niveles buenos más altos indican menos prioridad (el proceso abandona
fácilmente el uso de la CPU), mientras que los niveles buenos más bajos indican una mayor
prioridad (el proceso tiene menos tendencia a abandonar el uso de la CPU). Si no hay disputa por
recursos (por ejemplo, cuando hay menos procesos activos que núcleos de la CPU disponibles),
incluso los procesos con un nivel bueno alto usarán todos los recursos de la CPU disponibles
que puedan. Sin embargo, cuando hay más procesos que solicitan tiempo de CPU que núcleos
disponibles, los procesos con un nivel bueno más alto recibirán menos tiempo de la CPU que
aquellos con un nivel bueno más bajo.

RH199-RHEL8.0-es-1-20190531 211
CAPÍTULO 6 | Ajuste del rendimiento del sistema

CONFIGURACIÓN DE NIVELES BUENOS Y PERMISOS


Dado que establecer un nivel bueno bajo en un proceso que requiere mucha CPU podría afectar
de forma negativa el rendimiento de otros procesos que se ejecutan en el mismo sistema, solo el
usuario root puede reducir el nivel bueno de un proceso.

Los usuarios no privilegiados solo están autorizados a incrementar los niveles buenos de sus
propios procesos. No pueden reducir los niveles buenos de sus procesos ni pueden modificar el
nivel bueno de los procesos de otros usuarios.

INFORME DE NIVELES BUENOS


Varias herramientas muestran los niveles buenos de los procesos en ejecución. Las herramientas
de gestión de procesos, como top, muestran el nivel bueno de manera predeterminada. Otras
herramientas, como el comando ps, muestran niveles buenos cuando se usan las opciones
adecuadas.

Visualización de niveles buenos con el comando top


Use el comando top para visualizar y administrar procesos de forma interactiva. La configuración
predeterminada muestra dos columnas de interés sobre niveles buenos y prioridades. La columna
NI muestra el valor bueno del proceso y la columna PR muestra su prioridad programada. En la
interfaz top, el nivel bueno se asigna a una cola de prioridad interna del sistema, como se muestra
en el siguiente gráfico. Por ejemplo, un nivel bueno de -20 se asigna a 0 en la columna PR. Un nivel
bueno de 19 se asigna a una prioridad de 39 en la columna PR.

Figura 6.5: Niveles buenos y cómo se informan con el comando top

Visualización de niveles buenos desde la línea de comandos


El comando ps muestra los niveles buenos de los procesos, pero solo al incluir las opciones de
formato correctas.

El siguiente comando ps muestra una lista de todos los procesos, con su PID, nombre, nivel
bueno y clase de programación, ordenados de forma descendente por nivel bueno. Los procesos
que muestran TS en la columna de clase de programación CLS se ejecutan con la política de
programación SCHED_NORMAL. Los procesos con un guión (-) como nivel bueno se ejecutan
con otras políticas de programación y son interpretados como una prioridad más alta por el
programador. Los detalles de las políticas de programación adicionales están más allá del alcance
de este curso.

[user@host ~]$ ps axo pid,comm,nice,cls --sort=-nice


PID COMMAND NI CLS
30 khugepaged 19 TS
29 ksmd 5 TS
1 systemd 0 TS
2 kthreadd 0 TS
9 ksoftirqd/0 0 TS

212 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

10 rcu_sched 0 TS
11 migration/0 - FF
12 watchdog/0 - FF
...output omitted...

INICIO DE PROCESOS CON NIVELES BUENOS


DIFERENTES
Durante la creación del proceso, este hereda el nivel bueno del proceso superior. Cuando un
proceso se inicia desde la línea de comandos, heredará el nivel bueno del proceso de la shell desde
donde se inició. Generalmente, esto genera nuevos procesos que se ejecutarán con un nivel bueno
de 0.

El siguiente ejemplo inicia un proceso desde la shell y muestra el valor bueno del proceso. Tenga
en cuenta el uso de la opción PID en ps para especificar la salida solicitada.

[user@host ~]$ sha1sum /dev/zero &


[1] 3480
[user@host ~]$ ps -o pid,comm,nice 3480
PID COMMAND NI
3480 sha1sum 0

Todos los usuarios pueden usar el comando nice para iniciar comandos con un nivel bueno
predeterminado o superior. Sin opciones, el comando nice inicia un proceso con el valor bueno
predeterminado de 10.

En el siguiente ejemplo, se inicia el comando sha1sum como una tarea en segundo plano con el
nivel bueno predeterminado y se muestra el nivel bueno del proceso:

[user@host ~]$ nice sha1sum /dev/zero &


[1] 3517
[user@host ~]$ ps -o pid,comm,nice 3517
PID COMMAND NI
3517 sha1sum 10

Use la opción -n para aplicar un nivel bueno definido por el usuario para el proceso de arranque. El
proceso predeterminado es agregar 10 al nivel bueno actual del proceso. En el siguiente ejemplo,
se inicia un comando como una tarea en segundo plano con el valor bueno definido por el usuario
y se muestra el nivel bueno del proceso:

[user@host ~]$ nice -n 15 sha1sum &


[1] 3521
[user@host ~]$ ps -o pid,comm,nice 3521
PID COMMAND NI
3521 sha1sum 15

IMPORTANTE
Los usuarios sin privilegios solo pueden aumentar el nivel bueno de su valor actual a
un máximo de 19. Una vez aumentado, los usuarios sin privilegios no pueden reducir
el valor para volver al nivel bueno anterior. El usuario root puede reducir el nivel
bueno de cualquier nivel actual a un mínimo de -20.

RH199-RHEL8.0-es-1-20190531 213
CAPÍTULO 6 | Ajuste del rendimiento del sistema

CAMBIO DEL NIVEL BUENO DE UN PROCESO


EXISTENTE
El nivel bueno de un proceso existente se puede cambiar con el comando renice. En este
ejemplo, se usa el identificador PID del ejemplo anterior para cambiar el nivel bueno actual de 15 al
nivel bueno deseado de 19.

[user@host ~]$ renice -n 19 3521


3521 (process ID) old priority 15, new priority 19

El comando top también se puede usar para cambiar el nivel bueno de un proceso. Desde la
interfaz interactiva top, elija la opción r para acceder al comando renice, seguido por el PID que
se cambiará y el nuevo nivel bueno.

REFERENCIAS
Páginas del manual: nice(1), renice(1), top(1) y sched_setscheduler(2).

214 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

EJERCICIO GUIADO

INFLUENCIA EN LA PROGRAMACIÓN DE
PROCESOS
En este ejercicio, ajustará la prioridad de programación de los procesos con los comandos
nice y renice, y observará los efectos que esto tiene en la ejecución de procesos.

RESULTADOS
Debe poder ajustar las prioridades de programación para los procesos.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab tuning-procscheduling start. El


comando ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab tuning-procscheduling start

1. En workstation, use SSH para iniciar sesión en servera con el usuario student. Los
sistemas se configuran a fin de 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. Determine la cantidad de núcleos de CPU en servera y, a continuación, inicie dos


instancias del comando sha1sum /dev/zero & para cada núcleo.

2.1. Use grep para analizar la cantidad de procesadores virtuales existentes (núcleos de
CPU) del archivo /proc/cpuinfo.

[student@servera ~]$ grep -c '^processor' /proc/cpuinfo


2

2.2. Use un comando de bucle para iniciar varias instancias del comando sha1sum /dev/
zero &. Inicie dos por procesador virtual encontrado en el paso anterior. En este
ejemplo, serían cuatro instancias. Los valores de PID en su salida variarán con respecto
al ejemplo.

[student@servera ~]$ for i in $(seq 1 4); do sha1sum /dev/zero & done


[1] 2643
[2] 2644
[3] 2645
[4] 2646

RH199-RHEL8.0-es-1-20190531 215
CAPÍTULO 6 | Ajuste del rendimiento del sistema

3. Verifique que las tareas en segundo plano se estén ejecutando para cada uno de los
procesos sha1sum.

[student@servera ~]$ jobs


[1] Running sha1sum /dev/zero &
[2] Running sha1sum /dev/zero &
[3]- Running sha1sum /dev/zero &
[4]+ Running sha1sum /dev/zero &

4. Use los comandos ps y pgrep para mostrar el porcentaje de uso de CPU para cada
proceso sha1sum.

[student@servera ~]$ ps u $(pgrep sha1sum)


USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
student 2643 49.8 0.0 228360 1744 pts/0 R 11:15 6:09 sha1sum /dev/zero
student 2644 49.8 0.0 228360 1780 pts/0 R 11:15 6:09 sha1sum /dev/zero
student 2645 49.8 0.0 228360 1748 pts/0 R 11:15 6:09 sha1sum /dev/zero
student 2646 49.8 0.0 228360 1780 pts/0 R 11:15 6:09 sha1sum /dev/zero

5. Cierre todos los procesos sha1sum y, a continuación, verifique que no haya trabajos en
ejecución.

5.1. Use el comando pkill para cerrar todos los procesos en ejecución con el patrón de
nombre sha1sum.

[student@servera ~]$ pkill sha1sum


[2] Terminated sha1sum /dev/zero
[4]+ Terminated sha1sum /dev/zero
[1]- Terminated sha1sum /dev/zero
[3]+ Terminated sha1sum /dev/zero

5.2. Verifique que no haya tareas en ejecución.

[student@servera ~]$ jobs


[student@servera ~]$

6. Inicie varias instancias de sha1sum /dev/zero & y, a continuación, inicie una instancia
adicional de sha1sum /dev/zero & con un nivel bueno de 10. Inicie tantas instancias
como procesadores virtuales tenga el sistema. En este ejemplo, se inician 3 instancias
normales y otra con el nivel bueno más alto.

6.1. Use los bucles para iniciar tres instancias de sha1sum /dev/zero &.

[student@servera ~]$ for i in $(seq 1 3); do sha1sum /dev/zero & done


[1] 1947
[2] 1948
[3] 1949

6.2. Use el comando nice para iniciar la cuarta instancia con un nivel bueno de 10.

216 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[student@servera ~]$ nice -n 10 sha1sum /dev/zero &


[4] 1953

7. Use los comandos ps y pgrep para mostrar el PID, el porcentaje de uso de CPU, el valor
bueno y el nombre ejecutable para cada proceso. La instancia con el valor bueno de 10
debe mostrar un porcentaje menor de uso de CPU que las otras instancias.

[student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum)


PID %CPU NI COMMAND
1947 66.0 0 sha1sum
1948 65.7 0 sha1sum
1949 66.1 0 sha1sum
1953 6.7 10 sha1sum

8. Use el comando sudo renice para bajar el nivel bueno de un proceso del paso anterior.
Observe el valor de PID de la instancia de proceso con el nivel bueno de 10. Use ese PID de
proceso para bajar su nivel bueno a 5.

[student@servera ~]$ sudo renice -n 5 1953


[sudo] password for student: student
1953 (process ID) old priority 10, new priority 5

9. Repita los comandos ps y pgrep para volver a mostrar el porcentaje de CPU y el nivel
bueno.

[student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum)


PID %CPU NI COMMAND
1947 63.8 0 sha1sum
1948 62.8 0 sha1sum
1949 65.3 0 sha1sum
1953 9.1 5 sha1sum

10. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab tuning-procscheduling finish para terminar este
ejercicio.

[student@workstation ~]$ lab tuning-procscheduling finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 217
CAPÍTULO 6 | Ajuste del rendimiento del sistema

TRABAJO DE LABORATORIO

AJUSTE DEL RENDIMIENTO DEL


SISTEMA
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, aplicará un perfil de ajuste específico y ajustará la prioridad de
programación de un proceso existente con un alto uso de CPU.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Activar un perfil de ajuste específico para un sistema de cómputo.

• Ajustar la prioridad de programación de CPU de un proceso.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab tuning-review start. Este comando


ejecuta un script de inicio para determinar si el host serverb es accesible en la red.

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

1. Cambie el perfil de ajuste actual para serverb a balanced, un perfil de ajuste general no
especializado.
2. Dos procesos en serverb están consumiendo un alto porcentaje de uso de CPU. Ajuste el
nivel de nice de cada proceso en 10 para permitir más tiempo de CPU para otros procesos.

Evaluación
En workstation, ejecute el comando lab tuning-review grade para confirmar que ha
realizado correctamente este ejercicio de laboratorio.

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

Finalizar
En workstation, ejecute el script lab tuning-review finish para terminar este ejercicio.

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

Esto concluye el trabajo de laboratorio.

218 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

SOLUCIÓN

AJUSTE DEL RENDIMIENTO DEL


SISTEMA
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, aplicará un perfil de ajuste específico y ajustará la prioridad de
programación de un proceso existente con un alto uso de CPU.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Activar un perfil de ajuste específico para un sistema de cómputo.

• Ajustar la prioridad de programación de CPU de un proceso.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab tuning-review start. Este comando


ejecuta un script de inicio para determinar si el host serverb es accesible en la red.

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

1. Cambie el perfil de ajuste actual para serverb a balanced, un perfil de ajuste general no
especializado.

1.1. Desde workstation, abra una sesión de SSH 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 ~]$

1.2. Use yum para confirmar que el paquete tuned está instalado.

[student@serverb ~]$ yum list tuned


...output omitted...
Installed Packages
tuned.noarch 2.10.0-15.el8 @anaconda

1.3. Use el comando systemctl is-enabled tuned para mostrar el estado de


habilitación del servicio tuned.

RH199-RHEL8.0-es-1-20190531 219
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[student@serverb ~]$ systemctl is-enabled tuned


enabled

1.4. Enumere todos los perfiles de ajuste disponibles y sus descripciones. Tenga en cuenta
que el perfil activo actual es virtual-guest.

[student@serverb ~]$ sudo tuned-adm list


[sudo] password for student: student
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- latency-performance - Optimize for deterministic performance at the cost of
increased power consumption
- network-latency - Optimize for deterministic performance at the cost of
increased power consumption, focused on low latency
network performance
- network-throughput - Optimize for streaming network throughput, generally
only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent
performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest

1.5. Cambie el perfil de ajuste activo actual al perfil balanced.

[student@serverb ~]$ sudo tuned-adm profile balanced

1.6. Enumere la información de resumen del perfil activo actual de tuned.


Use el comando tuned-adm profile_info para confirmar que el perfil activo sea el
perfil balanced.

[student@serverb ~]$ sudo tuned-adm profile_info


Profile name:
balanced

Profile summary:
General non-specialized tuned profile
...output omitted...

2. Dos procesos en serverb están consumiendo un alto porcentaje de uso de CPU. Ajuste el
nivel de nice de cada proceso en 10 para permitir más tiempo de CPU para otros procesos.

2.1. Determine los dos consumidores de CPU principales en serverb. Los consumidores
de CPU principales aparecen en último lugar en la salida del comando. Los valores
porcentuales de CPU varían.

220 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

[student@serverb ~]$ ps aux --sort=pcpu


USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...output omitted...
root 2983 100 0.0 228360 1744 ? R< 21:08 0:23 md5sum /dev/zero
root 2967 101 0.0 228360 1732 ? RN 21:08 0:23 sha1sum /dev/zero
[student@serverb ~]$

2.2. Identifique el nivel actual de nice para los dos consumidores de CPU principales.

[student@serverb ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum)


PID %CPU NI COMMAND
2967 99.6 2 sha1sum
2983 99.7 -2 md5sum

2.3. Use el comando sudo renice -n 10 2967 2983 para ajustar el nivel de nice
de cada proceso en 10. Use los valores de PID identificados en la salida del comando
anterior.

[student@serverb ~]$ sudo renice -n 10 2967 2983


[sudo] password for student: student
2967 (process ID) old priority 2, new priority 10
2983 (process ID) old priority -2, new priority 10

2.4. Verifique que el nivel actual de nice de cada proceso sea 10.

[student@serverb ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum)


PID %CPU NI COMMAND
2967 99.6 10 sha1sum
2983 99.7 10 md5sum

2.5. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el comando lab tuning-review grade para confirmar que ha
realizado correctamente este ejercicio de laboratorio.

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

Finalizar
En workstation, ejecute el script lab tuning-review finish para terminar este ejercicio.

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

RH199-RHEL8.0-es-1-20190531 221
CAPÍTULO 6 | Ajuste del rendimiento del sistema

Esto concluye el trabajo de laboratorio.

222 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 6 | Ajuste del rendimiento del sistema

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

• 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 servicio tuned modificará automáticamente la configuración del dispositivo para satisfacer


las necesidades específicas del sistema en función del perfil de ajuste predefinido seleccionado.

• Para revertir todos los cambios realizados en la configuración del sistema por el perfil
seleccionado, cambie a otro perfil o desactive el servicio tuned.

• Se asigna una prioridad relativa a un proceso para determinar su acceso a la CPU. Esta prioridad
se llama agradable Valor de un proceso.

• El comando nice asigna una prioridad a un proceso cuando se inicia. El comando renice
modifica la prioridad de un proceso en ejecución.

RH199-RHEL8.0-es-1-20190531 223
224 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7

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.
• 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)
• 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

RH199-RHEL8.0-es-1-20190531 225
CAPÍTULO 7 | 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.

226 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

Figura 7.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 7.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

RH199-RHEL8.0-es-1-20190531 227
CAPÍTULO 7 | Instalación y actualización de paquetes de software

REGISTRO DESDE LA LÍNEA DE COMANDO


Use 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.

228 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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

RH199-RHEL8.0-es-1-20190531 229
CAPÍTULO 7 | 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.

230 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.

RH199-RHEL8.0-es-1-20190531 231
CAPÍTULO 7 | 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

232 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

libcurl.x86_64 : A library for getting files from web servers


====================== 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...

RH199-RHEL8.0-es-1-20190531 233
CAPÍTULO 7 | Instalación y actualización de paquetes de software

Transaction Summary
================================================================================
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.

234 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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

RH199-RHEL8.0-es-1-20190531 235
CAPÍTULO 7 | 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...

236 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.

RH199-RHEL8.0-es-1-20190531 237
CAPÍTULO 7 | 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 Instalación de software con yum
en Configuración básica de sistemas Red Hat Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/installing-software-with-
yum_configuring-basic-system-settings

238 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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 su - para cambiar al usuario root en el prompt de shell.

[student@servera ~]$ su -
Password: redhat
[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.

RH199-RHEL8.0-es-1-20190531 239
CAPÍTULO 7 | 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.0-for-x86_64-appstream-rpms 3.5 M
Installing dependencies:
gc x86_64 7.6.4-3.el8 rhel-8.0-for-x86_64-appstream-rpms 109 k
libatomic_ops x86_64 7.6.2-3.el8 rhel-8.0-for-x86_64-appstream-rpms 38 k
libtool-ltdl x86_64 2.4.6-25.el8 rhel-8.0-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
================================================================================

240 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

Removing:
guile x86_64 5:2.0.14-7.el8 @rhel-8.0-for-x86_64-appstream-rpms 12 M
Removing unused dependencies:
gc x86_64 7.6.4-3.el8 @rhel-8.0-for-x86_64-appstream-rpms 221 k
libatomic_ops x86_64 7.6.2-3.el8 @rhel-8.0-for-x86_64-appstream-rpms 75 k
libtool-ltdl x86_64 2.4.6-25.el8 @rhel-8.0-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.0-for-x86_64-appstream-rpms 221 k
Removing dependent packages:
guile x86_64 5:2.0.14-7.el8 @rhel-8.0-for-x86_64-appstream-rpms 12 M
Removing unused dependencies:
libatomic_ops x86_64 7.6.2-3.el8 @rhel-8.0-for-x86_64-appstream-rpms 75 k
libtool-ltdl x86_64 2.4.6-25.el8 @rhel-8.0-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 desarrollo RPM”


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 desarrollo RPM, incluida una lista de paquetes
incluidos.

RH199-RHEL8.0-es-1-20190531 241
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@servera ~]# 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

6.3. Use el comando yum group install para instalar el grupo de componentes
Herramientas de desarrollo RPM.

[root@servera ~]# yum group install "RPM Development Tools"


Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing group/module packages:
redhat-rpm-config
noarch 115-1.el8 rhel-8.0-for-x86_64-appstream-rpms 82 k
rpm-build x86_64 4.14.2-9.el8 rhel-8.0-for-x86_64-appstream-rpms 166 k
Installing dependencies:
dwz x86_64 0.12-9.el8 rhel-8.0-for-x86_64-appstream-rpm 109 k
efi-srpm-macros noarch 3-2.el8 rhel-8.0-for-x86_64-appstream-rpm 22 k
...output omitted...

Transaction Summary
================================================================================
Install 60 Packages

Total download size: 17 M


Installed size: 50 M
Is this ok [y/N]: y
...output omitted...
Installing : perl-Exporter-5.72-396.el8.noarch 1/60
Installing : perl-libs-4:5.26.3-416.el8.x86_64 2/60
Installing : perl-Carp-1.42-396.el8.noarch 3/60
...output omitted...
Verifying : dwz-0.12-9.el8.x86_64 1/60
Verifying : efi-srpm-macros-3-2.el8.noarch 2/60
Verifying : gdb-headless-8.2-5.el8.x86_64 3/60
...output omitted...
Installed:
redhat-rpm-config-115-1.el8.noarch
rpm-build-4.14.2-9.el8.x86_64
rpmdevtools-8.10-7.el8.noarch
...output omitted...

Complete!

242 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

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.

[root@servera ~]# yum history


ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
6 | group install RPM Develo | 2019-02-26 17:11 | Install | 61
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

7.2. Use el comando yum history info para confirmar que la última transacción sea la
instalación del grupo.

[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 RPM Development Tools
Packages Altered:
Install dwz-0.12-9.el8.x86_64 @rhel-8.0-for-x86_64-appstream-rpms
Install efi-srpm-macros-3-2.el8.noarch @rhel-8.0-for-x86_64-appstream-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.

[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

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 243
CAPÍTULO 7 | 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.

244 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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_x86_64_.repo con la salida que se muestra.

ADVERTENCIA
EPEL 8 aún no había sido publicado por el proyecto comunitario cuando se escribió
esta sección. Un lanzamiento de EPEL puede retrasar el lanzamiento de Red Hat
Enterprise  Linux ya que no es provisto por Red Hat, sino por una comunidad de
voluntarios. La siguiente URL podría no ser válida, hemos utilizado el siguiente
ejemplo para ilustrar cómo habilitar repositorio de paquetes de terceros.

[user@host ~]$ yum-config-manager --add-repo="http://dl.fedoraproject.org/pub/


epel/8/x86_64/"
Loaded plugins: langpacks
adding repo from: http://dl.fedoraproject.org/pub/epel/8/x86_64/

[dl.fedoraproject.org_pub_epel_8_x86_64_]
name=added from: http://dl.fedoraproject.org/pub/epel/8/x86_64/
baseurl=http://dl.fedoraproject.org/pub/epel/8/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=http://dl.fedoraproject.org/pub/epel/8/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.

RH199-RHEL8.0-es-1-20190531 245
CAPÍTULO 7 | Instalación y actualización de paquetes de software

ADVERTENCIA
EPEL 8 aún no había sido publicado por el proyecto comunitario cuando se escribió
esta sección. Hemos escrito esta sección para reflejar el proceso de configuración
esperado para EPEL 8, basado en el proceso EPEL 7, como ejemplo de cómo
habilitar un repositorio de paquetes de terceros que proporciona su configuración
de repositorio a los clientes mediante el uso de un paquete RPM.

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 http://dl.fedoraproject.org/pub/epel/8/x86_64/e/epel-
release-8-2.noarch.rpm

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 8 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/8/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 8 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/8/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=
$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 8 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/8/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=
$basearch
failovermethod=priority
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

246 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

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.

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 Instalación de software con yum
en Configuración básica de sistemas Red Hat Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/
html-single/configuring_basic_system_settings/installing-software-with-
yum_configuring-basic-system-settings

RH199-RHEL8.0-es-1-20190531 247
CAPÍTULO 7 | 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 su - para cambiar a root en el prompt de shell.

[student@servera ~]$ su -
Password: redhat
[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.0/x86_64/rhcsa-practice/rht
• Actualizaciones de paquetes personalizados proporcionados en http://
content.example.com/rhel8.0/x86_64/rhcsa-practice/errata

3.1. Use yum-config-manager para agregar el repositorio de paquetes personalizado.

248 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@servera ~]# yum-config-manager \


--add-repo "http://content.example.com/rhel8.0/x86_64/rhcsa-practice/rht"
Adding repo from: http://content.example.com/rhel8.0/x86_64/rhcsa-practice/rht

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.0_x86_64_rhcsa-practice_rht.repo
[content.example.com_rhel8.0_x86_64_rhcsa-practice_rht]
name=created by dnf config-manager from http://content.example.com/rhel8.0/x86_64/
rhcsa-practice/rht
baseurl=http://content.example.com/rhel8.0/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.0/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.0_x86_64_rhcsa-practice_rht created by .... enabled: 2
rht-updates rht updates enabled: 2
...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.0_x86_64_rhcsa-practice_rht
[root@servera ~]# yum install rht-system
Dependencies resolved.

RH199-RHEL8.0-es-1-20190531 249
CAPÍTULO 7 | Instalación y actualización de paquetes de software

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rht-system noarch 1.0.0-1 content..._rht 3.7 k
...output omitted...
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.0_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.

250 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

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.

RH199-RHEL8.0-es-1-20190531 251
CAPÍTULO 7 | 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

252 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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

RH199-RHEL8.0-es-1-20190531 253
CAPÍTULO 7 | 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.

254 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.

RH199-RHEL8.0-es-1-20190531 255
CAPÍTULO 7 | 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:

256 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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

RH199-RHEL8.0-es-1-20190531 257
CAPÍTULO 7 | 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
Instalación, administración y eliminación de componentes de espacio de usuario de
Red Hat Enterprise  Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/installing_managing_and_removing_user_space_components/

Modularidad
https://docs.fedoraproject.org/en-US/modularity/

258 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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 ~]$ su -
Password: redhat
[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.

RH199-RHEL8.0-es-1-20190531 259
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@servera ~]# yum module list


Red Hat Enterprise Linux 8.0 AppStream (dvd)
Name Stream Profiles Summary
...
python27 2.7 [d] common [d] Python programming ..., version 2.7
python36 3.6 [d] common [d], build Python programming ..., version 3.6
...
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.0 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]
Version : 820190123171828
Context : 17efdbc7
Profiles : common [d], build
Default profiles : common
Repo : rhel-8.0-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.

260 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.0 AppStream (dvd)
Name Stream Profiles Summary
python36 3.6 [d][e] common [d] [i], build Python programming ..., 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.0 AppStream (dvd)
Name Stream Profiles Summary
postgresql 10 [d] client, server [d] PostgreSQL server and client ...
postgresql 9.6 [e] client, server [d] [i] 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 module streams:
postgresql 9.6

Transaction Summary

RH199-RHEL8.0-es-1-20190531 261
CAPÍTULO 7 | Instalación y actualización de paquetes de software

=================================================================

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.0 AppStream (dvd)
Name Stream Profiles Summary
postgresql 10 [d] [e] client, server [d] [i] PostgreSQL server and client ...
postgresql 9.6 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 remove module 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.

262 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@servera ~]# yum module list postgresql


Red Hat Enterprise Linux 8.0 AppStream (dvd)
Name Stream Profiles Summary
postgresql 10 [d][x] client, server [d] PostgreSQL server and client ...
postgresql 9.6 [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.

RH199-RHEL8.0-es-1-20190531 263
CAPÍTULO 7 | 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.0/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.

264 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.

RH199-RHEL8.0-es-1-20190531 265
CAPÍTULO 7 | 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.0/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 su - para cambiar al usuario root. La contraseña es redhat.

[student@serverb ~]$ su -
Password: redhat
[root@serverb ~]#

1.3. Cree el archivo /etc/yum.repos.d/errata.repo con el siguiente contenido:

266 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[errata]
name=Red Hat Updates
baseurl=http://content.example.com/rhel8.0/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.0-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 57 Packages

Total download size: 51 M


Installed size: 205 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.

RH199-RHEL8.0-es-1-20190531 267
CAPÍTULO 7 | Instalación y actualización de paquetes de software

[root@serverb ~]# yum list cups


Installed Packages
cups.x86_64 1:2.2.6-25.el8 @rhel-8.0-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.

268 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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 ~]$

RH199-RHEL8.0-es-1-20190531 269
CAPÍTULO 7 | 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

270 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 7 | 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.

RH199-RHEL8.0-es-1-20190531 271
272 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8

ADMINISTRACIÓN DE
ALMACENAMIENTO BÁSICO
META Crear y administrar dispositivos de
almacenamiento, particiones, sistemas de archivos
y espacios de intercambio desde la línea de
comandos.

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.
• Crear particiones de almacenamiento,
formatearlas con sistemas de archivos y
montarlas para su uso.
• Crear y administrar espacios de intercambio
para complementar la memoria física.

SECCIONES • Identificación de dispositivos y sistemas de


archivos (y cuestionario)
• Montaje y desmontaje de sistemas de archivos
(y ejercicio guiado)
• Adición de particiones, sistemas de archivos y
montajes persistentes (y ejercicio guiado)
• Administración de espacio de intercambio (y
ejercicio guiado)

TRABAJO DE Administración de almacenamiento básico


LABORATORIO

RH199-RHEL8.0-es-1-20190531 273
CAPÍTULO 8 | Administración de almacenamiento básico

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.

274 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

[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

RH199-RHEL8.0-es-1-20190531 275
CAPÍTULO 8 | Administración de almacenamiento básico

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

276 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

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)

RH199-RHEL8.0-es-1-20190531 277
CAPÍTULO 8 | Administración de almacenamiento básico

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 su - para cambiar a root, ya que el usuario root solo puede montar
un dispositivo manualmente.

[student@servera ~]$ su -
Password: redhat
[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.

278 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

[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 ~]#

4.3. Ahora, desmonte /mnt/newspace correctamente.

RH199-RHEL8.0-es-1-20190531 279
CAPÍTULO 8 | Administración de almacenamiento básico

[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.

280 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

ADICIÓN DE PARTICIONES, SISTEMAS


DE ARCHIVOS Y MONTAJES
PERSISTENTES

OBJETIVOS
Tras completar esta sección, debería ser capaz de crear particiones de almacenamiento,
formatearlas con sistemas de archivos y montarlas para su uso.

PARTICIÓN DE UN DISCO
La partición de discos permite a los administradores de sistemas dividir un disco duro en varias
unidades de almacenamiento lógico denominadas particiones. Al separar un disco en particiones,
los administradores de sistemas pueden usar diferentes particiones para realizar diferentes
funciones.

Por ejemplo, la partición de discos es necesaria o beneficiosa en las siguientes situaciones:

• Limitar espacio disponible para aplicaciones o usuarios.

• Separar archivos de programa y de sistemas operativos de archivos de usuarios.

• Crear un área separada para el intercambio de memoria.

• Limitar el uso de espacio en disco para mejorar el rendimiento de herramientas de diagnóstico e


imágenes de copia de seguridad.

Esquema de partición MBR


Desde 1982, el esquema de particiones Master Boot Record (MBR) ha indicado cómo los discos se
deben particionar en sistemas que ejecutan firmware de BIOS. Este esquema admite un máximo
de cuatro particiones primarias. En sistemas Linux, con el uso de particiones ampliadas y lógicas,
los administradores pueden crear un máximo de 15 unidades. Dado que los datos del tamaño de
la partición se almacenan como valores de 32 bits, los discos particionados con el esquema MBR
tienen un tamaño de disco y partición máximo de 2 TiB.

Figura 8.1: Particiones MBR del dispositivo de almacenamiento /dev/vdb

Dado que los discos físicos son cada vez más grandes, y volúmenes basados en SAN aún más
grandes, el límite de tamaño de la partición y del disco de 2 TiB del esquema de partición MBR
ya no es un límite teórico, sino más bien un problema del mundo real que los administradores
de sistemas encuentran cada vez más frecuentemente en los entornos de producción. Como
consecuencia, el esquema MBR heredado está en proceso de ser sustituido por el nuevo esquema
GUID Partition Table (GPT) para la partición de disco.

RH199-RHEL8.0-es-1-20190531 281
CAPÍTULO 8 | Administración de almacenamiento básico

Esquema de partición GPT


Para sistemas que ejecutan firmware Unified Extensible Firmware Interface (UEFI), GPT es el
estándar para el diseño de tablas de partición en discos duros físicos. GPT es parte del estándar
UEFI y aborda muchas de las limitaciones que impone el antiguo esquema basado en MBR.

Un GPT proporciona un máximo de 128 particiones. A diferencia de MBR, que usa 32 bits para
almacenar información de tamaño y direcciones en bloques lógicos, un GPT asigna 64 bits para
direcciones en bloques lógicos. Esto permite que GPT incluya particiones y discos de hasta ocho
zebibyte (ZiB), u 8 mil millones de tebibytes.

Además de abordar las limitaciones del esquema de partición MBR, GPT también ofrece algunas
funciones y beneficios adicionales. Un GPT usa un identificador único global (GUID) para
identificar cada disco y partición. En contraste con MBR, que tiene un único punto de error,
GPT ofrece redundancia de la información de su tabla de particiones. El GPT primario reside
en el cabezal del disco, mientras que una copia de seguridad, el GPT secundario, se aloja en el
extremo del disco. GPT usa la suma de comprobación para detectar errores y daños en la tabla de
particiones y el encabezado de GPT.

Figura 8.2: Particiones GPT del dispositivo de almacenamiento /dev/vdb

ADMINISTRACIÓN DE PARTICIONES CON PARTED


Los editores de particiones son programas que permiten a los administradores hacer cambios en
particiones de discos, como crear particiones, eliminar particiones y cambiar el tipo de partición.
Para realizar estas operaciones, los administradores pueden usar el editor de particiones Parted
tanto para el esquema de partición GPT como MBR.

El comando parted toma el nombre del dispositivo de todo el disco como primer argumento y
uno o más subcomandos. En el siguiente ejemplo, se usa el subcomando print para visualizar la
tabla de particiones en el disco /dev/vda.

[root@host ~]# parted /dev/vda print


Model: Virtio Block Device (virtblk)
Disk /dev/vda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags


1 1049kB 10.7GB 10.7GB primary xfs boot
2 10.7GB 53.7GB 42.9GB primary xfs

Si no proporciona un subcomando, parted abre una sesión interactiva para emitir comandos.

[root@host ~]# parted /dev/vda


GNU Parted 3.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.

282 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags


1 1049kB 10.7GB 10.7GB primary xfs boot
2 10.7GB 53.7GB 42.9GB primary xfs

(parted) quit
[root@host ~]#

De forma predeterminada, parted muestra todos los tamaños en potencias de 10 (KB, MB, GB).
Puede cambiar ese valor predeterminado con el subcomando unit que acepta los siguientes
parámetros:

• s para sector

• B para byte

• MiB, GiB o TiB (potencias de 2)

• MB, GB o TB (potencias de 10)

[root@host ~]# parted /dev/vda unit s print


Model: Virtio Block Device (virtblk)
Disk /dev/vda: 104857600s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags


1 2048s 20971486s 20969439s primary xfs boot
2 20971520s 104857535s 83886016s primary xfs

Como se muestra en el ejemplo anterior, también puede especificar varios subcomandos (aquí,
unit y print) en la misma línea.

Escritura de la tabla de particiones en un disco nuevo


Para particionar una nueva unidad, primero debe escribir una etiqueta de disco. La etiqueta del
disco indica qué esquema de partición usar.

NOTA
Tenga en cuenta} que parted realiza los cambios de inmediato. Un error con
parted definitivamente podría provocar la pérdida de datos.

Como el usuario root, use el siguiente comando para escribir una etiqueta de disco MBR en un
disco.

[root@host ~]# parted /dev/vdb mklabel msdos

RH199-RHEL8.0-es-1-20190531 283
CAPÍTULO 8 | Administración de almacenamiento básico

Para escribir una etiqueta de disco GPT, use el siguiente comando.

[root@host ~]# parted /dev/vdb mklabel gpt

ADVERTENCIA
El subcomando mklabel borra la tabla de particiones existente. Solo use mklabel
cuando la intención sea volver a usar el disco sin tener en cuenta los datos
existentes. Si una nueva etiqueta cambia los límites de la partición, todos los datos
en los sistemas de archivos existentes serán inaccesibles.

Creación de particiones de MBR


La creación de una partición de disco estilo MBR incluye varios pasos:

1. Especifique el dispositivo de disco donde creará la partición.

Como usuario root, ejecute el comando parted y especifique el nombre del dispositivo de
disco como un argumento. Esto inicia el comando parted en modo interactivo, y muestra un
prompt de comando.

[root@host ~]# parted /dev/vdb


GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

2. Use el subcomando mkpart para crear una nueva partición primaria o ampliada.

(parted) mkpart
Partition type? primary/extended? primary

NOTA
En el caso de situaciones donde se necesitan más de cuatro particiones en un disco
particionado con MBR, cree tres particiones primarias y una partición ampliada. Esta
partición ampliada sirve como contenedor dentro del cual se pueden crear varias
particiones lógicas.

3. Indique el tipo de sistema de archivos que desea crear en la partición, como xfs o ext4. Esto
no crea el sistema de archivos en la partición; es solo una indicación del tipo de partición.

File system type? [ext2]? xfs

Para obtener la lista de los tipos de sistemas de archivos admitidos, use el siguiente comando:

[root@host ~]# parted /dev/vdb help mkpart


mkpart PART-TYPE [FS-TYPE] START END make a partition

PART-TYPE is one of: primary, logical, extended


FS-TYPE is one of: btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx,
hfs+, hfs, jfs, swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs,

284 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3,


amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2,
affs1, affs0, linux-swap, linux-swap(new), linux-swap(old)
START and END are disk locations, such as 4GB or 10%. Negative values
count from the end of the disk. For example, -1s specifies exactly the
last sector.

'mkpart' makes a partition without creating a new file system on the


partition. FS-TYPE may be specified to set an appropriate partition
ID.

4. Especifique el sector en el disco donde se iniciará la nueva partición.

Start? 2048s

Observe el sufijo s para proporcionar el valor en sectores. También puede usar los sufijos
MiB, GiB, TiB, MB, GB o TB. Si no proporciona un sufijo, MB es el predeterminado. parted
puede redondear el valor que proporcione para satisfacer las restricciones de disco.

Cuando parted comienza, recupera la topología del disco del dispositivo. Por ejemplo, el
tamaño del bloque físico del disco suele ser un parámetro que recopila parted. Con esa
información, parted asegura que la posición de inicio que proporcione alinea correctamente
la partición con la estructura del disco. La alineación correcta de la partición es importante
para un rendimiento óptimo. Si la posición de inicio genera una partición desalineada, parted
muestra una advertencia. Con la mayoría de los discos, un sector de inicio que es un múltiplo
de 2048 es una suposición segura.

5. Especifique el sector del disco donde debería terminar la nueva partición.

End? 1000MB

Con parted, no puede proporcionar directamente el tamaño de su partición, pero puede


calcularlo rápidamente con la siguiente fórmula:

Size = End - Start

Tan pronto como usted proporcione la posición final, parted actualiza la tabla de particiones
en el disco con los detalles de la nueva partición.

6. Salga de parted.

(parted) quit
Information: You may need to update /etc/fstab.

[root@host ~]#

7. Ejecute el comando udevadm settle. Este comando espera a que el sistema detecte la
nueva partición y cree el archivo de dispositivo asociado en el directorio /dev. Sólo regresa
cuando finaliza.

[root@host ~]# udevadm settle


[root@host ~]#

RH199-RHEL8.0-es-1-20190531 285
CAPÍTULO 8 | Administración de almacenamiento básico

Como alternativa al modo interactivo, también puede crear la partición de la siguiente manera:

[root@host ~]# parted /dev/vdb mkpart primary xfs 2048s 1000MB

Creación de particiones GPT


El esquema GTP también usa el comando parted para crear nuevas particiones:

1. Especifique el dispositivo de disco donde creará la partición.

Como el usuario root, ejecute el comando parted con el dispositivo de disco como único
argumento para iniciar parted en modo interactivo con un prompt del sistema.

[root@host ~]# parted /dev/vdb


GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

2. Use el subcomando mkpart para comenzar a crear la nueva partición.

Con el esquema GPT, cada partición recibe un nombre.

(parted) mkpart
Partition name? []? usersdata

3. Indique el tipo de sistema de archivos que desea crear en la partición, como xfs o ext4. Esto
no crea el sistema de archivos en la partición; es solo una indicación del tipo de partición.

File system type? [ext2]? xfs

4. Especifique el sector en el disco donde se iniciará la nueva partición.

Start? 2048s

5. Especifique el sector del disco donde debería terminar la nueva partición.

End? 1000MB

Tan pronto como usted proporcione la posición final, parted actualiza la tabla de particiones
en el disco con los detalles de la nueva partición.

6. Salga de parted.

(parted) quit
Information: You may need to update /etc/fstab.

[root@host ~]#

7. Ejecute el comando udevadm settle. Este comando espera a que el sistema detecte la
nueva partición y cree el archivo de dispositivo asociado en el directorio /dev. Sólo regresa
cuando finaliza.

286 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

[root@host ~]# udevadm settle


[root@host ~]#

Como alternativa al modo interactivo, también puede crear la partición de la siguiente manera:

[root@host ~]# parted /dev/vdb mkpart usersdata xfs 2048s 1000MB

Eliminación de particiones
Los siguientes pasos se aplican a los esquemas de partición MBR y GPT.

1. Especifique el disco que contiene la partición que se eliminará.

Como el usuario root, ejecute el comando parted con el dispositivo de disco como único
argumento para iniciar parted en modo interactivo con un prompt del sistema.

[root@host ~]# parted /dev/vdb


GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

2. Identifique el número de partición de la partición que se eliminará.

(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 1000MB 999MB xfs usersdata

3. Elimine la partición.

(parted) rm 1

El subcomando rm elimina inmediatamente la partición de la tabla de particiones en el disco.

4. Salga de parted.

(parted) quit
Information: You may need to update /etc/fstab.

[root@host ~]#

CREACIÓN DE SISTEMAS DE ARCHIVOS


Después de la creación de un dispositivo de bloque, el siguiente paso es agregarle un sistema de
archivos. Red Hat Enterprise Linux admite muchos tipos de sistema de archivos diferentes, pero

RH199-RHEL8.0-es-1-20190531 287
CAPÍTULO 8 | Administración de almacenamiento básico

dos tipos comunes son XFS y ext4. Anaconda, el instalador para Red Hat Enterprise Linux, usa
XFS de forma predeterminada.

Como el usuario root, use el comando mkfs.xfs para aplicar un sistema de archivos XFS a un
dispositivo de bloque. Para ext4, use mkfs.ext4 .

[root@host ~]# mkfs.xfs /dev/vdb1


meta-data=/dev/vdb1 isize=512 agcount=4, agsize=60992 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=243968, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=1566, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

MONTAJE DE SISTEMAS DE ARCHIVOS


Después de haber agregado el sistema de archivos, el último paso es montar el sistema de
archivos en un directorio en la estructura de directorios. Cuando monta un sistema de archivos en
la jerarquía del directorio, las utilidades de espacio de usuarios pueden acceder o escribir archivos
en el dispositivo.

Montaje manual de sistemas de archivos


Los administradores usan el comando mount para conectar manualmente el dispositivo a una
ubicación de directorio o punto de montaje. El comando mount espera el dispositivo, el punto de
montaje y, opcionalmente, las opciones del sistema de archivos como argumentos. Las opciones
del sistema de archivos personalizan el comportamiento del sistema de archivos.

[root@host ~]# mount /dev/vdb1 /mnt

También puede usar el comando mount para ver los sistemas de archivos montados actualmente,
los puntos de montaje y las opciones.

[root@host ~]# mount | grep vdb1


/dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

Montaje de forma persistente de sistemas de archivos


Montar manualmente un sistema de archivos es una buena manera de verificar que un dispositivo
formateado sea accesible y funcione de la manera esperada. Sin embargo, cuando el servidor
se reinicia, el sistema no vuelve a montar automáticamente el sistema de archivos en el árbol
de directorios; los datos están intactos en el sistema de archivos, pero los usuarios no pueden
acceder a ellos.

Para asegurarse de que el sistema monte automáticamente el sistema de archivos en el arranque


del sistema, agregue una entrada al archivo /etc/fstab. Este archivo de configuración enumera
los sistemas de archivos para montar en el arranque del sistema.

/etc/fstab es un archivo delimitado por espacios en blanco con seis campos por línea.

288 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

[root@host ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Feb 13 16:39:59 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=a8063676-44dd-409a-b584-68be2c9f5570 / xfs defaults 0 0
UUID=7a20315d-ed8b-4e75-a5b6-24ff9e1f9838 /dbdata xfs defaults 0 0

Cuando agregue o elimine una entrada en el archivo /etc/fstab, ejecute el comando


systemctl daemon-reload, o reinicie el servidor, para systemd para registrar la nueva
configuración.

[root@host ~]# systemctl daemon-reload

El primer campo especifica el dispositivo. En este ejemplo, se usa el UUID para especificar el
dispositivo. Los sistemas de archivos crean y almacenan el UUID en su superbloque en el momento
de la creación. O puede usar el archivo del dispositivo, como /dev/vdb1.

NOTA
Es preferible usar el UUID porque los identificadores del dispositivo de bloques
pueden cambiar en determinadas situaciones, como en el caso de que un proveedor
de la nube cambie la capa de almacenamiento subyacente de una máquina virtual,
o que los discos se detecten en un orden diferente con cada arranque del sistema.
El nombre del archivo del dispositivo de bloque puede cambiar, pero el UUID
permanece constante en el superbloque del sistema de archivos.

Use el comando lsblk --fs para escanear los dispositivos de bloque conectados
a una máquina y recuperar los UUID del sistema de archivos.

[root@host ~]# lsblk --fs


NAME FSTYPE LABEL UUID MOUNTPOINT
sr0
vda
└─vda1 xfs a8063676-44dd-409a-b584-68be2c9f5570 /
vdb
└─vdb1 xfs 7a20315d-ed8b-4e75-a5b6-24ff9e1f9838 /dbdata

El segundo campo es el punto de montaje del directorio, desde el cual se podrá acceder al
dispositivo de bloque en la estructura del directorio. El punto de montaje debe existir; de lo
contrario, créelo con el comando mkdir.

El tercer campo contiene el tipo del sistema de archivos, como xfs o ext4.

RH199-RHEL8.0-es-1-20190531 289
CAPÍTULO 8 | Administración de almacenamiento básico

El cuarto campo es la lista de opciones separada por comas para aplicar al dispositivo. defaults
es un conjunto de opciones que se usan comúnmente. La página del manual mount(8) documenta
las otras opciones disponibles.

El quinto campo es usado por el comando dump para hacer una copia de seguridad del dispositivo.
Otras aplicaciones de copia de seguridad no suelen usar este campo.

El último campo, el campo de orden de fsck, determina si debería ejecutarse el comando fsck en
el arranque del sistema para verificar que los sistemas de archivos estén limpios. El valor en este
campo indica el orden en el que debe ejecutarse fsck. Para sistemas de archivos XFS, establezca
este campo en 0 porque XFS no usa fsck para comprobar el estado de su sistema de archivos.
Para sistemas de archivos ext4, configúrelo en 1 para el sistema de archivos raíz y en 2 para los
otros sistemas de archivos ext4. De esta manera, fsck primero procesa el sistema de archivos raíz
y, luego, verifica los sistemas de archivos en discos separados al mismo tiempo, y los sistemas de
archivos en el mismo disco en secuencia.

NOTA
Si hay una entrada incorrecta en /etc/fstab, es posible que la máquina no pueda
volver a arrancarse. Los administradores deben comprobar que la entrada sea válida
al desmontar el sistema de archivos nuevo y usar mount /mountpoint, que lee /
etc/fstab, para montar el sistema de archivos nuevamente. Si el comando mount
arroja un error, corríjalo antes de volver a arrancar la máquina.

Como alternativa, puede usar el comando findmnt --verify para controlar el


archivo /etc/fstab.

REFERENCIAS
info parted( Manual de usuario de GNU Parted )

Páginas del manual parted(8), mkfs(8), mount(8), lsblk(8) y fstab(5)

Para obtener más información, consulte la guía Configuración y administración de


sistemas de archivos en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_file_systems/

290 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

EJERCICIO GUIADO

ADICIÓN DE PARTICIONES, SISTEMAS


DE ARCHIVOS Y MONTAJES
PERSISTENTES
En este ejercicio, creará una partición en un nuevo dispositivo de almacenamiento, la
formateará con un sistema de archivos XFS, la configurará para que se monte en el arranque
y la montará para su uso.

RESULTADOS
Debería ser capaz de usar parted , mkfs.xfs y otros comandos para crear una partición en
un disco nuevo, formatearla y montarla de manera persistente.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab storage-partitions start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la red.
También prepara el segundo disco en servera para el ejercicio.

[student@workstation ~]$ lab storage-partitions 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. Use el comando sudo -i para cambiar al usuario root. Si se le solicita, use student
como la contraseña.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Use parted para crear una nueva etiqueta de disco de tipo msdos en el disco /dev/vdb
para preparar ese nuevo disco para el esquema de partición MBR.

[root@servera ~]# parted /dev/vdb mklabel msdos


Information: You may need to update /etc/fstab.

RH199-RHEL8.0-es-1-20190531 291
CAPÍTULO 8 | Administración de almacenamiento básico

4. Agregue una nueva partición primaria que tenga un tamaño de 1 GiB. Para una correcta
alineación, inicie la partición en el sector 2048. Establezca el tipo de sistema de archivo de
la partición en XFS.

4.1. Use el modo interactivo parted para poder crear la partición.

[root@servera ~]# parted /dev/vdb


GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? xfs
Start? 2048s
End? 1001MB
(parted) quit
Information: You may need to update /etc/fstab.

Dado que la partición comienza en el sector 2048, el comando anterior establece la


posición final en 1001MB para obtener un tamaño de partición de 1000MB (1 GB).
Como alternativa, puede realizar la misma operación con el siguiente comando no
interactivo: parted /dev/vdb mkpart primary xfs 2048s 1001MB

4.2. Verifique su trabajo enumerando las particiones en /dev/vdb.

[root@servera ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags


1 1049kB 1001MB 1000MB primary

4.3. Ejecute el comando udevadm settle. Este comando espera a que el sistema registre
la nueva partición y regresa cuando finaliza.

[root@servera ~]# udevadm settle


[root@servera ~]#

5. Formatee la nueva partición con el sistema de archivos XFS.

[root@servera ~]# mkfs.xfs /dev/vdb1


meta-data=/dev/vdb1 isize=512 agcount=4, agsize=61056 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=244224, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1

292 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

log =internal log bsize=4096 blocks=1566, version=2


= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

6. Configure el nuevo sistema de archivos para montarlo de forma persistente en /archive.

6.1. Use mkdir para crear el punto de montaje del directorio /archive.

[root@servera ~]# mkdir /archive


[root@servera ~]#

6.2. Use el comando lsblk con la opción --fs para descubrir el UUID del dispositivo /
dev/vdb1.

[root@servera ~]# lsblk --fs /dev/vdb


NAME FSTYPE LABEL UUID MOUNTPOINT
vdb
└─vdb1 xfs e3db1abe-6d96-4faa-a213-b96a6f85dcc1

El UUID en la salida anterior es probablemente diferente en su sistema.

6.3. Agregue una entrada a /etc/fstab. En el siguiente comando, reemplace el UUID con
el que descubrió en el paso anterior.

[root@servera ~]# vim /etc/fstab


...output omitted...
UUID=e3db1abe-6d96-4faa-a213-b96a6f85dcc1 /archive xfs defaults 0 0

6.4. Actualice systemd para que el sistema registre la configuración de /etc/fstab


nueva.

[root@servera ~]# systemctl daemon-reload


[root@servera ~]#

6.5. Ejecute el comando mount /archive para montar el sistema de archivos nuevo
usando la nueva entrada agregada a /etc/fstab.

[root@servera ~]# mount /archive


[root@servera ~]#

6.6. Verifique que el sistema de archivos nuevo esté montado en /archive.

[root@servera ~]# mount | grep /archive


/dev/vdb1 on /archive type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

7. Reinicie servera. Después de reiniciar el servidor, inicie sesión y verifique que /dev/vdb1
se monte en /archive. Cuando finalice, cierre sesión en servera.

7.1. Reinicie servera.

RH199-RHEL8.0-es-1-20190531 293
CAPÍTULO 8 | Administración de almacenamiento básico

[root@servera ~]# systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

7.2. Espere unos minutos a que se reinicie servera e inicie sesión como el usuario
student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

7.3. Verifique que /dev/vdb1 esté montado en /archive.

[student@servera ~]$ mount | grep /archive


/dev/vdb1 on /archive type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

7.4. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab storage-partitions finish para terminar este
ejercicio.

[student@workstation ~]$ lab storage-partitions finish

Esto concluye el ejercicio guiado.

294 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

ADMINISTRACIÓN DE ESPACIO DE
INTERCAMBIO

OBJETIVOS
Tras completar esta sección, debería ser capaz de crear y administrar espacios de intercambio
para complementar la memoria física.

INTRODUCCIÓN A LOS CONCEPTOS DE ESPACIO DE


INTERCAMBIO
Un espacio de intercambio es un área del disco bajo el control del subsistema de administración
de memoria del kernel Linux. El kernel usa espacio de intercambio para complementar la memoria
RAM del sistema al contener páginas inactivas de memoria. La combinación de la memoria RAM
del sistema más el espacio de intercambio se denomina memoria virtual.

Cuando el uso de la memoria en un sistema supera un límite definido, el kernel busca en la


memoria RAM páginas de memoria asignadas a los procesos, pero inactivas. El kernel escribe las
páginas inactivas en el área de intercambio y, luego, reasigna la página RAM a otros procesos. Si
el programa requiere acceso a una página en el disco, el kernel localiza otra página de memoria
inactiva, la escribe en el disco y, luego, vuelve a convocar la página necesaria desde el área de
intercambio.

Dado que las áreas de intercambio residen en el disco, el intercambio es lento cuando se lo
compara con la memoria RAM. Si bien se usa para aumentar la memoria RAM del sistema, no debe
considerar el espacio de intercambio como una solución sostenible para una RAM insuficiente para
su carga de trabajo.

Tamaño del espacio de intercambio


Los administradores deben establecer el tamaño del espacio de intercambio en función de la
carga de trabajo de memoria en el sistema. Los proveedores de aplicaciones a veces proporcionan
recomendaciones sobre ese tema. En la siguiente tabla, se proporcionan algunas instrucciones
basadas en la cantidad total de memoria física.

Recomendaciones de memoria RAM y espacio de intercambio

RAM ESPACIO DE ESPACIO DE


INTERCAMBIO INTERCAMBIO SI
SE PERMITE LA
HIBERNACIÓN

2 GiB o menos Dos veces la memoria RAM Tres veces la memoria RAM

Entre 2 GiB y 8 GiB Igual que la memoria RAM Dos veces la memoria RAM

Entre 8 GiB y 64 GiB Al menos 4 GiB 1,5 veces la memoria RAM

Mas de 64 GiB Al menos 4 GiB No se recomienda la


hibernación.

RH199-RHEL8.0-es-1-20190531 295
CAPÍTULO 8 | Administración de almacenamiento básico

La función de hibernación de los equipos portátiles y de escritorio usa el espacio de intercambio


para guardar el contenido de la memoria RAM antes de apagar el sistema. Cuando vuelve a
encender el sistema, el kernel restaura el contenido de la memoria RAM desde el espacio de
intercambio y no necesita un arranque completo. Para esos sistemas, el espacio de intercambio
debe ser mayor que la cantidad de memoria RAM.

El artículo de la base de conocimiento en la sección de referencia al final de esta sección brinda


más orientación sobre el tamaño del espacio de intercambio.

CREACIÓN DE UN ESPACIO DE INTERCAMBIO


Para crear un espacio de intercambio, debe realizar lo siguiente:

• Cree una partición con un tipo de sistema de archivos de linux-swap.

• Coloque una firma de intercambio en el dispositivo.

Creación de una partición de intercambio


Use parted para crear una partición del tamaño deseado y establezca su tipo de sistema de
archivos en linux-swap. Anteriormente, las herramientas observaban el tipo de sistema de
archivos de la partición para determinar si el dispositivo debía activarse; no obstante, eso ya no
sucede. Si bien las utilidades ya no usan el tipo de sistema de archivos de la partición, establecer
ese tipo permite a los administradores determinar rápidamente el propósito de la partición.

En el siguiente ejemplo, se crea una partición de 256 MB.

[root@host ~]# parted /dev/vdb


GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 1001MB 1000MB data

(parted) mkpart
Partition name? []? swap1
File system type? [ext2]? linux-swap
Start? 1001MB
End? 1257MB
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 1001MB 1000MB data
2 1001MB 1257MB 256MB linux-swap(v1) swap1

296 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

(parted) quit
Information: You may need to update /etc/fstab.

[root@host ~]#

Después de crear la partición, ejecute el comando udevadm settle. Este comando espera
que el sistema detecte la nueva partición y cree el archivo de dispositivo asociado en /dev. Sólo
regresa cuando finaliza.

[root@host ~]# udevadm settle


[root@host ~]#

Formateo del dispositivo


El comando mkswap aplica una firma de intercambio al dispositivo. A diferencia de otras utilidades
de formateo, mkswap escribe un único bloque de datos al inicio del dispositivo, dejando el resto
del dispositivo sin formatear de modo que el kernel pueda usarlo para almacenar páginas de
memoria.

[root@host ~]# mkswap /dev/vdb2


Setting up swapspace version 1, size = 244 MiB (255848448 bytes)
no label, UUID=39e2667a-9458-42fe-9665-c5c854605881

ACTIVACIÓN DE UN ESPACIO DE INTERCAMBIO


Puede usar el comando swapon para activar un espacio de intercambio formateado.

Use swapon con el dispositivo como parámetro, o use swapon -a para activar todos los espacios
de intercambio detallados en el archivo /etc/fstab. Use los comandos swapon --show y free
para inspeccionar los espacios de intercambio disponibles.

[root@host ~]# free


total used free shared buff/cache available
Mem: 1873036 134688 1536436 16748 201912 1576044
Swap: 0 0 0
[root@host ~]# swapon /dev/vdb2
[root@host ~]# free
total used free shared buff/cache available
Mem: 1873036 135044 1536040 16748 201952 1575680
Swap: 249852 0 249852

Puede desactivar un espacio de intercambio con el comando swapoff. Si el espacio de


intercambio tiene páginas escritas, swapoff intenta mover esas páginas a otros espacios de
intercambio activos o volver a la memoria. Si no puede escribir datos en otros lugares, el comando
swapoff falla, con un error, y el espacio de intercambio permanece activo.

Activación del espacio de intercambio de forma persistente


Para activar un espacio de intercambio en cada arranque, coloque una entrada en el archivo /
etc/fstab. En el siguiente ejemplo, se muestra una línea típica en /etc/fstab basada en el
espacio de intercambio creado anteriormente.

RH199-RHEL8.0-es-1-20190531 297
CAPÍTULO 8 | Administración de almacenamiento básico

UUID=39e2667a-9458-42fe-9665-c5c854605881 swap swap defaults 0 0

El ejemplo anterior usa el UUID como el primer campo. Cuando formatea el dispositivo, el
comando mkswap muestra ese UUID. Si perdió la salida de mkswap, use el comando lsblk --fs.
Como alternativa, también puede usar el nombre del dispositivo en el primer campo.

El segundo campo se reserva típicamente para el punto de montaje. Sin embargo, para
dispositivos de intercambio, que no son accesibles a través de la estructura del directorio, este
campo toma el valor del marcador de posición swap.

El tercer campo es el tipo de sistema de archivos. El tipo de sistemas de archivos para un espacio
de intercambio es swap.

El cuarto campo es para opciones. El ejemplo usa la opción defaults. La opción defaults
incluye la opción de montaje auto, que significa activar el espacio de intercambio
automáticamente en el arranque del sistema.

Los dos campos finales son el indicador dump y el orden fsck. Los espacios de intercambio no
requieren copias de seguridad ni revisión del sistema de archivos y por lo tanto, estos campos
deben establecerse en cero.

Cuando agregue o elimine una entrada en el archivo /etc/fstab, ejecute el comando


systemctl daemon-reload, o reinicie el servidor, para systemd para registrar la nueva
configuración.

[root@host ~]# systemctl daemon-reload

Configuración de la prioridad de espacio de intercambio


De forma predeterminada, el sistema usa espacios de intercambio en serie, lo que significa que el
kernel usa el primer espacio de intercambio activado hasta que esté lleno; luego, el kernel empieza
a usar el segundo espacio de intercambio. Sin embargo, puede definir una prioridad para cada
espacio de intercambio para forzar ese orden.

Para establecer la prioridad, use la opción pri en /etc/fstab. El kernel usa el espacio de
intercambio con la prioridad más alta primero. La prioridad predeterminada es -2.

En el siguiente ejemplo, se muestran tres espacios de intercambio definidos en /etc/fstab. El


kernel usa la última entrada primero, con pri=10. Cuando ese espacio está lleno, usa la segunda
entrada, con pri=4. Por último, usa la primera entrada, que tiene una prioridad predeterminada de
-2.

UUID=af30cbb0-3866-466a-825a-58889a49ef33 swap swap defaults 0 0


UUID=39e2667a-9458-42fe-9665-c5c854605881 swap swap pri=4 0 0
UUID=fbd7fa60-b781-44a8-961b-37ac3ef572bf swap swap pri=10 0 0

Use swapon --show para visualizar las prioridades de espacio de intercambio.

Cuando los espacios de intercambio tienen la misma prioridad, el kernel los escribe con el método
Round-Robin.

298 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

REFERENCIAS
Páginas del manual mkswap(8), swapon(8), swapoff(8), mount(8) y parted(8)

Base de conocimiento: ¿Cuál es el tamaño de intercambio recomendado para


las plataformas Red Hat ?
https://access.redhat.com/solutions/15244

RH199-RHEL8.0-es-1-20190531 299
CAPÍTULO 8 | Administración de almacenamiento básico

EJERCICIO GUIADO

ADMINISTRACIÓN DE ESPACIO DE
INTERCAMBIO
En este ejercicio, creará y formateará una partición para usar como espacio de intercambio,
la formateará como intercambio y la activará de forma persistente.

RESULTADOS
Debería poder crear una partición y un espacio de intercambio en un disco con el esquema
de partición GPT.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab storage-swap start. Este comando ejecuta


un script de inicio que determina si la máquina servera es accesible en la red. También
prepara el segundo disco en servera para el ejercicio.

[student@workstation ~]$ lab storage-swap 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. Use el comando sudo -i para cambiar al usuario root. Si se le solicita, use student
como la contraseña.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Use el comando parted para inspeccionar el disco /dev/vdb.

[root@servera ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

300 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

Number Start End Size File system Name Flags


1 1049kB 1001MB 1000MB data

Observe que el disco ya tiene una tabla de particiones y usa el esquema de partición GPT.
Además, ya existe una partición de 1 GB.

4. Agregue una nueva partición con un tamaño de 500 MB para usar como espacio de
intercambio. Establezca el tipo de partición en linux-swap.

4.1. Use parted para crear la partición. Dado que el disco usa el esquema de partición
GPT, debe asignarle un nombre a la partición. Asígnele el nombre myswap.

[root@servera ~]# parted /dev/vdb mkpart myswap linux-swap 1001MB 1501MB


Information: You may need to update /etc/fstab.

Observe en el comando anterior que la posición inicial, 1001 MB, es el final de la


primera partición existente. De esta manera parted se asegura de que la nueva
partición siga inmediatamente a la anterior, sin ninguna brecha.
Dado que la partición comienza en la posición 1001 MB, el comando establece la
posición final en 1501 MB para obtener un tamaño de partición de 500 MB.

4.2. Verifique su trabajo enumerando las particiones en /dev/vdb.

[root@servera ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 1001MB 1000MB data
2 1001MB 1501MB 499MB myswap swap

El tamaño de la nueva partición no es exactamente 500 MB. Esto es porque parted


tiene que alinear la partición con el diseño del disco.

4.3. Ejecute el comando udevadm settle. Este comando espera a que el sistema registre
la nueva partición y regresa cuando finaliza.

[root@servera ~]# udevadm settle


[root@servera ~]#

5. Inicialice la partición creada recientemente como espacio de intercambio.

[root@servera ~]# mkswap /dev/vdb2


Setting up swapspace version 1, size = 476 MiB (499118080 bytes)
no label, UUID=cb7f71ca-ee82-430e-ad4b-7dda12632328

6. Habilite el espacio de intercambio creado recientemente.

RH199-RHEL8.0-es-1-20190531 301
CAPÍTULO 8 | Administración de almacenamiento básico

6.1. Use el comando swapon --show para mostrar que la creación e inicialización del
espacio de intercambio no lo habilita aún para su uso.

[root@servera ~]# swapon --show


[root@servera ~]#

6.2. Habilite el espacio de intercambio creado recientemente.

[root@servera ~]# swapon /dev/vdb2


[root@servera ~]#

6.3. Verifique que el espacio de intercambio creado recientemente ahora esté disponible.

[root@servera ~]# swapon --show


NAME TYPE SIZE USED PRIO
/dev/vdb2 partition 476M 0B -2

6.4. Deshabilite el espacio de intercambio.

[root@servera ~]# swapoff /dev/vdb2


[root@servera ~]#

6.5. Confirme que el espacio de intercambio está deshabilitado.

[root@servera ~]# swapon --show


[root@servera ~]#

7. Configure el nuevo espacio de intercambio para que esté habilitado en el arranque del
sistema.

7.1. Use el comando lsblk con la opción --fs para descubrir el UUID del dispositivo /
dev/vdb2.

[root@servera ~]# lsblk --fs /dev/vdb2


NAME FSTYPE LABEL UUID MOUNTPOINT
vdb2 swap cb7f71ca-ee82-430e-ad4b-7dda12632328

El UUID en la salida anterior es probablemente diferente en su sistema.

7.2. Agregue una entrada a /etc/fstab. En el siguiente comando, reemplace el UUID con
el que descubrió en el paso anterior.

[root@servera ~]# vim /etc/fstab


...output omitted...
UUID=cb7f71ca-ee82-430e-ad4b-7dda12632328 swap swap defaults 0 0

7.3. Actualice systemd para que el sistema registre la configuración de /etc/fstab


nueva.

302 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

[root@servera ~]# systemctl daemon-reload


[root@servera ~]#

7.4. Habilite el espacio de intercambio con la nueva entrada recién agregada a /etc/
fstab.

[root@servera ~]# swapon -a


[root@servera ~]#

7.5. Verifique que el nuevo espacio de intercambio esté habilitado.

[root@servera ~]# swapon --show


NAME TYPE SIZE USED PRIO
/dev/vdb2 partition 476M 0B -2

8. Reinicie servera. Después de reiniciar el servidor, inicie sesión y verifique que el espacio
de intercambio esté habilitado. Cuando finalice, cierre sesión en servera.

8.1. Reinicie servera.

[root@servera ~]# systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@workstation ~]$

8.2. Espere unos minutos a que se reinicie servera e inicie sesión como el usuario
student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

8.3. Verifique que el espacio de intercambio esté habilitado.

[root@servera ~]# swapon --show


NAME TYPE SIZE USED PRIO
/dev/vdb2 partition 476M 0B -2

8.4. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab storage-swap finish para terminar este ejercicio.

RH199-RHEL8.0-es-1-20190531 303
CAPÍTULO 8 | Administración de almacenamiento básico

[student@workstation ~]$ lab storage-swap finish

Esto concluye el ejercicio guiado.

304 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

TRABAJO DE LABORATORIO

ADMINISTRACIÓN DE
ALMACENAMIENTO BÁSICO
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, creará varias particiones en un disco nuevo, formateará
algunas con sistemas de archivos y las montará, y activará otras como espacios de
intercambio.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Visualizar y crear particiones con el comando parted.

• Crear nuevos sistemas de archivos en particiones y montarlos de forma persistente.

• Crear espacios de intercambio y activarlos en el arranque.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab storage-review start. Este comando


ejecuta un script de inicio que determina si la máquina serverb es accesible en la red.
También prepara el segundo disco en serverb para el ejercicio.

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

1. Hay nuevos discos disponibles en serverb. En el primer disco nuevo, cree una partición
GPT de 2 GB denominada copia de seguridad. Dado que puede ser difícil establecer el
tamaño exacto, un tamaño entre 1,8 GB y 2,2 GB es aceptable. Establezca el tipo de sistema
de archivos correcto en esa partición para alojar un sistema de archivos XFS.
La contraseña para la cuenta de usuario student en serverb es student. Este usuario
tiene acceso completo root a través de sudo.
2. Formatee la partición de 2 GB con un sistema de archivos XFS y móntelo de manera
persistente en /backup.
3. En el mismo disco nuevo, cree dos particiones GPT de 512  MB denominadas swap1 y swap2.
Un tamaño entre 460 MB y 564 MB es aceptable. Establezca el tipo de sistema de archivos
correcto en esas particiones para alojar espacios de intercambio.
4. Inicialice las dos particiones de 512 MiB como espacios de intercambio y configúrelas para
que se activen en el arranque. Establezca el espacio de intercambio en la partición swap2
para que se prefiera sobre el otro.
5. Para verificar su trabajo, reinicie serverb. Confirme que el sistema monta automáticamente
la primera partición en /backup. Además, confirme que el sistema activa los dos espacios de
intercambio.

RH199-RHEL8.0-es-1-20190531 305
CAPÍTULO 8 | Administración de almacenamiento básico

Cuando finalice, cierre sesión en serverb.

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

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

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

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

Esto concluye el trabajo de laboratorio.

306 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

SOLUCIÓN

ADMINISTRACIÓN DE
ALMACENAMIENTO BÁSICO
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, creará varias particiones en un disco nuevo, formateará
algunas con sistemas de archivos y las montará, y activará otras como espacios de
intercambio.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Visualizar y crear particiones con el comando parted.

• Crear nuevos sistemas de archivos en particiones y montarlos de forma persistente.

• Crear espacios de intercambio y activarlos en el arranque.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab storage-review start. Este comando


ejecuta un script de inicio que determina si la máquina serverb es accesible en la red.
También prepara el segundo disco en serverb para el ejercicio.

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

1. Hay nuevos discos disponibles en serverb. En el primer disco nuevo, cree una partición
GPT de 2 GB denominada copia de seguridad. Dado que puede ser difícil establecer el
tamaño exacto, un tamaño entre 1,8 GB y 2,2 GB es aceptable. Establezca el tipo de sistema
de archivos correcto en esa partición para alojar un sistema de archivos XFS.
La contraseña para la cuenta de usuario student en serverb es student. Este usuario
tiene acceso completo root a través de sudo.

1.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 ~]$

1.2. Dado que crear particiones y sistemas de archivos requiere acceso root, use el
comando sudo -i para cambiar al usuario root. Si se le solicita, use student como la
contraseña.

RH199-RHEL8.0-es-1-20190531 307
CAPÍTULO 8 | Administración de almacenamiento básico

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

1.3. Use el comando lsblk para identificar los nuevos discos. Esos discos no deberían tener
particiones todavía.

[root@serverb ~]# lsblk


NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 10G 0 disk
└─vda1 252:1 0 10G 0 part /
vdb 252:16 0 5G 0 disk
vdc 252:32 0 5G 0 disk
vdd 252:48 0 5G 0 disk

Tenga en cuenta que el primer disco nuevo, vdb, no tiene particiones.

1.4. Confirme que el disco no tiene etiqueta.

[root@serverb ~]# parted /dev/vdb print


Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

1.5. Use parted y el subcomando mklabel para definir el esquema de partición GPT.

[root@serverb ~]# parted /dev/vdb mklabel gpt


Information: You may need to update /etc/fstab.

1.6. Cree la partición de 2 GB. Asígnele el nombre copia de seguridad y establezca su


tipo en xfs. Inicie la partición en el sector 2048.

[root@serverb ~]# parted /dev/vdb mkpart backup xfs 2048s 2GB


Information: You may need to update /etc/fstab.

1.7. Confirme la correcta creación de la nueva partición.

[root@serverb ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 2000MB 1999MB backup

308 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

1.8. Ejecute el comando udevadm settle. Este comando espera que el sistema detecte
la nueva partición y cree el archivo de dispositivo /dev/vdb1. Sólo regresa cuando
finaliza.

[root@serverb ~]# udevadm settle


[root@serverb ~]#

2. Formatee la partición de 2 GB con un sistema de archivos XFS y móntelo de manera


persistente en /backup.

2.1. Use el comandomkfs.xfs para formatear la partición /dev/vbd1.

[root@serverb ~]# mkfs.xfs /dev/vdb1


meta-data=/dev/vdb1 isize=512 agcount=4, agsize=121984 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=487936, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

2.2. Cree el punto de montaje /backup.

[root@serverb ~]# mkdir /backup


[root@serverb ~]#

2.3. Antes de agregar el nuevo sistema de archivos a /etc/fstab, recupere su UUID.

[root@serverb ~]# lsblk --fs /dev/vdb1


NAME FSTYPE LABEL UUID MOUNTPOINT
vdb1 xfs a3665c6b-4bfb-49b6-a528-74e268b058dd

El UUID en su sistema es probablemente diferente.

2.4. Edite /etc/fstab y defina el nuevo sistema de archivos.

[root@serverb ~]# vim /etc/fstab


...output omitted...
UUID=a3665c6b-4bfb-49b6-a528-74e268b058dd /backup xfs defaults 0 0

2.5. Fuerce a systemd para que vuelva a leer el archivo /etc/fstab.

[root@serverb ~]# systemctl daemon-reload


[root@serverb ~]#

2.6. Monte manualmente /backup para verificar su trabajo. Confirme que el montaje es
correcto.

RH199-RHEL8.0-es-1-20190531 309
CAPÍTULO 8 | Administración de almacenamiento básico

[root@serverb ~]# mount /backup


[root@serverb ~]# mount | grep /backup
/dev/vdb1 on /backup type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

3. En el mismo disco nuevo, cree dos particiones GPT de 512  MB denominadas swap1 y swap2.
Un tamaño entre 460 MB y 564 MB es aceptable. Establezca el tipo de sistema de archivos
correcto en esas particiones para alojar espacios de intercambio.

3.1. Recupere la posición final de la primera partición visualizando la tabla de particiones


actual en /dev/vdb. En el siguiente paso, use ese valor como el inicio de la partición
swap1.

[root@serverb ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 2000MB 1999MB xfs backup

3.2. Cree la primera partición de 512 MB denominada swap1. Establezca su tipo en linux-
swap. Use la posición final de la primera partición como punto de partida. La posición
final es 2000 MB + 512 MB = 2512 MB

[root@serverb ~]# parted /dev/vdb mkpart swap1 linux-swap 2000MB 2512M


Information: You may need to update /etc/fstab.

3.3. Cree la segunda partición de 512 MB denominada swap2. Establezca su tipo en linux-
swap. Use la posición final de la partición anterior como punto de partida: 2512M. La
posición final es 2512 MB + 512 MB = 3024 MB

[root@serverb ~]# parted /dev/vdb mkpart swap2 linux-swap 2512M 3024M


Information: You may need to update /etc/fstab.

3.4. Visualice la tabla de particiones para verificar su trabajo.

[root@serverb ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 2000MB 1999MB xfs backup
2 2000MB 2512MB 513MB swap1 swap
3 2512MB 3024MB 512MB swap2 swap

310 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

3.5. Ejecute el comando udevadm settle. Este comando espera que el sistema registre las
nuevas particiones y cree los archivos de dispositivo.

[root@serverb ~]# udevadm settle


[root@serverb ~]#

4. Inicialice las dos particiones de 512 MiB como espacios de intercambio y configúrelas para
que se activen en el arranque. Establezca el espacio de intercambio en la partición swap2
para que se prefiera sobre el otro.

4.1. Use el comando mkswap para inicializar las particiones de intercambio.

[root@serverb ~]# mkswap /dev/vdb2


Setting up swapspace version 1, size = 489 MiB (512749568 bytes)
no label, UUID=87976166-4697-47b7-86d1-73a02f0fc803
[root@serverb ~]# mkswap /dev/vdb3
Setting up swapspace version 1, size = 488 MiB (511700992 bytes)
no label, UUID=4d9b847b-98e0-4d4e-9ef7-dfaaf736b942

Tome nota de los UUID de los dos espacios de intercambio. Usará esa información en el
siguiente paso. Si ya no puede ver la salida mkswap, use el comando lsblk --fs para
recuperar los UUID.

4.2. Edite /etc/fstab y defina los nuevos espacios de intercambio. Para configurar el
espacio de intercambio en la partición swap2 para ser preferido sobre swap1, otórguele
una mayor prioridad con la opción pri.

[root@serverb ~]# vim /etc/fstab


...output omitted...
UUID=a3665c6b-4bfb-49b6-a528-74e268b058dd /backup xfs defaults 0 0
UUID=87976166-4697-47b7-86d1-73a02f0fc803 swap swap pri=10 0 0
UUID=4d9b847b-98e0-4d4e-9ef7-dfaaf736b942 swap swap pri=20 0 0

4.3. Fuerce a systemd para que vuelva a leer el archivo /etc/fstab.

[root@serverb ~]# systemctl daemon-reload


[root@serverb ~]#

4.4. Use el comando swapon -a para activar los nuevos espacios de intercambio. Use el
comando swapon --show para confirmar la correcta activación de los espacios de
intercambio.

[root@serverb ~]# swapon -a


[root@serverb ~]# swapon --show
NAME TYPE SIZE USED PRIO
/dev/vdb2 partition 489M 0B 10
/dev/vdb3 partition 488M 0B 20

5. Para verificar su trabajo, reinicie serverb. Confirme que el sistema monta automáticamente
la primera partición en /backup. Además, confirme que el sistema activa los dos espacios de
intercambio.
Cuando finalice, cierre sesión en serverb.

RH199-RHEL8.0-es-1-20190531 311
CAPÍTULO 8 | Administración de almacenamiento básico

5.1. Reinicie serverb.

[root@serverb ~]# systemctl reboot


[root@serverb ~]#
Connection to serverb closed by remote host.
Connection to serverb closed.
[student@workstation ~]$

5.2. Espere unos minutos a que se reinicie serverb e inicie sesión como el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

5.3. Verifique que el sistema monte automáticamente /dev/vdb1 en /backup.

[student@serverb ~]$ mount | grep /backup


/dev/vdb1 on /backup type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

5.4. Use el comando swapon --show para confirmar que el sistema activa ambos espacios
de intercambio.

[student@serverb ~]$ swapon --show


NAME TYPE SIZE USED PRIO
/dev/vdb2 partition 489M 0B 10
/dev/vdb3 partition 488M 0B 20

5.5. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

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

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

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

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

Esto concluye el trabajo de laboratorio.

312 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 8 | Administración de almacenamiento básico

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

• El comando mount permite que el usuario root monte manualmente un sistema de archivos.

• parted se puede usar para agregar, modificar y eliminar particiones en discos con esquemas de
particionamiento MBR o GPT.

• Los sistemas de archivos XFS se crean en particiones de discos usando mkfs.xfs.

• Para que los montajes de sistemas de archivos sean persistentes, se deben agregar a /etc/
fstab.

• Los espacios de intercambio se inicializan con el comando mkswap.

RH199-RHEL8.0-es-1-20190531 313
314 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9

CONTROL DE SERVICIOS Y
DEL PROCESO DE ARRANQUE
META Controlar y monitorear los servicios de red, los
daemons del sistema y el proceso de arranque 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.
• Describir el proceso de arranque de Red Hat
Enterprise Linux, configurar el objetivo
predeterminado que se usa en el arranque
e iniciar un sistema con un objetivo no
predeterminado.
• Iniciar sesión en un sistema y cambiar la
contraseña root cuando la actual se haya
perdido.
• Reparar manualmente la configuración del
sistema de archivos o problemas de daños que
detengan el proceso de arranque.

SECCIONES • Identificación de procesos del sistema iniciados


en forma automática (y ejercicio guiado)
• Control de servicios del sistema (y ejercicio
guiado)
• Selección del objetivo de arranque (y ejercicio
guiado)
• Restablecimiento de la contraseña de root (y
ejercicio guiado)
• Reparación de problemas de sistemas de
archivos en el arranque (y ejercicio guiado)

TRABAJO DE Control de servicios y del proceso de arranque


LABORATORIO

RH199-RHEL8.0-es-1-20190531 315
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

316 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

• 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.

RH199-RHEL8.0-es-1-20190531 317
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[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
autovt@.service 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).

318 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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])

RH199-RHEL8.0-es-1-20190531 319
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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).

320 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

Para enumerar todas las unidades que han presentado un error, ejecute el comando systemctl
--failed --type=service.

REFERENCIAS
Páginas de 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 Configuración básica de sistemas de Red Hat Enterprise Linux 8.0 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

RH199-RHEL8.0-es-1-20190531 321
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

322 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[student@servera ~]$ systemctl list-units --type=socket --all


UNIT LOAD ACTIVE SUB DESCRIPTION
dbus.socket loaded active running D-Bus System Message Bus Socket
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

... jegui.ilt.example.com systemd[1]: Starting NTP client/server...


...output omitted...
... jegui.ilt.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.

RH199-RHEL8.0-es-1-20190531 323
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[student@servera ~]$ ps -p 680


PID TTY TIME CMD
680 ? 00:00:00 chronyd

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 -oCiphers=aes256-gcm@openssh.com,
chacha20-poly1305@openssh.com,aes256-ctr,
aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,
aes128-cbc -oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha>

... jegui.ilt.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

324 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

atd.service enabled
auditd.service enabled
auth-rpcgss-module.service static
autovt@.service enabled
blk-availability.service disabled
chrony-dnssrv@.service static
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.

RH199-RHEL8.0-es-1-20190531 325
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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:

326 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[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
● │ ├─sshd-keygen@ecdsa.service
● │ ├─sshd-keygen@ed25519.service
● │ └─sshd-keygen@rsa.service
● └─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

RH199-RHEL8.0-es-1-20190531 327
CAPÍTULO 9 | Control de servicios y del proceso de arranque

un enlace en los directorios de configuración que se conecta con el archivo /dev/null, el cual
impide que el servicio se inicie.

[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.

328 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

RH199-RHEL8.0-es-1-20190531 329
CAPÍTULO 9 | Control de servicios y del proceso de arranque

REFERENCIAS
Páginas de 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 Configuración básica de sistemas de Red Hat Enterprise Linux 8.0 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

330 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

RH199-RHEL8.0-es-1-20190531 331
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

332 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[student@servera ~]$ sudo systemctl stop chronyd


[student@servera ~]$ systemctl status chronyd
● chronyd.service - NTP client/server
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.

RH199-RHEL8.0-es-1-20190531 333
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

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.

334 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

SELECCIÓN DEL OBJETIVO DE


ARRANQUE

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Describir el proceso de arranque de Red Hat Enterprise Linux.

• Establecer el objetivo predeterminado usado en el arranque.

• Arrancar un sistema con un objetivo no predeterminado.

DESCRIPCIÓN DEL PROCESO DE ARRANQUE DE


RED HAT ENTERPRISE LINUX 8
Los sistemas de computación modernos son combinaciones complejas de hardware y software.
Desde un estado de apagado no definido hasta un sistema de ejecución con un prompt de inicio
de sesión, se requiere una gran cantidad de piezas de hardware y software que funcionen en
conjunto. En la siguiente lista, se proporciona una descripción general de alto nivel de las tareas
de arranque de un sistema físico x86_64 de Red Hat Enterprise Linux 8. La lista de máquinas
virtuales x86_64 es prácticamente la misma, pero el hipervisor maneja algunos de los pasos
específicos del hardware en el software.

• La máquina se enciende. El firmware del sistema (UEFI moderno o BIOS anterior) ejecuta una
prueba automática de encendido (Power On Self Test, POST) y comienza a inicializar parte del
hardware.

Se ajusta por medio de las pantallas de configuración de BIOS o UEFI del sistema, a las cuales
se llega típicamente al presionar una determinada combinación de teclas (p. ej., F2) al principio
del proceso de arranque.

• El firmware del sistema busca un dispositivo con capacidad de arranque, ya sea configurado en
el firmware de arranque UEFI o al buscar un Master Boot Record (MBR) en todos los discos, en
el orden configurado en el BIOS.

Se ajusta por medio de las pantallas de configuración de BIOS o UEFI del sistema, a las cuales
se llega típicamente al presionar una determinada combinación de teclas (p. ej., F2) al principio
del proceso de arranque.

• El firmware del sistema lee un cargador de arranque desde el disco, luego pasa el control del
sistema al cargador de arranque. En un sistema de Red Hat Enterprise Linux 8, el cargador de
arranque es GRand Unified Bootloader versión 2 (GRUB2).

Se configura con el comando grub2-install, el cual instala GRUB2 como el cargador de


arranque en el disco.

• GRUB2 carga su configuración desde el archivo /boot/grub2/grub.cfg y muestra un menú


donde puede seleccionar qué kernel arrancar.

Se configura por medio del directorio /etc/grub.d/, el archivo /etc/default/grub y el


comando grub2-mkconfig para generar el archivo /boot/grub2/grub.cfg.

RH199-RHEL8.0-es-1-20190531 335
CAPÍTULO 9 | Control de servicios y del proceso de arranque

• Después de seleccionar un kernel, o después de que el tiempo de espera finaliza, el cargador de


arranque carga el kernel e initramfs desde el disco y los coloca en la memoria. Un initramfs es
una colección de archivos que contiene módulos del kernel para todo el hardware necesario en
el arranque, scripts de inicialización y más. En Red Hat Enterprise Linux 8, initramfs contiene
un sistema totalmente usable por sí solo.

Se configura por medio del directorio /etc/dracut.conf.d/, el comando dracut y el


comando lsinitrd para inspeccionar el archivo initramfs.

• El cargador de arranque pasa el control al kernel, y detalla todas las opciones especificadas en
la línea de comandos del kernel en el cargador de arranque, y la ubicación del initramfs en la
memoria.

Se configura por medio del directorio /etc/grub.d/, el archivo /etc/default/grub y el


comando grub2-mkconfig para generar el archivo /boot/grub2/grub.cfg.

• El kernel inicializa todo el hardware para el que puede encontrar un controlador en initramfs
y, luego, ejecuta /sbin/init desde initramfs como PID 1. En Red Hat Enterprise Linux 8, /
sbin/init es un enlace a systemd.

Se configura por medio del parámetro de la línea de comandos init= del kernel.

• La instancia systemd desde initramfs ejecuta todas las unidades para el objetivo
initrd.target. Esto incluye el montaje del sistema de archivos root en el disco en el
directorio /sysroot.

Se configura por medio de /etc/fstab

• El kernel cambia (articula) el sistema de archivos root desde initramfs al sistema de archivos
root en /sysroot. A continuación, systemd vuelve a ejecutarse usando la copia de systemd
instalada en el disco.

• systemd busca un objetivo predeterminado, ya sea especificado desde la línea de comandos


del kernel o configurado en el sistema; luego, inicia (y detiene) unidades para cumplir con la
configuración para ese objetivo, y resuelve dependencias entre unidades automáticamente.
Básicamente, un objetivo systemd es un conjunto de unidades que el sistema debe activar
para alcanzar un estado deseado. Por lo general, estos objetivos inician una pantalla de inicio de
sesión basado en texto o inicio de sesión gráfico.

Se configura por medio de /etc/systemd/system/default.target y /etc/systemd/


system/.

REINICIO Y APAGADO
Para apagar o reiniciar un sistema en ejecución desde la línea de comandos, puede usar el
comando systemctl.

systemctl poweroff detiene todos los servicios en ejecución, desmonta todos los sistemas de
archivos (o vuelve a montarlos como solo lectura cuando no se puedan desmontar) y, luego, apaga
el sistema.

systemctl reboot detiene todos los servicios en ejecución, desmonta todos los sistemas de
archivos y, luego, reinicia el sistema.

También puede usar el atajo de estos comandos, poweroff y reboot, que son enlaces
simbólicos a sus equivalentes de systemctl.

336 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

NOTA
systemctl halt y halt también están disponibles para detener el sistema, pero
a diferencia de poweroff, estos comandos no apagan el sistema, sino que lo llevan
hasta un punto donde es seguro apagarlo manualmente.

SELECCIÓN DE UN OBJETIVO DE SYSTEMD


Un objetivo de systemd es un conjunto de unidades de systemd que el sistema debe iniciar para
alcanzar un estado deseado. En la siguiente tabla, se detallan los objetivos más importantes.

Objetivos que se usan normalmente

OBJETIVO PROPÓSITO

graphical.target El sistema admite varios usuarios, e inicios de sesión gráficos y


basados en texto.

multi-user.target El sistema admite varios usuarios y solo inicios de sesión


basados en texto.

rescue.target Prompt sulogin, inicialización del sistema básica finalizada.

emergency.target Prompt sulogin, cambio de initramfs completo y root de


sistema montado en / con acceso de solo lectura.

Un objetivo puede ser parte de otro objetivo. Por ejemplo, graphical.target incluye multi-
user.target, que a su vez depende de basic.target y otros. Puede ver estas dependencias
con el siguiente comando.

[user@host ~]$ systemctl list-dependencies graphical.target | grep target


graphical.target
* └─multi-user.target
* ├─basic.target
* │ ├─paths.target
* │ ├─slices.target
* │ ├─sockets.target
* │ ├─sysinit.target
* │ │ ├─cryptsetup.target
* │ │ ├─local-fs.target
* │ │ └─swap.target
...output omitted...

Para enumerar los objetivos disponibles, use el siguiente comando.

[user@host ~]$ systemctl list-units --type=target --all


UNIT LOAD ACTIVE SUB DESCRIPTION
---------------------------------------------------------------------------
basic.target loaded active active Basic System
cryptsetup.target loaded active active Local Encrypted Volumes
emergency.target loaded inactive dead Emergency Mode
getty-pre.target loaded inactive dead Login Prompts (Pre)

RH199-RHEL8.0-es-1-20190531 337
CAPÍTULO 9 | Control de servicios y del proceso de arranque

getty.target loaded active active Login Prompts


graphical.target loaded inactive dead Graphical Interface
...output omitted...

Selección de un objetivo en el tiempo de ejecución


En un sistema en ejecución, los administradores pueden cambiar a un objetivo diferente usando el
comando systemctl isolate.

[root@host ~]# systemctl isolate multi-user.target

Si aísla un objetivo, detiene todos los servicios no requeridos por ese objetivo (y sus
dependencias), e inicia todos los servicios requeridos que aún no se hayan iniciado.

No todos los objetivos se pueden aislar. Solo puede aislar objetivos que tengan
AllowIsolate=yes establecido en sus archivos de unidad. Por ejemplo, puede aislar el objetivo
gráfico, pero no el objetivo cryptsetup.

[user@host ~]$ systemctl cat graphical.target


# /usr/lib/systemd/system/graphical.target
...output omitted...
[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
[user@host ~]$ systemctl cat cryptsetup.target
# /usr/lib/systemd/system/cryptsetup.target
...output omitted...
[Unit]
Description=Local Encrypted Volumes
Documentation=man:systemd.special(7)

Configuración de un objetivo predeterminado


Cuando el sistema se inicia, systemd activa el objetivo default.target. Normalmente,
el objetivo predeterminado en /etc/systemd/system/ es un enlace simbólico a
graphical.target o multi-user.target. En lugar de editar este enlace simbólico
manualmente, el comando systemctl viene con dos subcomandos para administrar este enlace:
get-default y set-default.

[root@host ~]# systemctl get-default


multi-user.target
[root@host ~]# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/
graphical.target.
[root@host ~]# systemctl get-default
graphical.target

338 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

Selección de un objetivo diferente en el momento del arranque


Para seleccionar un objetivo diferente en el momento del arranque, agregue la opción
systemd.unit=target.target a la línea de comandos del kernel desde el cargador de
arranque.

Por ejemplo, para iniciar el sistema en una shell de recuperación donde pueda cambiar la
configuración del sistema sin casi ningún servicio en ejecución, agregue la siguiente opción a la
línea de comandos del kernel desde el cargador de arranque.

systemd.unit=rescue.target

Este cambio de configuración solo afecta a un único arranque, lo que hace que sea una
herramienta útil para la solución de problemas en el proceso de arranque.

Para usar este método de selección de un objetivo diferente, use el siguiente procedimiento:

1. Arranque o reinicie el sistema.

2. Interrumpa la cuenta regresiva del menú del cargador de arranque presionando cualquier
tecla (excepto Enter que iniciaría un arranque normal).

3. Mueva el cursor hasta la entrada del kernel que desea iniciar.

4. Presione e para editar la entrada actual.

5. Mueva el cursor hasta la línea que comienza con linux. Esta es la línea de comandos del
kernel.

6. Anexe systemd.unit=target.target. Por ejemplo,


systemd.unit=emergency.target.

7. Presione Ctrl+x para realizar el arranque con estos cambios.

REFERENCIAS
info grub2 (Manual GNU GRUB)

Páginas del manual: bootup(7), dracut.bootup(7), lsinitrd(1),


systemd.target(5), systemd.special(7), sulogin(8) y systemctl(1)

Para obtener más información, consulte el capítulo Administración de servicios con


systemd en la Guía de configuración básica de sistemas en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/#managing-services-with-systemd

RH199-RHEL8.0-es-1-20190531 339
CAPÍTULO 9 | Control de servicios y del proceso de arranque

EJERCICIO GUIADO

SELECCIÓN DEL OBJETIVO DE


ARRANQUE
En este ejercicio, determinará el objetivo predeterminado en el que se inicia un sistema, y
arrancará ese sistema en otros objetivos.

RESULTADOS
Debe ser capaz de actualizar el objetivo predeterminado del sistema y usar un objetivo
temporal desde el cargador de arranque.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab boot-selecting start. Este comando


ejecuta un script de inicio que prepara a workstation para el ejercicio.

[student@workstation ~]$ lab boot-selecting start

1. En workstation, abra una terminal y confirme que el objetivo predeterminado sea


graphical.target.

[student@workstation ~]$ systemctl get-default


graphical.target

2. En workstation, cambie al objetivo multi-user manualmente sin reiniciar. Use el


comando sudo y, si se le solicita, use student como la contraseña.

[student@workstation ~]$ sudo systemctl isolate multi-user.target


[sudo] password for student: student

3. Acceda a una consola basada en texto. Use la secuencia de teclas Ctrl+Alt+F1 por medio
de la entrada del menú o el botón relevantes. Inicie sesión como root con redhat como
contraseña.

NOTA
Recordatorio: si está utilizando el terminal a través de una página web, puede hacer
clic en el ícono Mostrar teclado debajo de la barra de URL de su navegador web y
luego a la derecha de la dirección IP de la máquina.

340 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

workstation login: root


Password: redhat
[root@workstation ~]#

4. Configure workstation para que arranque automáticamente en el objetivo multi-user


y, luego, reinicie workstation para verificarlo. Cuando haya finalizado, cambie el objetivo
systemd predeterminado al objetivo gráfico nuevamente.

4.1. Use el comando systemctl set-default para establecer el objetivo


predeterminado.

[root@workstation ~]# systemctl set-default multi-user.target


Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/
multi-user.target.

4.2. Reinicie workstation.

[root@workstation ~]# systemctl reboot

Tenga en cuenta que, después del reinicio, el sistema presenta una consola basada en
texto, no un inicio de sesión gráfico.

4.3. Inicie sesión como root con redhat como contraseña.

workstation login: root


Password: redhat
Last login: Thu Mar 28 14:50:53 on tty1
[root@workstation ~]#

4.4. Configure el objetivo systemd predeterminado nuevamente al objetivo gráfico.

[root@workstation ~]# systemctl set-default graphical.target


Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/
graphical.target.

Esto concluye la primera parte del ejercicio donde practica la configuración del
objetivo systemd predeterminado.

5. En esta segunda parte del ejercicio, practicará el modo de recuperación.


Reinicie workstation nuevamente para acceder al cargador de arranque. Desde el menú
del cargador de arranque, arranque en el objetivo rescue (recuperación).

5.1. Active el reinicio.

[root@workstation ~]# systemctl reboot

5.2. Cuando el menú del cargador de arranque aparezca, presione cualquier tecla (excepto
Enter que iniciaría un arranque normal) para interrumpir la cuenta regresiva.

RH199-RHEL8.0-es-1-20190531 341
CAPÍTULO 9 | Control de servicios y del proceso de arranque

5.3. Use las teclas de dirección para destacar la entrada del cargador de arranque
predeterminada.

5.4. Presione e para editar la entrada actual.

5.5. Con las teclas de dirección, navegue hacia la línea que comienza con linux.

5.6. Presione End (Fin) para mover el cursor hasta el final de la línea.

5.7. Agregue systemd.unit=rescue.target en el final de la línea.

5.8. Presione Ctrl+x para realizar el arranque con la configuración modificada.

5.9. Inicie sesión en el modo de recuperación. La contraseña root es redhat Es posible


que tenga que presionar Enter (Intro) para obtener un prompt limpio.

Give root password for maintenance


(or press Control-D to continue): redhat
[root@workstation ~]#

6. Confirme que, en el modo de recuperación, el sistema de archivos root se encuentre en el


modo de lectura/escritura.

[root@workstation ~]# mount


...output omitted...
/dev/vda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
...output omitted...

7. Presione Ctrl+d para continuar con el proceso de arranque.


El sistema presenta un inicio de sesión gráfico. Inicie sesión como student usando
student como contraseña.

Finalizar
En workstation, ejecute el script lab boot-selecting finish para terminar este ejercicio.

[student@workstation ~]$ lab boot-selecting finish

Esto concluye el ejercicio guiado.

342 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

RESTABLECIMIENTO DE LA
CONTRASEÑA DE ROOT

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de iniciar sesión en un sistema y cambiar la
contraseña root cuando la contraseña root actual se haya perdido.

RESTABLECER LA CONTRASEÑA DE ROOT DESDE EL


CARGADOR DE ARRANQUE.
Una tarea que todos los administradores de sistemas deben ser capaces de realizar es restablecer
una contraseña root perdida. Si el administrador aún tiene la sesión iniciada, ya sea como usuario
sin privilegios, pero con acceso sudo completo, o como root, esta tarea es sencilla. Cuando el
administrador no ha iniciado sesión, esta tarea es un poco más complicada.

Existen muchos métodos para establecer una nueva contraseña root. Un administrador de
sistemas podría, por ejemplo, arrancar el sistema usando un CD Live, montar el sistema de
archivos root desde allí y editar /etc/shadow. En esta sección, exploramos un método que no
requiere el uso de medios externos.

NOTA
En Red Hat Enterprise Linux 6 y en las versiones anteriores, los administradores
pueden arrancar el sistema en el nivel de ejecución 1 para obtener un prompt de
root. Los análogos más cercanos al nivel de ejecución 1 en una máquina Red Hat
Enterprise Linux 8 son los objetivos de recuperación y emergencia, y ambos
requieren la contraseña root para iniciar sesión.

En Red Hat Enterprise Linux 8, es posible tener scripts que se ejecuten desde la pausa de


initramfs en ciertos puntos, proporcionar una shell root y, luego, continuar cuando esa shell se
cierre. Esto se suele realizar principalmente para depuraciones, pero también se puede usar para
restablecer una contraseña root perdida.

Para acceder a la shell root, siga estos pasos:

1. Reinicie el sistema.

2. Interrumpa la cuenta regresiva del cargador de arranque presionando cualquier tecla (excepto
Enter).

3. Mueva el cursor hasta la entrada del kernel que debe iniciarse.

4. Presione e para editar la entrada seleccionada.

5. Mueva el cursor hasta la línea de comandos del kernel (la línea que empieza con linux).

6. Agregue rd.break. Con esa opción, se produce un quiebre en el sistema antes de que el
control se entregue de initramfs al sistema real.

7. Presione Ctrl+x para realizar el arranque con los cambios.

RH199-RHEL8.0-es-1-20190531 343
CAPÍTULO 9 | Control de servicios y del proceso de arranque

En este punto, se presenta una shell root, con el sistema de archivos root real en el disco
montado para solo lectura en /sysroot. Debido a que la solución de problemas suele exigir
modificaciones en el sistema de archivos root, debe cambiar el sistema de archivos root para
que su acceso sea de lectura-escritura. En el siguiente paso, se muestra cómo la opción
remount,rw del comando mount vuelve a montar el sistema de archivos con la opción nueva,
(rw), configurada.

NOTA
Es posible que las imágenes compiladas previamente coloquen múltiples
argumentos console= en el kernel para respaldar una amplia variedad de
situaciones de implementación. Estos argumentos console= indican los
dispositivos que se deben usar para la salida por consola. La advertencia con
rd.break es que si bien el sistema envía los mensajes del kernel a todas las
consolas, el prompt usará en última instancia la última consola. Si no recibe el
prompt, es posible que desee reordenar temporalmente los argumentos console=
cuando edite la línea de comandos del kernel desde el cargador de arranque.

IMPORTANTE
El sistema aún no ha habilitado SELinux, por lo que cualquier archivo que cree
no tiene un contexto SELinux. Algunas herramientas, como el comando passwd,
primero crean un archivo temporal, y, luego, lo trasladan al lugar del archivo que
intentan editar; y se crea así de manera efectiva un nuevo archivo sin un contexto
SELinux. Por este motivo, cuando usa el comando passwd con rd.break, el
archivo /etc/shadow no tiene un contexto SELinux.

Para restablecer la contraseña root desde este punto, realice el siguiente procedimiento:

1. Vuelva a montar /sysroot con acceso de lectura-escritura.

switch_root:/# mount -o remount,rw /sysroot

2. Cambie a jail de chroot, donde /sysroot se trata como la root de un árbol de sistemas de
archivos.

switch_root:/# chroot /sysroot

3. Establezca una nueva contraseña root.

sh-4.4# passwd root

4. Asegúrese de que todos los archivos no etiquetados, incluido /etc/shadow en este punto,
obtengan una nueva etiqueta durante el arranque.

sh-4.4# touch /.autorelabel

5. Ingrese exit dos veces. El primer comando saldrá del jail de chroot y el segundo comando
saldrá de la shell de depuración de initramfs.

344 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

En este punto, el sistema continúa con el arranque, realiza un nuevo etiquetado de SELinux
completo y, luego, realiza el arranque nuevamente.

INSPECCIÓN DE REGISTROS
Puede ser útil mirar los registros de arranques anteriores que fallaron. Si los diarios (journals)
del sistema son persistentes durante los reinicios, puede usar la herramienta journalctl para
inspeccionar esos registros.

Recuerde que, 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.
Para almacenar diarios (journals) en el directorio /var/log/journal, que no se borra en los
reinicios, configure el parámetro Storage en persistent (persistente) en /etc/systemd/
journald.conf.

[root@host ~]# vim /etc/systemd/journald.conf


...output omitted...
[Journal]
Storage=persistent
...output omitted...
[root@host ~]# systemctl restart systemd-journald.service

Para inspeccionar los registros de un arranque anterior, use la opción -b de journalctl. Sin
ningún argumento, la opción -b solo muestra mensajes desde el último arranque. Si el argumento
es un número negativo, se muestran los registros de los arranques anteriores.

[root@host ~]# journalctl -b -1 -p err

Este comando muestra todos los mensajes calificados como error o peor del arranque anterior.

REPARACIÓN DE PROBLEMAS DE ARRANQUE DE


SYSTEMD
Para solucionar problemas de inicio del servicio en el momento del arranque, Red Hat
Enterprise Linux 8 ofrece las siguientes estrategias.

Habilitar la shell de depuración temprana


Al habilitar el servicio debug-shell con systemctl enable debug-shell.service, el
sistema genera una shell root en TTY9 (Ctrl+Alt+F9) al principio de la secuencia de arranque.
Esta shell inicia sesión automáticamente como root, de modo que los administradores pueden
depurar el sistema mientras el sistema operativo aún está arrancando.

ADVERTENCIA
No olvide deshabilitar el servicio debug-shell.service cuando haya finalizado
la depuración, ya que deja una shell root no autenticada abierta a cualquier usuario
con acceso a la consola local.

Usar los objetivos de emergencia y recuperación


Al agregar systemd.unit=rescue.target o systemd.unit=emergency.target delante
de la línea de comandos del kernel desde el cargador de arranque, el sistema indica una shell

RH199-RHEL8.0-es-1-20190531 345
CAPÍTULO 9 | Control de servicios y del proceso de arranque

de emergencia o recuperación en lugar de iniciarse normalmente. Estas dos shells requieren la


contraseña root.

El objetivo de emergencia mantiene el sistema de archivos root montado con solo lectura;
mientras que el objetivo de recuperación espera que sysinit.target se complete, para que
una mayor parte del sistema se inicie (p. ej., servicio de inicio de sesión o sistemas de archivos). El
usuario root en este punto no puede hacer cambios a /etc/fstab hasta que la unidad se vuelva a
montar en un estado de lectura/escritura mount -o remount,rw /

Los administradores pueden usar estas shells para corregir problemas que impiden que el sistema
arranque normalmente; por ejemplo, un bucle de dependencia entre servicios o una entrada
incorrecta en /etc/fstab. Cuando se sale de estas shells, continúa el proceso de arranque
regular.

Identificar trabajos atascados


Durante el inicio, systemd inicia una cantidad de trabajos. Si alguno de estos trabajos no se puede
completar, impide que otros trabajos se ejecuten. Para inspeccionar la lista de trabajos actual, los
administradores pueden usar el comando systemctl list-jobs. Todos los trabajos detallados
como en ejecución deben completarse para que los trabajos detallados como en espera puedan
continuar.

REFERENCIAS
Páginas del manual: dracut.cmdline(7), systemd-journald(8),
journald.conf(5), journalctl(1) y systemctl(1)

346 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

EJERCICIO GUIADO

RESTABLECIMIENTO DE LA
CONTRASEÑA DE ROOT
En este ejercicio, restablecerá la contraseña root en un sistema.

RESULTADOS
Deberá ser capaz de restablecer una contraseña root perdida.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab boot-resetting start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la red.
También restablece la contraseña root a una cadena aleatoria y establece un tiempo de
espera mayor para el menú de GRUB2.

[student@workstation ~]$ lab boot-resetting start

1. Vuelva a arrancar servera e interrumpa la cuenta regresiva en el menú del cargador de


arranque.

1.1. Localice el icono de la consola de servera, según corresponda para el entorno del
aula. Abra la consola.
Envíe Ctrl+Alt+Del a su sistema usando la entrada del menú o el botón relevantes.

1.2. Cuando el menú del cargador de arranque aparezca, presione cualquier tecla (excepto
Enter) para interrumpir la cuenta regresiva.

2. Edite la entrada del cargador de arranque predeterminada (en la memoria) para anular el
proceso de arranque después de que todos los sistemas de archivos hayan sido montados
por el kernel, pero antes de que el control se entregue a systemd.

2.1. Use las teclas de dirección para destacar la entrada del cargador de arranque
predeterminada.

2.2. Presione e para editar la entrada actual.

2.3. Use las teclas de dirección para navegar hacia la línea que comienza con linux.

2.4. Presione End (Fin) para mover el cursor hasta el final de la línea.

2.5. Agregue rd.break en el final de la línea.

2.6. Presione Ctrl+x para realizar el arranque con la configuración modificada.

3. En el prompt switch_root, vuelva a montar el sistema de archivos /sysroot con acceso


de lectura-escritura y, luego, use chroot para ir a un jail chroot en /sysroot.

RH199-RHEL8.0-es-1-20190531 347
CAPÍTULO 9 | Control de servicios y del proceso de arranque

switch_root:/# mount -o remount,rw /sysroot


switch_root:/# chroot /sysroot

4. Cambie la contraseña de root nuevamente a redhat.

sh-4.4# passwd root


Changing password for user root.
New password: redhat
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: redhat
passwd: all authentication tokens updated successfully.

5. Configure el sistema para que realice automáticamente un etiquetado nuevo de SELinux


completo después del arranque. Esto es necesario porque el comando passwd recrea el
archivo /etc/shadow sin un contexto SELinux.

sh-4.4# touch /.autorelabel

6. Escriba exit dos veces para continuar reiniciando su sistema de forma normal. El sistema
ejecuta un nuevo etiquetado SELinux y, luego, vuelve a arrancar nuevamente por sí solo.
Cuando el sistema esté funcionando, verifique su trabajo al iniciar sesión como root en la
consola. Use redhat como la contraseña.

Finalizar
En workstation, ejecute el script lab boot-resetting finish para terminar este ejercicio.

[student@workstation ~]$ lab boot-resetting finish

Esto concluye el ejercicio guiado.

348 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

REPARACIÓN DE PROBLEMAS
DEL SISTEMA DE ARCHIVOS EN EL
ARRANQUE

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de reparar manualmente la configuración del
sistema de archivos o problemas de daños que detengan el proceso de arranque.

DIAGNOSTICAR Y CORREGIR PROBLEMAS DEL


SISTEMA DE ARCHIVOS
Los errores en sistemas de archivos dañados y en /etc/fstab pueden impedir que un sistema
arranque. En la mayoría de los casos, systemd cae a una shell de reparación que requiere la
contraseña de root.

En la siguiente tabla, se detallan algunos errores comunes y sus resultados.

Problemas comunes del sistema de archivos

PROBLEMA RESULTADO

Sistema de archivos dañado systemd intenta reparar el sistema de archivos. Si el problema


es demasiado grave y no admite una corrección automática, el
sistema pasa al usuario a una shell de emergencia.

Dispositivo no existente o systemd espera un tiempo establecido a que el dispositivo


UUID mencionado en /etc/ esté disponible. Si el dispositivo no aparece como disponible,
fstab el sistema pasa al usuario a una shell de emergencia después
del tiempo de espera.

Punto de montaje no El sistema pasa al usuario a una shell de emergencia.


existente en /etc/fstab

Opción de montaje incorrecta El sistema pasa al usuario a una shell de emergencia.


especificada en /etc/fstab

En todos los casos, los administradores también pueden usar el objetivo de emergencia para
diagnosticar y corregir el problema, dado que ningún sistema de archivos se monta antes de que
se muestre la shell de emergencia.

NOTA
Cuando use la shell de emergencia para resolver problemas del sistema de archivos,
no olvide ejecutar systemctl daemon-reload después de editar /etc/fstab.
Sin esta recarga, systemd puede continuar usando la versión anterior.

La opción nofail en una entrada en el archivo /etc/fstab permite que el sistema arranque,
incluso si el montaje de ese sistema de archivos no se ejecuta de forma correcta. No use

RH199-RHEL8.0-es-1-20190531 349
CAPÍTULO 9 | Control de servicios y del proceso de arranque

esta opción en circunstancias normales. Con nofail, una aplicación se puede iniciar sin el
almacenamiento y generar posibles consecuencias graves.

REFERENCIAS
Páginas del manual: systemd-fsck(8), systemd-fstab-generator(8) y
systemd.mount(5)

350 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

EJERCICIO GUIADO

REPARACIÓN DE PROBLEMAS
DEL SISTEMA DE ARCHIVOS EN EL
ARRANQUE
En este ejercicio, recuperará un sistema de una configuración incorrecta en /etc/fstab
que hace que el proceso de arranque falle.

RESULTADOS
Debe ser capaz de diagnosticar problemas de /etc/fstab y usar el modo de emergencia
para recuperar el sistema.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab boot-repairing start. Este comando


ejecuta un script de inicio que determina si la máquina servera es accesible en la red.
También introduce un problema del sistema de archivos, establece un tiempo de espera
mayor para el menú de GRUB2 y reinicia servera.

[student@workstation ~]$ lab boot-repairing start

1. Acceda a la consola de servera y observe que el proceso de arranque no se ejecuta


correctamente desde el principio.

1.1. Localice el icono de la consola de servera, según corresponda para el entorno del
aula. Abra la consola.
Advierta que, al parecer, un trabajo de inicio no se ejecuta por completo. Tómese un
momento para especular sobre la posible causa de este comportamiento.

1.2. Para reiniciar, envíe Ctrl+Alt+Del a su sistema usando la entrada del menú o
el botón relevantes. En el caso de este problema de arranque en particular, esta
secuencia de teclas puede no detener inmediatamente el trabajo en ejecución, y es
posible que tenga que esperar a que finalice el tiempo de espera antes de que el
sistema se reinicie.
Si espera a que la tarea finalice el tiempo de espera sin enviar Ctrl+Alt+Del, el
sistema eventualmente genera por su cuenta una shell de emergencia.

1.3. Cuando el menú del cargador de arranque aparezca, presione cualquier tecla (excepto
Enter) para interrumpir la cuenta regresiva.

2. Si observa el error que tuvo en el arranque anterior, parece que al menos ciertas partes del
sistema aún están funcionando. Puesto que sabe la contraseña de root (redhat), intente
un arranque de emergencia.

RH199-RHEL8.0-es-1-20190531 351
CAPÍTULO 9 | Control de servicios y del proceso de arranque

2.1. Use las teclas de dirección para destacar la entrada del cargador de arranque
predeterminada.

2.2. Presione e para editar la entrada actual.

2.3. Use las teclas de dirección para navegar hacia la línea que comienza con linux.

2.4. Presione End (Fin) para mover el cursor hasta el final de la línea.

2.5. Agregue systemd.unit=emergency.target en el final de la línea.

2.6. Presione Ctrl+x para realizar el arranque con la configuración modificada.

3. Inicie sesión en el modo de emergencia. La contraseña de root es redhat.

Give root password for maintenance


(or press Control-D to continue): redhat
[root@servera ~]#

4. Determine qué sistemas de archivos están montados actualmente.

[root@servera ~]# mount


...output omitted...
/dev/vda1 on / type xfs (ro,relatime,seclabel,attr2,inode64,noquota)
...output omitted...

Tenga en cuenta que el sistema de archivos root se monta con acceso de solo lectura.

5. Vuelva a montar el sistema de archivos root con acceso de lectura-escritura.

[root@servera ~]# mount -o remount,rw /

6. Use el comando mount -a para intentar montar todos los demás sistemas de archivos.
Con la opción --all (-a), el comando monta todos los sistemas de archivos detallados en
/etc/fstab que todavía no están montados.

[root@servera ~]# mount -a


mount: /RemoveMe: mount point does not exist.

7. Edite /etc/fstab para corregir el problema.

7.1. Elimine o comente la línea incorrecta.

[root@servera ~]# vim /etc/fstab


...output omitted...
# /dev/sdz1 /RemoveMe xfs defaults 0 0

7.2. Actualice systemd para que el sistema registre la configuración de /etc/fstab


nueva.

[root@servera ~]# systemctl daemon-reload


[root@servera ~]#

352 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

8. Intente montar todas las entradas para verificar que su /etc/fstab ahora sea correcto.

[root@servera ~]# mount -a


[root@servera ~]#

9. Reinicie el sistema y espere a que el arranque finalice. Ahora el sistema debería arrancar
normalmente.

[root@servera ~]# systemctl reboot

Finalizar
En workstation, ejecute el script lab boot-repairing finish para terminar este ejercicio.

[student@workstation ~]$ lab boot-repairing finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 353
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

354 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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.

RH199-RHEL8.0-es-1-20190531 355
CAPÍTULO 9 | Control de servicios y del proceso de arranque

[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.

356 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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

RH199-RHEL8.0-es-1-20190531 357
CAPÍTULO 9 | Control de servicios y del proceso de arranque

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

• 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.

• systemctl reboot y systemctl poweroff reinician y apagan el sistema, respectivamente.

• systemctl isolate desired.target cambia a un nuevo objetivo en tiempo de ejecución.

• systemctl get-default y systemctl set-default se pueden usar para consultar y


establecer el objetivo predeterminado.

• Use rd.break en la línea de comandos del kernel para interrumpir el proceso de arranque
antes de que se entregue el control desde el initramfs. El sistema de archivos root se monta
como solo lectura en /sysroot.

• El objetivo emergency.target se puede usar para diagnosticar y corregir problemas de


sistemas de archivos.

358 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10

ADMINISTRACIÓN DE REDES
META Configure las interfaces de red y la configuración
en servidores Red Hat Enterprise  Linux.

OBJETIVOS • 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 • 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

RH199-RHEL8.0-es-1-20190531 359
CAPÍTULO 10 | 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

360 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

valid_lft forever preferred_lft forever


inet6 fe80::5054:ff:fe00:b/64 scope link
valid_lft forever preferred_lft forever

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

RH199-RHEL8.0-es-1-20190531 361
CAPÍTULO 10 | Administración de redes

^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 ~]$

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

362 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

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.

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

RH199-RHEL8.0-es-1-20190531 363
CAPÍTULO 10 | Administración de redes

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
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.

364 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

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.

-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 Red Hat Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

RH199-RHEL8.0-es-1-20190531 365
CAPÍTULO 10 | 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.

366 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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

RH199-RHEL8.0-es-1-20190531 367
CAPÍTULO 10 | 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.

368 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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

RH199-RHEL8.0-es-1-20190531 369
CAPÍTULO 10 | Administración de redes

[user@host ~]$ nmcli con show --active


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:

370 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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: --

RH199-RHEL8.0-es-1-20190531 371
CAPÍTULO 10 | Administración de redes

802-3-ethernet.s390-options:
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

372 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 373
CAPÍTULO 10 | Administración de redes

COMANDO PROPÓSITO

nmcli dev status Muestra el estado de todas las interfaces de red


arrojado por NetworkManager.

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)

374 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 375
CAPÍTULO 10 | 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

376 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 377
CAPÍTULO 10 | 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.

378 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 379
CAPÍTULO 10 | 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.

380 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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 IPADDR0=192.0.2.1 Establece direcciones


"192.0.2.1/24 PREFIX0=24 IPv4 estáticas, prefijos de
192.0.2.254" GATEWAY0=192.0.2.254 red y puertas de enlace
predeterminadas. Si se
configura más de un
parámetro para la conexión,
en lugar de terminar en
0, las directivas ifcfg-*
terminarán en 1, 2, 3 y así
sucesivamente.

ipv4.dns 8.8.8.8 DNS0=8.8.8.8 Modifica el archivo /etc/


resolv.conf para usar este
servidor de nombres.

RH199-RHEL8.0-es-1-20190531 381
CAPÍTULO 10 | Administración de redes

NMCLI CON MOD IFCFG-* FILE EFECTO

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 IPV6_AUTOCONF=no Configura los parámetros de


DHCPV6C=yes red con DHCPv6, pero no
con SLAAC.

ipv6.addresses IPV6ADDR=2001:db8::a/64 Establece direcciones


"2001:db8::a/64 IPv6 estáticas, prefijos de
IPV6_DEFAULTGW=2001:db8::1
2001:db8::1" red y puertas de enlace
predeterminadas. Si se
configura más de una
dirección para la conexión,
IPV6_SECONDARIES toma
una lista entre comillas
dobles de definiciones de
dirección/prefijo de espacio
delimitado.

ipv6.dns ... DNS0= ... Modifica el archivo /etc/


resolv.conf para usar este
servidor de nombres.
Exactamente igual que IPv4.

ipv6.dns-search DOMAIN=example.com Modifica /etc/


example.com resolv.conf para que use
este dominio en la directiva
buscar. Exactamente igual
que IPv4.

ipv6.ignore-auto-dns IPV6_PEERDNS=no Omite información del


true servidor DNS obtenida del
servidor DHCP.

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.

382 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

NMCLI CON MOD IFCFG-* FILE EFECTO

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"

RH199-RHEL8.0-es-1-20190531 383
CAPÍTULO 10 | 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 Red Hat Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

384 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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).

RH199-RHEL8.0-es-1-20190531 385
CAPÍTULO 10 | 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. Edite el archivo /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1


en servera para agregar una dirección adicional de 10.0.1.1/24.

3.1. Agregue una entrada al archivo para especificar la dirección IPv4.

[student@servera ~]$ echo "IPADDR1=10.0.1.1" | \


sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
[sudo] password for student: student
IPADDR1=10.0.1.1

3.2. Agregue una entrada al archivo para especificar el prefijo de red.

[student@servera ~]$ echo "PREFIX1=24" | \


sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
PREFIX1=24

4. Active la dirección nueva.

4.1. Vuelva a cargar los cambios de configuración.

[student@servera ~]$ sudo nmcli con reload

4.2. Reinicie la conexión con los parámetros de configuración nuevos.

[student@servera ~]$ sudo nmcli con up "Wired connection 1"


Connection successfully activated (D-Bus active path: /org/freedesktop/
NetworkManager/ActiveConnection/3)

4.3. Verifique la nueva 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

386 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

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

4.4. Salga de servera para volver a workstation como usuario student.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

5. Como usuario student 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 y cargue la configuración nueva.

5.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 ~]$

5.2. Modifique el archivo ifcfg-Wired_connection_1 para agregar la segunda


dirección IPv4 y el prefijo de red.

[student@serverb ~]$ echo "IPADDR2=10.0.1.2" | \


sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
[sudo] password for student: student
IPADDR2=10.0.1.2
[student@serverb ~]$ echo "PREFIX2=24" | \
sudo tee -a /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1
PREFIX2=24

5.3. Vuelva a cargar los cambios de configuración.

[student@serverb ~]$ sudo nmcli con reload

5.4. Restablezca la conexión con los parámetros de configuración nuevos.

[student@serverb ~]$ sudo nmcli con up "Wired connection 1"


Connection successfully activated (D-Bus active path: /org/freedesktop/
NetworkManager/ActiveConnection/4)

5.5. Verifique la nueva dirección IP.

[student@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

RH199-RHEL8.0-es-1-20190531 387
CAPÍTULO 10 | Administración de redes

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

6. Pruebe la conectividad con las direcciones de red nuevas.

6.1. En serverb, haga ping a la nueva dirección de servera .

[student@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

6.2. Salga de serverb para volver a workstation.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

6.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

--- 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.

388 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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: 73ab164e278e48be9bf80e80714a8cd5
Boot ID: 6b1cbc4177164ef58c0e9ed4adb2904f
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.0 beta (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:beta
Kernel: Linux 4.18.0-60.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.

RH199-RHEL8.0-es-1-20190531 389
CAPÍTULO 10 | 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 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

390 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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 Red Hat Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_networking/

RH199-RHEL8.0-es-1-20190531 391
CAPÍTULO 10 | 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: 73ab164e278e48be9bf80e80714a8cd5
Boot ID: 76b13a300c944ab49445af778cb8f749
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)

392 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA


Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64

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 archivo de configuración que proporciona el nombre del host al inicio de la
red.

[student@servera ~]$ cat /etc/hostname


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: 73ab164e278e48be9bf80e80714a8cd5
Boot ID: 76b13a300c944ab49445af778cb8f749
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA
Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64

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 archivo de configuración que proporciona el nombre del host al inicio de la
red.

[student@servera ~]$ cat /etc/hostname


servera.lab.example.com

4.4. Reinicie el sistema.

RH199-RHEL8.0-es-1-20190531 393
CAPÍTULO 10 | Administración de redes

[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.

[student@servera ~]$ sudo vim /etc/hosts


[student@servera ~]$ 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 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

394 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 395
CAPÍTULO 10 | 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.

396 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

7. Reinicie el sistema.
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.

RH199-RHEL8.0-es-1-20190531 397
CAPÍTULO 10 | 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.

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

398 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | Administración de redes

PARÁMETRO CONFIGURACIÓN

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

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

RH199-RHEL8.0-es-1-20190531 399
CAPÍTULO 10 | Administración de redes

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.

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

Esto concluye el trabajo de laboratorio.

400 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 10 | 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.

RH199-RHEL8.0-es-1-20190531 401
402 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 403
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.

404 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 11 | Análisis y almacenamiento de registros

Archivos de registro del sistema seleccionados

ARCHIVO DE TIPO DE MENSAJES ALMACENADOS


REGISTRO

/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.

/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 Uso de archivos de registro


para resolver problemas en la guía Configuración básica de sistemas de Red Hat
Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#Troubleshoot-log-files_getting-
started-with-system-administration

RH199-RHEL8.0-es-1-20190531 405
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

406 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 407
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

408 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 409
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:

410 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 411
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 ~]#

412 RH199-RHEL8.0-es-1-20190531
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 Uso de archivos de registro


para resolver problemas en la guía Configuración básica de sistemas de Red Hat
Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#Troubleshoot-log-files_getting-
started-with-system-administration

RH199-RHEL8.0-es-1-20190531 413
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 escribe esos mensajes de

414 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 11 | Análisis y almacenamiento de registros

syslog 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

RH199-RHEL8.0-es-1-20190531 415
CAPÍTULO 11 | Análisis y almacenamiento de registros

Esto concluye el ejercicio guiado.

416 RH199-RHEL8.0-es-1-20190531
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]: user-runtime-dir@1001.service:
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.>

RH199-RHEL8.0-es-1-20190531 417
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

418 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 419
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

420 RH199-RHEL8.0-es-1-20190531
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).

RH199-RHEL8.0-es-1-20190531 421
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 Uso de archivos de registro


para resolver problemas en la guía Configuración básica de sistemas de Red Hat
Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#Troubleshoot-log-files_getting-
started-with-system-administration

422 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 423
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)

424 RH199-RHEL8.0-es-1-20190531
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.

[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>
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>

RH199-RHEL8.0-es-1-20190531 425
CAPÍTULO 11 | Análisis y almacenamiento de registros

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.

426 RH199-RHEL8.0-es-1-20190531
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 o auto teniendo en cuenta lo siguiente:

• 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: rsyslog determina si desea usar almacenamiento persistente o volátil. Si el directorio /


var/log/journal existe, rsyslog usa el almacenamiento persistente. De lo contrario, usa el
almacenamiento volátil.

Esta es la acción predeterminada si el parámetro Storage no está establecido.

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:

RH199-RHEL8.0-es-1-20190531 427
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 indicador de o.
Es decir, grep coincide con cualquier línea que contenga la cadena Runtime o la
cadena System 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

428 RH199-RHEL8.0-es-1-20190531
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 más de 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 Uso de archivos de registro


para resolver problemas en la guía Configuración básica de sistemas de Red Hat
Enterprise Linux 8.0 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_basic_system_settings/index#Troubleshoot-log-files_getting-
started-with-system-administration

RH199-RHEL8.0-es-1-20190531 429
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

Debido a que el directorio /var/log/journal no existe, el servicio systemd-journald


no está resguardando sus diarios (journals).

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.

430 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 431
CAPÍTULO 11 | Análisis y almacenamiento de registros

[student@workstation ~]$ lab log-preserve finish

Esto concluye el ejercicio guiado.

432 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 433
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

434 RH199-RHEL8.0-es-1-20190531
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 pueden configurarse 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

RH199-RHEL8.0-es-1-20190531 435
CAPÍTULO 11 | Análisis y almacenamiento de registros

NTP para sincronizar el reloj del sistema por medio del comando chrony 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

436 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 437
CAPÍTULO 11 | Análisis y almacenamiento de registros

7) Europe
8) Indian Ocean
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

438 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 439
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.

440 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 441
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.

442 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 443
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 ~]$

444 RH199-RHEL8.0-es-1-20190531
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

RH199-RHEL8.0-es-1-20190531 445
CAPÍTULO 11 | Análisis y almacenamiento de registros

Esto concluye el ejercicio guiado.

446 RH199-RHEL8.0-es-1-20190531
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.

RH199-RHEL8.0-es-1-20190531 447
448 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12

IMPLEMENTACIÓN DE
FUNCIONES AVANZADAS DE
ALMACENAMIENTO
META Crear y administrar volúmenes lógicos que
contengan sistemas de archivos y espacios
de intercambio desde la línea de comandos, y
configurar características de almacenamiento
avanzado con Stratis y VDO.

OBJETIVOS • Crear y administrar volúmenes lógicos desde


dispositivos de almacenamiento y formatearlos
con sistemas de archivos o prepararlos con
espacios de intercambio.
• Agregar y eliminar el almacenamiento asignado
a los grupos de volúmenes y ampliar en forma
no destructiva el tamaño de un volumen lógico
formateado con un sistema de archivos XFS o
ext4.
• Administrar múltiples capas de almacenamiento
al mismo tiempo con la administración de
almacenamiento local Stratis.
• Optimizar el uso del espacio de
almacenamiento con VDO para comprimir
y desduplicar datos en dispositivos de
almacenamiento.

SECCIONES • Creación de volúmenes lógicos (y ejercicio


guiado)
• Ampliación de volúmenes lógicos (y ejercicio
guiado)
• Gestión de almacenamiento en capas con
Stratis (y ejercicio guiado)
• Compresión y desduplicación de
almacenamiento con VDO (y ejercicio guiado)

TRABAJO DE Implementación de funciones avanzadas de


almacenamiento
LABORATORIO

RH199-RHEL8.0-es-1-20190531 449
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

CREACIÓN DE VOLÚMENES LÓGICOS

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Describir los componentes y conceptos de la administración de volúmenes lógicos.

• Implementar almacenamiento del LVM.

• Visualizar información de componentes del LVM.

CONCEPTOS DE LA ADMINISTRACIÓN DE
VOLÚMENES LÓGICOS (LVM)
Los volúmenes lógicos y la administración de volúmenes lógicos facilitan la administración del
espacio del disco. Si un sistema de archivos que aloja un volumen lógico necesita más espacio, se
puede asignar a su volumen lógico del espacio libre en su grupo de volúmenes y se puede cambiar
el tamaño del sistema de archivos. Si un disco comienza a fallar, se puede registrar un disco de
reemplazo como volumen físico con el grupo de volúmenes y las extensiones del volumen lógico
se pueden migrar al disco nuevo.

Definiciones de LVM

Dispositivos físicos
Los dispositivos físicos son los dispositivos de almacenamiento usados para guardar los
datos almacenados en un volumen lógico. Estos son dispositivos en bloques y podrían
ser particiones de discos, discos enteros, arreglos RAID o discos SAN. Un dispositivo
debe inicializarse como un volumen físico de LVM para poder ser usado con LVM. Todo el
dispositivo se usará como un volumen físico.

Volúmenes físicos (PV)


Debe inicializar un dispositivo como un volumen físico antes de usarlo en un sistema
de LVM. Las herramientas de LVM segmentan volúmenes físicos en extensiones físicas
(physical extents, PE); que son pequeños conjuntos de datos que actúan como el bloque de
almacenamiento más pequeño en un volumen físico.

Grupos de volúmenes (VG)


Los grupos de volúmenes son pools (conjuntos) de almacenamiento conformados por
uno o más volúmenes físicos. Este es el equivalente funcional de un disco completo en el
almacenamiento básico. Un PV solo puede ser asignado a un único VG. Un VG puede constar
de espacio sin usar y de cualquier cantidad de volúmenes lógicos.

Volúmenes lógicos (LV)


Los volúmenes lógicos se crean desde extensiones físicas libres en un grupo de volúmenes y
proporcionan el dispositivo de "almacenamiento" usado por aplicaciones, usuarios y el sistema
operativo. Los LV son una colección de extensiones lógicas (LE), que se mapean a extensiones
físicas, la porción de almacenamiento más pequeña de un PV. De forma predeterminada, cada
LE se mapea a una PE. La configuración de opciones de LV específicas cambia este mapeo;
por ejemplo, la duplicación hace que cada LE se mapee a dos PE.

450 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

IMPLEMENTACIÓN DE ALMACENAMIENTO DEL LVM


La creación de almacenamiento de LVM requiere varios pasos. El primer paso es determinar
qué dispositivos físicos usar. Después de ensamblar un conjunto de dispositivos adecuados,
se inicializan como volúmenes físicos para que se reconozcan como pertenecientes a la LVM.
Los volúmenes físicos se combinan en un grupo de volúmenes. Esto crea un pool (conjunto) de
espacio en disco a partir del cual se pueden asignar volúmenes lógicos. Los volúmenes lógicos
creados a partir del espacio disponible en un grupo de volúmenes pueden formatearse con un
sistema de archivos, activarse como espacio de intercambio, y montarse o activarse de manera
persistente.

Figura 12.1: Componentes de la administración de volúmenes lógicos

La LVM proporciona un conjunto integral de herramientas de línea de comandos para implementar


y administrar almacenamiento de LVM. Estas herramientas de línea de comandos se pueden usar
en scripts, lo que las hace más adecuadas para la automatización.

IMPORTANTE
En los siguientes ejemplos, se usa el dispositivo vdb y sus particiones para ilustrar
comandos LVM. En la práctica, estos ejemplos deberían usar los dispositivos
correctos para el disco y las particiones del disco usados por el sistema. Use
los comandos lsblk, blkid o cat /proc/partitions para identificar los
dispositivos en su sistema.

RH199-RHEL8.0-es-1-20190531 451
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Creación de un volumen lógico


Para crear un volumen lógico, realice los siguientes pasos:

Prepare el dispositivo físico.

Use parted, gdisk o fdisk para crear una nueva partición para usar con LVM. Configure
siempre el tipo de partición en Linux LVM (LVM Linux) en las particiones de LVM; use 0x8e para
particiones MBR. Si es necesario, use partprobe para registrar la nueva partición con el kernel.

De forma alternativa, use un disco entero, un arreglo RAID o un disco SAN.

Solo se necesita preparar un dispositivo físico si no hay ninguno ya preparado, y se requiere un


volumen físico nuevo para crear o ampliar un grupo de volúmenes.

[root@host ~]# parted -s /dev/vdb mkpart primary 1MiB 769MiB


[root@host ~]# parted -s /dev/vdb mkpart primary 770MiB 1026MiB
[root@host ~]# parted -s /dev/vdb set 1 lvm on
[root@host ~]# parted -s /dev/vdb set 2 lvm on

Cree un volumen físico.

Use pvcreate para etiquetar la partición (u otro dispositivo físico) como volumen físico. El
comando pvcreate divide el volumen físico en extensiones físicas (PE) de un tamaño fijo, por
ejemplo, bloques de 4 MiB. Puede etiquetar varios dispositivos al mismo tiempo con nombres de
dispositivos delimitados por espacios como argumentos para pvcreate.

[root@host ~]# pvcreate /dev/vdb2 /dev/vdb1

Esto etiqueta los dispositivos /dev/vdb2 y /dev/vdb1 como PV, listos para la asignación en un
grupo de volúmenes.

Un PV solo debe crearse si no hay PV libres para crear o ampliar un VG.

Cree un grupo de volúmenes.

Use vgcreate para recopilar uno o más volúmenes físicos en un grupo de volúmenes. Un grupo
de volúmenes es el equivalente funcional de un disco duro; creará volúmenes lógicos a partir del
pool (conjunto) de extensiones físicas libres en el grupo de volúmenes.

La línea de comandos de vgcreate consiste en un nombre de grupo de volúmenes seguido de


uno o más volúmenes físicos para asignar a este grupo de volúmenes.

[root@host ~]# vgcreate vg01 /dev/vdb2 /dev/vdb1

Esto crea un VG denominado vg01 que tiene el tamaño combinado, en unidades de PE, de los dos
PV: /dev/vdb2 y /dev/vdb1.

Un VG solo necesita crearse si no existe ninguno. Se pueden crear más VG por motivos
administrativos para administrar el uso de PV y LV. O bien, los VG existentes se pueden ampliar
para alojar nuevos LV cuando sea necesario.

Cree un volumen lógico.

Use lvcreate para crear un nuevo volumen lógico desde las extensiones físicas disponibles en un
grupo de volúmenes. Como mínimo, la línea de comandos de lvcreate incluye la opción -n para

452 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

configurar el nombre del LV, la opción -L para establecer el tamaño del LV en bytes o la opción -
l para establecer el tamaño del LV en extensiones y el nombre del grupo de volúmenes que aloja
este volumen lógico.

[root@host ~]# lvcreate -n lv01 -L 700M vg01

Esto crea un LV denominado lv01, con un tamaño de 700 MiB, en el VG vg01. Este comando
fallará si el grupo de volúmenes no tiene una cantidad suficiente de extensiones físicas libres
para el tamaño solicitado. También tenga en cuenta que el tamaño se redondeará a un factor del
tamaño de la extensión física si el tamaño no puede coincidir exactamente.

Puede especificar el tamaño con la opción -L, que espera tamaños en bytes, mebibytes
(megabytes binarios, 1048576 bytes), gibibytes (gigabytes binarios), o similar. O puede usar la
opción -l, que espera tamaños especificados como un número de extensiones físicas.

En la siguiente lista, se proporcionan algunos ejemplos de creación de LV:

• lvcreate -L 128M: Cambia el tamaño del volumen lógico a exactamente 128 MiB.

• lvcreate -l 128 : Establece el tamaño del volumen lógico a exactamente 128 extensiones.
El número total de bytes depende del tamaño del bloque de extensiones físicas en el volumen
físico subyacente.

IMPORTANTE
Diferentes herramientas muestran el nombre del volumen lógico, ya sea usando
el nombre tradicional /dev/vgname/lvname o el nombre del mapeador de
dispositivos del kernel /dev/mapper/vgname-lvname.

Agregue el sistema de archivos.

Use mkfs para crear un sistema de archivos XFS en el nuevo volumen lógico. O cree un sistema de
archivos basado en su sistema de archivos preferido, por ejemplo, ext4.

[root@host ~]# mkfs -t xfs /dev/vg01/lv01

Para hacer que el sistema de archivos esté disponible después de los reinicios, realice los
siguientes pasos:

• Use mkdir para crear un punto de montaje.

[root@host ~]# mkdir /mnt/data

• Agregue una entrada al archivo /etc/fstab:

/dev/vg01/lv01 /mnt/data xfs defaults 1 2

NOTA
El montaje de un volumen lógico por nombre es equivalente al montaje por UUID
porque LVM encuentra sus volúmenes físicos basados en un UUID incluso si
inicialmente los agrega al grupo de volúmenes por nombre.

RH199-RHEL8.0-es-1-20190531 453
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

• Ejecute mount /mnt/data para montar el sistema de archivos que acaba de agregar en /
etc/fstab.

[root@host ~]# mount /mnt/data

Eliminación de un volumen lógico


Para eliminar todos los componentes del volumen lógico, realice los siguientes pasos:

Prepare el sistema de archivos.

Traslade todos los datos que se deben conservar a otro sistema de archivos. Use el comando
umount para desmontar el sistema de archivos y, luego, eliminar cualquier entrada de /etc/
fstab asociada a este sistema de archivos.

[root@host ~]# umount /mnt/data

ADVERTENCIA
Al eliminar un volumen lógico, se destruyen todos los datos almacenados en este.
Realice una copia de seguridad de los datos o trasládelos antes de eliminar el
volumen lógico.

Elimine el volumen lógico.

Use lvremove DEVICE_NAME para eliminar un volumen lógico que ya no es necesario.

[root@host ~]# lvremove /dev/vg01/lv01

Desmonte el sistema de archivos del LV antes de ejecutar este comando. El comando solicita
confirmación antes de eliminar el LV.

Las extensiones físicas del LV se liberan y están disponibles para ser asignadas a LV existentes o
nuevos en el grupo de volúmenes.

Elimine el grupo de volúmenes.

Use vgremove VG_NAME para eliminar un grupo de volúmenes que ya no es necesario.

[root@host ~]# vgremove vg01

Los volúmenes físicos del VG se liberan y están disponibles para ser asignados a VG existentes o
nuevos en el sistema.

Elimine los volúmenes físicos.

Use pvremove para eliminar volúmenes físicos que ya no son necesarios. Use una lista delimitada
por espacios de dispositivos del PV para eliminar más de uno a la vez. Este comando elimina los
metadatos del PV de la partición (o disco). Ahora, la partición está libre para una nueva asignación
o para ser formateada.

[root@host ~]# pvremove /dev/vdb2 /dev/vdb1

454 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

REVISIÓN DE LA INFORMACIÓN DE ESTADO DE LVM


Volúmenes físicos
Use pvdisplay para visualizar información sobre volúmenes físicos (VP). Para mostrar
información sobre todos los volúmenes físicos, use el comando sin argumentos. Para mostrar
información sobre un volumen físico específico, pase el nombre de ese dispositivo al comando.

[root@host ~]# pvdisplay /dev/vdb1


--- Physical volume ---
PV Name /dev/vdb1
VG Name vg01
PV Size 768.00 MiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 191
Free PE 16
Allocated PE 175
PV UUID JWzDpn-LG3e-n2oi-9Etd-VT2H-PMem-1ZXwP1

PV Name (Nombre de PV) se mapea al nombre del dispositivo.


VG Name (Nombre de VG) muestra el grupo de volúmenes donde se encuentra el PV.
PV Size (Tamaño de PV) muestra el tamaño físico del PV, incluido todo el espacio no
utilizable.
PE Size (Tamaño de PE) es el tamaño de la extensión física, que es el tamaño más pequeño
a donde puede ser asignado un volumen lógico.

Es también el factor de multiplicación que se usa en el cálculo del tamaño de cualquier valor
informado en las unidades de PE, como Free PE (PE libre); por ejemplo: 26 PE x 4 MiB (el
PE Size [Tamaño de PE]) da 104 MiB de espacio libre. El tamaño de un volumen lógico se
redondea a un factor de unidades de PE.

LVM establece el tamaño de la PE automáticamente, aunque es posible especificarlo.


Free PE (PE libre) muestra cuántas unidades de PE están disponibles para la asignación
para nuevos volúmenes lógicos.

Grupos de volúmenes
Use vgdisplay para visualizar información sobre grupos de volúmenes (GV). Para mostrar
información sobre todos los grupos de volúmenes, use el comando sin argumentos. Para mostrar
información sobre un grupo de volúmenes específico, pase el nombre del VG al comando.

[root@host ~]# vgdisplay vg01


--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0

RH199-RHEL8.0-es-1-20190531 455
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Cur PV 2
Act PV 2
VG Size 1016.00 MiB
PE Size 4.00 MiB
Total PE 254
Alloc PE / Size 175 / 700.00 MiB
Free PE / Size 79 / 316.00 MiB
VG UUID 3snNw3-CF71-CcYG-Llk1-p6EY-rHEv-xfUSez

VG Name (Nombre de VG) es el nombre del grupo de volúmenes.


VG Size (Tamaño de VG) es el tamaño total del pool (conjunto) de almacenamiento
disponible para la asignación de volúmenes lógicos.
Total PE (PE total) es el tamaño total expresado en unidades de PE.
Free PE / Size (PE libre/tamaño) muestra cuánto espacio libre hay en el VG para
distribuir para nuevos LV o para ampliar los LV existentes.

Volúmenes lógicos
Use lvdisplay para visualizar información sobre volúmenes lógicos (LV). Si no proporciona
ningún argumento al comando muestra información sobre todos los LV, si proporciona el nombre
de un dispositivo del LV como un argumento, el comando muestra información sobre ese
dispositivo específico.

[root@host ~]# lvdisplay /dev/vg01/lv01


--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID 5IyRea-W8Zw-xLHk-3h2a-IuVN-YaeZ-i3IRrN
LV Write Access read/write
LV Creation host, time host.lab.example.com, 2019-03-28 17:17:47 -0400
LV Status available
# open 1
LV Size 700 MiB
Current LE 175
Segments 1
Allocation inherit
Read ahead sectors auto
- current set to 256
Block device 252:0

LV Path (Ruta de LV) muestra el nombre del dispositivo del volumen lógico.

Es posible que algunas herramientas informen el nombre del dispositivo como /dev/
mapper/vgname-lvname; ambos representan el mismo LV.
VG Name (Nombre de VG) muestra el grupo de volúmenes desde donde se asigna el LV.
LV Size (Tamaño de LV) muestra el tamaño total del LV. Use herramientas del sistema de
archivos para determinar el espacio libre y el espacio usado para el almacenamiento de datos.
Current LE (LE actual) muestra la cantidad de extensiones lógicas usadas por este LV. Una
LE generalmente se mapea a una extensión física del VG y, por lo tanto, al volumen físico.

456 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

REFERENCIAS
Páginas del manual: lvm(8), pvcreate(8), vgcreate(8), lvcreate(8),
pvremove(8), vgremove(8), lvremove(8), pvdisplay(8), vgdisplay(8),
lvdisplay(8), fdisk(8), gdisk(8), parted(8), partprobe(8) y mkfs(8)

RH199-RHEL8.0-es-1-20190531 457
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

EJERCICIO GUIADO

CREACIÓN DE VOLÚMENES LÓGICOS


En este trabajo de laboratorio, creará un volumen físico, un grupo de volúmenes, un volumen
lógico y un sistema de archivos XFS. También montará de forma persistente el sistema de
archivos de volúmenes lógicos.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear volúmenes físicos, grupos de volúmenes y volúmenes lógicos con herramientas de


LVM.

• Crear nuevos sistemas de archivos en volúmenes lógicos y montarlos de manera


persistente.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab lvm-creating start. Este comando ejecuta


un script de inicio que determina si la máquina servera es accesible en la red. También
verifica que el almacenamiento esté disponible y que se hayan instalado los paquetes de
software apropiados.

[student@workstation ~]$ lab lvm-creating 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. 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. Cree los recursos físicos.

3.1. Use parted para crear dos particiones de 256 MiB y configúrelas con el tipo Linux
LVM.

458 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# parted -s /dev/vdb mklabel gpt


[root@servera ~]# parted -s /dev/vdb mkpart primary 1MiB 257MiB
[root@servera ~]# parted -s /dev/vdb set 1 lvm on
[root@servera ~]# parted -s /dev/vdb mkpart primary 258MiB 514MiB
[root@servera ~]# parted -s /dev/vdb set 2 lvm on

3.2. Use udevadm settle para que el sistema registre las nuevas particiones.

[root@servera ~]# udevadm settle

4. Use pvcreate para agregar las dos nuevas particiones como PV.

[root@servera ~]# pvcreate /dev/vdb1 /dev/vdb2


Physical volume "/dev/vdb1" successfully created.
Physical volume "/dev/vdb2" successfully created.

5. Use vgcreate para crear un nuevo VG denominado servera_01_vg compilado a partir


de los dos PV.

[root@servera ~]# vgcreate servera_01_vg /dev/vdb1 /dev/vdb2


Volume group "servera_01_vg" successfully created

6. Use lvcreate para crear un LV de 400 MiB denominado servera_01_lv desde el VG


servera_01_vg.

[root@servera ~]# lvcreate -n servera_01_lv -L 400M servera_01_vg


Logical volume "servera_01_lv" created.

Esto crea un dispositivo denominado /dev/servera_01_vg/servera_01_lv pero sin


un sistema de archivos.

7. Agregue un sistema de archivos persistente.

7.1. Agregue un sistema de archivos XFS en el LV servera_01_lv con el comando mkfs.

[root@servera ~]# mkfs -t xfs /dev/servera_01_vg/servera_01_lv


...output omitted...

7.2. Crear un punto de montaje en /data.

[root@servera ~]# mkdir /data

7.3. Agregue la siguiente línea al final de /etc/fstab en servera:

/dev/servera_01_vg/servera_01_lv /data xfs defaults 1 2

7.4. Use systemctl daemon-reload para actualizar systemd con la nueva


configuración de /etc/fstab.

RH199-RHEL8.0-es-1-20190531 459
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# systemctl daemon-reload

7.5. Verifique la entrada /etc/fstab y monte el nuevo dispositivo de LV servera_01_lv


con el comando mount.

[root@servera ~]# mount /data

8. Evalúe y revise su trabajo.

8.1. Como prueba final, copie algunos archivos en /data y verifique cuántos se copiaron.

[root@servera ~]# cp -a /etc/*.conf /data


[root@servera ~]# ls /data | wc -l
34

Verificará que aún tenga la misma cantidad de archivos en el siguiente ejercicio guiado.

8.2. parted /dev/vdb print muestra las particiones que existen en /dev/vdb.

[root@servera ~]# parted /dev/vdb print


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags


1 1049kB 269MB 268MB primary lvm
2 271MB 539MB 268MB primary lvm

Observe la columna Número, que contiene los valores 1 y 2. Estos corresponden


a /dev/vdb1 y /dev/vdb2, respectivamente. También observe la columna
Indicadores, que indica el tipo de partición.

8.3. pvdisplay muestra información sobre cada uno de los volúmenes físicos. De forma
opcional, incluya el nombre del dispositivo para limitar detalles a un PV específico.

[root@servera ~]# pvdisplay /dev/vdb2


--- Physical volume ---
PV Name /dev/vdb2
VG Name servera_01_vg
PV Size 256.00 MiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 63
Free PE 26
Allocated PE 37
PV UUID 2z0Cf3-99YI-w9ny-alEW-wWhL-S8RJ-M2rfZk

Esto muestra que el PV está asignado al VG servera_01_vg, tiene un tamaño de


256 MiB (si bien 4 MiB no se pueden usar) y el tamaño de la extensión física (PE Size
[Tamaño de PE]) es de 4 MiB (el tamaño de un LV asignable más pequeño).

460 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Hay 63 PE, de las cuales 26 están libres para la asignación para LV en el futuro y 37
están asignadas actualmente a LV. Esto se traduce a los siguientes valores de MiB:

• Un total de 252 MiB (63 PE x 4 MiB); recuerde, 4 MiB no se pueden usar.

• 104 MiB libres (26 PE x 4 MiB)

• 148 MiB asignados (37 PE x 4 MiB)

8.4. vgdisplay vgname muestra información sobre el grupo de volúmenes denominado


vgname.

[root@servera ~]# vgdisplay servera_01_vg

Verifique los siguientes valores:

• El valor de VG Size (Tamaño de VG) es 504,00 MiB.

• El valor de Total PE (PE total) es 126.

• El valor de Alloc PE / Size (PE asign. / Tamaño) es 100 / 400,00 MiB.

• El valor de Free PE / Size (PE libre / Tamaño) es 26 / 104,00 MiB.

8.5. lvdisplay /dev/vgname/lvname muestra información sobre el volumen lógico


denominado lvname.

[root@servera ~]# lvdisplay /dev/servera_01_vg/servera_01_lv

Revise los valores de LV Path (Ruta de LV), LV Name (Nombre de LV), VG Name
(Nombre de VG), LV Status (Estado de LV), LV Size (Tamaño de LV) y Current
LE (LE actual) (extensiones lógicas, que se mapean a extensiones físicas).

8.6. El comando mount muestra todos los dispositivos montados y cualquier opción de
montaje. Debe incluir /dev/servera_01_vg/servera_01_lv.

NOTA
Muchas herramientas informan en cambio el nombre del mapeador de dispositivos,
/dev/mapper/servera_01_vg-servera_01_lv; es el mismo volumen lógico.

[root@servera ~]# mount

Debe observar (probablemente, en la última línea) /dev/mapper/servera_01_vg-


servera_01_lv montado en /data y la información de montaje asociada.

8.7. df -h muestra espacio libre legible para el ser humano. De forma opcional, incluya el
punto de montaje para limitar detalles a ese sistema de archivos.

[root@servera ~]# df -h /data


Filesystem Size Used Avail Use% Mounted on
/dev/mapper/servera_01_vg-servera_01_lv 395M 24M 372M 6% /data

Estos valores, permitidos para metadatos del sistema de archivos, son los esperados.

RH199-RHEL8.0-es-1-20190531 461
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

9. Cierre sesión en servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute el script lab lvm-creating finish para terminar este ejercicio.
Este script elimina el almacenamiento configurado en servera durante el ejercicio.

[student@workstation ~]$ lab lvm-creating finish

Esto concluye el ejercicio guiado.

462 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

AMPLIACIÓN DE VOLÚMENES LÓGICOS

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Ampliar un grupo de volúmenes (VG) con pvcreate y vgextend, y usar vgdisplay para
verificar la salida.

• Reducir un VG usando pvmove y vgreduce.

• Ampliar un volumen lógico (LV) usando lvextend.

• Cambiar el tamaño de los sistemas de archivos XFS con xfs_growfs.

• Cambiar el tamaño de los sistemas de archivos ext4 con resize2fs.

AMPLIACIÓN Y REDUCCIÓN DE UN GRUPO DE


VOLÚMENES
Puede agregar más espacio en disco a un grupo de volúmenes mediante la adición de más
volúmenes físicos. Esto se denomina ampliación del grupo de volúmenes. Luego, puede asignar las
nuevas extensiones físicas desde los volúmenes físicos adicionales a volúmenes lógicos.

Puede eliminar los volúmenes físicos no usados de un grupo de volúmenes. Esto se denomina
reducción del grupo de volúmenes. Primero, use el comando pvmove para trasladar datos desde
extensiones de un volumen físico hasta extensiones de otros volúmenes físicos en el grupo
de volúmenes. De esta manera, se puede agregar un nuevo disco a un grupo de volúmenes
existentes, se pueden trasladar los datos desde un disco más antiguo o más lento hacia el disco
nuevo y se puede eliminar el disco viejo del grupo de volúmenes. Puede hacer esto mientras los
volúmenes lógicos del grupo de volúmenes están en uso.

IMPORTANTE
En los siguientes ejemplos, se usa el dispositivo vdb y sus particiones para ilustrar
comandos LVM. En la práctica, use los dispositivos apropiados para el disco y las
particiones de disco en su propio sistema.

Ampliación de un grupo de volúmenes


Para ampliar un grupo de volúmenes, realice los siguientes pasos:

Prepare el dispositivo físico y cree el volumen físico..

Al igual que en la creación de un nuevo grupo de volúmenes, debe crear y preparar una nueva
partición para usar como volumen físico si no hay ninguna ya preparada.

[root@host ~]# parted -s /dev/vdb mkpart primary 1027MiB 1539MiB


[root@host ~]# parted -s /dev/vdb set 3 lvm on
[root@host ~]# pvcreate /dev/vdb3

RH199-RHEL8.0-es-1-20190531 463
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Un PV solo debe crearse si no hay PV libres para ampliar el VG.

Amplíe un grupo de volúmenes.

Use vgextend para agregar el nuevo volumen físico al grupo de volúmenes. Use el nombre del
VG y el nombre del dispositivo del PV como argumentos para vgextend.

[root@host ~]# vgextend vg01 /dev/vdb3

Esto amplía el VG vg01 al tamaño del PV /dev/vdb3.

Verifique que el nuevo espacio esté disponible.

Use vgdisplay para confirmar que las extensiones físicas adicionales estén disponibles. Revise el
Free PE / Size (PE libre/tamaño) en la salida. No debe ser cero.

[root@host ~]# vgdisplay vg01


--- Volume group ---
VG Name vg01
...output omitted...
Free PE / Size 178 / 712.00 MiB
...output omitted...

Reducción de un grupo de volúmenes


Para reducir un grupo de volúmenes, realice los siguientes pasos:

Traslade las extensiones físicas.

Use pvmove PV_DEVICE_NAME para reubicar cualquier extensión física del volumen físico que
desee eliminar a otros volúmenes físicos en el grupo de volúmenes. Los otros volúmenes físicos
deben tener una cantidad suficiente de extensiones libres para aceptar este traslado. Esto solo es
posible si hay suficientes extensiones libres en el VG y si todas corresponden a otros PV.

[root@host ~]# pvmove /dev/vdb3

Este comando traslada las PE desde /dev/vdb3 a otros PV con PE libres en el mismo VG.

ADVERTENCIA
Antes de usar pvmove, efectúe una copia de seguridad de los datos en los
volúmenes lógicos del grupo de volúmenes. Una pérdida de energía imprevista
durante la operación puede hacer que el grupo de volúmenes quede en un estado
incoherente. Esto provocaría la pérdida de datos en volúmenes lógicos en el grupo
de volúmenes.

Reduzca el grupo de volúmenes.

Use vgreduce VG_NAME PV_DEVICE_NAME para quitar un volumen físico de un grupo de


volúmenes.

[root@host ~]# vgreduce vg01 /dev/vdb3

464 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Esto elimina el PV /dev/vdb3 del VG vg01 y ahora puede agregarse a otro VG. O se puede usar
pvremove para dejar de usar el dispositivo como un PV de forma permanente.

AMPLIACIÓN DE UN VOLUMEN LÓGICO Y EL


SISTEMA DE ARCHIVOS XFS
Uno de los beneficios de los volúmenes lógicos es la capacidad para aumentar su tamaño sin
experimentar tiempo de inactividad. Las extensiones físicas libres en un grupo de volúmenes se
pueden agregar a un volumen lógico para ampliar su capacidad, que, luego, se puede usar para
ampliar el sistema de archivos que contiene.

Ampliación de un volumen lógico


Para ampliar un volumen lógico, realice los siguientes pasos:

Verifique que el grupo de volúmenes tenga espacio disponible.

Use vgdisplay para verificar que haya suficientes extensiones físicas disponibles:

[root@host ~]# vgdisplay vg01


--- Volume group ---
VG Name vg01
...output omitted...
Free PE / Size 178 / 712.00 MiB
...output omitted...

Revise el Free PE / Size (PE libre/tamaño) en la salida. Confirme que el grupo de volúmenes
tenga suficiente espacio libre para la extensión del LV. Si no hay suficiente espacio disponible,
amplíe el grupo de volúmenes como corresponda. Consulte “Ampliación y reducción de un grupo
de volúmenes”.

Amplíe el volumen lógico.

Use lvextendLV_DEVICE_NAME para ampliar el volumen lógico a un nuevo tamaño.

[root@host ~]# lvextend -L +300M /dev/vg01/lv01

Esto aumenta el tamaño del volumen lógico lv01 en 300 MiB. Observe el signo "(+)" delante del
tamaño: significa agregar este valor al tamaño existente; de lo contrario, el valor define el tamaño
final del LV.

Al igual que con lvcreate, existen diferentes métodos para especificar el tamaño: la opción -
l espera la cantidad de extensiones físicas como argumento. La opción -L espera tamaños en
bytes, mebibytes, gibibytes y similares.

En la siguiente lista, se proporcionan algunos ejemplos de ampliación de LV.

Ampliación de ejemplos de LV

COMANDO RESULTADOS

lvextend -l 128 Cambia el tamaño del volumen lógico a exactamente 128


extensiones.

RH199-RHEL8.0-es-1-20190531 465
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

COMANDO RESULTADOS

lvextend -l +128 Agrega 128 extensiones al tamaño actual del volumen lógico.

lvextend -L 128M Cambia el tamaño del volumen lógico a exactamente 128 MiB.

lvextend -L +128M Agrega 128 MiB al tamaño actual del volumen lógico.

lvextend -l +50%FREE Agrega el 50% del espacio libre actual en el VG al LV.

Amplíe el sistema de archivos.

Use xfs_growfs mountpoint para ampliar el sistema de archivos para que ocupe el
LV ampliado. El sistema de archivos de destino se debe montar cuando use el comando
xfs_growfs. Puede seguir usando el sistema de archivos mientras se está cambiando el tamaño.

[root@host ~]# xfs_growfs /mnt/data

NOTA
Un error común es ejecutar lvextend y olvidarse de ejecutar xfs_growfs. Una
alternativa a ejecutar estos pasos de forma consecutiva es incluir la opción -r con
el comando lvextend. Esto modifica el tamaño del sistema de archivos después
de que el LV se amplíe, usando fsadm(8). Funciona con varios sistemas de archivos
diferentes.

• Verifique el nuevo tamaño del sistema de archivos montado:

df -h /mountpoint.

AMPLIACIÓN DE UN VOLUMEN LÓGICO Y EL


SISTEMA DE ARCHIVOS EXT4
Los pasos para ampliar un volumen lógico basado en ext4 son básicamente los mismos que para
un LV basado en XFS, excepto por el paso para cambiar el tamaño del sistema de archivos. Revise
“Ampliación de un volumen lógico y el sistema de archivos XFS”.

Verifique que el grupo de volúmenes tenga espacio disponible.

Use vgdisplay VGNAME para verificar que el grupo de volúmenes tenga una cantidad suficiente
de extensiones físicas disponibles.

Amplíe el volumen lógico.

Use lvextend -l +extents /dev/vgname/lvname para ampliar el volumen lógico /dev/


vgname/lvname en el valor de las extensiones.

Amplíe el sistema de archivos.

Use resize2fs /dev/vgname/lvname para ampliar el sistema de archivos para que ocupe el
nuevo LV ampliado. El sistema de archivos se puede montar y usar mientras se ejecuta el comando
de extensión. Puede incluir la opción -p para monitorear el progreso de la operación de cambio de
tamaño.

466 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@host ~]# resize2fs /dev/vg01/lv01

NOTA
La principal diferencia entre xfs_growfs y resize2fs es el argumento que se
pasó para identificar el sistema de archivos. xfs_growfs toma el punto de montaje
y resize2fs toma el nombre del volumen lógico.

AMPLIAR UN VOLUMEN LÓGICO Y EL ESPACIO DE


INTERCAMBIO
Los volúmenes lógicos formateados como espacio de intercambio también se pueden ampliar; sin
embargo, el proceso es diferente al de la ampliación de un sistema de archivos, como ext4 o XFS.
Los volúmenes lógicos formateados con un sistema de archivos pueden ampliarse dinámicamente
sin tiempo de inactividad. Los volúmenes lógicos formateados con espacio de intercambio se
deben desconectar para ampliarse.

Verifique que el grupo de volúmenes tenga espacio disponible.

Use vgdisplay vgname para verificar que haya una cantidad suficiente de extensiones físicas
disponibles.

Desactive el espacio de intercambio.

Use swapoff -v /dev/vgname/lvname para desactivar el espacio de intercambio en el


volumen lógico.

ADVERTENCIA
Su sistema debe tener suficiente espacio libre en la memoria o en el espacio de
intercambio para aceptar cualquier cosa que deba paginar cuando el espacio de
intercambio en el volumen lógico está desactivado.

Amplíe el volumen lógico.

lvextend -l +extents /dev/vgname/lvname amplía el volumen lógico /dev/vgname/


lvname en el valor de las extensiones.

Formatee el volumen lógico como espacio de intercambio.

mkswap /dev/vgname/lvname formatea todo el volumen lógico como espacio de intercambio.

Active el espacio de intercambio.

Use swapon -va /dev/vgname/lvname para activar el espacio de intercambio en el volumen


lógico.

REFERENCIAS
Páginas del manual: lvm(8), pvcreate(8), pvmove(8), vgdisplay(8),
vgextend(8), vgreduce(8), vgdisplay(8), vgextend(8), vgreduce(8),
lvextend(8), fdisk(8), gdisk(8), parted(8), partprobe(8), xfs_growfs(8)
y resize2fs(8) swapoff(8) swapon(8) mkswap(8)

RH199-RHEL8.0-es-1-20190531 467
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

EJERCICIO GUIADO

AMPLIACIÓN DE VOLÚMENES LÓGICOS


En este trabajo de laboratorio, ampliará el volumen lógico agregado en el ejercicio de
práctica anterior.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Ampliar el grupo de volúmenes para incluir un volumen físico adicional.

• Cambiar el tamaño del volumen lógico mientras el sistema de archivos aún está montado y
en uso.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab lvm-extending start. Este comando


ejecuta un script de inicio que determina si el host servera es accesible en la red y
garantiza que el almacenamiento del ejercicio guiado anterior esté disponible.

[student@workstation ~]$ lab lvm-extending 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. Use vgdisplay para determinar si el VG tiene suficiente espacio libre para ampliar el LV
hasta un tamaño total de 700 MiB.

[root@servera ~]# vgdisplay servera_01_vg


--- Volume group ---
VG Name servera_01_vg
System ID
Format lvm2
...output omitted...
VG Size 504.00 MiB
PE Size 4.00 MiB

468 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Total PE 126
Alloc PE / Size 100 / 400.00 MiB
Free PE / Size 26 / 104.00 MiB
VG UUID OBBAtU-2nBS-4SW1-khmF-yJzi-z7bD-DpCrAV

Hay solo 104 MiB disponibles (26 PE x extensiones de 4 MiB) y necesita al menos 300 MiB
para tener 700 MiB en total. Necesita ampliar el VG.
Para una posterior comparación, use df para registrar el espacio libre en el disco actual:

[root@servera ~]# df -h /data


Filesystem Size Used Avail Use% Mounted on
/dev/mapper/servera_01_vg-servera_01_lv 395M 24M 372M 6% /data

4. Cree el recurso físico.

4.1. Use parted para crear una partición adicional de 512 MiB y configúrela con el tipo
Linux LVM.

[root@servera ~]# parted -s /dev/vdb mkpart primary 515MiB 1027MiB


[root@servera ~]# parted -s /dev/vdb set 3 lvm on

4.2. Use udevadm settle para que el sistema registre la nueva partición.

[root@servera ~]# udevadm settle

5. Use pvcreate para agregar la nueva partición como un PV.

[root@servera ~]# pvcreate /dev/vdb3


Physical volume "/dev/vdb3" successfully created.

6. Amplíe un grupo de volúmenes.

6.1. Use vgextend para ampliar el VG denominado servera_01_vg, mediante el nuevo


PV /dev/vdb3.

[root@servera ~]# vgextend servera_01_vg /dev/vdb3


Volume group "servera_01_vg" successfully extended

6.2. Use vgdisplay para inspeccionar el espacio libre del VG servera_01_vg


nuevamente. Ahora, debe haber suficiente espacio libre.

[root@servera ~]# vgdisplay servera_01_vg


--- Volume group ---
VG Name servera_01_vg
System ID
Format lvm2
...output omitted...
VG Size 1012.00 MiB
PE Size 4.00 MiB
Total PE 253

RH199-RHEL8.0-es-1-20190531 469
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Alloc PE / Size 100 / 400.00 MiB


Free PE / Size 153 / 612.00 MiB
VG UUID OBBAtU-2nBS-4SW1-khmF-yJzi-z7bD-DpCrAV

Hay 612 MiB de espacio libre disponible (153 PE x extensiones de 4 MiB).

7. Use lvextend para ampliar el LV existente a 700 MiB.

[root@servera ~]# lvextend -L 700M /dev/servera_01_vg/servera_01_lv


Size of logical volume servera_01_vg/servera_01_lv changed from 400.00 MiB (100
extents) to 700.00 MiB (175 extents).
Logical volume servera_01_vg/servera_01_lv successfully resized.

NOTA
El ejemplo especifica el tamaño exacto para crear el LV final, pero podría haber
especificado la cantidad de espacio adicional deseada:

• -L +300M para agregar el nuevo espacio usando el tamaño en MiB.

• -l 175 para especificar el número total de extensiones (175 PE x 4 MiB).

• -l +75 para agregar las extensiones adicionales necesarias.

8. Use xfs_growfs para ampliar el sistema de archivos XFS hasta el resto del espacio libre
del LV.

[root@servera ~]# xfs_growfs /data


meta-data=/dev/mapper/servera_01_vg-servera_01_lv isize=512 agcount=4,
agsize=25600 blks
...output omitted...

9. Use df y ls | wc para revisar el nuevo tamaño del sistema de archivos y verifique que los
archivos existentes anteriormente aún estén presentes.

[root@servera ~]# df -h /data


Filesystem Size Used Avail Use% Mounted on
/dev/mapper/servera_01_vg-servera_01_lv 695M 26M 670M 4% /data
[root@servera ~]# ls /data | wc -l
34

Los archivos aún existen y el sistema de archivos se aproxima al tamaño especificado.

10. Cierre sesión en servera.

[root@servera ~]# exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.
[student@workstation ~]$

470 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Finalizar
En workstation, ejecute el comando lab lvm-extending finish para terminar este
ejercicio. Este script elimina el almacenamiento configurado en servera durante el ejercicio.

[student@workstation ~]$ lab lvm-extending finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 471
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

GESTIÓN DE ALMACENAMIENTO EN
CAPAS CON STRATIS

OBJETIVOS
Tras completar esta sección, debería ser capaz de administrar múltiples capas de almacenamiento
con la administración de almacenamiento local Stratis.

DESCRIPCIÓN DE LA ARQUITECTURA DE STRATIS


La solución de almacenamiento local actual en Red Hat Enterprise Linux (RHEL) incluye muchas
tecnologías estables y consolidadas, incluido el asignador de dispositivos (dm), el gestor de
volúmenes lógicos (LVM) y el sistema de archivos XFS. Las funciones proporcionadas por estos
componentes incluyen sistemas de archivos con escalabilidad masiva, instantáneas, dispositivos
lógicos redundantes (RAID), múltiples rutas, aprovisionamiento ligero (thin provisioning),
almacenamiento en caché, desduplicación y soporte para máquinas virtuales y contenedores.
Cada capa de la pila (stack) de almacenamiento (dm, LVM y XFS) se gestiona con comandos y
utilidades específicos de la capa, que requieren que los administradores del sistema gestionen
dispositivos físicos, volúmenes de tamaño fijo y sistemas de archivos como componentes de
almacenamiento separados.

En los últimos años, apareció una nueva generación de soluciones de administración de


almacenamiento, denominada sistemas de archivos con administración de volúmenes, que
gestiona de forma dinámica y transparente la capa de volumen a medida que se crean y se
establece el tamaño de los sistemas de archivos. Sin embargo, si bien el desarrollo comunitario
de estos sistemas de archivos estuvo en curso durante años, ninguno alcanzó el nivel de soporte
y estabilidad de funciones requerido para convertirse en el almacenamiento local primario para
Red Hat Enterprise Linux.

Con RHEL 8, Red Hat presenta la solución de administración de almacenamiento Stratis. En


lugar de desarrollar desde cero, como intentaron otros proyectos de almacenamiento, Stratis
trabaja con componentes de almacenamiento de RHEL existentes. Stratis se ejecuta como un
servicio que administra pools (conjuntos) de dispositivos de almacenamiento físico, y crea y
administra de forma transparente los volúmenes para los sistemas de archivos creados. Dado
que Stratis usa herramientas y controladores de almacenamiento existentes, todas las funciones
de almacenamiento avanzadas que usa actualmente en LVM, XFS y el asignador de dispositivos
también son compatibles con Stratis.

En un sistema de archivos con administración de volúmenes, los sistemas de archivos se compilan


dentro de pools (conjuntos) de dispositivos de disco compartidos utilizando un concepto conocido
como aprovisionamiento ligero (thin provisioning). Los sistemas de archivos Stratis no tienen
tamaños fijos y ya no preasignan espacio de bloque no utilizado. Si bien el sistema de archivos
aún se basa en un volumen de LVM oculto, Stratis administra el volumen subyacente por usted
y puede ampliarlo cuando sea necesario. El tamaño en uso de un sistema de archivos se ve
como la cantidad de bloques reales en uso por los archivos contenidos. El espacio disponible
para un sistema de archivos es la cantidad de espacio que aún no está en uso en los dispositivos
agrupados en los que reside. Varios sistemas de archivos pueden residir en el mismo pool
(conjunto) de dispositivos de disco, y compartir el espacio disponible, pero los sistemas de
archivos también pueden reservar espacio en el pool (conjunto) para garantizar la disponibilidad
cuando sea necesario.

472 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Stratis usa metadatos almacenados para reconocer pools (conjuntos) administrados, volúmenes
y sistemas de archivos. Por lo tanto, los sistemas de archivos creados por Stratis nunca deben
ser reformateados ni reconfigurados manualmente; solo deben administrarse con herramientas y
comandos de Stratis. La configuración manual de los sistemas de archivos Stratis podría causar
la pérdida de esos metadatos e impedir que Stratis reconozca los sistemas de archivos que ha
creado.

Puede crear múltiples pools (conjuntos) con diferentes grupos de dispositivos de bloque. Desde
cada pool (conjunto), puede crear uno o más sistemas de archivos. Actualmente, puedes crear
hasta 224 sistemas de archivos por pool (conjunto). En el siguiente diagrama, se ilustra cómo se
posicionan los elementos de la solución de administración de almacenamiento Stratis.

Figura 12.2: Elementos de Stratis

Un pool (conjunto) agrupa dispositivos de bloque en el nivel de datos y opcionalmente en el nivel


de memoria caché. El nivel de datos se centra en la flexibilidad y la integridad y el nivel de memoria
caché se centra en el rendimiento mejorado. Dado que el nivel de memoria caché está destinado
a mejorar el rendimiento, debe usar dispositivos de bloque que tengan mayor entrada/salida por
segundo (IOPS), como SSD.

Descripción de la pila (stack) de almacenamiento simplificada


Stratis simplifica muchos aspectos del aprovisionamiento y la configuración del almacenamiento
local en varios productos de Red Hat. Por ejemplo, en versiones anteriores del instalador
Anaconda, los administradores del sistema tenían que superponer cada aspecto de la
administración del disco sobre el otro. Ahora, el instalador usa Stratis, que simplifica la
configuración del disco. Otros productos que usan Stratis incluyen Cockpit, Red Hat Virtualization
y el host de Red Hat Enterprise Linux Atomic . Para todos estos productos, Stratis hace que
administrar el espacio de almacenamiento y las instantáneas sea más sencillo y menos propenso a
errores. Stratis permite una integración más fácil con las herramientas de administración de nivel
superior que el uso de cualquier CLI mediante programación.

RH199-RHEL8.0-es-1-20190531 473
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Figura 12.3: Stratis en la pila (stack) de administración de almacenamiento de Linux

Descripción de capas de Stratis


Internamente, Stratis usa el subsistema Backstore para administrar los dispositivos de bloque
y el subsistema Thinpool para administrar los pools (conjuntos). El subsistema Backstore
tiene un nivel de datos que mantiene los metadatos del disco en dispositivos de bloque, y
detecta y corrige los datos dañados. El nivel de memoria caché usa dispositivos de bloque de alto
rendimiento para que actúen como memoria caché por encima del nivel de datos. El subsistema
Thinpool gestiona los volúmenes con aprovisionamiento ligero (thin provisioned) asociados a los
sistemas de archivos Stratis. Este subsistema usa el controlador del asignador de dispositivos dm-
thin para reemplazar la LVM en la administración y el establecimiento del tamaño del volumen
virtual. dm-thin crea volúmenes con un tamaño virtual grande, formateado con XFS, pero con
un tamaño físico pequeño. A medida que el tamaño físico se acerca al máximo, Stratis lo amplía
automáticamente.

474 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Figura 12.4: Capas de Stratis

Gestión de sistemas de archivos con aprovisionamiento ligero


(thin provisioned)
Para gestionar los sistemas de archivos con aprovisionamiento ligero (thin provisioned) con la
solución de administración de almacenamiento Stratis, instale los paquetes stratis-cli y stratisd.
El paquete stratis-cli proporciona el comando stratis, que traduce las solicitudes de los
usuarios al servicio stratisd a través de la API D-Bus. El paquete stratisd proporciona el servicio
stratisd, que implementa la interfaz D-Bus, y administra y monitorea los elementos de Stratis,
como los dispositivos de bloque, los pools (conjuntos) y los sistemas de archivos. La API D-Bus
está disponible si se está ejecutando el servicio stratisd.

Instale y active Stratis con las herramientas habituales:

• Instale stratis-cli y stratisd con el comando yum install.

[root@host ~]# yum install stratis-cli stratisd


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

• Active el servicio stratisd con el comando systemctl.

[root@host ~]# systemctl enable --now stratisd

Las siguientes son operaciones de administración comunes realizadas con la solución de


administración de almacenamiento Stratis.

• Crear pools (conjuntos) de uno o más dispositivos de bloque con el comando stratis pool
create.

RH199-RHEL8.0-es-1-20190531 475
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@host ~]# stratis pool create pool1 /dev/vdb

Cada pool (conjunto) es un subdirectorio en el directorio /stratis.

• Usar el comando stratis pool list para ver la lista de pools (conjuntos) disponibles.

[root@host ~]# stratis pool list


Name Total Physical Size Total Physical Used
pool1 5 GiB 52 MiB

• Usar el comando stratis pool add-data para agregar dispositivos de bloque adicionales a
un pool (conjunto).

[root@host ~]# stratis pool add-data pool1 /dev/vdc

• Usar el comando stratis blockdev list para ver los dispositivos de bloque de un pool
(conjunto).

[root@host ~]# stratis blockdev list pool1


Pool Name Device Node Physical Size State Tier
pool1 /dev/vdb 5 GiB In-use Data
pool1 /dev/vdc 5 GiB In-use Data

• Usar el comando stratis filesystem create para crear un sistema de archivos dinámico
y flexible de un pool (conjunto).

[root@host ~]# stratis filesystem create pool1 filesystem1

Los enlaces a los sistemas de archivos Stratis están en el directorio /stratis/pool1.

• Stratis permite la captura de instantáneas del sistema de archivos con el comando stratis
filesystem snapshot. Las capturas de instantáneas son independientes de los sistemas de
archivos de origen.

[root@host ~]# stratis filesystem snapshot pool1 filesystem1 snapshot1

• Usar el comando stratis filesystem list para ver la lista de sistemas de archivos
disponibles.

[root@host ~]# stratis filesystem list


...output omitted...

Para asegurarse de que los sistemas de archivos Stratis se monten de forma persistente, edite
/etc/fstab y especifique los detalles del sistema de archivos. En el siguiente comando, se
muestra el UUID del sistema de archivos que debe usar en /etc/fstab para identificar el sistema
de archivos.

[root@host ~]# lsblk --output=UUID /stratis/pool1/filesystem1


UUID
31b9363b-add8-4b46-a4bf-c199cd478c55

476 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

La siguiente es una entrada de ejemplo en el archivo /etc/fstab para montar de forma


persistente un sistema de archivos Stratis.

UUID=31b9...8c55 /dir1 xfs defaults,x-systemd.requires=stratisd.service 0 0

La opción de montaje x-systemd.requires=stratisd.service retrasa el montaje del


sistema de archivos hasta después de que systemd inicia stratisd.service durante el
proceso de arranque.

NOTA
Si no usa la opción de montaje x-systemd.requires=stratisd.service
en /etc/fstab para el sistema de archivos Stratis, la máquina arrancará en
emergency.target en el siguiente reinicio.

REFERENCIAS
Para obtener más información, consulte el capítulo Gestión de almacenamiento local
en capas con Stratis de la Guía de configuración y administración de sistemas de
archivos con Red Hat Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/configuring_and_managing_file_systems/

Almacenamiento de Stratis
https://stratis-storage.github.io/

Lecciones que Stratis aprendió de ZFS, Btrfs y Linux Volume Manager


https://opensource.com/article/18/4/stratis-lessons-learned

RH199-RHEL8.0-es-1-20190531 477
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

EJERCICIO GUIADO

GESTIÓN DE ALMACENAMIENTO EN
CAPAS CON STRATIS
En este ejercicio, usará la solución de administración de almacenamiento Stratis para crear
pools (conjuntos), volúmenes y sistemas de archivos que funcionan en cooperación.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un sistema de archivos con aprovisionamiento ligero (thin provisioned) con la


solución de administración de almacenamiento Stratis.

• Verificar que los volúmenes Stratis crezcan dinámicamente para admitir crecimiento de
datos en tiempo real.

• Acceder a los datos desde la instantánea de un sistema de archivos con aprovisionamiento


ligero (thin provisioned).

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab advstorage-stratis start para comenzar el ejercicio.


Este script configura el entorno correctamente y garantiza que los discos adicionales en
servera estén limpios.

[student@workstation ~]$ lab advstorage-stratis start

1. Desde workstation, abra una sesión de SSH en servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cambie al usuario root.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Instale los paquetes stratisd y stratis-cli cn yum.

478 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# yum install stratisd stratis-cli


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

4. Active el servicio stratisd con el comando systemctl.

[root@servera ~]# systemctl enable --now stratisd

5. Asegúrese de que el pool (conjunto) de Stratis stratispool1 existe con el dispositivo de


bloque /dev/vdb.

5.1. Cree un pool (conjunto) de Stratis denominado stratispool1 con el comando


stratis pool create.

[root@servera ~]# stratis pool create stratispool1 /dev/vdb

5.2. Verifique la disponibilidad de stratispool1 con el comando stratis pool list.

[root@servera ~]# stratis pool list


Name Total Physical Size Total Physical Used
stratispool1 5 GiB 52 MiB

Observe el tamaño del pool (conjunto) en la salida anterior.

6. Amplíe la capacidad de stratispool1 con el dispositivo de bloque /dev/vdc.

6.1. Agregue el dispositivo de bloque /dev/vdc a stratispool1 con el comando


stratis pool add-data.

[root@servera ~]# stratis pool add-data stratispool1 /dev/vdc

6.2. Verifique el tamaño de stratispool1 con el comando stratis pool list.

[root@servera ~]# stratis pool list


Name Total Physical Size Total Physical Used
stratispool1 10 GiB 56 MiB

Como se muestra arriba, el tamaño del pool (conjunto) stratispool1 aumentó


cuando agregó el dispositivo de bloque.

6.3. Verifique los dispositivos de bloque que son actualmente miembros de


stratispool1 con el comando stratis blockdev list.

[root@servera ~]# stratis blockdev list stratispool1


Pool Name Device Node Physical Size State Tier
stratispool1 /dev/vdb 5 GiB In-use Data
stratispool1 /dev/vdc 5 GiB In-use Data

RH199-RHEL8.0-es-1-20190531 479
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

7. Agregue un sistema de archivos con aprovisionamiento ligero (thin provisioned)


denominado stratis-filesystem1 en el pool (conjunto) stratispool1. Monte el
sistema de archivos en /stratisvol. Cree un archivo en el sistema de archivos stratis-
filesystem1 denominado file1 que contenga el texto Hello World! (¡Hola, mundo!).

7.1. Cree el sistema de archivos con aprovisionamiento ligero (thin provisioned) stratis-
filesystem1 en stratispool1 con el comando stratis filesystem create.
Puede tardar hasta un minuto para que se complete el comando.

[root@servera ~]# stratis filesystem create stratispool1 stratis-filesystem1

7.2. Verifique la disponibilidad de stratis-filesystem1 con el comando stratis


filesystem list.

[root@servera ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
stratispool1 stratis-filesystem1 546 MiB Mar 29 2019 07:48 /stratis/
stratispool1/stratis-filesystem1 8714...e7db

Observe el uso actual de stratis-filesystem1. Este uso del sistema de archivos


aumenta a pedido en los siguientes pasos.

7.3. Cree un directorio denominado /stratisvol con el comando mkdir.

[root@servera ~]# mkdir /stratisvol

7.4. Monte stratis-filesystem1 en /stratisvol con el comando mount.

[root@servera ~]# mount /stratis/stratispool1/stratis-filesystem1 /stratisvol

7.5. Verifique que el sistema de archivos de Stratis stratis-filesystem1 esté montado


en /stratisvol con el comando mount.

[root@servera ~]# mount


...output omitted...
/dev/mapper/stratis-1-5c0e...12b9-thin-fs-8714...e7db on /stratisvol type xfs
(rw,relatime,seclabel,attr2,inode64,sunit=2048,swidth=2048,noquota)

7.6. Cree un archivo de texto /stratisvol/file1 con el comando echo.

[root@servera ~]# echo "Hello World!" > /stratisvol/file1

8. Verifique que el sistema de archivos con aprovisionamiento ligero (thin provisioned)


stratis-filesystem1 crece dinámicamente a medida que crecen los datos en el
sistema de archivos.

8.1. Vea el uso actual de stratis-filesystem1 con el comando stratis


filesystem list.

480 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
stratispool1 stratis-filesystem1 546 MiB Mar 29 2019 07:48 /stratis/
stratispool1/stratis-filesystem1 8714...e7db

8.2. Cree un archivo de 2 GiB en stratis-filesystem1 con el comando dd. Puede


tardar hasta un minuto para que se complete el comando.

[root@servera ~]# dd if=/dev/urandom of=/stratisvol/file2 bs=1M count=2048

8.3. Verifique el uso de stratis-filesystem1 con el comando stratis filesystem


list.

[root@servera ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
stratispool1 stratis-filesystem1 2.53 GiB Mar 29 2019 07:48 /stratis/
stratispool1/stratis-filesystem1 8714...e7db

La salida anterior muestra que aumentó el uso de stratis-filesystem1. El


aumento en el uso confirma que el sistema de archivos con aprovisionamiento ligero
(thin provisioned) se amplió dinámicamente para alojar el crecimiento de datos en
tiempo real que causó al crear /stratisvol/file2.

9. Cree una instantánea de stratis-filesystem1 denominada stratis-filesystem1-


snap. La instantánea le proporcionará acceso a cualquier archivo que se elimine de
stratis-filesystem1.

9.1. Cree una instantánea de stratis-filesystem1 con el comando stratis


filesystem snapshot. Puede tardar hasta un minuto para que se complete el
comando.

[root@servera ~]# stratis filesystem snapshot stratispool1 \


stratis-filesystem1 stratis-filesystem1-snap

9.2. Verifique la disponibilidad de la instantánea con el comando stratis filesystem


list.

[root@servera ~]# stratis filesystem list


...output omitted...
stratispool1 stratis-filesystem1-snap 2.53 GiB Mar 29 2019 10:28 /stratis/
stratispool1/stratis-filesystem1-snap 291d...8a16

9.3. Quite el archivo /stratisvol/file1.

[root@servera ~]# rm /stratisvol/file1


rm: remove regular file '/stratisvol/file1'? y

9.4. Cree un directorio /stratisvol-snap con el comando mkdir.

RH199-RHEL8.0-es-1-20190531 481
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# mkdir /stratisvol-snap

9.5. Monte la instantánea stratis-filesystem1-snap en /stratisvol-snap con el


comando mount.

[root@servera ~]# mount /stratis/stratispool1/stratis-filesystem1-snap \


/stratisvol-snap

9.6. Confirme que aún puede acceder al archivo que eliminó de stratis-filesystem1
con la instantánea stratis-filesystem1-snap.

[root@servera ~]# cat /stratisvol-snap/file1


Hello World!

10. Desmonte /stratisvol y /stratisvol-snap con el comando umount.

[root@servera ~]# umount /stratisvol-snap


[root@servera ~]# umount /stratisvol

11. Elimine el sistema de archivos con aprovisionamiento ligero (thin provisioned) stratis-
filesystem1 y su instantánea stratis-filesystem1-snap del sistema.

11.1. Destruya stratis-filesystem1-snap con el comando stratis filesystem


destroy.

[root@servera ~]# stratis filesystem destroy stratispool1 stratis-filesystem1-snap

11.2. Destruya stratis-filesystem1 con el comando stratis filesystem


destroy.

[root@servera ~]# stratis filesystem destroy stratispool1 stratis-filesystem1

11.3. Salga de la shell del usuario root.

[root@servera ~]# exit


logout
[student@servera ~]$

11.4. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

482 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Finalizar
En workstation, ejecute lab advstorage-stratis finish para terminar este ejercicio.
Este script elimina las particiones y los archivos creados durante el ejercicio para garantizar que el
entorno quede limpio.

[student@workstation ~]$ lab advstorage-stratis finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 483
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

COMPRESIÓN Y DESDUPLICACIÓN DE
ALMACENAMIENTO CON VDO

OBJETIVOS
Tras completar esta sección, debería ser capaz de optimizar el uso del espacio de almacenamiento
con VDO para comprimir y desduplicar datos en dispositivos de almacenamiento.

DESCRIPCIÓN DEL OPTIMIZADOR DE DATOS


VIRTUAL
Red Hat Enterprise Linux 8 incluye el controlador del optimizador de datos virtual (VDO), que
optimiza la huella de datos en dispositivos de bloque. VDO es un controlador de asignación de
dispositivos Linux que reduce el uso de espacio en disco en dispositivos de bloque y minimiza la
replicación de datos, lo que ahorra espacio en disco e incluso aumenta el rendimiento de datos.
VDO incluye dos módulos de kernel, el módulo kvdo para controlar la compresión de datos de
forma transparente y el módulo uds para la desduplicación.

La capa de VDO se coloca encima de un dispositivo de almacenamiento de bloque existente,


como un dispositivo RAID o un disco local. Esos dispositivos de bloque también pueden ser
dispositivos cifrados. Las capas de almacenamiento, como los volúmenes lógicos LVM y los
sistemas de archivos, se colocan sobre un dispositivo VDO. En el siguiente diagrama, se muestra
la ubicación de VDO en una infraestructura que consiste en máquinas virtuales KVM que utilizan
dispositivos de almacenamiento optimizados.

Figura 12.5: Máquinas virtuales basadas en VDO

VDO aplica tres fases a los datos en el siguiente orden para reducir la huella en los dispositivos de
almacenamiento:

1. La eliminación de bloque cero filtra los bloques de datos que contienen solo ceros (0) y
registra la información de esos bloques solo en los metadatos. Los bloques de datos distintos
de cero se pasan a la siguiente fase de procesamiento. Esta fase habilita la función de
aprovisionamiento ligero (thin provisioning) en los dispositivos de VDO.

2. La desduplicación elimina los bloques de datos redundantes. Cuando crea múltiples copias
de los mismos datos, VDO detecta los bloques de datos duplicados y actualiza los metadatos
para usar esos bloques duplicados como referencias al bloque de datos original sin crear
bloques de datos redundantes. El módulo del kernel del servicio de desduplicación universal

484 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

(UDS) comprueba la redundancia de los datos a través de los metadatos que mantiene. Este
módulo de kernel se envía como parte del VDO.

3. La compresión es la última fase. El módulo de kernel kvdo comprime los bloques de datos con
la compresión LZ4 y los agrupa en bloques de 4 KB.

IMPLEMENTACIÓN DEL OPTIMIZADOR DE DATOS


VIRTUAL
Los dispositivos lógicos que crea con VDO se denominan volúmenes de VDO. Los volúmenes
de VDO son similares a las particiones de disco; puede formatear los volúmenes con el tipo de
sistema de archivos deseado y montarlo como un sistema de archivos regular. También puede usar
un volumen de VDO como un volumen físico de LVM.

Para crear un volumen de VDO, especifique un dispositivo de bloque y el nombre del dispositivo
lógico que VDO presenta al usuario. O puede especificar el tamaño lógico del volumen de VDO.
El tamaño lógico del volumen de VDO puede ser mayor que el tamaño físico del dispositivo de
bloque real.

Dado que los volúmenes de VDO se aprovisionan de forma ligera (thin provisioned), los usuarios
solo pueden ver el espacio lógico en uso y desconocen el espacio físico real disponible. Si
no especifica el tamaño lógico al crear el volumen, VDO asume el tamaño físico real como el
tamaño lógico del volumen. Esta relación 1:1 entre la asignación del tamaño lógico y el tamaño
físico proporciona un mejor rendimiento, pero también un uso menos eficiente del espacio de
almacenamiento. De acuerdo con los requisitos de su infraestructura, debe priorizar el rendimiento
o la eficiencia del espacio.

Cuando el tamaño lógico de un volumen de VDO es mayor que el tamaño físico real, debe
monitorear de forma proactiva las estadísticas del volumen para ver el uso real con el comando
vdostats --verbose.

Habilitación de VDO
Instale los paquetes vdo y kmod-kvdo para habilitar VDO en el sistema.

[root@host ~]# yum install vdo kmod-kvdo


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

Creación de un volumen de VDO


Para crear un volumen de VDO, ejecute el comando vdo create.

[root@host ~]# vdo create --name=vdo1 --device=/dev/vdd --vdoLogicalSize=50G


...output omitted...

Si omite el tamaño lógico, el volumen de VDO resultante tiene el mismo tamaño que su dispositivo
físico.

Cuando el volumen de VDO está en su lugar, puede formatearlo con el tipo de sistema de archivos
deseado y montarlo conforme a la jerarquía del sistema de archivos en su sistema.

RH199-RHEL8.0-es-1-20190531 485
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

Análisis de un volumen de VDO


Para analizar un volumen de VDO, ejecute el comando vdo status. Este comando muestra un
informe sobre el sistema de VDO y el estado del volumen de VDO en formato YAML. También
muestra los atributos del volumen de VDO. Use la opción --name= para especificar el nombre
de un volumen específico. Si omite el nombre del volumen específico, la salida del comando vdo
status muestra el estado de todos los volúmenes de VDO.

[root@host ~]# vdo status --name=vdo1


...output omitted...

El comando vdo list muestra la lista de volúmenes de VDO que se han iniciado actualmente.
Puede iniciar y detener un volumen de VDO con los comandos vdo start y vdo stop,
respectivamente.

REFERENCIAS
Para obtener más información, consulte el capítulo Cómo empezar con VDO
de la Guía de desduplicación y compresión de almacenamiento de Red Hat
Enterprise Linux 8 en
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-
single/deduplicating_and_compressing_storage/

Introducción al optimizador de datos virtual


https://rhelblog.redhat.com/2018/04/11/introducing-virtual-data-optimizer-to-
reduce-cloud-and-on-premise-storage-costs/

486 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

EJERCICIO GUIADO

COMPRESIÓN Y DESDUPLICACIÓN DE
ALMACENAMIENTO CON VDO
En este ejercicio, creará un volumen de VDO, lo formateará con un sistema de archivos,
lo montará, almacenará datos en él e investigará el impacto de la compresión y la
desduplicación en el espacio de almacenamiento realmente usado.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un volumen con el optimizador de datos virtual, formatearlo con un tipo de sistema
de archivos y montar un sistema de archivos en él.

• Investigar el impacto de la desduplicación y compresión de datos en un volumen del


optimizador de datos virtual.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab advstorage-vdo start para comenzar el ejercicio.


Este script garantiza que no haya particiones en el disco /dev/vdd y configura el entorno
correctamente.

[student@workstation ~]$ lab advstorage-vdo start

1. Desde workstation, abra una sesión de SSH en servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Cree el volumen de VDO vdo1, con el dispositivo /dev/vdd. Establezca su tamaño lógico
en 50 GB.

2.1. Cambie al usuario root.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

2.2. Confirme que el paquete vdo esté instalado con el comando rpm.

[root@servera ~]# yum list installed vdo


vdo-6.2.0.293-10.el8.x86_64

RH199-RHEL8.0-es-1-20190531 487
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

2.3. Cree el volumen vdo1 con el comando vdo create.

[root@servera ~]# vdo create --name=vdo1 --device=/dev/vdd --vdoLogicalSize=50G


...output omitted...

2.4. Verifique la disponibilidad del volumen vdo1 con el comando vdo list.

[root@servera ~]# vdo list


vdo1

3. Verifique que el volumen vdo1 tenga las funciones de compresión y desduplicación


habilitadas.

3.1. Use grep para buscar las líneas que contienen la cadena desduplicación en la
salida del comando vdo status --name=vdo1.

[root@servera ~]# vdo status --name=vdo1 | grep Deduplication


Deduplication: enabled

3.2. Use grep para buscar las líneas que contienen la cadena compresión en la salida del
comando vdo status --name=vdo1.

[root@servera ~]# vdo status --name=vdo1 | grep Compression


Compression: enabled

4. Asigne al volumen vdo1 el formato de tipo de sistema de archivos XFS y móntelo en /mnt/
vdo1.

4.1. Asigne al volumen vdo1 el formato del sistema de archivos XFS con el comando mkfs.

[root@servera ~]# mkfs.xfs -K /dev/mapper/vdo1


...output omitted...

La opción -K en el comando mkfs.xfs anterior evita que los bloques no usados en


el sistema de archivos se desechen inmediatamente, lo que permite que el comando
regrese más rápidamente.

4.2. Use el comando udevadm para registrar el nuevo nodo de dispositivo.

[root@servera ~]# udevadm settle

4.3. Cree un directorio /mnt/vdo1 con el comando mkdir.

[root@servera ~]# mkdir /mnt/vdo1

4.4. Monte el volumen vdo1 en /mnt/vdo1 con el comando mount.

[root@servera ~]# mount /dev/mapper/vdo1 /mnt/vdo1

4.5. Verifique que el volumen vdo1 esté correctamente montado con el comando mount.

488 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# mount


...output omitted...
/dev/mapper/vdo1 on /mnt/vdo1 type xfs
(rw,relatime,seclabel,attr2,inode64,noquota)

5. Cree tres copias del mismo archivo denominado /root/install.img en el volumen


vdo1. Compare las estadísticas del volumen para verificar la desduplicación y la
compresión de datos que tienen lugar en el volumen. La salida anterior puede variar en su
sistema.

5.1. Vea las estadísticas iniciales y el estado del volumen con el comando vdostats.

[root@servera ~]# vdostats --human-readable


Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.0G 2.0G 60% 99%

Observe que 3 GB del volumen ya están en uso porque cuando se crea, el volumen
VDO reserva 3-4 GB para sí mismo. También observe que el valor 99% en el campo
Space saving% (% de ahorro de espacio) indica que no ha creado ningún contenido
hasta el momento en el volumen, lo que contribuye a todo el espacio del volumen
guardado.

5.2. Copie /root/install.img en /mnt/vdo1/install.img.1 y verifique las


estadísticas del volumen. Puede tardar hasta un minuto para copiar el archivo.

[root@servera ~]# cp /root/install.img /mnt/vdo1/install.img.1


[root@servera ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 5%

Observe que el valor del campo Used (Usado) aumentó de 3,0G a 3,4G porque copió
un archivo en el volumen, y eso ocupa un poco de espacio. Además, observe que el
valor del campo Space saving% (% de ahorro de espacio) disminuyó de 99% a 5%
porque inicialmente no había contenido en el volumen, lo que contribuía al poco uso
del espacio del volumen y al gran ahorro de espacio del volumen hasta que creó un
archivo. El ahorro de espacio del volumen es considerablemente bajo porque creó una
copia única del archivo en el volumen y no hay nada que desduplicar.

5.3. Copie /root/install.img en /mnt/vdo1/install.img.2 y verifique las


estadísticas del volumen. Puede tardar hasta un minuto para copiar el archivo.

[root@servera ~]# cp /root/install.img /mnt/vdo1/install.img.2


[root@servera ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 51%

Observe que el espacio de volumen usado no cambió, en su lugar, el porcentaje


del espacio de volumen guardado aumentó, lo que demuestra que se produjo
la desduplicación de datos para reducir el consumo de espacio para las copias
redundantes del mismo archivo. El valor de Space saving% (% de ahorro de espacio)
en la salida anterior puede variar en su sistema.

5.4. Salga de la shell del usuario root.

RH199-RHEL8.0-es-1-20190531 489
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@servera ~]# exit


logout
[student@servera ~]$

5.5. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab advstorage-vdo finish para terminar este ejercicio. Este
script elimina los archivos creados durante el ejercicio para garantizar que el entorno quede limpio.

[student@workstation ~]$ lab advstorage-vdo finish

Esto concluye el ejercicio guiado.

490 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

TRABAJO DE LABORATORIO

IMPLEMENTACIÓN DE FUNCIONES
AVANZADAS DE ALMACENAMIENTO
En este ejercicio, utilizará la solución de administración de almacenamiento Stratis para crear
sistemas de archivos que crecen para adaptarse a las crecientes demandas de datos, y el
optimizador de datos virtual para crear volúmenes para la utilización eficiente del espacio de
almacenamiento.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un sistema de archivos con aprovisionamiento ligero (thin provisioned) utilizando la


solución de administración de almacenamiento Stratis.

• Verificar que los volúmenes Stratis crezcan dinámicamente para admitir crecimiento de
datos en tiempo real.

• Acceder a los datos desde la instantánea de un sistema de archivos con aprovisionamiento


ligero (thin provisioned).

• Crear un volumen con el optimizador de datos virtual y montarlo en un sistema de


archivos.

• Investigar el impacto de la desduplicación y compresión de datos en un volumen del


optimizador de datos virtual.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab advstorage-review start para iniciar el trabajo


de laboratorio. Este script configura el entorno correctamente y garantiza que los discos
adicionales en serverb estén limpios.

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

1. Desde workstation, abra una sesión de SSH en serverb como student.


2. Cambie al usuario root.
3. Instale los paquetes stratisd y stratis-cli cn yum.
4. Inicie y habilite el servicio stratisd con el comando systemctl.
5. Cree un pool (conjunto) de Stratis labpool que contiene el dispositivo de bloque /dev/
vdb.
6. Amplíe la capacidad de labpool con el disco /dev/vdc disponible en el sistema.
7. Cree un sistema de archivos con aprovisionamiento ligero (thin provisioned) denominado
labfs en el pool (conjunto) labpool. Monte este sistema de archivos en /

RH199-RHEL8.0-es-1-20190531 491
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

labstratisvol para que persista tras los reinicios. Cree un archivo denominado labfile1
que contenga el texto Hello World! (¡Hola, mundo!) en el sistema de archivos labfs. No
olvide usar la opción de montaje x-systemd. requires=stratisd.service en /etc/
fstab.
8. Verifique que el sistema de archivos con aprovisionamiento ligero (thin provisioned) labfs
crece dinámicamente a medida que crecen los datos en el sistema de archivos.
9. Cree una instantánea denominada labfs-snap del sistema de archivos labfs. La
instantánea le permite acceder a cualquier archivo que se elimina de labfs.
10. Cree el volumen de VDO labvdo con el dispositivo /dev/vdd. Establezca su tamaño lógico
en 50 GB.
11. Monte el volumen labvdo en /labvdovol con el sistema de archivos XFS para
que persista tras los reinicios. No olvide usar la opción de montaje x-systemd.
requires=vdo.service en /etc/fstab.
12. Cree tres copias del archivo denominado /root/install.img en el volumen labvdo.
Compare las estadísticas del volumen para verificar la desduplicación y la compresión de
datos que tienen lugar en el volumen.

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

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

Finalizar
En workstation, ejecute lab advstorage-review finish para terminar este ejercicio.
Este script elimina las particiones y los archivos creados durante el ejercicio para garantizar que el
entorno quede limpio.

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

Esto concluye el trabajo de laboratorio.

492 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

SOLUCIÓN

IMPLEMENTACIÓN DE FUNCIONES
AVANZADAS DE ALMACENAMIENTO
En este ejercicio, utilizará la solución de administración de almacenamiento Stratis para crear
sistemas de archivos que crecen para adaptarse a las crecientes demandas de datos, y el
optimizador de datos virtual para crear volúmenes para la utilización eficiente del espacio de
almacenamiento.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un sistema de archivos con aprovisionamiento ligero (thin provisioned) utilizando la


solución de administración de almacenamiento Stratis.

• Verificar que los volúmenes Stratis crezcan dinámicamente para admitir crecimiento de
datos en tiempo real.

• Acceder a los datos desde la instantánea de un sistema de archivos con aprovisionamiento


ligero (thin provisioned).

• Crear un volumen con el optimizador de datos virtual y montarlo en un sistema de


archivos.

• Investigar el impacto de la desduplicación y compresión de datos en un volumen del


optimizador de datos virtual.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab advstorage-review start para iniciar el trabajo


de laboratorio. Este script configura el entorno correctamente y garantiza que los discos
adicionales en serverb estén limpios.

[student@workstation ~]$ lab advstorage-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. Cambie al usuario root.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

RH199-RHEL8.0-es-1-20190531 493
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

3. Instale los paquetes stratisd y stratis-cli cn yum.

[root@serverb ~]# yum install stratisd stratis-cli


...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

4. Inicie y habilite el servicio stratisd con el comando systemctl.

[root@serverb ~]# systemctl enable --now stratisd

5. Cree un pool (conjunto) de Stratis labpool que contiene el dispositivo de bloque /dev/
vdb.

5.1. Cree el pool (conjunto) de Stratis. labpool con el comando stratis pool create.

[root@serverb ~]# stratis pool create labpool /dev/vdb

5.2. Verifique la disponibilidad de labpool con el comando stratis pool list.

[root@serverb ~]# stratis pool list


Name Total Physical Size Total Physical Used
labpool 5 GiB 52 MiB

Observe el tamaño del pool (conjunto) en la salida anterior.

6. Amplíe la capacidad de labpool con el disco /dev/vdc disponible en el sistema.

6.1. Agregue el dispositivo de bloque /dev/vdc a labpool con el comando stratis


pool add-data.

[root@serverb ~]# stratis pool add-data labpool /dev/vdc

6.2. Verifique el tamaño de labpool con el comando stratis pool list.

[root@serverb ~]# stratis pool list


Name Total Physical Size Total Physical Used
labpool 10 GiB 56 MiB

La salida anterior muestra que el tamaño de labpool ha aumentado después de


agregar un nuevo disco al pool (conjunto).

6.3. Use el comando stratis blockdev list para mostrar los dispositivos de bloque
que ahora son miembros de labpool.

[root@serverb ~]# stratis blockdev list labpool


Pool Name Device Node Physical Size State Tier
labpool /dev/vdb 5 GiB In-use Data
labpool /dev/vdc 5 GiB In-use Data

7. Cree un sistema de archivos con aprovisionamiento ligero (thin provisioned) denominado


labfs en el pool (conjunto) labpool. Monte este sistema de archivos en /

494 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

labstratisvol para que persista tras los reinicios. Cree un archivo denominado labfile1
que contenga el texto Hello World! (¡Hola, mundo!) en el sistema de archivos labfs. No
olvide usar la opción de montaje x-systemd. requires=stratisd.service en /etc/
fstab.

7.1. Cree el sistema de archivos con aprovisionamiento ligero (thin provisioned) denominado
labfs en labpool con el comando stratis filesystem create. Puede tardar
hasta un minuto para que se complete el comando.

[root@serverb ~]# stratis filesystem create labpool labfs

7.2. Verifique la disponibilidad de labfs con el comando stratis filesystem list.

[root@serverb ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
labpool labfs 546 MiB Mar 29 2019 07:48 /stratis/labpool/labfs 9825...d6ca

Observe el uso actual de labfs. Este uso del sistema de archivos aumenta a pedido en
los siguientes pasos.

7.3. Determine el UUID de labfs con el comando lsblk.

[root@serverb ~]# lsblk --output=UUID /stratis/labpool/labfs


UUID
9825e289-fb08-4852-8290-44d1b8f0d6ca

7.4. Edite /etc/fstab para que el sistema de archivos con aprovisionamiento ligero (thin
provisioned) labfs se monte en el momento de arranque. Use el UUID que determinó
en el paso anterior. A continuación se muestra la línea que debe agregar a /etc/fstab.
Puede usar el comando vi /etc/fstab para editar el archivo.

UUID=9825...d6ca /labstratisvol xfs defaults,x-systemd.requires=stratisd.service


0 0

7.5. Cree un directorio denominado /labstratisvol con el comando mkdir.

[root@serverb ~]# mkdir /labstratisvol

7.6. Monte el sistema de archivos con aprovisionamiento ligero (thin provisioned) labfs con
el comando mount para confirmar que el archivo /etc/fstab contiene las entradas
correspondientes.

[root@serverb ~]# mount /labstratisvol

Si el comando anterior produce algún error, revise el archivo /etc/fstab y asegúrese


de que contiene las entradas correspondientes.

7.7. Cree un archivo de texto denominado /labstratisvol/labfile1 con el comando


echo.

[root@serverb ~]# echo "Hello World!" > /labstratisvol/labfile1

RH199-RHEL8.0-es-1-20190531 495
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

8. Verifique que el sistema de archivos con aprovisionamiento ligero (thin provisioned) labfs
crece dinámicamente a medida que crecen los datos en el sistema de archivos.

8.1. Vea el uso actual de labfs con el comando stratis filesystem list.

[root@serverb ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
labpool labfs 546 MiB Mar 29 2019 07:48 /stratis/labpool/labfs 9825...d6ca

8.2. Cree un archivo de 2 GiB en labfs con el comando dd. Puede tardar hasta un minuto
para que se complete el comando.

[root@serverb ~]# dd if=/dev/urandom of=/labstratisvol/labfile2 bs=1M count=2048

8.3. Verifique que el uso de labfs ha aumentado con el comando stratis filesystem
list.

[root@serverb ~]# stratis filesystem list


Pool Name Name Used Created Device
UUID
labpool labfs 2.53 GiB Mar 29 2019 07:48 /stratis/labpool/labfs 9825...d6ca

9. Cree una instantánea denominada labfs-snap del sistema de archivos labfs. La


instantánea le permite acceder a cualquier archivo que se elimina de labfs.

9.1. Cree una instantánea de labfs con el comando stratis filesystem snapshot.
Puede tardar hasta un minuto para que se complete el comando.

[root@serverb ~]# stratis filesystem snapshot labpool \


labfs labfs-snap

9.2. Verifique la disponibilidad de la instantánea con el comando stratis filesystem


list.

[root@serverb ~]# stratis filesystem list


...output omitted...
labpool labfs-snap 2.53 GiB Mar 29 2019 10:28 /stratis/labpool/labfs-snap
291d...8a16

9.3. Quite el archivo /labstratisvol/labfile1.

[root@serverb ~]# rm /labstratisvol/labfile1


rm: remove regular file '/labstratisvol/labfile1'? y

9.4. Cree un directorio /labstratisvol-snap con el comando mkdir.

[root@serverb ~]# mkdir /labstratisvol-snap

9.5. Monte la instantánea labfs-snap en /labstratisvol-snap con el comando mount.

496 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

[root@serverb ~]# mount /stratis/labpool/labfs-snap \


/labstratisvol-snap

9.6. Confirme que aún puede acceder al archivo que eliminó labfs con la instantánea
labfs-snap.

[root@serverb ~]# cat /labstratisvol-snap/labfile1


Hello World!

10. Cree el volumen de VDO labvdo con el dispositivo /dev/vdd. Establezca su tamaño lógico
en 50 GB.

10.1. Cree el volumen labvdo con el comando vdo create.

[root@serverb ~]# vdo create --name=labvdo --device=/dev/vdd --vdoLogicalSize=50G


...output omitted...

10.2.Verifique la disponibilidad del volumen labvdo con el comando vdo list.

[root@serverb ~]# vdo list


labvdo

11. Monte el volumen labvdo en /labvdovol con el sistema de archivos XFS para
que persista tras los reinicios. No olvide usar la opción de montaje x-systemd.
requires=vdo.service en /etc/fstab.

11.1. Formatee el volumen labvdo con el sistema de archivos XFS con el comando mkfs.

[root@serverb ~]# mkfs.xfs -K /dev/mapper/labvdo


...output omitted...

11.2. Use el comando udevadm para registrar el nuevo nodo de dispositivo.

[root@serverb ~]# udevadm settle

11.3. Cree un directorio /labvdovol con el comando mkdir.

[root@serverb ~]# mkdir /labvdovol

11.4. Determine el UUID de labvdo con el comando lsblk.

[root@serverb ~]# lsblk --output=UUID /dev/mapper/labvdo


UUID
ef8cce71-228a-478d-883d-5732176b39b1

11.5. Edite /etc/fstab para que labvdo se monte en el momento de arranque. Use el UUID
del volumen que determinó en el paso anterior. A continuación se muestra la línea que
debe agregar a /etc/fstab. Puede usar el comando vi /etc/fstab para editar el
archivo.

RH199-RHEL8.0-es-1-20190531 497
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

UUID=ef8c...39b1 /labvdovol xfs defaults,x-systemd.requires=vdo.service 0 0

11.6. Monte el volumen labvdo con el comando mount para confirmar que el archivo /etc/
fstab contiene las entradas correspondientes.

[root@serverb ~]# mount /labvdovol

Si el comando anterior produce algún error, revise el archivo /etc/fstab y asegúrese


de que contiene las entradas correspondientes.

12. Cree tres copias del archivo denominado /root/install.img en el volumen labvdo.
Compare las estadísticas del volumen para verificar la desduplicación y la compresión de
datos que tienen lugar en el volumen.

12.1. Vea las estadísticas iniciales y el estado del volumen con el comando vdostats.

[root@serverb ~]# vdostats --human-readable


Device Size Used Available Use% Space saving%
/dev/mapper/labvdo 5.0G 3.0G 2.0G 60% 99%

Observe que 3 GB del volumen ya están en uso porque cuando se crea, el volumen VDO
reserva 3-4 GB para sí mismo. También observe que el valor 99% en el campo Space
saving% (% de ahorro de espacio) indica que no ha creado ningún contenido hasta el
momento en el volumen, lo que contribuye a todo el espacio del volumen guardado.

12.2. Copie /root/install.img en /labvdovol/install.img.1 y verifique las


estadísticas del volumen. Puede tardar hasta un minuto para copiar el archivo.

[root@serverb ~]# cp /root/install.img /labvdovol/install.img.1


[root@serverb ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/labvdo 5.0G 3.4G 1.6G 68% 5%

Observe que el valor del campo Used (Usado) aumentó de 3,0G a 3,4G porque copió
un archivo en el volumen, y eso ocupa un poco de espacio. Además, observe que el valor
del campo Space saving% (% de ahorro de espacio) disminuyó de 99% a 5% porque
inicialmente no había contenido en el volumen, lo que contribuía al poco uso del espacio
del volumen y al gran ahorro de espacio del volumen hasta que creó un archivo allí. El
ahorro de espacio del volumen es bastante bajo porque creó una copia única del archivo
en el volumen y no hay nada que desduplicar.

12.3. Copie /root/install.img en /labvdovol/install.img.2 y verifique las


estadísticas del volumen. Puede tardar hasta un minuto para copiar el archivo.

[root@serverb ~]# cp /root/install.img /labvdovol/install.img.2


[root@serverb ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/labvdo 5.0G 3.4G 1.6G 68% 51%

Observe que el espacio del volumen utilizado no cambió. En cambio, el porcentaje


del espacio de volumen guardado aumentó, lo que demuestra que se produjo la
desduplicación de datos para reducir el consumo de espacio para las copias redundantes

498 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

del mismo archivo. El valor de Space saving% (% de ahorro de espacio) en la salida


anterior puede variar en su sistema.

12.4. Reinicie la máquina serverb.

[root@serverb ~]# systemctl reboot

NOTA
Nota: Si en un reinicio, serverb no arranca con un prompt de inicio de sesión
regular, sino que indica "Dar la contraseña root para mantenimiento (o presione
Control-D para continuar):" es probable que haya cometido un error en /etc/
fstab. Después de proporcionar la contraseña root de redhat , tendrá que volver
a montar el sistema de archivos raíz como lectura/escritura con:

[root@serverb~]# montar -o volver a montar, rw /

Verifique que /etc/fstab se configure correctamente como se especifica en


las soluciones. Preste especial atención a las opciones de montaje para las líneas
relacionadas con /labstratisvol y /labvdovol.

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

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

Finalizar
En workstation, ejecute lab advstorage-review finish para terminar este ejercicio.
Este script elimina las particiones y los archivos creados durante el ejercicio para garantizar que el
entorno quede limpio.

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

Esto concluye el trabajo de laboratorio.

RH199-RHEL8.0-es-1-20190531 499
CAPÍTULO 12 | Implementación de funciones avanzadas de almacenamiento

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

• Los volúmenes físicos, los grupos de volúmenes y los volúmenes lógicos se administran
mediante diversas herramientas, como pvcreate, vgreduce y lvextend.

• Los volúmenes lógicos se pueden formatear con un sistema de archivos o espacio de


intercambio, y se pueden montar de forma persistente.

• Se puede agregar almacenamiento adicional a los grupos de volúmenes y los volúmenes lógicos
pueden ampliarse de forma dinámica.

• La solución de administración de volúmenes Stratis implementa sistemas de archivos flexibles


que crecen dinámicamente con datos.

• La solución de administración de volúmenes Stratis es compatible con el aprovisionamiento


ligero (thin provisioning), la creación de instantáneas y el monitoreo.

• El optimizador de datos virtual (VDO) tiene como objetivo reducir el costo de almacenamiento
de datos.

• El optimizador de datos virtuales aplica la eliminación de bloque cero, la desduplicación de datos


y la compresión de datos para optimizar la eficiencia del espacio en disco.

500 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13

PROGRAMACIÓN DE TAREAS
FUTURAS
META Programar tareas para que se ejecuten
automáticamente en el futuro

OBJETIVOS • Programar comandos para que se ejecuten


en un horario de repetición usando el archivo
crontab del sistema y directorios
• Habilitar y deshabilitar los temporizadores
del sistema y configurar un temporizador que
administre archivos temporales

SECCIONES • Programación de trabajos del sistema


recurrentes (y ejercicio guiado)
• Administración de archivos temporales (y
ejercicio guiado)

TRABAJO DE Programación de tareas futuras


LABORATORIO

RH199-RHEL8.0-es-1-20190531 501
CAPÍTULO 13 | Programación de tareas futuras

PROGRAMACIÓN DE TRABAJOS DEL


SISTEMA RECURRENTES

OBJETIVOS
Después de finalizar esta sesión, debe programar comandos para que se ejecuten en una
programación de repetición usando el archivo crontab y directorios del sistema.

DESCRIPCIÓN DE TRABAJOS DEL SISTEMA


RECURRENTES
Los administradores de sistemas a menudo necesitan ejecutar trabajos recurrentes. La mejor
práctica es ejecutar estos trabajos desde cuentas del sistema en lugar de desde cuentas de
usuario. Es decir, no programe para ejecutar estos trabajos usando el comando crontab, pero en
su lugar usa archivos crontab en todo el sistema. Las entradas de trabajo en los archivos crontab
en todo el sistema son similares a los de las entradas de crontab de los usuarios, excepto que los
archivos crontab en todo el sistema tienen un campo adicional antes del campo de comando; el
usuario bajo cuya autoridad debe ejecutarse el comando.

El archivo /etc/crontab tiene un diagrama de sintaxis útil en los comentarios incluidos.

# For details see man 4 crontabs

# Example of job definition:


# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue ...
# | | | | |
# * * * * * user-name command to be executed

Los trabajos recurrentes del sistema se definen en dos ubicaciones: el archivo /etc/crontab
y los archivos dentro del directorio /etc/cron.d/. Siempre debe crear sus archivos crontab
personalizados bajo el directorio /etc/cron.d para programar trabajos recurrentes del sistema.
Coloque el archivo crontab personalizado en /etc/cron.d para evitar que se sobrescriba
si se produce alguna actualización del paquete al proveedor de /etc/crontab, que puede
sobrescribir los contenidos existentes en /etc/crontab. Los paquetes que requieren trabajos
recurrentes del sistema colocan sus archivos crontab en /etc/cron.d/ que contiene las
entradas de trabajo. Los administradores también usan esta ubicación para agrupar trabajos
relacionados en un solo archivo.

El sistema crontab también incluye repositorios para scripts que necesitan ejecutarse cada hora,
día, semana y mes. Estos repositorios son directorios llamados /etc/cron.hourly/, /etc/
cron.daily/, /etc/cron.weekly/ y /etc/cron.monthly/. Una vez más, estos directorios
contienen scripts de shell ejecutables, no archivos crontab.

502 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

IMPORTANTE
Recuerde hacer que todos los scripts que coloque en estos directorios sean
ejecutables. Si un script no es ejecutable, no se ejecutará. Para hacer un script
ejecutable, use el chmod +x script_name.

Un comando llamado run-parts desde el archivo /etc/cron.d/0hourly ejecuta los scripts /


etc/cron.hourly/*. El comando run-parts también ejecuta los trabajos diarios, semanales
y mensuales también, pero desde un archivo de configuración diferente denominado /etc/
anacrontab.

NOTA
En el pasado, un servicio separado llamado anacron se usaba para manejar el
archivo /etc/anacrontab, pero en Red Hat Enterprise Linux 7 y posterior, el
servicio crond regular analiza este archivo.

El propósito de /etc/anacrontab es garantizar que los trabajos importantes siempre se


ejecuten, y que no se omitan accidentalmente porque el sistema se apagó o quedó inactivo
cuando el trabajo debería haberse ejecutado. Por ejemplo, si un trabajo del sistema que se ejecuta
diariamente no se ejecutó la última vez que venció debido a que el sistema se estaba reiniciando,
el trabajo se ejecuta cuando el sistema está listo. Sin embargo, puede haber una demora de varios
minutos para comenzar el trabajo según el valor del parámetro Delay in minutes especificado
para el trabajo en /etc/anacrontab.

Hay diferentes archivos en /var/spool/anacron/ para cada uno de los trabajos diarios,
semanales y mensuales para determinar si un trabajo en particular se ha ejecutado. Cuando crond
comienza un trabajo desde /etc/anacrontab, actualiza los sellos de hora de esos archivos.
El mismo sello de hora se usa para determinar cuándo se ejecutó un trabajo por última vez. La
sintaxis de /etc/anacrontab es diferente a la de los archivos de configuración de crontab
regulares. Contiene exactamente cuatro campos por línea, como se detalla a continuación.

• Period in days (Período en días)

El intervalo en días para el trabajo que se ejecuta en una programación de repetición. Este
campo acepta un entero o una macro como su valor. Por ejemplo, la macro @daily es
equivalente al entero 1, lo que significa que el trabajo se ejecuta diariamente. De manera
similar, la macro @weekly es equivalente al entero 7, lo que significa que el trabajo se ejecuta
diariamente.

• Delay in minutes (Demora en minutos)

Cantidad de tiempo que el daemon crond debe esperar antes de iniciar este trabajo.

• Job identifier (Identificador del trabajo)

El nombre único con se identifica en los mensajes de registro.

• Comando (Comando)

El comando que se ejecutará.

El archivo /etc/anacrontab también contiene declaraciones variables del entorno que usan
la sintaxis NAME=value. De especial interés es la variable START_HOURS_RANGE, que especifica
el intervalo de tiempo para que se ejecuten los trabajos. Los trabajos no se inician fuera de este

RH199-RHEL8.0-es-1-20190531 503
CAPÍTULO 13 | Programación de tareas futuras

rango. Si en un día en particular, un trabajo no se ejecuta dentro de este intervalo de tiempo, el


trabajo tiene que esperar hasta el día siguiente para su ejecución.

PRESENTACIÓN DEL TEMPORIZADOR SYSTEMD


Con el advenimiento de systemd en Red Hat Enterprise Linux 7, una nueva función de
programación ya está disponible: unidades de temporizador systemd. Una unidad de
temporizador systemd activa otra unidad de un tipo diferente (como un servicio) cuyo nombre de
unidad coincide con el nombre de la unidad del temporizador. La unidad del temporizador permite
la activación basada en el temporizador de otras unidades. Para facilitar la depuración, systemd
registra los eventos del temporizador en los diarios (journals) del sistema.

Unidad de temporizador de muestra


El paquete sysstat proporciona una unidad de temporizador systemd llamada sysstat-
collect.timer para recopilar estadísticas del sistema cada 10 minutos. En la siguiente
salida, se muestran las líneas de configuración de /usr/lib/systemd/system/sysstat-
collect.timer.

...output omitted...
[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service

El parámetro OnCalendar=*:00/10 significa que esta unidad de temporizador activa la


unidad correspondiente (sysstat-collect.service) cada 10 minutos, Sin embargo,
puede especificar intervalos de tiempo más complejos. Por ejemplo, un valor de 2019-03-
* 12:35,37,39:16 frente al parámetro OnCalendar hace que la unidad del temporizador
active la unidad de servicio correspondiente en 12:35:16, 12:37:16 y 12:39:16 todos
los días durante todo el mes de marzo de 2019. También puede especificar temporizadores
relativos usando parámetros tal como OnUnitActiveSec. Por ejemplo, la opción
OnUnitActiveSec=15min hace que la unidad del temporizador desencadena la unidad
correspondiente 15 minutos después de la última vez que la unidad del temporizador activó su
unidad correspondiente.

IMPORTANTE
No modifique ningún archivo de configuración de la unidad bajo el directorio /usr/
lib/systemd/system porque cualquier actualización al paquete del proveedor
del archivo de configuración puede anular los cambios de configuración que realizó
en ese archivo. Por lo tanto, haga una copia del archivo de configuración de la
unidad que desea cambiar bajo el directorio /etc/systemd/system y, luego,
modifique la copia para que los cambios de configuración que realice con respecto
a una unidad no se anulen con ninguna actualización del paquete del proveedor.
Si existen dos archivos con el mismo nombre bajo los directorios /usr/lib/
systemd/system y /etc/systemd/system, systemd analiza el archivo bajo el
directorio /etc/systemd/system.

504 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

Después de cambiar el archivo de configuración de la unidad del temporizador, use el comando


systemctl daemon-reload para asegurar que systemd tenga conocimiento de los cambios.
Este comando recarga la configuración del administrador de systemd.

[root@host ~]# systemctl daemon-reload

Después de recargar la configuración del administrador systemd, use el siguiente comando


systemctl para activar la unidad del temporizador.

[root@host ~]# systemctl enable --now <unitname>.timer

REFERENCIAS
Páginas del manual crontab(5),anacron(8),anacrontab(5), systemd.time(7),
systemd.timer(5) y crond(8)

RH199-RHEL8.0-es-1-20190531 505
CAPÍTULO 13 | Programación de tareas futuras

EJERCICIO GUIADO

PROGRAMACIÓN DE TRABAJOS DEL


SISTEMA RECURRENTES
En este ejercicio, programará comandos para que se ejecuten en varios horarios agregando
archivos de configuración a los directorios crontab del sistema.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Programar un trabajo del sistema recurrente para contar el número de usuarios activos

• Actualizar la unidad de temporizador systemd que recopila los datos de actividad del
sistema.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab scheduling-system start para comenzar el ejercicio.


Este script asegura que el entorno esté limpio y configurado correctamente.

[student@workstation ~]$ lab scheduling-system start

1. Desde workstation, abra una sesión de SSH en servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Use el comando sudo -i para cambiar a la cuenta del usuario root.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

3. Programe un trabajo del sistema recurrente que genere un mensaje de registro que indique
la cantidad de usuarios activos actualmente en el sistema. El trabajo debe ejecutarse
diariamente. Puede usar el comando w -h | wc -l para recuperar el número de usuarios
actualmente activos en el sistema. También, use el comando logger para generar el
mensaje de registro.

3.1. Cree un archivo de script llamado /etc/cron.daily/usercount con el siguiente


contenido. Puedes usar el comando vi /etc/cron.daily/usercount para crear el
archivo de script.

506 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

#!/bin/bash
USERCOUNT=$(w -h | wc -l)
logger "There are currently ${USERCOUNT} active users"

3.2. Use el comando chmod para habilitar el permiso ejecutable (x) en /etc/
cron.daily/usercount.

[root@servera ~]# chmod +x /etc/cron.daily/usercount

4. El paquete sysstat proporciona las unidades systemd denominadas sysstat-


collect.timer y sysstat-collect.service. La unidad del temporizador
desencadena la unidad de servicio cada 10 minutos para recopilar datos de actividad
del sistema usando el script de shell llamado /usr/lib64/sa/sa1. Asegúrese de
que el paquete sysstat se instale y cambie el archivo de configuración de la unidad del
temporizador para que recopile los datos de actividad del sistema cada dos minutos.

4.1. Use el comando yum para instalar el paquete sysstat.

[root@servera ~]# yum install sysstat


...output omitted...
Is this ok [y/N]: y
...output omitted...
Installed:
sysstat-11.7.3-2.el8.x86_64 lm_sensors-
libs-3.4.0-17.20180522git70f7e08.el8.x86_64

Complete!

4.2. Copie /usr/lib/systemd/system/sysstat-collect.timer en /etc/


systemd/system/sysstat-collect.timer.

[root@servera ~]# cp /usr/lib/systemd/system/sysstat-collect.timer \


/etc/systemd/system/sysstat-collect.timer

IMPORTANTE
No debe editar archivos bajo el directorio /usr/lib/systemd. Con systemd,
puede copiar el archivo de la unidad al directorio /etc/systemd/system y editar
esa copia. El proceso de systemd analiza su copia personalizada en lugar del
archivo bajo el directorio /usr/lib/systemd.

4.3. Edite /etc/systemd/system/sysstat-collect.timer para que la unidad del


temporizador funcione cada dos minutos. Además, reemplace todas las apariciones
de la cadena 10 minutes con 2 minutes en todo el archivo de configuración
de la unidad, incluidos los de las líneas comentadas. Puede usar el comando vi /
etc/systemd/system/sysstat-collect.timer para editar el archivo de
configuración.

...
# Activates activity collector every 2 minutes

RH199-RHEL8.0-es-1-20190531 507
CAPÍTULO 13 | Programación de tareas futuras

[Unit]
Description=Run system activity accounting tool every 2 minutes

[Timer]
OnCalendar=*:00/02

[Install]
WantedBy=sysstat.service

Los cambios anteriores causan que la unidad sysstat-collect. timer


desencadene la unidad de sysstat-collect.service cada dos minutos, que
ejecuta /usr/lib64/sa/sa1 1 1. La ejecución de /usr/lib64/sa/sa1 1 1
recopila los datos de actividad del sistema en un archivo binario bajo el directorio /
var/log/sa.

4.4. Use el comando systemctl daemon-reload para asegurarse de que systemd


conozca los cambios.

[root@servera ~]# systemctl daemon-reload

4.5. Use el comando systemctl para activar la unidad del temporizador sysstat-
collect.timer.

[root@servera ~]# systemctl enable --now sysstat-collect.timer

4.6. Use el comando while para esperar hasta que el archivo binario se cree bajo el
directorio /var/log/sa. Espere a que regrese su prompt de shell.

[root@servera ~]# while [ $(ls /var/log/sa | wc -l) -eq 0 ]; do sleep 1s; done

En el comando while de arriba, el ls /var/log/sa | wc -l devuelve un 0 si el


archivo no existe y un 1 si existe. El while determina si es igual a 0 y si es así, ingresa
al bucle, que se detiene por un segundo. Cuando el archivo existe, el bucle while se
cierra.

4.7. Use el comando ls -l para verificar que el archivo binario bajo el directorio /var/
log/sa se modificó en los últimos dos minutos.

[root@servera ~]# ls -l /var/log/sa


total 8
-rw-r--r--. 1 root root 5156 Mar 25 12:34 sa25
[root@servera ~]# date
Mon Mar 25 12:35:32 +07 2019

La salida del comando anterior puede variar en su sistema.

4.8. Salga de la shell del usuario root.

[root@servera ~]# exit


logout
[student@servera ~]$

4.9. Cierre sesión en servera.

508 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab scheduling-system finish para terminar este ejercicio. Este
script elimina los archivos creados durante el ejercicio para garantizar que el entorno quede limpio.

[student@workstation ~]$ lab scheduling-system finish

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 509
CAPÍTULO 13 | Programación de tareas futuras

ADMINISTRACIÓN DE ARCHIVOS
TEMPORALES

OBJETIVOS
Después de finalizar esta sesión, debe ser capaz de habilitar y deshabilitar los temporizadores de
systemd y configurar un temporizador que administre archivos temporales.

ADMINISTRACIÓN DE ARCHIVOS TEMPORALES


Un sistema moderno requiere una gran cantidad de archivos y directorios temporales. Algunas
aplicaciones (y usuarios) usan el directorio /tmp para almacenar datos temporales, mientras que
otros usan una ubicación específica de la tarea como daemon y directorios volátiles específicos
del usuario bajo /run. En este contexto, volátil significa que el sistema de archivos que almacena
estos archivos solo existe en la memoria. Cuando el sistema vuelva a arrancar o pierda potencia,
todo el contenido del almacenamiento volátil desaparecerá.

Para mantener un sistema ejecutándose de forma ordenada, es necesario que estos directorios
y archivos se creen cuando no existen, dado que los daemons y scripts podrían contar con que
estos estén allí, y que los archivos antiguos se purguen de modo que no puedan llenar espacio en
el disco ni proporcionar información errónea.

Red Hat Enterprise Linux 7 y posteriores incluyen una nueva herramienta llamada systemd-


tmpfiles, que proporciona un método estructurado y configurable para administrar directorios y
archivos temporales.

Cuando systemd inicia un sistema, una de las primeras unidades de servicio iniciadas es
systemd-tmpfiles-setup. Este servicio ejecuta el comando systemd-tmpfiles --create
--remove. Este comando lee los archivos de configuración de /usr/lib/tmpfiles.d/
*.conf, /run/tmpfiles.d/*.conf y /etc/tmpfiles.d/*.conf. Todos los archivos y
directorios marcados para la eliminación en esos archivos de configuración se eliminarán, y todos
los archivos y directorios marcados para la creación (o arreglos de permisos) se crearán con los
permisos correctos si es necesario.

Limpieza de archivos temporales con un temporizador de


systemd
Para asegurar que los sistemas de larga duración no llenan sus discos con datos obsoletos, una
unidad de temporizador systemd llamada systemd-tmpfiles-clean.timer desencadena
systemd-tmpfiles-clean.service en un intervalo regular, que ejecuta el comando
systemd-tmpfiles --clean.

Los archivos de configuración de la unidad del temporizador systemd tienen una sección
[Timer] que indica con qué frecuencia debe iniciarse el servicio con el mismo nombre.

Use el siguiente comando systemctl para ver los contenidos del archivo de configuración de la
unidad systemd-tmpfiles-clean.timer.

[user@host ~]$ systemctl cat systemd-tmpfiles-clean.timer


# /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
# SPDX-License-Identifier: LGPL-2.1+
#

510 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

# This file is part of systemd.


#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

En la configuración anterior, el parámetro OnBootSec=15min indica que la unidad de servicio


llamada systemd-tmpfiles-clean.service se desencadena 15 minutos después de que
el sistema se haya iniciado. El parámetro OnUnitActiveSec=1d indica que cualquier otro
desencadenador para la unidad de servicio systemd-tmpfiles-clean.service ocurre 24
horas después de que la unidad de servicio se activó por última vez.

En función de sus necesidades, puede cambiar los parámetros en el archivo de configuración de


la unidad del temporizador systemd-tmpfiles-clean.timer. Por ejemplo, el valor 30 min
para el parámetro OnUnitActiveSec desencadena la unidad de servicio systemd-tmpfiles-
clean.service 30 minutos después de la última activación de la unidad de servicio. Como
resultado, systemd-tmpfiles-clean.service se activa cada 30 minutos después de que los
cambios surtan efecto.

Después de cambiar el archivo de configuración de la unidad del temporizador, use el comando


systemctl daemon-reload para asegurar que systemd tenga conocimiento de los cambios.
Este comando recarga la configuración del administrador systemd.

[root@host ~]# systemctl daemon-reload

Después de recargar la configuración del administrador systemd, use el siguiente comando


systemctl para activar la unidad systemd-tmpfiles-clean.timer.

[root@host ~]# systemctl enable --now systemd-tmpfiles-clean.timer

Limpieza de archivos temporales manualmente


El comando systemd-tmpfiles --clean analiza los mismos archivos de configuración que el
comando systemd-tmpfiles --create, pero en lugar de crear archivos y directorios, purgará
todos los archivos a los que no se haya accedido, y que no hayan sido modificados ni cambiados
en una fecha anterior a la antigüedad máxima definida en el archivo de configuración.

El formato de los archivos de configuración para systemd-tmpfiles se detalla en la página del


manual tmpfiles.d(5). La sintaxis básica consta de siete columnas: Tipo, Ruta, Modo, UID, GID,
Edad y Argumento. Tipo se refiere a la acción que debe realizar systemd-tmpfiles; por ejemplo,
d ara crear un directorio si no existe aún, o Z para restaurar recursivamente contextos de SELinux y
propiedad y permisos de archivos.

A continuación, se dan algunos ejemplos con explicaciones:

RH199-RHEL8.0-es-1-20190531 511
CAPÍTULO 13 | Programación de tareas futuras

d /run/systemd/seats 0755 root root -

Cuando cree archivos y directorios, cree el directorio /run/systemd/seats si aún no existe,


propiedad del usuario root y el grupo root, con permisos establecidos para rwxr-xr-x. Este
directorio no se purgará automáticamente.

D /home/student 0700 student student 1d

Cree el directorio /home/student si aún no existe. Si existe, vacíe todos los contenidos. Cuando
systemd-tmpfiles --clean se ejecute, elimine todos los archivos a los que no se haya
accedido, ni se hayan modificado ni cambiado en más de un día.

L /run/fstablink - root root - /etc/fstab

Cree el enlace simbólico /run/fstablink que apunte a /etc/fstab. Nunca purgue


automáticamente esta línea.

Precedencia de archivos de configuración


Los archivos de configuración pueden encontrarse en tres lugares:

• /etc/tmpfiles.d/*.conf

• /run/tmpfiles.d/*.conf

• /usr/lib/tmpfiles.d/*.conf

Los archivos en /usr/lib/tmpfiles.d/ son proporcionados por los paquetes de RPM


relevantes, y no debe editarlos. Los archivos bajo /run/tmpfiles.d/ son archivos volátiles,
normalmente usados por daemons para administrar sus propios archivos temporales de tiempo de
ejecución. Los archivos bajo /etc/tmpfiles.d/ están pensados para que los administradores
configuren ubicaciones temporales personalizadas y anulen los valores predeterminados provistos
por el proveedor.

Si un archivo en /run/tmpfiles.d/ tiene el mismo nombre de archivo que un archivo en /


usr/lib/tmpfiles.d/, se usa el archivo en /run/tmpfiles.d/. Si un archivo en /etc/
tmpfiles.d/ tiene el mismo nombre de archivo que un archivo en /run/tmpfiles.d/ o /
usr/lib/tmpfiles.d/, se usa el archivo en /etc/tmpfiles.d/.

Dadas estas reglas de precedencia, puede reemplazar fácilmente la configuración proporcionada


por el proveedor si copia el archivo relevante en /etc/tmpfiles.d/ y, luego, lo edita. Trabajar
de esta manera garantiza que la configuración proporcionada por el administrador se puede
administrar fácilmente desde un sistema de administración de configuración central, y que no se
sobrescriba por una actualización de un paquete.

NOTA
Cuando evalúe configuraciones nuevas o modificadas, puede ser útil solo aplicar los
comandos de un archivo de configuración. Esto se puede lograr si se especifica el
nombre del archivo de configuración en la línea de comandos.

512 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

REFERENCIAS
Páginas del manual: systemd-tmpfiles(8), tmpfiles.d(5), stat(1), stat(2) y
systemd.timer(5).

RH199-RHEL8.0-es-1-20190531 513
CAPÍTULO 13 | Programación de tareas futuras

EJERCICIO GUIADO

ADMINISTRACIÓN DE ARCHIVOS
TEMPORALES
En este ejercicio, configurará systemd-tmpfiles para cambiar la rapidez con la que
elimina los archivos temporales de /tmp, y también para purgar periódicamente los archivos
de otro directorio.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Configurar systemd-tmpfiles para eliminar archivos temporales no usados de /tmp

• Configurar systemd-tmpfiles para purgar periódicamente archivos de otro directorio

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab scheduling-tempfiles start para comenzar el


ejercicio. Este script crea los archivos necesarios y asegura la configuración correcta del
entorno.

[student@workstation ~]$ lab scheduling-tempfiles start

1. Desde workstation, abra una sesión de SSH en servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

2. Configure systemd-tmpfiles para limpiar el directorio /tmp para que no contenga


archivos que no se hayan usado en los últimos cinco días. Asegúrese de que la
configuración no se sobrescriba con ninguna actualización del paquete.

2.1. Use el comando sudo -i para cambiar al usuario root.

[student@servera ~]$ sudo -i


[sudo] password for student: student
[root@servera ~]#

2.2. Copie /usr/lib/tmpfiles.d/tmp.conf en /etc/tmpfiles.d/tmp.conf.

[root@servera ~]# cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/tmp.conf

2.3. Busque la línea de configuración en /etc/tmpfiles.d/tmp.conf que se aplica


al directorio /tmp. Reemplace la edad existente de los archivos temporales en esa

514 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

línea de configuración con la nueva edad de 5 días. Elimine todas las otras líneas del
archivo, incluidas las comentadas. Puede usar el comando vim /etc/tmpfiles.d/
tmp.conf para editar el archivo de configuración. El archivo /etc/tmpfiles.d/
tmp.conf debe aparecer de la siguiente manera:

q /tmp 1777 root root 5d

La configuración anterior hace que systemd-tmpfiles asegure que el directorio /


tmp exista con los permisos octales establecidos en 1777. Tanto el usuario propietario
como el grupo de /tmp deben ser root. El directorio /tmp no debe contener los
archivos temporales que no se han usado en los últimos cinco días.

2.4. Use el comando systemd-tmpfiles --clean para verificar que el archivo /etc/
tmpfiles.d/tmp.conf contenga la configuración correcta.

[root@servera ~]# systemd-tmpfiles --clean /etc/tmpfiles.d/tmp.conf

Debido a que el comando anterior no devolvió ningún error, confirma que los ajustes de
configuración son correctos.

3. Agregue una nueva configuración que asegure que el directorio /run/momentary exista
con la propiedad del usuario y del grupo establecida en root. Los permisos octales para el
directorio deben ser 0700. La configuración debe purgar los archivos de este directorio que
no se hayan usado en los últimos 30 segundos.

3.1. Cree el archivo llamado /etc/tmpfiles.d/momentary.conf con el siguiente


contenido. Puede usar el comando vim /etc/tmpfiles.d/momentary.conf para
crear el archivo de configuración.

d /run/momentary 0700 root root 30s

La configuración anterior hace que systemd-tmpfiles asegure que el directorio /


run/momentary exista con sus permisos octales establecidos en 0700. El usuario
propietario y el grupo de /run/momentary deben ser root. Los archivos de este
directorio que no se hayan usado en los últimos 30 segundos se den purgar.

3.2. Use el comando systemd-tmpfiles --create para verificar que el archivo /etc/
tmpfiles.d/momentary.conf contenga la configuración adecuada. El comando
crea el directorio /run/momentary si aún no existe.

[root@servera ~]# systemd-tmpfiles --create /etc/tmpfiles.d/momentary.conf

Debido a que el comando anterior no devolvió ningún error, confirma que los ajustes de
configuración son correctos.

3.3. Use el comando ls para verificar que el directorio /run/momentary se crea con los
permisos, el propietario y el propietario del grupo adecuados.

[root@servera ~]# ls -ld /run/momentary


drwx------. 2 root root 40 Mar 21 16:39 /run/momentary

Tenga en cuenta que el conjunto de permisos octales de /run/momentary es 0700 y


que la propiedad del usuario y del grupo se establece en root.

RH199-RHEL8.0-es-1-20190531 515
CAPÍTULO 13 | Programación de tareas futuras

4. Verifique que cualquier archivo bajo el directorio /run/momentary, no usado en los


últimos 30 segundos, se elimina, en función de la configuración de systemd-tmpfiles
para el directorio.

4.1. Use el comando touch para crear un archivo con el nombre /run/momentary/
testfile.

[root@servera ~]# touch /run/momentary/testfile

4.2. Use el comando sleep para configurar su prompt de shell para que no regrese durante
30 segundos.

[root@servera ~]# sleep 30

4.3. Después de que vuelva a aparecer el prompt de shell, use el comando systemd-
tmpfiles --clean para limpiar archivos obsoletos de /run/momentary, sobre la
base de la regla mencionada en /etc/tmpfiles.d/momentary.conf.

[root@servera ~]# systemd-tmpfiles --clean /etc/tmpfiles.d/momentary.conf

El comando anterior elimina /run/momentary/testfile porque el archivo no se


usó durante 30 segundos y debería haberse eliminado según la regla mencionada en /
etc/tmpfiles.d/momentary.conf.

4.4. Use el comando ls -l para verificar que el archivo /run/momentary/testfile no


exista.

[root@servera ~]# ls -l /run/momentary/testfile


ls: cannot access '/run/momentary/testfile': No such file or directory

4.5. Salga de la shell del usuario root para volver al usuario student.

[root@servera ~]# exit


logout
[student@servera ~]$

4.6. Cierre sesión en servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

Finalizar
En workstation, ejecute lab scheduling-tempfiles finish para terminar este ejercicio.
Este script elimina los archivos creados durante el ejercicio para garantizar que el entorno quede
limpio.

[student@workstation ~]$ lab scheduling-tempfiles finish

516 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

Esto concluye el ejercicio guiado.

RH199-RHEL8.0-es-1-20190531 517
CAPÍTULO 13 | Programación de tareas futuras

CUESTIONARIO

PROGRAMACIÓN DE TAREAS FUTURAS


Elija las respuestas correctas para las siguientes preguntas.

1. ¿Qué comando muestra todos los trabajos de usuario que actualmente están
programados para ejecutarse como trabajos diferidos?
a. atq
b. atrm
c. at -c
d. at --display

2. ¿Qué comando elimina el trabajo de usuario diferido que tiene el número de trabajo 5?
a. at -c 5
b. atrm 5
c. at 5
d. at --delete 5

3. ¿Qué comando muestra todos los trabajos de usuario recurrentes programados para el
actual usuario que inició sesión actualmente?
a. crontab -r
b. crontab -l
c. crontab -u
d. crontab -V

4. ¿Qué formato de trabajo ejecuta /usr/local/bin/daily_backup cada hora desde


las 9:00 a. m. a las 6:00 p. m. todos los días de lunes a viernes?
a. 00 ***Mon-Fri/usr/local/bin/daily_backup
b. * */9 * * Mon-Fri /usr/local/bin/daily_backup
c. 00 */18 * * * /usr/local/bin/daily_backup
d. 00 09-18 * * Mon-Fri /usr/local/bin/daily_backup

5. ¿Qué directorio contiene los scripts de shell destinados a ejecutarse diariamente?


a. /etc/cron.d
b. /etc/cron.hourly
c. /etc/cron.daily
d. /etc/cron.weekly

518 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

6. ¿Qué archivo de configuración define la configuración de los trabajos del sistema que
se ejecutan de forma diaria, semanal y mensual?
a. /etc/crontab
b. /etc/anacrontab
c. /etc/inittab
d. /etc/sysconfig/crond

7. ¿Qué unidad systemd desencadena regularmente la limpieza de los archivos


temporales?
a. systemd-tmpfiles-clean.timer
b. systemd-tmpfiles-clean.service
c. dnf-makecache.timer
d. unbound-anchor.timer

RH199-RHEL8.0-es-1-20190531 519
CAPÍTULO 13 | Programación de tareas futuras

SOLUCIÓN

PROGRAMACIÓN DE TAREAS FUTURAS


Elija las respuestas correctas para las siguientes preguntas.

1. ¿Qué comando muestra todos los trabajos de usuario que actualmente están
programados para ejecutarse como trabajos diferidos?
a. atq
b. atrm
c. at -c
d. at --display

2. ¿Qué comando elimina el trabajo de usuario diferido que tiene el número de trabajo 5?
a. at -c 5
b. atrm 5
c. at 5
d. at --delete 5

3. ¿Qué comando muestra todos los trabajos de usuario recurrentes programados para el
actual usuario que inició sesión actualmente?
a. crontab -r
b. crontab -l
c. crontab -u
d. crontab -V

4. ¿Qué formato de trabajo ejecuta /usr/local/bin/daily_backup cada hora desde


las 9:00 a. m. a las 6:00 p. m. todos los días de lunes a viernes?
a. 00 ***Mon-Fri/usr/local/bin/daily_backup
b. * */9 * * Mon-Fri /usr/local/bin/daily_backup
c. 00 */18 * * * /usr/local/bin/daily_backup
d. 00 09-18 * * Mon-Fri /usr/local/bin/daily_backup

5. ¿Qué directorio contiene los scripts de shell destinados a ejecutarse diariamente?


a. /etc/cron.d
b. /etc/cron.hourly
c. /etc/cron.daily
d. /etc/cron.weekly

520 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 13 | Programación de tareas futuras

6. ¿Qué archivo de configuración define la configuración de los trabajos del sistema que
se ejecutan de forma diaria, semanal y mensual?
a. /etc/crontab
b. /etc/anacrontab
c. /etc/inittab
d. /etc/sysconfig/crond

7. ¿Qué unidad systemd desencadena regularmente la limpieza de los archivos


temporales?
a. systemd-tmpfiles-clean.timer
b. systemd-tmpfiles-clean.service
c. dnf-makecache.timer
d. unbound-anchor.timer

RH199-RHEL8.0-es-1-20190531 521
CAPÍTULO 13 | Programación de tareas futuras

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

• Los trabajos recurrentes del sistema ejecutan tareas en una programación de repetición.

• Los trabajos recurrentes del sistema realizan tareas administrativas en una programación de
repetición que tiene impacto en todo el sistema.

• Las unidades de temporizadores de systemd pueden ejecutar trabajos recurrentes.

522 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14

ACCESO AL
ALMACENAMIENTO
CONECTADO A LA RED
META Acceder al almacenamiento conectado a la red con
el protocolo NFS.

OBJETIVOS • Montar, usar y desmontar una exportación


de NFS desde la línea de comandos y en el
arranque.
• Configurar el automatizador para montar
automáticamente un sistema de archivos NFS
a pedido y desmontarlo cuando ya no esté en
uso.

SECCIONES • Montaje de almacenamiento conectado a la red


con NFS (y ejercicio guiado)
• Montaje automático de almacenamiento
conectado a la red (y ejercicio guiado)

TRABAJO DE Acceso al almacenamiento conectado a la red


LABORATORIO

RH199-RHEL8.0-es-1-20190531 523
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

MONTAJE DE ALMACENAMIENTO
CONECTADO A LA RED CON NFS

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Identificar la información de uso compartido de NFS.

• Crear un directorio para usarlo como punto de montaje.

• Montar un recurso compartido de NFS con el comando mount o configurando el archivo /etc/
fstab.

• Desmontar un recurso compartido de NFS con el comando umount.

• Configurar un cliente NFS para usar NFSv4 con la nueva herramienta nfsconf.

MONTAJE Y DESMONTAJE DE RECURSOS


COMPARTIDOS DE NFS
NFS, el sistema de archivos de red, es un protocolo estándar de Internet usado por Linux, UNIX
y sistemas operativos similares como su sistema de archivos de red nativo. Es una norma abierta
que aún se mejora activamente y que admite características nativas de sistemas de archivos y
permisos de Linux.

La versión predeterminada de NFS en Red Hat Enterprise Linux 8 es 4.2. Se admiten las versiones


principales de NFSv4 y NFSv3. NFSv2 ya no se admite. NFSv4 usa solo el protocolo TCP para
comunicarse con el servidor; las versiones anteriores de NFS podían usar TCP o UDP.

Los servidores NFS exportan recursos compartidos (directorios). Los clientes NFS montan un
recurso compartido exportado a un punto de montaje local (directorio), que debe existir. Los
recursos compartidos de NFS se pueden montar de diversas maneras:

• Manualmente, con el comando mount.

• Automáticamente en el momento de arranque con las entradas /etc/fstab.

• A pedido, con el servicio autofs o la función systemd.automount.

Montaje de recursos compartidos de NFS


Para montar un recurso compartido de NFS, siga estos tres pasos:

1. Identificar: El administrador del sistema cliente de NFS puede identificar los recursos
compartidos de NFS disponibles de diversas maneras:

El administrador del servidor NFS puede proporcionar detalles de exportación, incluidos los
requisitos de seguridad.

Como alternativa, el administrador del cliente puede identificar los recursos compartidos de
NFSv4 al montar el directorio root del servidor NFS y al explorar los directorios exportados.
Haga esto como usuario root. El acceso a recursos compartidos que usan Kerberos será
denegado, pero el nombre del recurso compartido (directorio) estará visible. Otros directorios
compartidos se podrán explorar.

524 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[user@host ~]$ sudo mkdir mountpoint


[user@host ~]$ sudo mount serverb:/ mountpoint
[user@host ~]$ sudo ls mountpoint

2. Punto de montaje: Use mkdir para crear un punto de montaje en una ubicación adecuada.

[user@host ~]$ mkdir -p mountpoint

3. Montar: Al igual que con los sistemas de archivos en particiones, los recursos compartidos
de NFS deben montarse para estar disponibles. Para montar un recurso compartido de NFS,
seleccione una de las siguientes opciones. En cada caso, debe ejecutar estos comandos como
superusuario, ya sea iniciando sesión como root o con el comando sudo.

• Montar temporalmente: monte el recurso compartido de NFS con el comando mount:

[user@host ~]$ sudo mount -t nfs -o rw,sync serverb:/share mountpoint

La opción -t nfs es el tipo de sistema de archivos para recursos compartidos de NFS


(no es estrictamente obligatorio; se muestra para ofrecer una visión completa). La opción
-o sync indica a mount sincronizar inmediatamente las operaciones de escritura con el
servidor NFS (el valor predeterminado es asincrónico).

Este comando monta el recurso compartido de forma inmediata, pero no persistente; la


próxima vez que se inicie el sistema, este recurso compartido de NFS no estará disponible.
Esto es útil para acceder una sola vez a los datos. También es útil para la prueba de montaje
de un recurso compartido de NFS antes de que el recurso compartido esté disponible de
forma persistente.

• Montar de forma persistente: para asegurarse de que el recurso compartido de NFS se


monte en el momento del arranque, edite el archivo /etc/fstab para agregar la entrada
de montaje.

[user@host ~]$ sudo vim /etc/fstab


...
serverb:/share /mountpoint nfs rw,soft 0 0

Luego, monte el recurso compartido de NFS:

[user@host ~]$ sudo mount /mountpoint

Debido a que el servidor de NFS y las opciones de montaje se encuentran en el archivo


/etc/fstab por el servicio de cliente NFS, no es necesario especificarlos en la línea de
comandos.

Desmontaje de recursos compartidos de NFS


Como el usuario root (o con sudo), desmonte un recurso compartido de NFS con el comando
umount.

[user@host ~]$ sudo umount mountpoint

RH199-RHEL8.0-es-1-20190531 525
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

NOTA
Desmontar un recurso compartido no elimina su entrada /etc/fstab. A menos
que elimine o comente la entrada, el recurso compartido de NFS se volverá a
montar en el próximo inicio del sistema o cuando se reinicie el servicio de cliente
NFS.

LA HERRAMIENTA nfsconf
Red Hat Enterprise Linux 8 presenta la herramienta nfsconf para gestionar los archivos de
configuración del cliente y servidor de NFS con NFSv4 y NFSv3. Configure la herramienta
nfsconf con /etc/nfs.conf(el archivo /etc/sysconfig/nfs de versiones anteriores del
sistema operativo está en desuso ahora). Use la herramienta nfsconf para obtener, configurar o
modificar parámetros de configuración de NFS.

El archivo de configuración /etc/nfs.conf se compone de varias secciones que comienzan con


una palabra clave entre corchetes ([palabra clave]) con las asignaciones de valor dentro de
la sección. Para un servidor NFS, configure la sección [nfsd]. Una asignación de valor o clave
se compone de un nombre para el valor, un signo igual y una configuración para el valor, como
vers4.2=y . Las líneas que comienzan con "#" o ";" se ignoran, al igual que las líneas en blanco.

[user@host ~]$ sudo cat /etc/nfs.conf


...output omitted...
[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# tcp=y
# vers2=n
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
# rdma=n
#
...output omitted...

De manera predeterminada, los pares clave/valor de la sección [nfsd] están comentados. Sin
embargo, los comentarios muestran las opciones predeterminadas que entrarán en vigencia si no
se modifican. Esto le proporciona un buen punto de partida para la configuración de NFS.

Use el comando nfsconf --set section key value para establecer un valor para la clave
en la sección especificada.

[user@host ~]$ sudo nfsconf --set nfsd vers4.2 y

Este comando actualiza el archivo de configuración /etc/nfs.conf:

526 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[user@host ~]$ sudo cat /etc/nfs.conf


...output omitted...
[nfsd]
vers4.2 = y
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# tcp=y
# vers2=n
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
# rdma=n
#
...output omitted...

Use el comando nfsconf --get section key para extraer el valor para la clave en la sección
especificada:

[user@host ~]$ sudo nfsconf --get nfsd vers4.2


y

Use el comando nfsconf --unset section key para quitar el valor para la clave en la
sección especificada:

[user@host ~]$ sudo nfsconf --unset nfsd vers4.2

Configuración de un cliente solo de NFSv4


Puede configurar un cliente solo de NFSv4 mediante la configuración de los siguientes valores en
el archivo de configuración /etc/nfs.conf.

Comience por desactivar UDP y otras claves relacionadas con NFSv2 y NFSv3:

[user@host ~]$ sudo nfsconf --set nfsd udp n


[user@host ~]$ sudo nfsconf --set nfsd vers2 n
[user@host ~]$ sudo nfsconf --set nfsd vers3 n

Habilite las claves relacionadas con TCP y NFSv4.

[user@host ~]$ sudo nfsconf --set nfsd tcp y


[user@host ~]$ sudo nfsconf --set nfsd vers4 y
[user@host ~]$ sudo nfsconf --set nfsd vers4.0 y
[user@host ~]$ sudo nfsconf --set nfsd vers4.1 y
[user@host ~]$ sudo nfsconf --set nfsd vers4.2 y

RH199-RHEL8.0-es-1-20190531 527
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

Como antes, los cambios aparecen en el archivo de configuración /etc/nfs.conf:

[[user@host ~]$ cat /etc/nfs.conf


[nfsd]
udp = n
vers2 = n
vers3 = n
tcp = y
vers4 = y
vers4.0 = y
vers4.1 = y
vers4.2 = y
...output omitted...

REFERENCIAS
Páginas del manual mount(8), umount(8), fstab(5), mount.nfs(8),
nfs.conf(8) y nfsconf(8)

528 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

EJERCICIO GUIADO

ADMINISTRACIÓN DE
ALMACENAMIENTO CONECTADO A LA
RED CON NFS
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este ejercicio, modificará el archivo /etc/fstab para montar de forma persistente una
exportación de NFS en el momento del arranque.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Probar un servidor NFS con el comando mount.

• Configurar recursos compartidos de NFS en el archivo de configuración /etc/fstab


para guardar los cambios incluso después de reiniciar el sistema.

• Configurar clientes de NFS para usar NFSv4 con la nueva herramienta nfsconf.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab netstorage-nfs start. Este comando


ejecuta un script de inicio que determina si las máquinas servera y serverb son accesibles
en la red. El script le avisará si no están disponibles. El script de inicio configura serverb
como servidor NFSv4, configura los permisos y exporta los directorios. Crea los usuarios y
grupos necesarios en servera y serverb.

[student@workstation ~]$ lab netstorage-nfs start

Una empresa de transporte usa un servidor central, serverb, para alojar una serie de documentos
y directorios compartidos. Los usuarios de servera, que son todos miembros del grupo admin,
necesitan acceso al recurso compartido NFS montado de forma persistente.

Información importante:

• serverb comparte el directorio /shares/public, que contiene algunos archivos de texto.

• Los miembros del grupo admin (admin1, sysmanager1) tienen acceso de lectura y escritura al
directorio compartido /shares/public.

• El punto de montaje principal para servera es /public.

• Todas las contraseñas de usuario están configuradas en redhat.

1. Inicie sesión en servera como el usuario student y cambie al usuario root.

1.1. Inicie sesión en servera con el usuario student.

RH199-RHEL8.0-es-1-20190531 529
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

1.2. 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 ~]#

2. Use la herramienta nfsconf para configurar /etc/nfs.conf a fin de habilitar los clientes
NFS para que funcionen solo en la versión 4.X y para asegurarse de que el modo TCP esté
habilitado y el modo UDP esté deshabilitado.

2.1. Use la herramienta nfsconf para desactivar las claves udp, vers2, vers3.

[root@servera ~]# nfsconf --set nfsd udp n


[root@servera ~]# nfsconf --set nfsd vers2 n
[root@servera ~]# nfsconf --set nfsd vers3 n

2.2. Use la herramienta nfsconf para habilitar las claves tcp, vers4, vers4.0, vers4.1,
vers4.2.

[root@servera ~]# nfsconf --set nfsd tcp y


[root@servera ~]# nfsconf --set nfsd vers4 y
[root@servera ~]# nfsconf --set nfsd vers4.0 y
[root@servera ~]# nfsconf --set nfsd vers4.1 y
[root@servera ~]# nfsconf --set nfsd vers4.2 y

3. Pruebe el servidor NFS en serverb con servera como cliente NFS.

3.1. Cree el punto de montaje /public en servera.

[root@servera ~]# mkdir /public

3.2. En servera, use el comando mount para verificar que el recurso compartido NFS
/share/public exportado por serverb se monta correctamente en el punto de
montaje /public.

[root@servera ~]# mount -t nfs serverb.lab.example.com:/shares/public /public

3.3. Liste el contenido del recurso compartido NFS montado.

[root@servera ~]# ls -l /public


total 16
-rw-r--r--. 1 root admin 42 Apr 8 22:36 Delivered.txt
-rw-r--r--. 1 root admin 46 Apr 8 22:36 NOTES.txt
-rw-r--r--. 1 root admin 20 Apr 8 22:36 README.txt
-rw-r--r--. 1 root admin 27 Apr 8 22:36 Trackings.txt

530 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

3.4. Explore las opciones de mount para el recurso compartido NFS montado.

[root@servera ~]# mount | grep public


serverb.lab.example.com:/shares/public on /public type nfs4
(rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,sync,proto=tcp,timeo=600,
retrans=2,sec=sys,clientaddr=172.25.250.10,local_lock=none,addr=172.25.250.11)

3.5. Desmonte el recurso compartido NFS.

[root@servera ~]# umount /public

4. Configure servera para garantizar que el recurso compartido usado anteriormente se


monta de forma persistente.

4.1. Abra el archivo /etc/fstab para editarlo.

[root@servera ~]# vim /etc/fstab

Agregue la línea siguiente al final del archivo:

serverb.lab.example.com:/shares/public /public nfs rw,sync 0 0

4.2. Use el comando mount para montar el directorio compartido.

[root@servera ~]# mount /public

4.3. Enumere el contenido del directorio compartido.

[root@servera ~]# ls -l /public


total 16
-rw-r--r--. 1 root admin 42 Apr 8 22:36 Delivered.txt
-rw-r--r--. 1 root admin 46 Apr 8 22:36 NOTES.txt
-rw-r--r--. 1 root admin 20 Apr 8 22:36 README.txt
-rw-r--r--. 1 root admin 27 Apr 8 22:36 Trackings.txt

4.4. Reinicie la máquina servera.

[root@servera ~]# systemctl reboot

5. Una vez que servera haya finalizado el reinicio, inicie sesión en servera con el usuario
admin1 y pruebe el recurso compartido NFS montado de forma persistente.

5.1. Inicie sesión en servera con el usuario admin1.

[student@workstation ~]$ ssh admin1@servera


[admin1@servera ~]$

5.2. Pruebe el recurso compartido NFS montado en /public.

RH199-RHEL8.0-es-1-20190531 531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[admin1@servera ~]$ ls -l /public


total 16
-rw-r--r--. 1 root admin 42 Apr 8 22:36 Delivered.txt
-rw-r--r--. 1 root admin 46 Apr 8 22:36 NOTES.txt
-rw-r--r--. 1 root admin 20 Apr 8 22:36 README.txt
-rw-r--r--. 1 root admin 27 Apr 8 22:36 Trackings.txt
[admin1@servera ~]$ cat /public/NOTES.txt
###In this file you can log all your notes###
[admin1@servera ~]$ echo "This is a test" > /public/Test.txt
[admin1@servera ~]$ cat /public/Test.txt
This is a test

5.3. Cierre sesión en servera.

[admin1@servera ~]$ exit


logout
Connection to servera closed.

Finalizar
En workstation, ejecute el script lab netstorage-nfs finish para terminar este ejercicio.

[student@workstation ~]$ lab netstorage-nfs finish

Esto concluye el ejercicio guiado.

532 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

MONTAJE AUTOMÁTICO DE
ALMACENAMIENTO CONECTADO A LA
RED

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de realizar lo siguiente:

• Describir los beneficios de usar el servicio de automontaje.

• Crear un automontaje de los recursos compartidos de NFS usando asignaciones directas e


indirectas, incluidos comodines.

MONTAJE DE RECURSOS COMPARTIDOS DE NFS


CON EL SERVICIO DE AUTOMONTAJE
El servicio de automontaje es un servicio (autofs) que monta automáticamente recursos
compartidos de NFS "a pedido", y desmontará automáticamente recursos compartidos de NFS
cuando ya no se usen.

Beneficios del servicio de automontaje

• Los usuarios no necesitan tener privilegios root para ejecutar los comandos mount y umount

• Los recursos compartidos de NFS configurados en el servicio de automontaje están disponibles


para todos los usuarios de la máquina, sujetos a los permisos de acceso.

• Los recursos compartidos de NFS no están conectados permanentemente como las entradas
en /etc/fstab, lo que libera recursos de red y sistemas.

• El servicio de automontaje se configura del lado del cliente; no se requiere configuración del
lado del servidor.

• El servicio de automontaje usa las mismas opciones que el comando mount, incluidas las
opciones de seguridad.

• El servicio de automontaje admite la asignación directa e indirecta de puntos de montaje, lo que


proporciona flexibilidad en las ubicaciones de los puntos de montaje.

• autofs crea y elimina puntos de montaje indirectos, lo que elimina la gestión manual.

• NFS es el sistema de archivos de red predeterminado del servicio de automontaje, pero otros
sistemas de archivos de red pueden montarse automáticamente.

• autofs es un servicio que se administra como otros servicios del sistema.

Crear un automontaje
La configuración de un automontaje es un proceso de varios pasos:

1. Instale el paquete autofs.

[user@host ~]$ sudo yum install autofs

RH199-RHEL8.0-es-1-20190531 533
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

Este paquete contiene todo lo necesario para usar el servicio de automontaje para recursos
compartidos de NFS.

2. Agregue un archivo de asignación maestra en /etc/auto.master.d. Este archivo identifica


el directorio de base usado para puntos de montaje e identifica el archivo de asignación
usado para crear los automontajes.

[user@host ~]$ sudo vim /etc/auto.master.d/demo.autofs

El nombre del archivo de asignación maestra es arbitrario (aunque suele tener un sentido),
pero debe tener una extensión de .autofs para que el subsistema lo reconozca. Puede
colocar varias entradas en un solo archivo de asignación maestra; como alternativa, puede
crear varios archivos de asignación maestra, cada uno con sus propias entradas agrupadas de
forma lógica.

Agregue la entrada de asignación maestra, en este caso, para montajes asignados


indirectamente:

/shares /etc/auto.demo

Esta entrada usa el directorio /shares como la base para futuros automontajes indirectos.
El archivo /etc/auto.demo contiene los detalles de montaje. Use un nombre de archivo
absoluto. El archivo auto.demo debe crearse antes de comenzar el servicio autofs.

3. Cree los archivos de asignación. Cada archivo de asignación identifica el punto de montaje,
las opciones de montaje y la ubicación de origen que se montará para un conjunto de
automontajes.

[user@host ~]$ sudo vim /etc/auto.demo

La convención de nomenclatura de archivos de asignación es /etc/auto.name, dónde el


nombre refleja el contenido de la asignación.

work -rw,sync serverb:/shares/work

El formato de una entrada es punto de montaje, opciones de montaje y ubicación de origen.


En este ejemplo, se muestra una entrada de asignación indirecta básica. Las asignaciones
directas y las asignaciones indirectas que usan comodines se tratan más adelante en esta
sección.

• Conocido como la "clave" en las páginas del manual, el punto de montaje se crea y elimina
automáticamente con el servicio autofs. En este caso, el punto de montaje totalmente
calificado es /shares/work (consulte el archivo de asignación maestra). El directorio /
shares y el directorio /shares/work se crean y eliminan según sea necesario mediante
el servicio autofs.

En este ejemplo, el punto de montaje local refleja la estructura de directorios del servidor,
pero esto no es necesario; el punto de montaje local puede tener cualquier nombre. El
servicio autofs no impone una estructura de nombres específica en el cliente.

• Las opciones de montaje comienzan con un carácter de guión (-) y se separan por comas
sin espacios en blanco. Las opciones de montaje disponibles para el montaje manual
de un sistema de archivos están disponibles al realizar el montaje automático. En este

534 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

ejemplo, el servicio de automontaje monta el recurso compartido con acceso de lectura y


escritura (opción rw), y el servidor se sincroniza inmediatamente durante las operaciones
de escritura (opción sync).

Algunas opciones útiles específicas del servicio de automontaje son -fstype= y -strict.
Use fstype para especificar el tipo de sistema de archivos, por ejemplo nfs4 o xfs, y use
strict para tratar errores como fatales cuando monte sistemas de archivos.

• La ubicación de origen para los recursos compartidos de NFS sigue el patrón host:/
pathname; en este ejemplo, &srvb;:/shares/work. Para que este montaje automático
tenga éxito, el servidor NFS, serverb, debe exportar el directorio con acceso de lectura
y escritura, y el usuario que solicita el acceso debe tener permisos de archivo estándar
de Linux en el directorio. Si serverb exporta el directorio con acceso de solo lectura,
entonces el cliente obtendrá acceso de solo lectura a pesar de que solicitó acceso de
lectura/escritura.

4. Inicie y habilite el servicio de automontaje.

Use systemctl para iniciar y para habilitar el servicio autofs.

[user@host ~]$ sudo systemctl enable --now autofs


Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/
lib/systemd/system/autofs.service.

Asignaciones directas
Las asignaciones directas se usan para asignar un recurso compartido de NFS a un punto de
montaje de ruta absoluta existente.

Para usar puntos de montaje asignados directamente, el archivo de asignación maestra puede
tener la siguiente apariencia:

/- /etc/auto.direct

Todas las entradas de asignación directa usan /- como el directorio de base. En este caso, el
archivo de asignación que contiene los detalles de montaje es /etc/auto.direct.

El contenido del archivo /etc/auto.direct puede verse de la siguiente forma:

/mnt/docs -rw,sync serverb:/shares/docs

El punto de montaje (o clave) es siempre una ruta absoluta. El resto del archivo de asignación usa
la misma estructura.

En este ejemplo, el directorio /mnt existe y no lo administra autofs. El servicio autofs creará y
eliminará automáticamente el directorio completo /mnt/docs.

Asignaciones indirectas de comodines


Cuando un servidor NFS exporta varios subdirectorios dentro de un directorio, el servicio de
automontaje se puede configurar para acceder a cualquiera de esos subdirectorios usando una
única entrada de asignación.

RH199-RHEL8.0-es-1-20190531 535
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

Para continuar con el ejemplo anterior, si &srvb;:/shares exporta dos o más subdirectorios y
se puede acceder a estos usando las mismas opciones de montaje, el contenido del archivo /etc/
auto.demo podría verse del siguiente modo:

* -rw,sync serverb:/shares/&

El punto de montaje (o clave) es un carácter de asterisco (*) y el subdirectorio en la ubicación de


origen es el carácter de ampersand (&). Todo lo demás en la entrada es igual.

Cuando un usuario intenta acceder a /shares/work, la clave * (que es work en este ejemplo)
reemplaza el símbolo & en la ubicación de origen y &srvb;:/shares/work se monta. Al igual
que con el ejemplo indirecto, autofs crea y elimina automáticamente el directorio work.

REFERENCIAS
Páginas del manual: autofs(5), automount(8), auto.master(5) y
mount.nfs(8)

536 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

EJERCICIO GUIADO

MONTAJE AUTOMÁTICO DE
ALMACENAMIENTO CONECTADO A LA
RED
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este ejercicio, creará puntos de montaje de asignación directa y de asignación indirecta
administrados por automontaje que montan sistemas de archivos NFS.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Instalar los paquetes necesarios para el servicio de automontaje.

• Configurar asignaciones directas e indirectas de automontaje con recursos de un servidor


NFSv4 preconfigurado.

• Comprender la diferencia entre las asignaciones directas e indirectas de automontaje.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab netstorage-autofs start. Este script de


inicio determina si servera y serverb son accesibles en la red. El script le avisará si no
están disponibles. El script de inicio configura serverb como servidor NFSv4, configura
los permisos y exporta los directorios. También crea los usuarios y grupos necesarios en
servera y serverb.

[student@workstation ~]$ lab netstorage-autofs start

Un proveedor de servicios de Internet usa un servidor central, serverb, para alojar directorios
compartidos que contienen documentos importantes que deben estar disponibles a pedido.
Cuando los usuarios inician sesión en servera necesitan acceso a los directorios compartidos
montados automáticamente.

Información importante:

• serverb exporta como un recurso compartido de NFS el directorio /shares/indirect, que


a su vez contiene los subdirectorios west , central y east.

• serverb también exporta como un recurso compartido de NFS el directorio /shares/


direct/external.

• El grupo operators está compuesto por los usuarios operator1 y operator2. Tienen
acceso de lectura y escritura a los directorios compartidos /shares/indirect/west, /
shares/indirect/central y /shares/indirect/east.

RH199-RHEL8.0-es-1-20190531 537
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

• El grupo contractors está compuesto por los usuarios contractor1 y contractor2.


Tienen acceso de lectura y escritura al directorio compartido /shares/direct/external.

• Los puntos de montaje esperados para servera son /external y /internal.

• El directorio compartido /shares/direct/external debe montarse automáticamente en


servera con una asignación directa en /external.

• El directorio compartido /shares/indirect/west debe montarse automáticamente en


servera con una asignación indirecta en /internal/west.

• El directorio compartido /shares/indirect/central debe montarse automáticamente en


servera con una asignación indirecta en /internal/central.

• El directorio compartido /shares/indirect/east debe montarse automáticamente en


servera con una asignación indirecta en /internal/east.

• Todas las contraseñas de usuario están configuradas en redhat.

1. Inicie sesión en servera e instale los paquetes requeridos.

1.1. Inicie sesión en servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

1.2. 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 ~]#

1.3. Instale el paquete autofs.

[root@servera ~]# yum install autofs


...output omitted...
Is this ok [y/N]: y
...output omitted...

2. Configure una asignación directa de montaje automático en servera con los recursos
compartidos de serverb. Cree la asignación directa con los archivos denominados /etc/
auto.master.d/direct.autofs para la asignación maestra y /etc/auto.direct
para el archivo de asignación. Use el directorio /external como el punto de montaje
principal en servera.

2.1. Pruebe el servidor NFS y comparta antes de proceder con la configuración del servicio
de automontaje.

538 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[root@servera ~]# mount -t nfs \


serverb.lab.example.com:/shares/direct/external /mnt
[root@servera ~]# ls -l /mnt
total 4
-rw-r--r--. 1 root contractors 22 Apr 7 23:15 README.txt
[root@servera ~]# umount /mnt

2.2. Cree un archivo de asignación maestra llamado /etc/auto.master.d/


direct.autofs, inserte el siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.master.d/direct.autofs


/- /etc/auto.direct

2.3. Cree un archivo de asignación directa llamado /etc/auto.direct, inserte el


siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.direct


/external -rw,sync,fstype=nfs4 serverb.lab.example.com:/shares/direct/external

3. Configure una asignación indirecta de montaje automático en servera con los recursos
compartidos de serverb. Cree la asignación indirecta con los archivos denominados
/etc/auto.master.d/indirect.autofs para la asignación maestra y /etc/
auto.indirect para el archivo de asignación. Use el directorio /internal como el
punto de montaje principal en servera.

3.1. Pruebe el servidor NFS y comparta antes de proceder con la configuración del servicio
de automontaje.

[root@servera ~]# mount -t nfs serverb.lab.example.com:/shares/indirect /mnt


[root@servera ~]# ls -l /mnt
total 0
drwxrws---. 2 root operators 24 Apr 7 23:34 central
drwxrws---. 2 root operators 24 Apr 7 23:34 east
drwxrws---. 2 root operators 24 Apr 7 23:34 west
[root@servera ~]# umount /mnt

3.2. Cree un archivo de asignación maestra llamado /etc/auto.master.d/


indirect.autofs, inserte el siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.master.d/indirect.autofs


/internal /etc/auto.indirect

3.3. Cree un archivo de asignación indirecta llamado /etc/auto.indirect, inserte el


siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.indirect


* -rw,sync,fstype=nfs4 serverb.lab.example.com:/shares/indirect/&

RH199-RHEL8.0-es-1-20190531 539
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

4. Inicie el servicio autofs en servera y habilítelo para que se inicie automáticamente


durante el proceso de arranque. Reinicie servera para determinar si el servicio autofs se
inicia automáticamente.

4.1. Inicie y habilite el servicio autofs en servera.

[root@servera ~]# systemctl enable --now autofs


Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/
lib/systemd/system/autofs.service.

4.2. Reinicie la máquina servera.

[root@servera ~]# systemctl reboot

5. Pruebe la asignación directa de automontaje con el usuario contractor1. Cuando haya


terminado, salga de la sesión de usuario contractor1 en servera.

5.1. Después de que la máquina servera haya terminado de arrancar, inicie sesión en
servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

5.2. Cambie al usuario contractor1.

[student@servera ~]$ su - contractor1


Password: redhat

5.3. Enumere el punto de montaje /external.

[contractor1@servera ~]$ ls -l /external


total 4
-rw-r--r--. 1 root contractors 22 Apr 7 23:34 README.txt

5.4. Revise el contenido y pruebe el acceso del punto de montaje /external.

[contractor1@servera ~]$ cat /external/README.txt


###External Folder###
[contractor1@servera ~]$ echo testing-direct > /external/testing.txt
[contractor1@servera ~]$ cat /external/testing.txt
testing-direct

5.5. Salga de la sesión de usuario contractor1.

[contractor1@servera ~]$ exit


logout

6. Pruebe la asignación indirecta de montaje automático como el usuario operator1.


Cuando finalice, cierre sesión en servera.

540 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

6.1. Cambie al usuario operator1.

[student@servera ~]$ su - operator1


Password: redhat

6.2. Enumere el punto de montaje /internal.

[operator1@servera ~]$ ls -l /internal


total 0

NOTA
Notará que en una asignación indirecta de automontaje, incluso si se encuentra
en el punto de montaje asignado, debe llamar a cada uno de los subdirectorios
o archivos compartidos a pedido para obtener acceso a ellos. En una asignación
directa del servicio de automontaje, después de abrir el punto de montaje asignado,
obtendrá acceso a los directorios y al contenido configurado en el directorio
compartido.

6.3. Pruebe el acceso a directorio compartido del servicio de automontaje /internal/


west.

[operator1@servera ~]$ ls -l /internal/west/


total 4
-rw-r--r--. 1 root operators 18 Apr 7 23:34 README.txt
[operator1@servera ~]$ cat /internal/west/README.txt
###West Folder###
[operator1@servera ~]$ echo testing-1 > /internal/west/testing-1.txt
[operator1@servera ~]$ cat /internal/west/testing-1.txt
testing-1
[operator1@servera ~]$ ls -l /internal
total 0
drwxrws---. 2 root operators 24 Apr 7 23:34 west

6.4. Pruebe el acceso a directorio compartido del servicio de automontaje /internal/


central.

[operator1@servera ~]$ ls -l /internal/central


total 4
-rw-r--r--. 1 root operators 21 Apr 7 23:34 README.txt
[operator1@servera ~]$ cat /internal/central/README.txt
###Central Folder###
[operator1@servera ~]$ echo testing-2 > /internal/central/testing-2.txt
[operator1@servera ~]$ cat /internal/central/testing-2.txt
testing-2
[operator1@servera ~]$ ls -l /internal
total 0
drwxrws---. 2 root operators 24 Apr 7 23:34 central
drwxrws---. 2 root operators 24 Apr 7 23:34 west

6.5. Pruebe el acceso a directorio compartido del servicio de automontaje /internal/


east.

RH199-RHEL8.0-es-1-20190531 541
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[operator1@servera ~]$ ls -l /internal/east


total 4
-rw-r--r--. 1 root operators 18 Apr 7 23:34 README.txt
[operator1@servera ~]$ cat /internal/east/README.txt
###East Folder###
[operator1@servera ~]$ echo testing-3 > /internal/east/testing-3.txt
[operator1@servera ~]$ cat /internal/east/testing-3.txt
testing-3
[operator1@servera ~]$ ls -l /internal
total 0
drwxrws---. 2 root operators 24 Apr 7 23:34 central
drwxrws---. 2 root operators 24 Apr 7 23:34 east
drwxrws---. 2 root operators 24 Apr 7 23:34 west

6.6. Pruebe el acceso a directorio compartido del servicio de automontaje /external.

[operator1@servera ~]$ ls -l /external


ls: cannot open directory '/external': Permission denied

6.7. Cierre sesión en servera.

[operator1@servera ~]$ exit


logout
[student@servera ~]$ exit
logout
Connection to servera closed.

Finalizar
En workstation, ejecute el script lab netstorage-autofs finish para terminar este
ejercicio.

[student@workstation ~]$ lab netstorage-autofs finish

Esto concluye el ejercicio guiado.

542 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

TRABAJO DE LABORATORIO

ACCESO AL ALMACENAMIENTO
CONECTADO A LA RED
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, configurará el servicio de automontaje con una asignación
indirecta, usando recursos compartidos de un servidor NFSv4.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Instalar los paquetes necesarios para configurar el servicio de automontaje.

• Configurar la asignación indirecta del servicio de automontaje con recursos de un servidor


NFSv4 preconfigurado.

• Configurar un cliente NFS para usar NFSv4 con la herramienta nfsconf.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab netstorage-review start. Este script


de inicio determina si los sistemas servera y serverb son accesibles en la red. El script
de inicio configura serverb como servidor NFSv4, configura los permisos y exporta los
directorios. También crea los usuarios y grupos necesarios en los sistemas servera y
serverb.

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

Una empresa de soporte de TI usa un servidor central, serverb, para alojar algunos directorios
compartidos en /remote/shares para sus grupos y usuarios. Los usuarios deben ser capaces
de iniciar sesión y tener sus directorios compartidos montados a pedido y listos para usar, en el
directorio /shares en servera.

Información importante:

• serverb comparte el directorio /shares, que a su vez contiene los subdirectorios


management , production y operation.

• El grupo managers está compuesto por los usuarios manager1 y manager2. Tienen acceso de
lectura y escritura al directorio compartido /shares/management.

• El grupo production está compuesto por los usuarios dbuser1 y sysadmin1. Tienen acceso
de lectura y escritura al directorio compartido /shares/production.

• El grupo operators está compuesto por los usuarios contractor1 y consultant1. Tienen
acceso de lectura y escritura al directorio compartido /shares/operation.

• El punto de montaje principal para servera es el directorio /remote.

RH199-RHEL8.0-es-1-20190531 543
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

• El directorio compartido /shares/management debe montarse automáticamente en /


remote/management en servera.

• El directorio compartido /shares/production debe montarse automáticamente en /


remote/production en servera.

• El directorio compartido /shares/operation debe montarse automáticamente en /


remote/operation en servera.

• Todas las contraseñas de usuario están configuradas en redhat.

1. Inicie sesión en servera e instale los paquetes requeridos.


2. Use el comando nfsconf para configurar /etc/nfs.conf. Habilite el cliente NFS para que
funcione solo en la versión 4.X y para asegurarse de que el modo TCP esté habilitado y el
modo UDP esté deshabilitado.
3. Configure una asignación indirecta de montaje automático en servera con los recursos
compartidos de serverb. Cree una asignación indirecta con los archivos denominados /
etc/auto.master.d/shares.autofs para la asignación maestra y /etc/auto.shares
para el archivo de asignación. Use el directorio /remote como el punto de montaje
principal en servera. Reinicie servera para determinar si el servicio autofs se inicia
automáticamente.
4. Pruebe la configuración de autofs con los distintos usuarios. Cuando finalice, cierre sesión
en servera.

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

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

Finalizar
En workstation, ejecute el comando lab netstorage-review finish para terminar este
ejercicio.

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

Esto concluye el trabajo de laboratorio.

544 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

SOLUCIÓN

ACCESO AL ALMACENAMIENTO
CONECTADO A LA RED
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, configurará el servicio de automontaje con una asignación
indirecta, usando recursos compartidos de un servidor NFSv4.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Instalar los paquetes necesarios para configurar el servicio de automontaje.

• Configurar la asignación indirecta del servicio de automontaje con recursos de un servidor


NFSv4 preconfigurado.

• Configurar un cliente NFS para usar NFSv4 con la herramienta nfsconf.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute el comando lab netstorage-review start. Este script


de inicio determina si los sistemas servera y serverb son accesibles en la red. El script
de inicio configura serverb como servidor NFSv4, configura los permisos y exporta los
directorios. También crea los usuarios y grupos necesarios en los sistemas servera y
serverb.

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

Una empresa de soporte de TI usa un servidor central, serverb, para alojar algunos directorios
compartidos en /remote/shares para sus grupos y usuarios. Los usuarios deben ser capaces
de iniciar sesión y tener sus directorios compartidos montados a pedido y listos para usar, en el
directorio /shares en servera.

Información importante:

• serverb comparte el directorio /shares, que a su vez contiene los subdirectorios


management , production y operation.

• El grupo managers está compuesto por los usuarios manager1 y manager2. Tienen acceso de
lectura y escritura al directorio compartido /shares/management.

• El grupo production está compuesto por los usuarios dbuser1 y sysadmin1. Tienen acceso
de lectura y escritura al directorio compartido /shares/production.

• El grupo operators está compuesto por los usuarios contractor1 y consultant1. Tienen
acceso de lectura y escritura al directorio compartido /shares/operation.

RH199-RHEL8.0-es-1-20190531 545
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

• El punto de montaje principal para servera es el directorio /remote.

• El directorio compartido /shares/management debe montarse automáticamente en /


remote/management en servera.

• El directorio compartido /shares/production debe montarse automáticamente en /


remote/production en servera.

• El directorio compartido /shares/operation debe montarse automáticamente en /


remote/operation en servera.

• Todas las contraseñas de usuario están configuradas en redhat.

1. Inicie sesión en servera e instale los paquetes requeridos.

1.1. Inicie sesión en servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

1.2. 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 ~]#

1.3. Instale el paquete autofs.

[root@servera ~]# yum install autofs


...output omitted...
Is this ok [y/N]: y
...output omitted...

2. Use el comando nfsconf para configurar /etc/nfs.conf. Habilite el cliente NFS para que
funcione solo en la versión 4.X y para asegurarse de que el modo TCP esté habilitado y el
modo UDP esté deshabilitado.

2.1. Use la herramienta nfsconf para desactivar las claves udp , vers2, vers3.

[root@servera ~]# nfsconf --set nfsd udp n


[root@servera ~]# nfsconf --set nfsd vers2 n
[root@servera ~]# nfsconf --set nfsd vers3 n

2.2. Use la herramienta nfsconf para habilitar las claves tcp, vers4, vers4.0, vers4.1,
vers4.2.

[root@servera ~]# nfsconf --set nfsd tcp y


[root@servera ~]# nfsconf --set nfsd vers4 y
[root@servera ~]# nfsconf --set nfsd vers4.0 y
[root@servera ~]# nfsconf --set nfsd vers4.1 y
[root@servera ~]# nfsconf --set nfsd vers4.2 y

546 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

3. Configure una asignación indirecta de montaje automático en servera con los recursos
compartidos de serverb. Cree una asignación indirecta con los archivos denominados /
etc/auto.master.d/shares.autofs para la asignación maestra y /etc/auto.shares
para el archivo de asignación. Use el directorio /remote como el punto de montaje
principal en servera. Reinicie servera para determinar si el servicio autofs se inicia
automáticamente.

3.1. Pruebe el servidor NFS antes de proceder con la configuración del servicio de
automontaje.

[root@servera ~]# mount -t nfs serverb.lab.example.com:/shares /mnt


[root@servera ~]# ls -l /mnt
total 0
drwxrwx---. 2 root managers 25 Apr 4 01:13 management
drwxrwx---. 2 root operators 25 Apr 4 01:13 operation
drwxrwx---. 2 root production 25 Apr 4 01:13 production
[root@servera ~]# umount /mnt

3.2. Cree un archivo de asignación maestra llamado /etc/auto.master.d/


shares.autofs, inserte el siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.master.d/shares.autofs


/remote /etc/auto.shares

3.3. Cree un archivo de asignación indirecta llamado /etc/auto.shares, inserte el


siguiente contenido y guarde los cambios.

[root@servera ~]# vim /etc/auto.shares


* -rw,sync,fstype=nfs4 serverb.lab.example.com:/shares/&

3.4. Inicie y habilite el servicio autofs en servera.

[root@servera ~]# systemctl enable --now autofs


Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/
lib/systemd/system/autofs.service.

3.5. Reinicie la máquina servera.

[root@servera ~]# systemctl reboot

4. Pruebe la configuración de autofs con los distintos usuarios. Cuando finalice, cierre sesión
en servera.

4.1. Después de que la máquina servera haya terminado de arrancar, inicie sesión en
servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

4.2. Use el comando su - manager1 para cambiar al usuario manager1 y probar el acceso.

RH199-RHEL8.0-es-1-20190531 547
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

[student@servera ~]$ su - manager1


Password: redhat
[manager1@servera ~]$ ls -l /remote/management/
total 4
-rw-r--r--. 1 root managers 46 Apr 4 01:13 Welcome.txt
[manager1@servera ~]$ cat /remote/management/Welcome.txt
###Welcome to Management Folder on SERVERB###
[manager1@servera ~]$ echo TEST1 > /remote/management/Test.txt
[manager1@servera ~]$ cat /remote/management/Test.txt
TEST1
[manager1@servera ~]$ ls -l /remote/operation/
ls: cannot open directory '/remote/operation/': Permission denied
[manager1@servera ~]$ ls -l /remote/production/
ls: cannot open directory '/remote/production/': Permission denied
[manager1@servera ~]$ exit
logout

4.3. Cambie al usuario dbuser1 y pruebe el acceso.

[student@servera ~]$ su - dbuser1


Password: redhat
[dbuser1@servera ~]$ ls -l /remote/production/
total 4
-rw-r--r--. 1 root production 46 Apr 4 01:13 Welcome.txt
[dbuser1@servera ~]$ cat /remote/production/Welcome.txt
###Welcome to Production Folder on SERVERB###
[dbuser1@servera ~]$ echo TEST2 > /remote/production/Test.txt
[dbuser1@servera ~]$ cat /remote/production/Test.txt
TEST2
[dbuser1@servera ~]$ ls -l /remote/operation/
ls: cannot open directory '/remote/operation/': Permission denied
[dbuser1@servera ~]$ ls -l /remote/management/
ls: cannot open directory '/remote/management/': Permission denied
[dbuser1@servera ~]$ exit
logout

4.4. Cambie al usuario contractor1 y pruebe el acceso.

[student@servera ~]$ su - contractor1


Password: redhat
[contractor1@servera ~]$ ls -l /remote/operation/
total 4
-rw-r--r--. 1 root operators 45 Apr 4 01:13 Welcome.txt
[contractor1@servera ~]$ cat /remote/operation/Welcome.txt
###Welcome to Operation Folder on SERVERB###
[contractor1@servera ~]$ echo TEST3 > /remote/operation/Test.txt
[contractor1@servera ~]$ cat /remote/operation/Test.txt
TEST3
[contractor1@servera ~]$ ls -l /remote/management/
ls: cannot open directory '/remote/management/': Permission denied
[contractor1@servera ~]$ ls -l /remote/production/

548 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

ls: cannot open directory '/remote/production/': Permission denied


[contractor1@servera ~]$ exit
logout

4.5. Explore las opciones de mount para el recurso compartido NFS montado
automáticamente.

[student@servera ~]$ mount | grep nfs


rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
serverb.lab.example.com:/shares/management on /remote/management type nfs4
(rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,sync,proto=tcp,timeo=600,
retrans=2,sec=sys,clientaddr=172.25.250.10,local_lock=none,addr=172.25.250.11)
serverb.lab.example.com:/shares/operation on /remote/operation type nfs4
(rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,sync,proto=tcp,timeo=600,
retrans=2,sec=sys,clientaddr=172.25.250.10,local_lock=none,addr=172.25.250.11)
serverb.lab.example.com:/shares/production on /remote/production type nfs4
(rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,sync,proto=tcp,timeo=600,
retrans=2,sec=sys,clientaddr=172.25.250.10,local_lock=none,addr=172.25.250.11)

4.6. Cierre sesión en servera.

[student@servera ~]$ exit


logout

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

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

Finalizar
En workstation, ejecute el comando lab netstorage-review finish para terminar este
ejercicio.

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

Esto concluye el trabajo de laboratorio.

RH199-RHEL8.0-es-1-20190531 549
CAPÍTULO 14 | Acceso al almacenamiento conectado a la red

RESUMEN
En este capítulo, aprendió cómo hacer lo siguiente:

• Montar y desmontar una exportación de NFS desde la línea de comandos.

• Configurar una exportación de NFS para montarse automáticamente en el inicio.

• Configurar el servicio de automontaje con asignaciones directas e indirectas, así como describir
sus diferencias.

• Configurar clientes de NFS para usar NFSv4 con la nueva herramienta nfsconf.

550 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15

ADMINISTRACIÓN DE LA
SEGURIDAD DE REDES
META Controlar las conexiones de red a los servicios
mediante el firewall del sistema.

OBJETIVOS • Aceptar o rechazar las conexiones de red a los


servicios del sistema por medio de las reglas de
firewalld.

SECCIONES • Administración de firewalls del servidor (y


ejercicio guiado)

TRABAJO DE Administración de la seguridad de redes


LABORATORIO

RH199-RHEL8.0-es-1-20190531 551
CAPÍTULO 15 | Administración de la seguridad de redes

ADMINISTRACIÓN DE FIREWALLS DEL


SERVIDOR

OBJETIVOS
Tras finalizar esta sección, usted deberá ser capaz de aceptar o rechazar las conexiones de red a
los servicios del sistema por medio de las reglas de firewalld.

CONCEPTOS DE ARQUITECTURA DEL FIREWALL


El kernel de Linux incluye netfilter, un marco (framework) para las operaciones de tráfico de
red, como el filtrado de paquetes, la traducción de direcciones de red y la traducción de puertos.
Al implementar manejadores en el kernel que interceptan invocaciones de funciones y mensajes,
netfilter permite que otros módulos del kernel interactúen directamente con la pila (stack)
de red del kernel. El software del firewall emplea estos enlaces para registrar reglas de filtro y
funciones que modifican al paquete, lo que permite procesar cada paquete que pasa a través de la
pila (stack) de red. Cualquier paquete de red entrante, saliente o reenviado se puede inspeccionar,
modificar, eliminar o enrutar mediante programación antes de llegar a los componentes o a las
aplicaciones del espacio de usuario. Netfilter es el componente primario en los firewalls de
Red Hat Enterprise Linux 8.

Nftables supera a netfilter


El kernel de Linux también incluye el marco nftables, un nuevo subsistema de clasificación
de paquetes y filtros que ha mejorado partes del código de netfilter, pero ha conservado la
arquitectura de netfilter (como los enlaces de la pila [stack] de red, el sistema de seguimiento
de la conexión y la utilidad de registro). Las ventajas de la actualización de nftables es que
ofrece un procesamiento de paquetes más veloz, actualizaciones del conjunto de reglas más
rápidas y el procesamiento simultáneo de IPv4 e IPv6 desde las mismas reglas. Otra gran
diferencia entre nftables y el marco netfilter original radica en sus interfaces. Netfilter
está configurado por medio de múltiples marcos (frameworks) de utilidad, incluidos iptables,
ip6tables, arptables y ebtables, que ahora están en desuso. Nftables emplea la utilidad
única del espacio de usuario nft, lo que permite que toda la gestión de protocolos se produzca
a través de una sola interfaz y elimina la contención histórica causada por diversos front-ends y
múltiples interfaces de netfilter.

Presentación de firewalld
Firewalld es un administrador de firewall dinámico, un front-end para el marco (framework)
nftables que usa el comando nft. Hasta la introducción de nftables, firewalld usaba el
comando iptables para configurar netfilter de forma directa, como una alternativa mejorada
del servicio de iptables. En RHEL 8, firewalld sigue siendo el front-end recomendado, ya
que gestiona conjuntos de reglas de firewall por medio de nft. Firewalld sigue siendo capaz
de leer y gestionar los archivos de configuración y los conjuntos de reglas de iptables y usa
xtables-nft-multi para traducir objetos de iptables directamente a reglas y objetos de
nftables. Si bien esto no se aconseja, firewalld se puede configurar para retornar al back-
end de iptables para casos de usos complejos en los que los conjuntos de reglas existentes de
iptables no se pueden procesar correctamente con traducciones de nft.

Las aplicaciones consultan el subsistema usando la interfaz de D-Bus. El subsistema de


firewalld (disponible desde el paquete RPM de firewalld) no se incluye en una instalación
mínima, pero se incluye en una instalación básica. Con firewalld, se simplifica la administración

552 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

del firewall al clasificar todo el tráfico de la red en zonas. En función de los criterios (como la
dirección IP de la fuente de un paquete o la interfaz de red entrante), el tráfico se desvía a las
reglas de firewall para la zona adecuada. Cada zona tiene su propia lista de puertos y servicios que
están abiertos o cerrados.

NOTA
En el caso de equipos portátiles u otras máquinas que cambian regularmente las
redes, NetworkManager se puede usar para configurar automáticamente la zona
de firewall para una conexión. Las zonas se personalizan con reglas adecuadas para
conexiones particulares.

Esto es especialmente útil en el traslado entre el hogar, el trabajo y las redes


inalámbricas públicas. Un usuario podría desear llegar al servicio sshd de su sistema
cuando se conecta a las redes de su hogar y corporativas, pero no cuando se
conecta a la red inalámbrica pública en la tienda de café local.

Firewalld verifica la dirección de origen para cada paquete que ingresa al sistema. Si esa dirección
de origen está asignada a una zona específica, rigen las reglas de esa zona. Si la dirección de
origen no está asignada a una zona, firewalld asocia el paquete con la zona para la interfaz de
red entrante, y rigen las reglas para esa zona. Si la interfaz de red no está asociada con una zona
por algún motivo, firewalld asocia el paquete con la zona predeterminada.

La zona predeterminada no es una zona separada, sino una designación para una zona existente.
Inicialmente, firewalld designa la zona public (pública) como la zona predeterminada y asigna
la interfaz de bucle invertido de lo a la zona trusted (de confianza).

La mayoría de las zonas permiten el tráfico a través del firewall que relaciona una lista de puertos
y protocolos particulares (como 631/udp) o servicios predefinidos (como ssh). Si el tráfico
no relaciona un puerto y protocolo o servicio permitidos, generalmente se rechaza. (La zona
trusted [de confianza], que permite todo el tráfico de forma predeterminada, es una excepción a
esto).

Zonas predefinidas
Firewalld cuenta con zonas predefinidas, cada una de las cuales se puede personalizar. De
forma predeterminada, todas las zonas permiten todo el tráfico entrante que sea parte de una
comunicación iniciada por el sistema y todo el tráfico saliente. En la siguiente tabla, se detalla esta
configuración de zona inicial.

Configuración predeterminada de zonas firewalld

NOMBRE DE LA CONFIGURACIÓN PREDETERMINADA


ZONA

trusted (de Permite todo el tráfico entrante.


confianza)

home (inicio) Rechaza el tráfico entrante a menos que esté relacionado con tráfico
saliente o que relacione los servicios predefinidos ssh, mdns, ipp-
client, samba-client o dhcpv6-client.

RH199-RHEL8.0-es-1-20190531 553
CAPÍTULO 15 | Administración de la seguridad de redes

NOMBRE DE LA CONFIGURACIÓN PREDETERMINADA


ZONA

internal Rechaza el tráfico entrante a menos que esté relacionado con tráfico
(interna) saliente o que relacione los servicios predefinidos ssh, mdns, ipp-
client, samba-client o dhcpv6-client (lo mismo que la zona
home para empezar).

work (trabajo) Rechaza el tráfico entrante a menos que esté relacionado con tráfico
saliente o que relacione los servicios predefinidos ssh, ipp-client o
dhcpv6-client.

public Rechaza el tráfico entrante, a menos que esté relacionado con tráfico
(pública) saliente o que relacione los servicios predefinidos ssh o dhcpv6-
client. La zona predeterminada para interfaces de red recientemente
agregadas.

external Rechaza el tráfico entrante, a menos que esté relacionado con tráfico
(externa) saliente o que relacione el servicio predefinido ssh. El tráfico IPv4
saliente reenviado a través de esta zona es enmascarado para que
luzca como si se hubiera originado desde la dirección IPv4 de la
interfaz de red saliente.

dmz Rechaza el tráfico entrante, a menos que esté relacionado con tráfico
saliente o que relacione el servicio predefinido ssh.

block (bloqueo) Rechaza todo el tráfico entrante, a menos que esté relacionado con
tráfico saliente.

drop (caída) Deja caer todo el tráfico entrante, a menos que esté relacionado con
tráfico saliente (ni siquiera responde con errores ICMP).

Para conocer una lista de las zonas predefinidas disponibles y sus usos previstos, consulte
firewalld.zones(5).

Servicios predefinidos
Firewalld incluye un número de servicios predefinidos. Estas definiciones de servicio lo ayudan a
identificar servicios de red particulares que puede configurar. En lugar de tener que buscar los
puertos relevantes para el servicio samba-client, por ejemplo, puede especificar el servicio
samba-client compilado previamente para configurar los puertos y protocolos correctos. En la
siguiente tabla, se detallan los servicios predefinidos que se emplean en la configuración inicial de
zonas de firewall.

Servicios firewalld predefinidos seleccionados

NOMBRE DEL CONFIGURACIÓN


SERVICIO

ssh Servidor SSH local. Tráfico a 22/tcp

dhcpv6-client Cliente DHCPv6 local. Tráfico a 546/udp en la red fe80::/64 IPv6

ipp-client Impresión IPP local. Tráfico a 631/udp.

554 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

NOMBRE DEL CONFIGURACIÓN


SERVICIO

samba-client Archivo Windows local y cliente de intercambio de impresión. Tráfico a


137/udp y 138/udp.

mdns Resolución del nombre del enlace local DNS (mDNS) multidifusión
(multicast). Tráfico a 5353/udp a las direcciones de multidifusión
(multicast) 224.0.0.251 (IPv4) o ff02::fb (IPv6).

NOTA
Muchos servicios predefinidos se incluyen en el paquete firewalld. Use firewall-
cmd --get-services para enumerarlos. Los archivos de configuración para los
servicios predefinidos se encuentran en /usr/lib/firewalld/services, en un
formato definido por firewalld.zone(5).

Use los servicios predefinidos o especifique directamente el puerto y el protocolo


requeridos. La interfaz gráfica de la consola web se usa para revisar los servicios
predefinidos y para definir servicios adicionales.

CONFIGURACIÓN DEL FIREWALL


Los administradores de sistemas interactúan con firewalld de tres formas:

• mediante la edición directa de archivos de configuración en /etc/firewalld/ (no analizado


en este capítulo);
• mediante la interfaz gráfica de la consola web;
• mediante la herramienta de línea de comandos firewall-cmd.

Configuración de los servicios de firewall mediante la consola


web
Para configurar los servicios de firewall con la consola web, inicie sesión con acceso con privilegios
al hacer clic en la opción Reuse my password for privileged tasks (Volver a usar mi contraseña para
tareas con privilegios). Esto permite al usuario que ejecute comandos con privilegios de sudo para
modificar los servicios de firewall.

Figura 15.1: Inicio de sesión con privilegios con la consola web

Haga clic en la opción Networking (Redes) en el menú de navegación izquierdo para mostrar la
sección Firewall en la página principal de redes. Haga clic en el enlace de Firewall para acceder a la
lista de servicios permitidos.

RH199-RHEL8.0-es-1-20190531 555
CAPÍTULO 15 | Administración de la seguridad de redes

Figura 15.2: Redes de la consola web

Los servicios permitidos que se muestran en la lista son aquellos servicios que el firewall permite
actualmente. Haga clic en la flecha (>) a la izquierda del nombre del servicio para ver los detalles
del servicio. Para agregar un servicio, haga clic en el botón Add Services... (Agregar servicios) en la
esquina superior derecha de la página de Firewall Allowed Services (Servicios permitidos).

Figura 15.3: Lista de servicios permitidos por el firewall en la consola web

La página Add Services (Agregar servicios) muestra los servicios predefinidos disponibles.

556 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

Figura 15.4: Interfaz para agregar servicios en la consola web

Para seleccionar un servicio, desplácese por la lista o seleccione una opción en el cuadro de
texto Filter Services (Filtrar servicios). En el siguiente ejemplo, la cadena http se ingresa en el
cuadro de texto de búsqueda para buscar servicios que contengan esa cadena, es decir, servicios
relacionados con la web. Seleccione la casilla de verificación a la izquierda de los servicios para que
el firewall los permita. Haga clic en el botón Add Services (Agregar servicios) para completar el
proceso.

RH199-RHEL8.0-es-1-20190531 557
CAPÍTULO 15 | Administración de la seguridad de redes

Figura 15.5: Búsqueda por filtro de servicios en la consola web

La interfaz vuelve a la página de Firewall Allowed Services (Servicios permitidos), donde puede
revisar la lista actualizada de servicios permitidos.

Figura 15.6: Lista de servicios de la consola web

Configuración de firewall desde la línea de comandos


El comando firewall-cmd interactúa con el administrador de firewall dinámico firewalld. Se
instala como parte del paquete firewalld principal y está disponible para los administradores que
prefieren trabajar en la línea de comandos a los fines de trabajar en sistemas sin un entorno gráfico
o ejecutar el scripting de la configuración de firewall.

558 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

En la siguiente tabla, se detallan varios comandos de firewall-cmd usados frecuentemente,


junto con una explicación. Observe que, a menos que se especifique lo contrario, casi todos los
comandos funcionarán en la configuración de tiempo de ejecución, a menos que se especifique
la opción --permanent. Si se especifica la opción --permanent, debe activar la configuración
ejecutando también el comando firewall-cmd --reload, que lee la configuración
permanente actual y la aplica como la nueva configuración de tiempo de ejecución. Muchos de los
comandos detallados toman la opción --zone=ZONE para determinar qué zona afectan. Cuando
se requiera una máscara de red, use la notación CIDR (como 192.168.1/24).

COMANDOS DE FIREWALL-CMD EXPLICACIÓN

--get-default-zone Consultar la zona predeterminada actual.

--set-default-zone=ZONE Configurar la zona predeterminada. Esto


cambia tanto la configuración del tiempo de
ejecución como la permanente.

--get-zones Mostrar todas las zonas disponibles.

--get-active-zones Mostrar todas las zonas que están


actualmente en uso (tienen una interfaz
u origen conectados a esta), junto con la
información de su interfaz y origen.

--add-source=CIDR [--zone=ZONE] Enrutar todo el tráfico que proviene de


la dirección IP o red/máscara de red a la
zona especificada. Si no se proporciona
ninguna opción --zone=, se usa la zona
predeterminada.

--remove-source=CIDR [--zone=ZONE] Eliminar la regla que enruta todo el tráfico


que proviene de la red de la dirección IP o
red/máscara de red. Si no se proporciona
ninguna opción --zone=, se usa la zona
predeterminada.

--add-interface=INTERFACE [-- Enrutar todo el tráfico que proviene de


zone=ZONE] INTERFACE a la zona especificada. Si no se
proporciona ninguna opción --zone=, se usa
la zona predeterminada.

--change-interface=INTERFACE [-- Asociar la interfaz con ZONE en lugar


zone=ZONE] de su zona actual. Si no se proporciona
ninguna opción --zone=, se usa la zona
predeterminada.

--list-all [--zone=ZONE] Mostrar todas las interfaces, fuentes, servicios


y puertos configurados para ZONE. Si no se
proporciona ninguna opción --zone=, se usa
la zona predeterminada.

--list-all-zones Recuperar toda la información para todas las


zonas (interfaces, fuentes, puertos, servicios).

RH199-RHEL8.0-es-1-20190531 559
CAPÍTULO 15 | Administración de la seguridad de redes

COMANDOS DE FIREWALL-CMD EXPLICACIÓN

--add-service=SERVICE [-- Permitir el tráfico a SERVICE. Si no se


zone=ZONE] proporciona ninguna opción --zone=, se usa
la zona predeterminada.

--add-port=PORT/PROTOCOL [-- Permitir el tráfico a los puertos PORT/


zone=ZONE] PROTOCOL. Si no se proporciona
ninguna opción --zone=, se usa la zona
predeterminada.

--remove-service=SERVICE [-- Eliminar SERVICE de la lista permitida para la


zone=ZONE] zona. Si no se proporciona ninguna opción --
zone=, se usa la zona predeterminada.

--remove-port=PORT/PROTOCOL [-- Eliminar los puertos PORT/PROTOCOL


zone=ZONE] de la lista permitida para la zona. Si no se
proporciona ninguna opción --zone=, se usa
la zona predeterminada.

--reload Dejar caer la configuración del tiempo


de ejecución y aplicar la configuración
persistente.

Los siguientes ejemplos de comandos configuran la zona predeterminada para dmz, asignan
todo el tráfico proveniente de la red 192.168.0.0/24 a la zona internal (interna) y abren los
puertos de red para el servicio mysql en la zona internal (interna).

[root@host ~]# firewall-cmd --set-default-zone=dmz


[root@host ~]# firewall-cmd --permanent --zone=internal \
--add-source=192.168.0.0/24
[root@host ~]# firewall-cmd --permanent --zone=internal --add-service=mysql
[root@host ~]# firewall-cmd --reload

NOTA
En situaciones donde la sintaxis básica de firewalld no es suficiente, también
puede agregar rich-rules (reglas enriquecidas), una sintaxis más expresiva, para
escribir reglas complejas. Si aun así la sintaxis de las reglas enriquecidas no es
suficiente, también puede usar reglas de Direct Configuration (Configuración
directa), la sintaxis de nft sin formato mezclada con las reglas de firewalld.

Estos modos avanzados no están incluidos en el alcance de este capítulo.

REFERENCIAS
Páginas del manual: firewall-cmd(1), firewalld(1), firewalld.zone(5),
firewalld.zones(5) y nft(8)

560 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

EJERCICIO GUIADO

ADMINISTRACIÓN DE FIREWALLS DEL


SERVIDOR
En este ejercicio, controlará el acceso a los servicios del sistema mediante el ajuste de las
reglas del firewall del sistema con firewalld.

RESULTADOS
Debe ser capaz de configurar reglas de firewall para controlar el acceso a los servicios.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab netsecurity-firewalls start. El


comando ejecuta un script de inicio que determina si el host servera es accesible en la red.

[student@workstation ~]$ lab netsecurity-firewalls start

1. Desde workstation, use SSH para iniciar sesión en servera con 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 sistema servera, asegúrese de que tanto el paquete httpd como el paquete mod_ssl
estén instalados. Estos paquetes proporcionan el servidor web Apache que usted protegerá
con un firewall, y las extensiones necesarias para que el servidor web sirva contenido
mediante SSL.

[student@servera ~]$ sudo yum install httpd mod_ssl


[sudo] password for student: student
...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!

3. Con el usuario student en servera, cree el archivo /var/www/html/index.html.


Agregue la siguiente línea de texto: I am servera. (Soy servera).

[student@servera ~]$ sudo bash -c \


"echo 'I am servera.' > /var/www/html/index.html"

RH199-RHEL8.0-es-1-20190531 561
CAPÍTULO 15 | Administración de la seguridad de redes

4. Inicie y habilite el servicio httpd en su sistema servera.

[student@servera ~]$ sudo systemctl enable --now httpd


Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/
lib/systemd/system/httpd.service.

5. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

6. Desde workstation, intente acceder a su servidor web en servera por medio del puerto
no cifrado 80/TCP y del puerto encapsulado SSL 443/TCP. Ambos intentos deberían fallar.

6.1. Este comando debería fallar:

[student@workstation ~]$ curl -k http://servera.lab.example.com


curl: (7) Failed to connect to servera.lab.example.com port 80: No route to host

6.2. Este comando también debería fallar:

[student@workstation ~]$ curl -k https://servera.lab.example.com


curl: (7) Failed to connect to servera.lab.example.com port 443: No route to host

7. Inicie sesión en servera con el usuario student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

8. En servera, asegúrese de que el servicio nftables esté enmascarado y de que el


servicio firewalld esté habilitado y en ejecución.

8.1. Determine si el estado del servicio nftables está enmascarado.

[student@servera ~]$ sudo systemctl status nftables


[sudo] password for student: student
● nftables.service - Netfilter Tables
Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor
preset: disabled)
Active: inactive (dead)
Docs: man:nft(8)

Los resultados muestran que nftables está deshabilitado e inactivo pero no


enmascarado. Ejecute el siguiente comando para enmascarar el servicio.

[student@servera ~]$ sudo systemctl mask nftables


Created symlink /etc/systemd/system/nftables.service → /dev/null.

562 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

8.2. Verifique que el estado del servicio nftables esté enmascarado.

[student@servera ~]$ sudo systemctl status nftables


● nftables.service
Loaded: masked (Reason: Unit nftables.service is masked.)
Active: inactive (dead)

8.3. Verifique que el estado del servicio firewall esté habilitado y en ejecución.

[student@servera ~]$ sudo systemctl status firewalld


● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor
preset: enabled)
Active: active (running) since Wed 2019-05-22 15:36:02 CDT; 5min ago
Docs: man:firewalld(1)
Main PID: 703 (firewalld)
Tasks: 2 (limit: 11405)
Memory: 29.8M
CGroup: /system.slice/firewalld.service
└─703 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --
nopid

May 22 15:36:01 jegui.ilt.example.com systemd[1]: Starting firewalld - dynamic


firewall daemon...
May 22 15:36:02 jegui.ilt.example.com systemd[1]: Started firewalld - dynamic
firewall daemon.

8.4. Salga de servera.

[student@servera ~]$ exit


logout
Connection to servera closed.
[student@workstation ~]$

9. Desde workstation, abra Firefox e inicie sesión en la consola web que se ejecuta en
servera para agregar el servicio httpd a la zona de red public (pública).

9.1. Abra Firefox y navegue hasta https://servera.lab.example.com:9090 para


acceder a la consola web. Acepte el certificado autofirmado usado por servera
agregándolo como una excepción.

9.2. Seleccione la casilla de verificación junto a Reuse my password for privileged tasks
(Volver a usar mi contraseña para tareas con privilegios) para garantizar los privilegios
administrativos.
Inicie sesión como student con la contraseña student.

9.3. Haga clic en Networking (Redes) en la barra de navegación izquierda.

9.4. Haga clic en el enlace de Firewall en la página principal de Networking (Redes).

9.5. Haga clic en el botón Add Services... (Agregar servicios) ubicado en el margen superior
derecho de la página de Firewall.

RH199-RHEL8.0-es-1-20190531 563
CAPÍTULO 15 | Administración de la seguridad de redes

9.6. En la interfaz de usuario de Add Services (Agregar servicios), desplácese hacia abajo o
use Filter Services (Filtrar servicios) para ubicar y seleccionar la casilla de verificación
junto al servicio Secure WWW (HTTPS).

9.7. Haga clic en el botón Add Services (Agregar servicios) ubicado en el margen inferior
derecho de la interfaz de usuario de Add Services (Agregar servicios).

10. Regrese a un terminal en workstation y verifique su trabajo intentando ver el contenido


del servidor web de servera.

10.1. Este comando debería fallar:

[student@workstation ~]$ curl -k http://servera.lab.example.com


curl: (7) Failed to connect to servera.lab.example.com port 80: No route to host

10.2.Este comando debe arrojar resultados satisfactorios:

[student@workstation ~]$ curl -k https://servera.lab.example.com


I am servera.

NOTA
Si usa Firefox para conectarse al servidor web, le solicitará la verificación del
certificado del host si pasa el firewall satisfactoriamente.

Finalizar
En workstation, ejecute el script lab netsecurity-firewalls finish para terminar este
ejercicio.

[student@workstation ~]$ lab netsecurity-firewalls finish

Esto concluye el ejercicio guiado.

564 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

TRABAJO DE LABORATORIO

ADMINISTRACIÓN DE LA SEGURIDAD DE
REDES
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, configurará un firewall y los ajustes de SELinux para permitir
el acceso a múltiples servidores web que se ejecutan en serverb.

RESULTADOS
Deberá ser capaz de configurar el firewall y los ajustes de SELinux en un host del servidor
web.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab netsecurity-review start. Este


comando ejecuta un script de inicio para determinar si el host serverb es accesible en la
red.

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

Su empresa ha decidido ejecutar una nueva aplicación web. Esta aplicación escucha en puertos
80/TCP y 1001/TCP. El puerto 22/TCP para el acceso mediante ssh también debe estar
disponible. Todos los cambios que hace deben persistir en un reinicio.

Si sudo se lo solicita, use student como contraseña.

Importante: La interfaz gráfica usada en el entorno de Aprendizaje en línea de Red Hat necesita


un puerto 5900/TCP para permanecer disponible también. Este puerto también es conocido
bajo el nombre del servicio vnc-server. Si accidentalmente bloquea su acceso a serverb,
puede intentar recuperar el acceso al usar ssh para su máquina serverb desde su máquina
workstation o restablecer su máquina serverb. Si elige restablecer su máquina serverb,
debe ejecutar los scripts de configuración para este trabajo de laboratorio nuevamente. La
configuración de sus máquinas ya incluye una zona personalizada denominada ROL que abre estos
puertos.
1. Desde workstation, pruebe acceder al servidor web predeterminado
en http://serverb.lab.example.com y al host virtual en http://
serverb.lab.example.com:1001.
2. Inicie sesión en serverb para determinar qué está impidiendo el acceso a los servidores
web.
3. Configure SELinux para que permita que el servicio httpd escuche en el puerto 1001/TCP.
4. Desde workstation, pruebe acceder al servidor web predeterminado
en http://serverb.lab.example.com y al host virtual en http://
serverb.lab.example.com:1001.

RH199-RHEL8.0-es-1-20190531 565
CAPÍTULO 15 | Administración de la seguridad de redes

5. Inicie sesión en serverb para determinar si los puertos correctos están asignados al firewall.
6. Agregue el puerto 1001/TCP a la configuración permanente para la zona de red public
(pública). Confirme su configuración.
7. Desde workstation, confirme que el servidor web predeterminado en
serverb.lab.example.com vuelva a SERVER B y que el host virtual en
serverb.lab.example.com:1001 vuelva a VHOST 1.

Evaluación
En workstation, ejecute el comando lab netsecurity-review grade para confirmar que
ha realizado correctamente este ejercicio del trabajo de laboratorio.

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

Finalizar
En workstation, ejecute el script lab netsecurity-review finish para terminar este
ejercicio.

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

Esto concluye el trabajo de laboratorio.

566 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

SOLUCIÓN

ADMINISTRACIÓN DE LA SEGURIDAD DE
REDES
LISTA DE VERIFICACIÓN DE RENDIMIENTO
En este trabajo de laboratorio, configurará un firewall y los ajustes de SELinux para permitir
el acceso a múltiples servidores web que se ejecutan en serverb.

RESULTADOS
Deberá ser capaz de configurar el firewall y los ajustes de SELinux en un host del servidor
web.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

Desde workstation, ejecute el comando lab netsecurity-review start. Este


comando ejecuta un script de inicio para determinar si el host serverb es accesible en la
red.

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

Su empresa ha decidido ejecutar una nueva aplicación web. Esta aplicación escucha en puertos
80/TCP y 1001/TCP. El puerto 22/TCP para el acceso mediante ssh también debe estar
disponible. Todos los cambios que hace deben persistir en un reinicio.

Si sudo se lo solicita, use student como contraseña.

Importante: La interfaz gráfica usada en el entorno de Aprendizaje en línea de Red Hat necesita


un puerto 5900/TCP para permanecer disponible también. Este puerto también es conocido
bajo el nombre del servicio vnc-server. Si accidentalmente bloquea su acceso a serverb,
puede intentar recuperar el acceso al usar ssh para su máquina serverb desde su máquina
workstation o restablecer su máquina serverb. Si elige restablecer su máquina serverb,
debe ejecutar los scripts de configuración para este trabajo de laboratorio nuevamente. La
configuración de sus máquinas ya incluye una zona personalizada denominada ROL que abre estos
puertos.
1. Desde workstation, pruebe acceder al servidor web predeterminado
en http://serverb.lab.example.com y al host virtual en http://
serverb.lab.example.com:1001.

1.1. Pruebe acceder al servidor web en http://serverb.lab.example.com. La prueba


falla actualmente. El servidor web debería volver a SERVER B.

[student@workstation ~]$ curl http://serverb.lab.example.com


curl: (7) Failed to connect to serverb.lab.example.com port 80: Connection refused

RH199-RHEL8.0-es-1-20190531 567
CAPÍTULO 15 | Administración de la seguridad de redes

1.2. Pruebe acceder al host virtual en http://serverb.lab.example.com:1001. La


prueba falla actualmente. El host virtual debería volver a VHOST 1.

[student@workstation ~]$ curl http://serverb.lab.example.com:1001


curl: (7) Failed to connect to serverb.lab.example.com port 1001: No route to host

2. Inicie sesión en serverb para determinar qué está impidiendo el acceso a los servidores
web.

2.1. Desde workstation, abra una sesión de SSH 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.2. Determine si el servicio httpd está activo.

[student@serverb ~]$ systemctl is-active httpd


inactive

2.3. Habilite e inicie el servicio httpd. El servicio httpd no puede iniciarse.

[student@serverb ~]$ sudo systemctl enable --now httpd


[sudo] password for student: student
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/
lib/systemd/system/httpd.service.
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.

2.4. Investigue los motivos que hicieron que el servicio httpd.service no se haya podido
iniciar.

[student@serverb ~]$ systemctl status httpd.service


● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset:
disabled)
Active: failed (Result: exit-code) since Thu 2019-04-11 19:25:36 CDT; 19s ago
Docs: man:httpd.service(8)
Process: 9615 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited,
status=1/FAILURE)
Main PID: 9615 (code=exited, status=1/FAILURE)
Status: "Reading configuration..."

Apr 11 19:25:36 serverb.lab.example.com systemd[1]: Starting The Apache HTTP


Server...
Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: (13)Permission denied:
AH00072: make_sock: could not bind to address [::]:1001
Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: (13)Permission denied:
AH00072: make_sock: could not bind to address 0.0.0.0:1001

568 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: no listening sockets


available, shutting down
Apr 11 19:25:36 serverb.lab.example.com httpd[9615]: AH00015: Unable to open logs
Apr 11 19:25:36 serverb.lab.example.com systemd[1]: httpd.service: Main process
exited, code=exited, status=1/FAILURE
Apr 11 19:25:36 serverb.lab.example.com systemd[1]: httpd.service: Failed with
result 'exit-code'.
Apr 11 19:25:36 serverb.lab.example.com systemd[1]: Failed to start The Apache
HTTP Server.

2.5. Use el comando sealert para verificar si SELinux está impidiendo que el servicio
httpd haga referencia al puerto 1001/TCP.

[student@serverb ~]$ sudo sealert -a /var/log/audit/audit.log


100% done
found 1 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port


1001.

***** Plugin bind_ports (99.5 confidence) suggests ************************

If you want to allow /usr/sbin/httpd to bind to network port 1001


Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 1001
where PORT_TYPE is one of the following: http_cache_port_t, http_port_t,
jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t.

***** Plugin catchall (1.49 confidence) suggests **************************

...output omitted...

3. Configure SELinux para que permita que el servicio httpd escuche en el puerto 1001/TCP.

3.1. Use el comando semanage para encontrar el tipo de puerto correcto.

[student@serverb ~]$ sudo semanage port -l | grep 'http'


http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989

3.2. Use el comando semanage para hacer referencia al puerto 1001/TCP con el tipo
http_port_t.

[student@serverb ~]$ sudo semanage port -a -t http_port_t -p tcp 1001


[student@serverb ~]$

3.3. Confirme si ese puerto 1001/TCP está enlazado con el tipo de puerto http_port_t.

RH199-RHEL8.0-es-1-20190531 569
CAPÍTULO 15 | Administración de la seguridad de redes

[student@serverb ~]$ sudo semanage port -l | grep '^http_port_t'


http_port_t tcp 1001, 80, 81, 443, 488, 8008, 8009, 8443, 9000

3.4. Habilite e inicie el servicio httpd.

[student@serverb ~]$ sudo systemctl enable --now httpd

3.5. Verifique si el servicio httpd está en ejecución.

[student@serverb ~]$ systemctl is-active httpd; systemctl is-enabled httpd


active
enabled

3.6. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

4. Desde workstation, pruebe acceder al servidor web predeterminado


en http://serverb.lab.example.com y al host virtual en http://
serverb.lab.example.com:1001.

4.1. Pruebe acceder al servidor web en http://serverb.lab.example.com. El servidor


web debería volver a SERVER B.

[student@workstation ~]$ curl http://serverb.lab.example.com


SERVER B

4.2. Pruebe acceder al host virtual en http://serverb.lab.example.com:1001. La


prueba sigue fallando.

[student@workstation ~]$ curl http://serverb.lab.example.com:1001


curl: (7) Failed to connect to serverb.lab.example.com port 1001: No route to host

5. Inicie sesión en serverb para determinar si los puertos correctos están asignados al firewall.

5.1. Desde workstation, inicie sesión en serverb con el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

5.2. Verifique que la zona de firewall predeterminada esté configurada en public (pública).

[student@serverb ~]$ firewall-cmd --get-default-zone


public

570 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

5.3. Si el paso anterior no estableció la zona public (pública) nuevamente como la zona
predeterminada, corríjala con el siguiente comando:

[student@serverb ~]$ sudo firewall-cmd --set-default-zone public

5.4. Determine los puertos abiertos listados en la zona de red public (pública).

[student@serverb ~]$ sudo firewall-cmd --permanent --zone=public --list-all


[sudo] password for student: student
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

6. Agregue el puerto 1001/TCP a la configuración permanente para la zona de red public


(pública). Confirme su configuración.

6.1. Agregue el puerto 1001/TCP a la zona de red public (pública).

[student@serverb ~]$ sudo firewall-cmd --permanent --zone=public \


--add-port=1001/tcp
success

6.2. Vuelva a cargar la configuración de firewall.

[student@serverb ~]$ sudo firewall-cmd --reload


success

6.3. Confirme su configuración.

[student@serverb ~]$ sudo firewall-cmd --permanent --zone=public --list-all


public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports: 1001/tcp
protocols:
masquerade: no
forward-ports:
source-ports:

RH199-RHEL8.0-es-1-20190531 571
CAPÍTULO 15 | Administración de la seguridad de redes

icmp-blocks:
rich rules:

6.4. Salga de serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.
[student@workstation ~]$

7. Desde workstation, confirme que el servidor web predeterminado en


serverb.lab.example.com vuelva a SERVER B y que el host virtual en
serverb.lab.example.com:1001 vuelva a VHOST 1.

7.1. Pruebe acceder al servidor web en http://serverb.lab.example.com.

[student@workstation ~]$ curl http://serverb.lab.example.com


SERVER B

7.2. Pruebe acceder al host virtual en http://serverb.lab.example.com:1001.

[student@workstation ~]$ curl http://serverb.lab.example.com:1001


VHOST 1

Evaluación
En workstation, ejecute el comando lab netsecurity-review grade para confirmar que
ha realizado correctamente este ejercicio del trabajo de laboratorio.

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

Finalizar
En workstation, ejecute el script lab netsecurity-review finish para terminar este
ejercicio.

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

Esto concluye el trabajo de laboratorio.

572 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 15 | Administración de la seguridad de redes

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

• El subsistema netfilter permite a los módulos del kernel inspeccionar cada paquete
que atraviese el sistema. Se inspeccionan todos los paquetes de red entrantes, salientes o
reenviados.

• El uso de firewalld ha simplificado la administración al clasificar todo el tráfico de la red


en zonas. Cada zona tiene su propia lista de puertos y servicios. La zona public (pública) se
establece como la zona predeterminada.

• El servicio firewalld incluye un número de servicios predefinidos. Se pueden mostrar por


medio del comando firewall-cmd --get-services.

RH199-RHEL8.0-es-1-20190531 573
574 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16

REVISIÓN COMPLETA
META Revisar tareas de RHCSA Rapid Track .

OBJETIVOS • Revisar tareas de RHCSA Rapid Track .

TRABAJO DE • Trabajo de laboratorio: Corrección de


problemas de arranque y mantenimiento de
LABORATORIO servidores
• Trabajo de laboratorio: Configuración y
administración de sistemas de archivos y
almacenamiento
• Trabajo de laboratorio: Configuración y
administración de seguridad del servidor

RH199-RHEL8.0-es-1-20190531 575
CAPÍTULO 16 | 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 RHCSA Rapid Track.

REVISIÓN RHCSA RAPID TRACK


Antes de comenzar la revisión integral de este curso, los estudiantes deberían sentirse cómodos
con los temas que se explicaron en cada capítulo.

Los estudiantes pueden consultar las secciones anteriores en el libro de textos para lecturas
complementarias.

Capítulo 1, Acceder a sistemas y obtener soporte


Inicie sesión en el sistema Linux local y remoto e investigue los métodos de resolución de
problemas provistos a través de Red Hat Support y Red Hat Insights.

• Iniciar sesión en el sistema Linux en una consola de texto local y ejecutar comandos simples
mediante la shell.

• 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.

• 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.

Capítulo 2, Navegar por sistemas de archivos


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.

• 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").

Capítulo 3, 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.

576 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

• 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 4, 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.

• 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 5, Administración de seguridad de SELinux


Proteger y administrar la seguridad de un servidor con SELinux.

• Describir cómo funciona SELinux y cómo cambiar un servidor entre sus diferentes modos de
cumplimiento.

• Ajustar el tipo SELinux de un archivo para controlar los procesos que pueden acceder a él.

• Cambiar los accesos permitidos por la política de SELinux mediante la configuración de


parámetros ajustables denominados booleanos de SELinux.

• Realizar una investigación básica y resolución de problemas de los accesos bloqueados por
SELinux.

Capítulo 6, Ajuste del rendimiento del sistema


Evaluar y controlar los procesos, configurar los parámetros de ajuste y ajustar las prioridades de
programación de procesos en un sistema Red Hat Enterprise Linux.

• 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.

• Optimizar el rendimiento del sistema seleccionando un perfil de ajuste administrado por el


daemon tuned.

• Dar o quitar la prioridad a procesos específicos con los comandos nice y renice.

Capítulo 7, 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.

• Buscar, instalar y actualizar paquetes de software usando el comando yum.

RH199-RHEL8.0-es-1-20190531 577
CAPÍTULO 16 | Revisión completa

• 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 8, Administración de almacenamiento básico


Crear y administrar dispositivos de almacenamiento, particiones, sistemas de archivos y espacios
de intercambio desde la línea de comandos.

• 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.

• Crear particiones de almacenamiento, formatearlas con sistemas de archivos y montarlas para


su uso.

• Crear y administrar espacios de intercambio para complementar la memoria física.

Capítulo 9, Control de servicios y del proceso de arranque


Controlar y monitorear los servicios de red, los daemons del sistema y el proceso de arranque 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.

• Describir el proceso de arranque de Red Hat Enterprise Linux, configurar el objetivo


predeterminado que se usa en el arranque e iniciar un sistema con un objetivo no
predeterminado.

• Iniciar sesión en un sistema y cambiar la contraseña root cuando la actual se haya perdido.

• Reparar manualmente la configuración del sistema de archivos o problemas de daños que


detengan el proceso de arranque.

Capítulo 10, Administración de redes


Configure las interfaces de red y la configuración en servidores Red Hat Enterprise  Linux.

• 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

Capítulo 11, Análisis y almacenamiento de registros


Ubicar e interpretar correctamente registros de eventos del sistema para la resolución de
problemas.

578 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

• 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, Implementación de funciones avanzadas de


almacenamiento
Crear y administrar volúmenes lógicos que contengan sistemas de archivos y espacios de
intercambio desde la línea de comandos, y configurar características de almacenamiento avanzado
con Stratis y VDO.

• Crear y administrar volúmenes lógicos desde dispositivos de almacenamiento y formatearlos


con sistemas de archivos o prepararlos con espacios de intercambio.

• Agregar y eliminar el almacenamiento asignado a los grupos de volúmenes y ampliar en forma


no destructiva el tamaño de un volumen lógico formateado con un sistema de archivos XFS o
ext4.

• Administrar múltiples capas de almacenamiento al mismo tiempo con la administración de


almacenamiento local Stratis.

• Optimizar el uso del espacio de almacenamiento con VDO para comprimir y desduplicar datos
en dispositivos de almacenamiento.

Capítulo 13, Programación de tareas futuras


Programar tareas para que se ejecuten automáticamente en el futuro

• Programar comandos para que se ejecuten en un horario de repetición usando el archivo


crontab del sistema y directorios

• Habilitar y deshabilitar los temporizadores del sistema y configurar un temporizador que


administre archivos temporales

Capítulo 14, Acceso al almacenamiento conectado a la red


Acceder al almacenamiento conectado a la red con el protocolo NFS.

• Montar, usar y desmontar una exportación de NFS desde la línea de comandos y en el arranque.

• Configurar el automatizador para montar automáticamente un sistema de archivos NFS a


pedido y desmontarlo cuando ya no esté en uso.

Capítulo 15, Administración de la seguridad de redes


Controlar las conexiones de red a los servicios mediante el firewall del sistema.

RH199-RHEL8.0-es-1-20190531 579
CAPÍTULO 16 | Revisión completa

• Aceptar o rechazar las conexiones de red a los servicios del sistema por medio de las reglas de
firewalld.

580 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

TRABAJO DE LABORATORIO

CORRECCIÓN DE PROBLEMAS DE
ARRANQUE Y MANTENIMIENTO DE
SERVIDORES
En esta revisión, solucionará y reparará los problemas de arranque y actualizará el destino
predeterminado del sistema. También programará tareas para que se ejecuten en un
cronograma recurrente como un usuario normal.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Diagnosticar problemas y recuperar el sistema del modo de emergencia.

• Cambiar el destino predeterminado de graphical.target a multi-user.target.

• Programar trabajos recurrentes para que se ejecuten como un usuario normal.

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.

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

En workstation, ejecute lab rhcsa-compreview1 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview1 start

INSTRUCCIONES
Realice las siguientes tareas en serverb para completar la revisión completa:

• En workstation, ejecute el comando lab rhcsa-compreview1 break1. Este script


de ruptura hace que el proceso de arranque falle en serverb. También establece un
tiempo de espera más largo en el menú GRUB2 para ayudar a interrumpir el proceso de
arranque, y reinicia serverb.

Solucione la causa posible y repare el error de arranque. La corrección debe garantizar


que serverb se reinicie sin intervención. Use la contraseña redhat para el superusuario
cuando sea necesario.

• En workstation, ejecute el comando lab rhcsa-compreview1 break2. Este script


de ruptura hace que el destino predeterminado cambie del destino multi-user al
destino graphical en serverb. También establece un tiempo de espera más largo para
el menú GRUB2 para ayudar a interrumpir el proceso de arranque, y reinicia serverb.

En serverb, corrija el destino predeterminado para usar el destino multi-user.


La configuración de destino predeterminada debe persistir después del reinicio sin
intervención manual.

RH199-RHEL8.0-es-1-20190531 581
CAPÍTULO 16 | Revisión completa

Use el comando sudo como el usuario student con student como contraseña para
ejecutar comandos con privilegios.

• Programe un trabajo recurrente con el usuario student que ejecuta el script /home/
student/backup-home.sh por hora entre las 7 p. m. y las 9 p. m. todos los días excepto
sábados y domingos.

Descargue el script de copia de seguridad desde http://materials.example.com/labs/


backup-home.sh. El script de copia de seguridad backup-home.sh realiza una copia
de seguridad del directorio /home/student de serverb a servera en el directorio /
home/student/serverb-backup. Use el script backup-home.sh para programar el
trabajo recurrente como el usuario student en serverb.

• Reinicie el sistema y espere a que el arranque finalice antes de calificar.

Evaluación
En workstation, ejecute el script lab rhcsa-compreview1 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview1 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview1 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview1 finish

Guarde los archivos o trabajos que desee conservar en otros sistemas y, luego, restablezca
workstation, servera y serverb antes del siguiente ejercicio.

Con esto concluye la revisión completa.

582 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

SOLUCIÓN

CORRECCIÓN DE PROBLEMAS DE
ARRANQUE Y MANTENIMIENTO DE
SERVIDORES
En esta revisión, solucionará y reparará los problemas de arranque y actualizará el destino
predeterminado del sistema. También programará tareas para que se ejecuten en un
cronograma recurrente como un usuario normal.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Diagnosticar problemas y recuperar el sistema del modo de emergencia.

• Cambiar el destino predeterminado de graphical.target a multi-user.target.

• Programar trabajos recurrentes para que se ejecuten como un usuario normal.

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.

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

En workstation, ejecute lab rhcsa-compreview1 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview1 start

INSTRUCCIONES
Realice las siguientes tareas en serverb para completar la revisión completa:

• En workstation, ejecute el comando lab rhcsa-compreview1 break1. Este script


de ruptura hace que el proceso de arranque falle en serverb. También establece un
tiempo de espera más largo en el menú GRUB2 para ayudar a interrumpir el proceso de
arranque, y reinicia serverb.

Solucione la causa posible y repare el error de arranque. La corrección debe garantizar


que serverb se reinicie sin intervención. Use la contraseña redhat para el superusuario
cuando sea necesario.

• En workstation, ejecute el comando lab rhcsa-compreview1 break2. Este script


de ruptura hace que el destino predeterminado cambie del destino multi-user al
destino graphical en serverb. También establece un tiempo de espera más largo para
el menú GRUB2 para ayudar a interrumpir el proceso de arranque, y reinicia serverb.

En serverb, corrija el destino predeterminado para usar el destino multi-user.


La configuración de destino predeterminada debe persistir después del reinicio sin
intervención manual.

RH199-RHEL8.0-es-1-20190531 583
CAPÍTULO 16 | Revisión completa

Use el comando sudo como el usuario student con student como contraseña para
ejecutar comandos con privilegios.

• Programe un trabajo recurrente con el usuario student que ejecuta el script /home/
student/backup-home.sh por hora entre las 7 p. m. y las 9 p. m. todos los días excepto
sábados y domingos.

Descargue el script de copia de seguridad desde http://materials.example.com/labs/


backup-home.sh. El script de copia de seguridad backup-home.sh realiza una copia
de seguridad del directorio /home/student de serverb a servera en el directorio /
home/student/serverb-backup. Use el script backup-home.sh para programar el
trabajo recurrente como el usuario student en serverb.

• Reinicie el sistema y espere a que el arranque finalice antes de calificar.

1. En workstation, ejecute el comando lab rhcsa-compreview1 break1.

[student@workstation ~]$ lab rhcsa-compreview1 break1

2. Una vez que serverb se haya iniciado, acceda a la consola y observe que el proceso de
arranque se detuvo antes de tiempo. Tómese un momento para especular sobre la posible
causa de este comportamiento.

2.1. Localice el icono de la consola de serverb, según corresponda para el entorno del aula.
Abra la consola.

2.2. Si observa el error, parece que al menos ciertas partes del sistema aún están
funcionando.

2.3. Presione Ctrl+Alt+Del para reiniciar serverb.


Cuando el menú del cargador de arranque aparezca, presione cualquier tecla excepto
Enter para interrumpir la cuenta regresiva.

2.4. Edite la entrada predeterminada del cargador de arranque en la memoria para iniciar
sesión en modo de emergencia.
Presione e para editar la entrada actual.

2.5. Use las teclas de dirección para navegar hacia la línea que comienza con linux. Agregue
systemd.unit=emergency.target en el final de la línea.

2.6. Presione Ctrl+x para realizar el arranque con la configuración modificada.

2.7. Inicie sesión en el modo de emergencia. La contraseña de root es redhat.

Give root password for maintenance


(or press Control-D to continue): redhat
[root@serverb ~]#

3. Vuelva a montar el sistema de archivos / con acceso de lectura-escritura. Use el comando


mount -a para intentar montar todos los demás sistemas de archivos.

3.1. Vuelva a montar el sistema de archivos / con acceso de lectura-escritura para editarlo.

584 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

[root@serverb ~]# mount -o remount,rw /

3.2. Use el comando mount -a para intentar montar todos los demás sistemas de archivos.
Observe que uno de los sistemas de archivos no se puede montar.

[root@serverb ~]# mount -a


mount: /FakeMount: can't find UUID=fake.

3.3. Edite /etc/fstab para corregir el problema. Elimine o comente la línea incorrecta.

[root@serverb ~]# vim /etc/fstab


...output omitted...
#UUID=fake /FakeMount xfs defaults 0 0

3.4. Actualice systemd para que el sistema registre la configuración de /etc/fstab nueva.

[root@serverb ~]# systemctl daemon-reload


[ 206.828912] systemd[1]: Reloading.

3.5. Intente montar todas las entradas para verificar que /etc/fstab ahora sea correcto.

[root@serverb ~]# mount -a

3.6. Reinicie serverb y espere a que el arranque finalice. Ahora el sistema debería arrancar
normalmente.

[root@serverb ~]# systemctl reboot

4. En workstation, ejecute el comando lab rhcsa-compreview1 break2.

[student@workstation ~]$ lab rhcsa-compreview1 break2

Espere a que se complete el reinicio antes de continuar.


5. En serverb, cambie al destino multi-user. Establezca el destino predeterminado en
multi-user. Use el comando sudo para ejecutar cualquier comando administrativo
requerido y, si se le solicita, use student como contraseña.

5.1. Desde workstation, abra una sesión de SSH en serverb con el usuario student.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$

5.2. Como el usuario student en serverb, determine el destino predeterminado.

[student@serverb ~]$ systemctl get-default


graphical.target

RH199-RHEL8.0-es-1-20190531 585
CAPÍTULO 16 | Revisión completa

5.3. Cambie al destino multi-user. Use el comando sudo y, si se le solicita, use student
como la contraseña.

[student@serverb ~]$ sudo systemctl isolate multi-user.target


[sudo] password for student: student

5.4. Configure serverb para que use el destino multi-user como destino
predeterminado.

[student@serverb ~]$ sudo systemctl set-default multi-user.target


Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/
multi-user.target.

5.5. Reinicie serverb para verificar que el destino multi-user esté configurado como
destino predeterminado.

[student@serverb ~]$ sudo systemctl reboot


Connection to serverb closed by remote host.
Connection to serverb closed.
[student@workstation ~]$

5.6. Después del reinicio, abra una sesión de SSH en serverb como el usuario student.
Verifique que el destino multi-user esté configurado como destino predeterminado.

[student@workstation ~]$ ssh student@serverb


...output omitted...
[student@serverb ~]$ systemctl get-default
multi-user.target

6. Programe un trabajo recurrente con el usuario student que ejecuta el script /home/
student/backup-home.sh por hora entre las 7 p. m. y las 9 p. m. todos los días excepto
sábados y domingos.
Use el script backup-home.sh para programar el trabajo recurrente. Descargue el script de
copia de seguridad de http://materials.example.com/labs/backup-home.sh.

6.1. En serverb, descargue el script de copia de seguridad desde http://


materials.example.com/labs/backup-home.sh. Use chmod para hacer que el script de
copia de seguridad sea ejecutable.

[student@serverb ~]$ wget http://materials.example.com/labs/backup-home.sh


...output omitted...
[student@serverb ~]$ chmod +x backup-home.sh

6.2. Use el comando crontab -e para abrir el archivo crontab con el editor de texto
predeterminado.

[student@serverb ~]$ crontab -e

6.3. Edite el archivo y agregue la siguiente línea:

586 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

0 19-21 * * Mon-Fri /home/student/backup-home.sh

Guarde los cambios y salga del editor.

6.4. Use el comando crontab -l para enumerar los trabajos recurrentes programados.

[student@serverb ~]$ crontab -l


0 19-21 * * Mon-Fri /home/student/backup-home.sh

7. Reinicie serverb y espere a que el arranque finalice antes de calificar.

[student@serverb ~]$ sudo systemctl reboot


[sudo] password for student: student
Connection to serverb closed by remote host.
Connection to serverb closed.
[student@workstation ~]$

Evaluación
En workstation, ejecute el script lab rhcsa-compreview1 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview1 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview1 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview1 finish

Guarde los archivos o trabajos que desee conservar en otros sistemas y, luego, restablezca
workstation, servera y serverb antes del siguiente ejercicio.

Con esto concluye la revisión completa.

RH199-RHEL8.0-es-1-20190531 587
CAPÍTULO 16 | Revisión completa

TRABAJO DE LABORATORIO

CONFIGURACIÓN Y ADMINISTRACIÓN
DE SISTEMAS DE ARCHIVOS Y
ALMACENAMIENTO
En esta revisión, creará un volumen lógico de LVM, montará un sistema de archivos de red,
creará una partición de intercambio que se activará automáticamente en el arranque y
configurará los archivos temporales no usados para que se limpien del sistema .

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un volumen lógico de LVM.

• Montar un sistema de archivos de red

• Crear una partición de intercambio que se active automáticamente en el arranque.

• Configurar los archivos temporales no usados para que se limpien del sistema.

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, a menos que
recién los haya restablecido al final del último ejercicio.

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

En workstation, ejecute lab rhcsa-compreview2 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview2 start

INSTRUCCIONES
Realice las siguientes tareas en serverb para completar la revisión completa.

• Configure un nuevo volumen lógico de 1 GiB denominado vol_home en un nuevo grupo


de volúmenes de 2 GiB denominado extra_storage. Use el disco sin particiones /dev/
vdb para crear particiones.

• El volumen lógico vol_home debe formatearse con el tipo de sistema de archivos XFS y
montarse en /home-directories de manera persistente.

• Asegúrese de que el sistema de archivos de red llamado /share esté montado


de manera persistente en /local-share después del reinicio. El servidor NFS
servera.lab.example.com exporta el sistema de archivos de red /share. La ruta de
exportación de NFS es servera.lab.example.com:/share.

• Cree una nueva partición de 512 MiB en el disco /dev/vdc para usarla como espacio de
intercambio. Este espacio de intercambio debe activarse automáticamente en el arranque.

588 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

• Cree un nuevo grupo llamado production. Cree los usuarios production1,


production2, production3 y production4. Asegúrese de que usen el nuevo grupo
llamado production como su grupo adicional.

• Configure su sistema para que use un nuevo directorio llamado /run/volatile para
almacenar archivos temporales. Los archivos en este directorio deben estar sujetos a una
limpieza basada en el tiempo si no se accede a ellos durante más de 30 segundos. Los
permisos octales para el directorio deben ser 0700. Asegúrese de utilizar el archivo /etc/
tmpfiles.d/volatile.conf para configurar la limpieza basada en el tiempo para los
archivos en /run/volatile.

Evaluación
En workstation, ejecute el script lab rhcsa-compreview2 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview2 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview2 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview2 finish

Con esto concluye la revisión completa.

RH199-RHEL8.0-es-1-20190531 589
CAPÍTULO 16 | Revisión completa

SOLUCIÓN

CONFIGURACIÓN Y ADMINISTRACIÓN
DE SISTEMAS DE ARCHIVOS Y
ALMACENAMIENTO
En esta revisión, creará un volumen lógico de LVM, montará un sistema de archivos de red,
creará una partición de intercambio que se activará automáticamente en el arranque y
configurará los archivos temporales no usados para que se limpien del sistema .

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Crear un volumen lógico de LVM.

• Montar un sistema de archivos de red

• Crear una partición de intercambio que se active automáticamente en el arranque.

• Configurar los archivos temporales no usados para que se limpien del sistema.

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, a menos que
recién los haya restablecido al final del último ejercicio.

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

En workstation, ejecute lab rhcsa-compreview2 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview2 start

INSTRUCCIONES
Realice las siguientes tareas en serverb para completar la revisión completa.

• Configure un nuevo volumen lógico de 1 GiB denominado vol_home en un nuevo grupo


de volúmenes de 2 GiB denominado extra_storage. Use el disco sin particiones /dev/
vdb para crear particiones.

• El volumen lógico vol_home debe formatearse con el tipo de sistema de archivos XFS y
montarse en /home-directories de manera persistente.

• Asegúrese de que el sistema de archivos de red llamado /share esté montado


de manera persistente en /local-share después del reinicio. El servidor NFS
servera.lab.example.com exporta el sistema de archivos de red /share. La ruta de
exportación de NFS es servera.lab.example.com:/share.

• Cree una nueva partición de 512 MiB en el disco /dev/vdc para usarla como espacio de
intercambio. Este espacio de intercambio debe activarse automáticamente en el arranque.

590 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

• Cree un nuevo grupo llamado production. Cree los usuarios production1,


production2, production3 y production4. Asegúrese de que usen el nuevo grupo
llamado production como su grupo adicional.

• Configure su sistema para que use un nuevo directorio llamado /run/volatile para
almacenar archivos temporales. Los archivos en este directorio deben estar sujetos a una
limpieza basada en el tiempo si no se accede a ellos durante más de 30 segundos. Los
permisos octales para el directorio deben ser 0700. Asegúrese de utilizar el archivo /etc/
tmpfiles.d/volatile.conf para configurar la limpieza basada en el tiempo para los
archivos en /run/volatile.

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...

2. Cambie al usuario root.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

3. Cree una partición de 2 GiB en /dev/vdb.

[root@serverb ~]# parted /dev/vdb mklabel msdos


[root@serverb ~]# parted /dev/vdb mkpart primary 1GiB 3GiB

4. Cree un volumen lógico llamado vol_home con la partición de 2 GiB que creó en /dev/vdb.
Asigne al grupo de volúmenes el nombre extra_storage.

4.1. Declare el dispositivo de bloque /dev/vdb1 como volumen físico.

[root@serverb ~]# pvcreate /dev/vdb1


...output omitted...

4.2. Cree el grupo de volúmenes extra_storage con /dev/vdb1.

[root@serverb ~]# vgcreate extra_storage /dev/vdb1


...output omitted...

4.3. Cree un volumen lógico de 1 GiB llamado vol_home.

[root@serverb ~]# lvcreate -L 1GiB -n vol_home extra_storage


...output omitted...

5. Asigne a vol_home el formato de tipo de sistema de archivos XFS y móntelo en /home-


directories.

5.1. Cree un directorio denominado /home-directories.

RH199-RHEL8.0-es-1-20190531 591
CAPÍTULO 16 | Revisión completa

[root@serverb ~]# mkdir /home-directories

5.2. Asigne a /dev/extra_storage/vol_home el formato de tipo de sistema de archivos


XFS.

[root@serverb ~]# mkfs -t xfs /dev/extra_storage/vol_home


...output omitted...

5.3. Monte de manera persistente /dev/extra_storage/vol_home en /home-


directories. Use el UUID de la estructura al crear la entrada en /etc/fstab.

[root@serverb ~]# lsblk -o UUID /dev/extra_storage/vol_home


UUID
988cf149-0667-4733-abca-f80c6ec50ab6
[root@serverb ~]# echo "UUID=988c...0ab6 /home-directories \
xfs defaults 0 0" >> /etc/fstab
[root@serverb ~]# mount -a

6. Asegúrese de que el sistema de archivos de red llamado /share esté montado


de manera persistente en /local-share después del reinicio. El servidor NFS
servera.lab.example.com exporta el sistema de archivos de red /share. La ruta de
exportación de NFS es servera.lab.example.com:/share.

6.1. Cree el directorio /local-share.

[root@serverb ~]# mkdir /local-share

6.2. .Adjunte la entrada correspondiente a /etc/fstab para que el sistema de archivos


de red disponible en servera.lab.example.com:/share se monte de manera
persistente en /local-share después del reinicio

[root@serverb ~]# echo "servera.lab.example.com:/share /local-share \


nfs rw,sync 0 0" >> /etc/fstab

6.3. Monte el sistema de archivos de red en /local-share en función de la entrada en /


etc/fstab.

[root@serverb ~]# mount /local-share

7. Cree una nueva partición de 512 MiB en el disco /dev/vdc para usarlo como espacio de
intercambio. Este espacio de intercambio debe activarse automáticamente en el momento
del arranque.

7.1. Cree una partición de 512 MiB en /dev/vdc.

[root@serverb ~]# parted /dev/vdc mklabel msdos


[root@serverb ~]# parted /dev/vdc mkpart primary 1MiB 513MiB

7.2. Cree el espacio de intercambio en /dev/vdc1.

592 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

[root@serverb ~]# mkswap /dev/vdc1


...output omitted...

7.3. Active el espacio de intercambio para que persista después del reinicio. Use el UUID de
la estructura al crear la entrada en /etc/fstab.

[root@serverb ~]# lsblk -o UUID /dev/vdc1


UUID
cc18ccb6-bd29-48a5-8554-546bf3471b69
[root@serverb ~]# echo "UUID=cc18...1b69 swap \
swap defaults 0 0" >> /etc/fstab
[root@serverb ~]# swapon -a

8. Cree los usuarios production1, production2, production3 y production4. Asegúrese


de que usen el nuevo grupo llamado production como su grupo adicional.

[root@serverb ~]# groupadd production


[root@serverb ~]# for i in 1 2 3 4; do useradd -G production production$i; done

9. Configure su sistema para que use un nuevo directorio llamado /run/volatile para
almacenar archivos temporales. Los archivos en este directorio deben estar sujetos a una
limpieza basada en el tiempo si no se accede a ellos durante más de 30 segundos. Los
permisos octales para el directorio deben ser 0700. Asegúrese de utilizar el archivo /etc/
tmpfiles.d/volatile.conf para configurar la limpieza basada en el tiempo para los
archivos en /run/volatile.

9.1. Cree un archivo llamado /etc/tmpfiles.d/volatile.conf con el siguiente


contenido.

d /run/volatile 0700 root root 30s

9.2. Use el comando systemd-tmpfiles --create para crear el directorio /run/


volatile si no existe.

[root@servera ~]# systemd-tmpfiles --create /etc/tmpfiles.d/volatile.conf

9.3. Salga de la shell del usuario root.

[root@serverb ~]# exit


logout

9.4. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.

RH199-RHEL8.0-es-1-20190531 593
CAPÍTULO 16 | Revisión completa

Evaluación
En workstation, ejecute el script lab rhcsa-compreview2 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview2 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview2 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview2 finish

Con esto concluye la revisión completa.

594 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

TRABAJO DE LABORATORIO

CONFIGURACIÓN Y ADMINISTRACIÓN
DE SEGURIDAD DEL SERVIDOR
En esta revisión, configurará la autenticación basada en claves de SSH, cambiará la
configuración del cortafuegos, ajustará el modo de SELinux y un booleano de SELinux, y
solucionará problemas de SELinux.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Configurar claves de SSH para la autenticación basada en claves.

• Configurar parámetros de firewall.

• Ajustar el modo de SELinux y los booleanos de SELinux.

• Solucionar problemas de SELinux.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-compreview3 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview3 start

INSTRUCCIONES
Realice las siguientes tareas para completar la revisión completa:

• Genere claves de SSH para el usuario student en serverb. No proteja la clave privada
con una frase de contraseña.

• En servera, configure el usuario student para que acepte la autenticación de inicio


de sesión con el par de claves de SSH creado para student en serverb. El usuario
student en serverb debe poder iniciar sesión en servera con SSH sin ingresar una
contraseña. Use student como la contraseña para el usuario student, si se le solicita.

• En servera, cambie el modo predeterminado de SELinux a permissive.

• Configure serverb para que monte automáticamente el directorio de inicio del usuario
production5 cuando el usuario inicie sesión, con el sistema de archivos de red /home-
directories/production5. Este sistema de archivos de red se exporta desde
servera.lab.example.com. Ajuste el booleano correspondiente de SELinux para que
production5 pueda usar el directorio de inicio montado en NFS en serverb después
de la autenticación basada en claves de SSH. La contraseña del usuario production5 es
redhat.

• En serverb, ajuste la configuración del firewall para que se rechacen las conexiones de
SSH que se originan en servera.

RH199-RHEL8.0-es-1-20190531 595
CAPÍTULO 16 | Revisión completa

• En serverb, investigue y corrija el problema con el daemon HTTPD de Apache, que


está configurado para escuchar en el puerto 30080/TCP, pero que no se puede iniciar.
Ajuste la configuración del firewall según corresponda para que el puerto 30080/TCP esté
abierto para conexiones entrantes.

Evaluación
En workstation, ejecute el script lab rhcsa-compreview3 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview3 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview3 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview3 finish

Guarde los archivos o trabajos que desee conservar en otros sistemas y restablezca
workstation, servera y serverb.

Con esto concluye la revisión completa.

596 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

SOLUCIÓN

CONFIGURACIÓN Y ADMINISTRACIÓN
DE SEGURIDAD DEL SERVIDOR
En esta revisión, configurará la autenticación basada en claves de SSH, cambiará la
configuración del cortafuegos, ajustará el modo de SELinux y un booleano de SELinux, y
solucionará problemas de SELinux.

RESULTADOS
Usted deberá ser capaz de realizar lo siguiente:

• Configurar claves de SSH para la autenticación basada en claves.

• Configurar parámetros de firewall.

• Ajustar el modo de SELinux y los booleanos de SELinux.

• Solucionar problemas de SELinux.

ANDES DE COMENZAR
Inicie sesión en workstation como student con la contraseña student.

En workstation, ejecute lab rhcsa-compreview3 start para iniciar la revisión


completa. Este script crea los archivos necesarios para configurar el entorno correctamente.

[student@workstation ~]$ lab rhcsa-compreview3 start

INSTRUCCIONES
Realice las siguientes tareas para completar la revisión completa:

• Genere claves de SSH para el usuario student en serverb. No proteja la clave privada
con una frase de contraseña.

• En servera, configure el usuario student para que acepte la autenticación de inicio


de sesión con el par de claves de SSH creado para student en serverb. El usuario
student en serverb debe poder iniciar sesión en servera con SSH sin ingresar una
contraseña. Use student como la contraseña para el usuario student, si se le solicita.

• En servera, cambie el modo predeterminado de SELinux a permissive.

• Configure serverb para que monte automáticamente el directorio de inicio del usuario
production5 cuando el usuario inicie sesión, con el sistema de archivos de red /home-
directories/production5. Este sistema de archivos de red se exporta desde
servera.lab.example.com. Ajuste el booleano correspondiente de SELinux para que
production5 pueda usar el directorio de inicio montado en NFS en serverb después
de la autenticación basada en claves de SSH. La contraseña del usuario production5 es
redhat.

• En serverb, ajuste la configuración del firewall para que se rechacen las conexiones de
SSH que se originan en servera.

RH199-RHEL8.0-es-1-20190531 597
CAPÍTULO 16 | Revisión completa

• En serverb, investigue y corrija el problema con el daemon HTTPD de Apache, que


está configurado para escuchar en el puerto 30080/TCP, pero que no se puede iniciar.
Ajuste la configuración del firewall según corresponda para que el puerto 30080/TCP esté
abierto para conexiones entrantes.

1. Desde workstation, abra una sesión de SSH en serverb como student.

[student@workstation ~]$ ssh student@serverb


...output omitted...

2. Genere claves de SSH para el usuario student en serverb con el comando ssh-keygen.
No proteja la clave privada con una frase de contraseña.

[student@serverb ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/student/.ssh/id_rsa): Enter
Created directory '/home/student/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/student/.ssh/id_rsa.
Your public key has been saved in /home/student/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1TPZ4TXYwiGWfExUGtRTHgfKQbF9hVuLa+VmH4vgkFY student@serverb.lab.example.com
The key's randomart image is:
+---[RSA 2048]----+
| .+@BO**|
| .=.#+B*|
| . X.*o=|
| . E +.+ |
| S o + |
| + . o = |
| . o o + +|
| . . ..|
| |
+----[SHA256]-----+

3. En servera, configure el usuario student para que acepte la autenticación de inicio de


sesión con el par de claves de SSH que creó para student en serverb. El usuario student
en serverb debe poder iniciar sesión en servera con SSH sin ingresar una contraseña. Use
student como la contraseña para el usuario student, cuando se le solicite.

3.1. Use el comando ssh-copy-id para transferir la clave pública del par de claves SSH de
student en serverb a student en servera. Use student como la contraseña para
el usuario student, si se le solicita.

[student@serverb ~]$ ssh-copy-id student@servera


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/student/.ssh/
id_rsa.pub"
The authenticity of host 'servera (172.25.250.10)' can't be established.
ECDSA key fingerprint is SHA256:g/fIMtVzDWTbTi1l0OwC30sL6cHmro9Tf563NxmeyyE.
Are you sure you want to continue connecting (yes/no)? yes

598 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

/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.

3.2. Use el comando ssh para verificar que el usuario student pueda iniciar sesión en
servera desde serverb sin introducir una contraseña.

[student@serverb ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

4. En servera, cambie el modo predeterminado de SELinux a permissive.

4.1. Edite /etc/sysconfig/selinux para establecer el valor del parámetro SELINUX en


permissive. Puede usar el comando sudo vi /etc/sysconfig/selinux para
editar el archivo de configuración como superusuario. Use la contraseña student, si se
le solicita.

...output omitted...
#SELINUX=enforcing
SELINUX=permissive
...output omitted...

4.2. Use el comando sudo systemctl reboot para reiniciar el sistema como el
superusuario.

[student@servera ~]$ sudo systemctl reboot


Connection to servera closed by remote host.
Connection to servera closed.
[student@serverb ~]$

5. Configure serverb para que monte automáticamente el directorio de inicio del usuario
production5 cuando el usuario inicie sesión, con el sistema de archivos de red /home-
directories/production5. Este sistema de archivos de red se exporta desde
servera.lab.example.com. Ajuste el booleano correspondiente de SELinux para que
production5 pueda usar el directorio de inicio montado en NFS en serverb después
de la autenticación basada en claves de SSH. La contraseña del usuario production5 es
redhat.

5.1. En serverb, use el comando sudo -i para cambiar a la cuenta de usuario root.

[student@serverb ~]$ sudo -i


[sudo] password for student: student
[root@serverb ~]#

5.2. Instale el paquete autofs.

RH199-RHEL8.0-es-1-20190531 599
CAPÍTULO 16 | Revisión completa

[root@serverb ~]# yum install autofs


...output omitted...
Is this ok [y/N]: y
...output omitted...
Installed:
autofs-1:5.1.4-29.el8.x86_64

Complete!

5.3. Cree el archivo de asignación maestro de autofs denominado /etc/


auto.master.d/production5.autofs con el siguiente contenido.

/- /etc/auto.production5

5.4. Cree el archivo /etc/auto.production5 con el siguiente contenido.

/localhome/production5 -rw servera.lab.example.com:/home-directories/production5

5.5. Reinicie el servicio autofs.

[root@serverb ~]# systemctl restart autofs

6. En servera, verifique que el usuario production5 no pueda iniciar sesión en serverb


con la autenticación de clave pública SSH. Un booleano SELinux causa este problema que
solucionará en los siguientes pasos.

6.1. Desde workstation, abra una sesión de SSH para servera como student.

[student@workstation ~]$ ssh student@servera


...output omitted...
[student@servera ~]$

6.2. Cambie al usuario production5 con redhat como contraseña.

[student@servera ~]$ su - production5


Password: redhat
[production5@servera ~]$

6.3. Use el comando ssh-keygen para generar claves SSH como production5..

[production5@servera ~]$ ssh-keygen


Generating public/private rsa key pair.
Enter file in which to save the key (/home/production5/.ssh/id_rsa): Enter
Created directory '/home/production5/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/production5/.ssh/id_rsa.
Your public key has been saved in /home/production5/.ssh/id_rsa.pub.
The key fingerprint is:

600 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

SHA256:zmin1nmCt4H8LA+4FPimtdg81nl7ATbInUFW3HSPxk4
production5@servera.lab.example.com
The key's randomart image is:
+---[RSA 2048]----+
| .oo.o. . |
| .. . .o o |
| . o o E .|
| . o * + |
| . . .So . |
| . + = . |
| *.*+=. . |
| Oo+***.o |
| o.=o.=** |
+----[SHA256]-----+

6.4. Use el comando ssh-copy-id para transferir la clave pública del par de claves SSH
de production5 en servera a production5 en serverb. Use redhat como la
contraseña para el usuario production5, si se le solicita.

[production5@servera ~]$ ssh-copy-id production5@serverb


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/
production5/.ssh/id_rsa.pub"
The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:ciCkaRWF4g6eR9nSdPxQ7KL8czpViXal6BousK544TY.
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
production5@serverb's password: redhat

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'production5@serverb'"


and check to make sure that only the key(s) you wanted were added.

6.5. Use la autenticación basada en clave pública SSH en lugar de la autenticación basada en
contraseña para iniciar sesión en serverb como production5. Este comando debería
fallar.

[production5@servera ~]$ ssh -o pubkeyauthentication=yes \


-o passwordauthentication=no production5@serverb
production5@serverb: Permission denied (publickey,gssapi-keyex,gssapi-with-
mic,password).

7. Establezca la configuración correspondiente del booleano de SELinux en serverb, de modo


que production5 pueda iniciar sesión en serverb con la autenticación basada en clave
pública SSH y use el directorio de inicio.

7.1. En serverb como root, establezca el booleano de SELinux use_nfs_home_dirs en


true.

[root@serverb ~]# setsebool -P use_nfs_home_dirs true

RH199-RHEL8.0-es-1-20190531 601
CAPÍTULO 16 | Revisión completa

7.2. Use la autenticación basada en clave pública SSH en lugar de la autenticación basada
en contraseña para iniciar sesión en serverb como production5. Este comando debe
arrojar resultados satisfactorios.

[production5@servera ~]$ ssh -o pubkeyauthentication=yes \


-o passwordauthentication=no production5@serverb
...output omitted...
[production5@serverb ~]$

8. En serverb, ajuste la configuración del firewall para que se rechacen las conexiones de SSH
que se originan en servera. El sistema servera usa la dirección IPv4 172.25.250.10.

8.1. Use el comando firewall-cmd para agregar la dirección IPv4 de servera a la zona de
firewalld denominada block.

[root@serverb ~]# firewall-cmd --add-source=172.25.250.10/32 \


--zone=block --permanent
success

8.2. Use el comando firewall-cmd --reload para volver a cargar los cambios en la
configuración del firewall.

[root@serverb ~]# firewall-cmd --reload


success

9. En serverb, investigue y corrija el problema con el daemon HTTPD de Apache, que está
configurado para escuchar en el puerto 30080/TCP, pero que no se puede iniciar. Ajuste la
configuración del firewall según corresponda para que el puerto 30080/TCP esté abierto
para conexiones entrantes.

9.1. Use el comando systemctl para reiniciar el servicio httpd. Este comando no puede
reiniciar el servicio.

[root@serverb ~]# systemctl restart httpd.service


Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.

9.2. Use el comando systemctl status para investigar el motivo del error del servicio
httpd.

[root@serverb ~]# systemctl status httpd.service


● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset:
disabled)
Active: failed (Result: exit-code) since Mon 2019-04-15 06:42:41 EDT; 5min ago
Docs: man:httpd.service(8)
Process: 27313 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited,
status=1/FAILURE)
Main PID: 27313 (code=exited, status=1/FAILURE)
Status: "Reading configuration..."

Apr 15 06:42:41 serverb.lab.example.com systemd[1]: Starting The Apache HTTP


Server...

602 RH199-RHEL8.0-es-1-20190531
CAPÍTULO 16 | Revisión completa

Apr 15 06:42:41 serverb.lab.example.com httpd[27313]: (13)Permission denied:


AH00072: make_sock: could not bind to address [::]:30080
Apr 15 06:42:41 serverb.lab.example.com httpd[27313]: (13)Permission denied:
AH00072: make_sock: could not bind to address 0.0.0.0:30080
Apr 15 06:42:41 serverb.lab.example.com httpd[27313]: no listening sockets
available, shutting down
Apr 15 06:42:41 serverb.lab.example.com httpd[27313]: AH00015: Unable to open logs
Apr 15 06:42:41 serverb.lab.example.com systemd[1]: httpd.service: Main process
exited, code=exited, status=1/FAILURE
Apr 15 06:42:41 serverb.lab.example.com systemd[1]: httpd.service: Failed with
result 'exit-code'.
Apr 15 06:42:41 serverb.lab.example.com systemd[1]: Failed to start The Apache
HTTP Server.

Observe el error de permiso en la salida anterior, lo que significa que el daemon httpd
no pudo vincularse con el puerto 30080/TCP. La política de SELinux puede ser una
restricción potencial para que una aplicación se vincule con un puerto. Presione q para
salir del comando systemctl anterior.

9.3. Use el comando sealert para determinar si una política de SELinux está impidiendo
que httpd se vincule con el puerto 30080/TCP.

[root@serverb ~]# sealert -a /var/log/audit/audit.log


100% done
found 1 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port


30080.

***** Plugin bind_ports (92.2 confidence) suggests ************************

If you want to allow /usr/sbin/httpd to bind to network port 30080


Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 30080
where PORT_TYPE is one of the following: http_cache_port_t, http_port_t,
jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t.
...output omitted...

El mensaje de registro anterior revela que el puerto 30080/TCP no tiene el contexto


apropiado de SELinux http_port_t, por lo que SELinux impide que httpd se vincule
con este puerto. El mensaje de registro también produce la sintaxis del comando
semanage port para que pueda corregir fácilmente el problema.

9.4. Use el comando semanage port para establecer el contexto apropiado de SELinux en
el puerto 30080 para que httpd se vincule con él.

[root@serverb ~]# semanage port -a -t http_port_t -p tcp 30080

9.5. Use el comando systemctl para reiniciar httpd. Este comando debe reiniciar el
servicio correctamente.

RH199-RHEL8.0-es-1-20190531 603
CAPÍTULO 16 | Revisión completa

[root@serverb ~]# systemctl restart httpd

9.6. Agregue el puerto 30080/TCP a la zona firewalld predeterminada llamada public


(público).

[root@serverb ~]# firewall-cmd --add-port=30080/tcp --permanent


success
[root@serverb ~]# firewall-cmd --reload
success

9.7. Salga de la shell del usuario root.

[root@serverb ~]# exit


logout

9.8. Cierre sesión en serverb.

[student@serverb ~]$ exit


logout
Connection to serverb closed.

Evaluación
En workstation, ejecute el script lab rhcsa-compreview3 grade para confirmar que ha
realizado correctamente este ejercicio. Corrija los errores informados y vuelva a ejecutar el script
hasta obtener un resultado satisfactorio.

[student@workstation ~]$ lab rhcsa-compreview3 grade

Finalizar
En workstation, ejecute lab rhcsa-compreview3 finish para terminar este ejercicio. Este
script elimina los archivos y recursos creados durante el ejercicio para garantizar que el entorno
esté limpio.

[student@workstation ~]$ lab rhcsa-compreview3 finish

Guarde los archivos o trabajos que desee conservar en otros sistemas y restablezca
workstation, servera y serverb.

Con esto concluye la revisión completa.

604 RH199-RHEL8.0-es-1-20190531

You might also like