Вы находитесь на странице: 1из 83

ADMINISTRACIÓN GNU/LINUX -

NIVEL INTERMEDIO
Manual de usuario
13 de Junio de 2018

DOCUMENTO ELABORADO PARA: PÚBLICO EN GENERAL

DOCUMENTO ELABORADO POR: ACADEMIA DE TECNOLOGÍA PERUANA S.A.C

Términos de Confidencialidad

El presente documento está destinado AL PÚBLICO EN


GENERAL con carácter exclusivamente informativo. La
información detallada puede variar, informando de manera
anticipada los cambios suscitados en el contenido del presente
documento a los interesados correspondiente.
2

HISTORIAL DE VERSIONES

Versión Modificado por Revisado por Detalle


1.0 --- Alberto Vidal Alegria ---

960067641
informes@atp.com.pe
www.atp.com.pe
3

CONTENIDO
1. INTRODUCCIÓN .................................................................................... 6
2. CAPÍTULO I - MONITOREO Y MANEJO DE PROCESOS EN LINUX ......... 7
2.1. Procesos en Linux .................................................................................... 7
2.1.1. ¿QUÉ ES UN PROCESO? .............................................................................. 7
2.1.2. ESTADOS DE UN PROCESO ......................................................................... 7
2.1.3. LISTANDO PROCESOS................................................................................. 8
2.2. Controlando tareas ................................................................................... 9
2.2.1. EJECUTANDO TAREAS EN SEGUNDO PLANO ............................................... 10
2.3. Matando procesos .................................................................................. 12
2.3.1. CONTROL DE PROCESOS USANDO SEÑALES............................................... 12
2.3.2. COMANDO kill .......................................................................................... 13
2.3.3. COMANDO killall ....................................................................................... 13
2.3.4. COMANDO pkill......................................................................................... 13
2.4. Monitoreo de procesos ........................................................................... 14
2.4.1. LOAD AVERAGE ........................................................................................ 14
2.4.2. COMANDO top.......................................................................................... 15
2.5. Práctica de capitulo ................................................................................ 17
3. CONTROL DE SERVICIOS .................................................................... 18
3.1. Introducción a systemd .......................................................................... 18
3.2. Listando servicios con systemctl .............................................................. 19
3.3. Control de servicios de sistema con systemcl ........................................... 20
3.4. Habilitación de servicios y demonios para inicio automático ...................... 22
3.5. Resumen de comandos systemcl ............................................................. 22
3.6. Administración de niveles de ejecución, systemd ...................................... 23
3.7. Práctica de capítulo ................................................................................ 26
4. ANÁLISIS DE LOGS ............................................................................. 27
4.1. Arquitectura de sistemas de logs ............................................................. 27
4.2. Verificación de logs de sistema ............................................................... 28
4.2.1. ARCHIVOS SYSLOG................................................................................... 28
4.2.2. ROTACIÓN DE ARCHIVOS DE LOG ............................................................. 28
4.2.3. ANÁLISIS DE ENTRADAS SYSLOG .............................................................. 29
4.2.4. MONITOREO DE LOGS MEDIANTE EL COMMANDO TAIL .............................. 29
4.3. Entradas del journal systemd .................................................................. 30
4.3.1. COMANDO JOURNACTL ............................................................................. 30
4.4. Ajuste del tiempo del sistema ................................................................. 33
4.4.1. CONFIGURAR HORA LOCAL Y ZONA DE TIEMPO ......................................... 33
4.4.2. CONFIGURANDO Y MONITOREANDO CHRONYD.......................................... 34
4.5. Práctica de capítulo ................................................................................ 36
5. MANEJO DE CONFIGURACIONES DE RED ........................................... 37

960067641
informes@atp.com.pe
www.atp.com.pe
4

5.1. Nombres de interface de red................................................................... 37


5.2. Validando configuraciones de red ............................................................ 37
5.2.1. COMANDO IP ........................................................................................... 37
5.2.2. COMANDO PING ....................................................................................... 38
5.2.3. COMANDON TRACEPATH .......................................................................... 39
5.2.4. COMANDO SS........................................................................................... 39
5.3. Configurando de red mediante nmcli ....................................................... 40
5.3.1. EXAMINANDO LA INFORMACIÓN DE RED MEDIANTE NMCLI ........................ 40
5.3.2. CREANDO CONEXIONES CON nmcli............................................................ 41
5.3.3. MODIFICAR UNA INTERFAZ DE RED MEDIANTE nmcli ................................. 42
5.3.4. RESUMEN DE OPCIONES DEL COMANDO nmcli ........................................... 43
5.4. Configuración de red y DNS mediante archivo de configuración ................ 43
5.5. Configuración de nombre de host y resolucion de nombres....................... 44
5.6. Tabla local de resolución de nombres ...................................................... 45
5.7. Práctica de capítulo ................................................................................ 46
6. ALMACENAMIENTO Y COPIA DE ARCHIVOS ENTRES SISTEMAS LINUX
47
6.1. Manejo de archivo empaquetados y comprimidos ..................................... 47
6.1.1. ¿QUÉ ES TAR? .......................................................................................... 47
6.1.2. EMPAQUETAR ARCHIVOS Y DIRECTORIOS CON TAR ................................... 47
6.1.3. LISTAR EL CONTENIDO DE UN ARCHIVO EMPAQUETADO CON TAR ............. 48
6.1.4. EXTRAER UN ARCHIVO EMPAQUETADO CON TAR ....................................... 48
6.1.5. CREAR UN ARCHIVO COMPRESO CON TAR ................................................. 49
6.1.6. EXTRAER UN ARCHIVO COMPRESO CON TAR ............................................. 50
6.1.7. RESUMEN DE OPCIONES DEL COMANDO tar............................................... 51
6.2. Copia de archivos de manera segura entre sistemas................................. 51
6.3. Sincronización segura de archivos entre sistemas ..................................... 52
6.4. Práctica de capítulo ................................................................................ 54
7. INSTALACIÓN Y ACTUALIZACIONES DE PAQUETES ........................... 55
7.1. Configurando suscripción para el manejo de actualizaciones ..................... 55
7.1.1. COMANDO subscription-manager ............................................................... 55
7.2. Configurando repositorio local ................................................................. 57
7.3. Paquetes de software RPM y yum ........................................................... 58
7.3.1. PAQUETES DE SOFTWARE Y RPM .............................................................. 58
7.3.2. EL MANEJADOR DE PAQUETES YUM........................................................... 59
7.4. Manejo de software mediante yum.......................................................... 61
7.4.1. COMANDO yum ........................................................................................ 61
7.4.2. RESUMEN DE COMANDOS YUM ................................................................. 67
7.5. Habilitando repositorios con yum ............................................................ 67
7.5.1. HABILITANDO REPOSITORIOS OFICIALES DE RED HAT .............................. 67
7.5.2. HABILITANDO REPOSITORIOS DE TERCEROS ............................................ 67

960067641
informes@atp.com.pe
www.atp.com.pe
5

7.6. Examinando los archivos de un paquete RPM........................................... 68


7.6.1. EXAMINANDO PAQUETES DESCARGADOS CON RPM.................................... 68
7.6.2. CONSULTAS RPM: OPCIONES DE SELECCIÓN ............................................. 68
7.6.3. CONSULTAS DE RPM: INFORMACIÓN SOBRE EL CONTENIDO DE LOS
PAQUETES ............................................................................................................. 68
7.6.4. USANDO YUM PARA INSTALAR PAQUETES DE FORMA LOCAL ...................... 70
7.6.5. RESUMEN DE COMANDOS RPM.................................................................. 70
7.7. Práctica de capítulo ................................................................................ 71
8. MANEJO DE DISPOSITIVOS Y SISTEMAS DE ARCHIVOS ................... 72
8.1. Identificación de sistemas de archivos y dispositivos ................................ 72
8.1.1. CONCEPTOS SOBRE EL MANEJO DE ALMACENAMIENTO .............................. 72
8.1.2. EXAMINANDO SISTEMAS DE ARCHIVOS ..................................................... 73
8.2. Montaje y desmontaje de sistemas de archivo ......................................... 74
8.2.1. MONTAJE MANUAL DE SISTEMAS DE ARCHIVOS......................................... 74
8.2.2. DESMONATAJE DE SISTEMAS DE ARCHIVOS .............................................. 75
8.2.3. ACCESO A DISPOSITIVOS DE ALMACENAMIENTO REMOVIBLES ................... 76
8.3. Crear enlaces entre archivos ................................................................... 76
8.4. Búsqueda de archivos y carpetas ............................................................ 77
8.4.1. COMANDO locate ...................................................................................... 78
8.4.2. COMANDO find ......................................................................................... 79
8.5. Práctica de capítulo ................................................................................ 83

960067641
informes@atp.com.pe
www.atp.com.pe
6

1. INTRODUCCIÓN

El presente documento detalla los temas tratados en el curso “Administración GNU/Linux – Nivel
avanzado”, el cual presenta de manera clara los procedimientos usados para lograr de manera
satisfactoria lo propuesto.

960067641
informes@atp.com.pe
www.atp.com.pe
7

2. CAPÍTULO I - MONITOREO Y MANEJO DE PROCESOS EN LINUX

2.1. Procesos en Linux

2.1.1. ¿QUÉ ES UN PROCESO?

Un proceso es una instancia en ejecución de un programa ejecutable que fue lanzado. Un proceso
consiste en:

• Un espacio de dirección(es) de memoria asignada.

• Propiedades de seguridad, incluidas los atributos de propiedad y privilegios de lectura, escritura o


ejecución.

• Uno o más hilos de ejecución.

• El estado del proceso.

2.1.2. ESTADOS DE UN PROCESO

NOMBRE BANDERA NOMBRE DEL ESTADO DE KERNEL DEFINIDO Y DESCRIPCIÓN

960067641
informes@atp.com.pe
www.atp.com.pe
8

Running R TASK_RUNNING: El proceso se está ejecutando en el CPU o esperando


para ejecutarse. El proceso puede ejecutar rutinas de usuario o rutinas
de núcleo (llamadas al sistema), o estar en cola y listo cuando está en
ejecución.
Sleeping S TASK_INTERRUPTIBLE: El proceso está esperando alguna condición: una
solicitud de hardware, acceso a un sistema de seguridad o señal. Cuando
un evento o señal satisface la condición, el proceso vuelve a ejecutarse.
D TASK_UNINTERRUPTIBLE: Este proceso también es considerado
Sleeping, pero a diferencia del estado S, no responderá a las señales
entregadas. Se usa solo bajo condiciones específicas en las que la
interrupción del proceso puede causar un estado impredecible del
dispositivo.
K TASK_KILLABLE: Idéntico al estado D ininterrumpible, pero modificado
para permitir que la tarea de espera responda a una señal de eliminar
(se cierra por completo). Las utilidades frecuentemente muestran
procesos “Killable” como estado D.
Stopped T TASK_STOPPED: El proceso ha sido Detenido (suspendido),
generalmente al ser señalado por un usuario o por su proceso padre. El
proceso se puede continuar (reanudar) con otra señal para volver a
Ejecutarlo.
T TASK_TRACED: Un proceso que se está depurando, está detenido
temporalmente y comparte el mismo indicador de estado T.
Zombie Z EXIT_ZOMBIE: Un proceso secundario (hijo) que su proceso padre
terminó sin aviso a este. Se liberan todos los recursos excepto la
identidad del proceso (PlD).
X EXIT_DEAD: Cuando el padre limpia (cosecha) la estructura de proceso
secundario restante, el proceso ahora se libera por completo. Este estado
nunca se observará en las utilidades de listado de procesos.

2.1.3. LISTANDO PROCESOS

El comando ps se usa para enumerar los procesos actuales. El comando puede proporcionar
información detallada del proceso, que incluye.

• La identificación de usuario (UID) el cual determina los privilegios del proceso.

• El PID o identificador de proceso único.

• Cuánta memoria ha asignado el proceso en varios lugares.

• La ubicación del proceso STDOUT, conocido como terminal de control.

• El actual estado del proceso.

[root@labrhel7 ~]# ps aux


USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

960067641
informes@atp.com.pe
www.atp.com.pe
9

root 1 3.5 1.3 46236 6772 ? Ss 15:34 0:01


/usr/lib/systemd/systemd --switched-
root 2 0.0 0.0 0 0 ? S 15:34 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 15:34 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 15:34 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 15:34 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 15:34 0:00 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S 15:34 0:00 [migration/0]

De forma predeterminada, ps sin opciones selecciona todos los procesos con el mismo ID de usuario
(UID) que el usuario actual y asociado con el mismo terminal donde se invocó ps.

• Procesos entre paréntesis (usualmente en la parte superior) son hilos del núcleo reprogramados.

• El comando ps muestra una sola vez la salida correspondiente al momento que se la invoco.

• Es posible mostrar los procesos emparentados agregando la opción “f”

[root@labrhel7 ~]# ps auxf


root 985 0.0 0.8 105996 4072 ? Ss 15:35 0:00 /usr/sbin/sshd -D
root 1019 0.0 1.1 146032 5536 ? Ss 15:35 0:00 \_ sshd:
root@pts/0
root 1105 0.0 0.4 115524 2128 pts/0 Ss 15:35 0:00 | \_ -bash
root 1245 0.0 0.3 151200 1896 pts/0 R+ 15:58 0:00 | \_ ps
auxf
root 1094 0.0 1.0 145700 5124 ? Ss 15:35 0:00 \_ sshd:
root@notty
root 1098 0.0 0.4 51112 2116 ? Ss 15:35 0:00 \_
/usr/libexec/openssh/sftp-se
root 987 0.0 3.3 562392 16564 ? Ssl 15:35 0:00 /usr/bin/python -
Es /usr/sbin/tuned
root 1087 0.0 0.4 89544 2084 ? Ss 15:35 0:00
/usr/libexec/postfix/master -w
postfix 1088 0.0 0.8 89648 4008 ? S 15:35 0:00 \_ pickup -l -t
unix -u
postfix 1089 0.0 0.8 89716 4032 ? S 15:35 0:00 \_ qmgr -l -t
unix -u

2.2. Controlando tareas

El control de trabajos es una función del Shell de comandos que permite que una sola instancia de
Shell ejecute y administre varios comandos. Sin el control de tareas, un Shell padre bifurca un proceso
hijo para ejecutar un comando, durmiendo hasta que el proceso hijo finalice. Cuando el indicador del
Shell vuelve a aparecer, el Shell principal ha regresado. Con el control de tareas, los comandos se
pueden suspender, reanudar y ejecutar selectivamente asincrónicamente, lo que permite que el Shell
regrese para comandos adicionales mientras se ejecutan procesos secundarios.

Un proceso en primer plano es un comando que se ejecuta en una ventana de terminal del dispositivo
del terminal (tty) la cual tiene control del proceso. Los procesos en primer plano reciben entradas

960067641
informes@atp.com.pe
www.atp.com.pe
10

generadas por teclado, señales y una actualización para leer o escribir en el terminal (por ejemplo, a
través de stdin y stdout).

Se crea una sesión de proceso cuando un terminal o consola se abre por primera vez (por ejemplo, al
iniciar sesión o al invocar una nueva instancia de Terminal). Todos los procesos (por ejemplo, el
primer Shell de comandos, sus elementos secundarios y las tuberías) iniciados desde ese terminal
comparten el mismo ID de sesión. Dentro de una sesión, solo un proceso puede estar en primer plano
a la vez.

Un proceso en segundo plano (background) es iniciado sin que necesite de control desde la terminal,
porque no necesita interacción desde ella. En una lista de ps, dichos procesos (por ejemplo, daemons
de servicio y subprocesos de procesos del kernel) muestran un signo de interrogación (?) En la
columna TTY. Los procesos de segundo plano que (incorrectamente) intentan leer o escribir en el
terminal pueden ser suspendidos.

2.2.1. EJECUTANDO TAREAS EN SEGUNDO PLANO

Cualquier comando se puede iniciar en segundo plano al agregar el signo de ampersand (&) a la línea
de comando. El Shell bash muestra un número de trabajo (exclusivo de la sesión) y el PID del nuevo
proceso hijo. El shell de comandos no espera al proceso secundario y vuelve a mostrar el prompt del
shell.

[root@labrhel7 ~]# sleep 1000 &


[1] 1296

el signo de ampersand (&) enviará a segundo plano solo el último comando de una sentencia con
tuberías de concatenación (pipeline), a menos que el conjunto de comandos esté rodeado de
paréntesis. El PID devuelto proviene del último proceso de la tubería. En el ejemplo, al haber
paréntesis en todo el comando, todos los procesos en la tubería son ahora miembros del mismo
trabajo.

[root@labrhel7 ~]# (example_command | sort | mail -s "Sort output" ) &


[1] 5231

Las tareas que fueron ejecutadas en segundo plano, son mostradas a través del comando jobs.

[root@labrhel7 ~]# jobs


[1]- Ejecutando sleep 1000 &
[2]+ Ejecutando ping 8.8.8.8 &>/dev/null &

Los trabajos en segundo plano pueden volver a conectarse al terminal de control al ponerse en primer
plano utilizando el comando fg con la ID del trabajo (% del número de trabajo).

[root@labrhel7 ~]# fg %1
sleep 1000

960067641
informes@atp.com.pe
www.atp.com.pe
11

El comando de ejemplo sleep se está ejecutando ahora en la terminal de control. El Shell de


comandos está otra vez dormido, esperando que este proceso hijo salga. Para volver a enviar el
fondo, o para enviar un comando en el cual el ampersand no se incluyó originalmente, si se desea
enviar nuevamente a segundo plano ducho comando, esto es realizado mediante la combinación
Ctrl+z.

[root@labrhel7 ~]# fg %1
sleep 1000
^Z
[1]+ Detenido sleep 1000
[root@labrhel7 ~]#

La suspensión tiene efecto de inmediato. El trabajo se coloca en segundo plano. La salida pendiente y
el tipo de teclado se descartan.

La opción ps j muestra la información del trabajo, incluido el Shell de comando inicial de cada sesión.
Como el comando de ejemplo de suspensión está actualmente suspendido, el indicador de estado que
se muestra es T.

[root@labrhel7 ~]# ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 623 623 623 tty1 623 Ss+ 0 0:00 /sbin/agetty --noclear
tty1 linux
1019 1105 1105 1105 pts/0 1407 Ss 0 0:00 -bash
1105 1404 1404 1105 pts/0 1407 T 0 0:00 sleep 1000
1105 1405 1405 1105 pts/0 1407 S 0 0:00 ping 8.8.8.8
1105 1407 1407 1105 pts/0 1407 R+ 0 0:00 ps j

960067641
informes@atp.com.pe
www.atp.com.pe
12

2.3. Matando procesos

2.3.1. CONTROL DE PROCESOS USANDO SEÑALES

Una señal es una interrupción de software entregada a un proceso. Las señales informan eventos a un
programa en ejecución. Los eventos que generan una señal pueden ser un error, un evento externo
(por ejemplo, una solicitud de 1/0 o un temporizador caducado) o una solicitud explícita (por ejemplo,
el uso de un comando de envío de señal o una secuencia de teclado).

La siguiente tabla enumera las señales fundamentales utilizadas por los administradores del sistema
para la administración rutinaria del proceso. Es posible consultar las señales por su nombre corto
(HUP) o propio (SIGHUP).

NÚMERO NOMBRE DEFINICIÓN PROPÓSITO


DE SEÑAL CORTO
1 HUP Hangup Usado para reportar la terminación de un proceso
controlado de un terminal. También usado para
ejecutar una reinicialización de un proceso
(recargar las configuraciones) sin terminarlo.
2 INT Keybord Interrupt Causa la terminación del proceso. Puede ser
bloqueada o manejada. Es posible enviar esta
señal mediante la combinación Ctrl+c.
3 QUIT Keybord quit Similar a SIGINT, con la diferencia que produce
un volcado de proceso al terminar. Es posible
enviar esta señal mediante la combinación
Ctrl+\.
9 KILL Kill, unblockable Causa una terminación abrupta del proceso. Esta
interrupción no puede ser bloqueada, ignorada o
manejada, no hay reversión.
15 (default) TERM Terminate Causa una terminación del proceso. A diferencia
de SIGKILL, esta puede ser bloqueada, ignorada
o manejada. Es la forma más amable de solicitar
una terminación de un proceso.
18 CONT Continue Envía una señal de resumen si es que el proceso
está detenido. No puede ser bloqueado. Incluso si
el proceso es manejable, siempre resumirá el
proceso.
19 STOP Stop, unblockable Suspende el proceso. No se puede bloquear o
manejar dicho proceso.
20 TSTP Keyboard stop A diferencia de SIGSTOP, puede ser bloqueado,
ignorado y manejado. Es posible enviar esta señal
usando la combinación Ctrl+z.

960067641
informes@atp.com.pe
www.atp.com.pe
13

2.3.2. COMANDO kill

El comando kill envía una señal a un proceso usando para ello su PID. A pesar de su nombre, el
comando kill puede usarse para enviar cualquier señal, no solo aquellas para terminar programas.

[root@labrhel7 ~]# kill PID


[root@labrhel7 ~]# kill -signal PID
[root@labrhel7 ~]# 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

2.3.3. COMANDO killall

El comando killall sirve para enviar una señal a uno o más procesos que coincidan con los criterios
de selección, como un nombre de comando, procesos de un usuario específico o todos los procesos
del sistema.

[root@labrhel7 ~]# killall patron


[root@labrhel7 ~]# killall -signal patron
[root@labrhel7 ~]# killall -signal -u usuario patron

2.3.4. COMANDO pkill

El comando pkill, así como killall, puede señalar múltiples procesos. pkill utiliza criterios de selección
más avanzados, que pueden incluir combinaciones de:

Comando: procesa con un nombre de comando coincidente con el patrón.


UID: Procesos propiedad de una cuenta de usuario de Linux, efectiva o real.
GID: Procesos propiedad de una cuenta de grupo de Linux, efectiva o real.
Proceso padre: hijo de un proceso primario específico.
Terminal: procesos que se ejecutan en un terminal de control específico.

[root@labrhel7 ~]# pkill patron


[root@labrhel7 ~]# pkill -signal patron
[root@labrhel7 ~]# pkill -G GID patron
[root@labrhel7 ~]# pkill -P PPID patron

960067641
informes@atp.com.pe
www.atp.com.pe
14

2.4. Monitoreo de procesos

2.4.1. LOAD AVERAGE

El kernel de Linux calcula una métrica promedio de carga como una media móvil exponencial de la
carga, un recuento acumulativo de CPU de solicitudes de recursos del sistema activo.

• Las solicitudes activas se cuentan a partir de colas por CPU para ejecutar subprocesos e hilos en
espera de I/O, ya que el kernel sigue la actividad del recurso de proceso y los cambios de estado
de proceso correspondientes.

• El número de carga es una rutina de cálculo que se ejecuta cada cinco segundos de forma
predeterminada. que acumula y promedia las solicitudes activas en un solo número para todas las
CPU.

• El promedio móvil exponencial es una fórmula matemática para suavizar los altos y bajos de los
datos de tendencia, aumentar la importancia de la actividad actual y disminuir la calidad de los
datos.

• El promedio de carga es el resultado de la rutina de cálculo del número de carga. Colectivamente,


se refiere a los tres valores mostrados de los datos de actividad del sistema promediados durante
los últimos 1, 5 y 15 minutos

Entendiendo el cálculo del load average en Linux.

El promedio de carga representa la carga percibida del sistema durante un período de tiempo. Linux
implementa el cálculo del promedio de carga como una representación de los tiempos de espera del
servicio esperado, no solo para la CPU sino también para el disco y la red I/O.

• Linux cuenta no solo los procesos, sino los hilos individualmente, como tareas separadas. Colas de
solicitud de CPU para ejecutar subprocesos (nr_running) e hilos en espera de recursos de I/O
(nr_iowait) se corresponden razonablemente con los estados de proceso R (En ejecución) y D
(Inactible Dormir). La espera de I/O incluye tareas para las respuestas esperadas del disco y la
red.

• El número de carga es un cálculo de contador global, que se suma para todas las CPU. Si las
tareas que regresan del modo reposo se pueden reescalonar a diferentes CPU, los recuentos
precisos por CPU son difíciles. pero se asegura un conteo acumulativo exacto. Los promedios de
carga mostrados representan todas las CPUs.

• Linux cuenta cada hyperthread central y microprocesador de la CPU física como unidades de
ejecución separadas, lógicamente representadas y denominadas CPU individuales. Cada CPU tiene
colas de solicitud independientes. Ver /proc/cpuinfo para la representación del kernel de las CPUs
del sistema.

[root@labrhel7 ~]# grep "model name" /proc/cpuinfo

960067641
informes@atp.com.pe
www.atp.com.pe
15

model name : Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz


[root@labrhel7 ~]# grep "model name" /proc/cpuinfo | wc -l
1

Interpretando el valor mostrado para el load average

Los tres valores representan los valores ponderados durante el último minuto, así como los últimos 5 y
15 minutos. Un vistazo rápido puede indicar si la carga del sistema parece aumentar o disminuir. El
cálculo de este valor de carga aproximado por CPU puede determinar si el sistema está
experimentando una sobre carga.

• Los comandso top, uptime y w muestran el valor de load average

[root@labrhel7 ~]# uptime


16:33:22 up 5:49, 1 user, load average: 0,00, 0,01, 0,05

• Para determinar la carga, es necesario dividir los valores mostrados entre el número de CPUs
lógicos. Un valor por debajo de 1 indica un uso satisfactorio de recursos y un mínimo tiempo de
espera. Un valor por encima de 1 indica una saturación de recursos y algunos servicios en estado
de espera a ser atendidos.

2.4.2. COMANDO top

El programa top es una vista dinámica de los procesos del sistema, que muestra un encabezado de
resumen seguido de un proceso o lista de hilos similar a la información del comando ps a diferencia
de la salida estática de dicho comando, la parte superior se actualiza continuamente en un intervalo
configurable y proporciona capacidades para reordenar columnas, ordenarlas y destacarlas. Las
configuraciones de usuario se pueden guardar y hacer persistentes.

En el comando se muestra por columnas lo siguiente.

• El ID de proceso (PID).
• El dueño del proceso (USER).
• Memoria virtual (VIRT), es toda la memoria que usa el proceso, incluida la usada por las librerías y
cualquier página de memoria mapeada o intercambiada.
• Memoria residente (RES), es la memoria física no intercambiada que utiliza una tarea.
• Estado del proceso.
o D = Ininterrumpible durmiendo
o R = Corriendo
o S = Durmiendo
o T = Detenido o rastreado
o Z = Zombie
• El tiempo de CPU (TIME), es el tiempo total de procesamiento desde que comenzó el proceso. Se
puede cambiar para incluir el tiempo acumulativo de todos los procesos hijos anteriores.
• El nombre del proceso
Las opciones fundamentales del comando top se muestran en la siguiente tabla.

960067641
informes@atp.com.pe
www.atp.com.pe
16

TECLA PROPÓSITO
?oh Muestra la ayuda del comando top.
l, t, m Alterna entre la carga, los hilos y las líneas del encabezado de la memoria.
1 Alternar mostrando CPU individuales o un resumen para todas las CPUs en el
encabezado.
s Cambia la frecuencia de actualización (pantalla) en decimales de segundos (por
ejemplo, 0.5, 1, 5).
b Alternar resaltado inverso para procesos en ejecución; el valor predeterminado es
solo negrita.
B Permite el uso de negrita en la pantalla, en el encabezado y para ejecutar procesos.
H Alternar en hilos; muestra el resumen del proceso o hilos individuales.
u, U Filtrar para cualquier nombre de usuario (efectivo, real).
M Ordena la lista de procesos por uso de memoria, en orden descendente.
P Ordena la lista de procesos por utilización del procesador, en orden descendente.
k Mata a un proceso, ingresando PID y luego señal.
r Reiniciar un proceso. Cuando se le solicite, ingrese PID, luego nice_value.
w Escriba (guarde) la configuración de visualización actual para usarla en el siguiente
reinicio superior.
q Salir

960067641
informes@atp.com.pe
www.atp.com.pe
17

2.5. Práctica de capitulo

1. Abrir dos terminales. En el terminal de la izquierda ejecutar el siguiente proceso el cual escribirá de
manera continua la palabra piedra más un espacio en el archivo ~/salida con un intervalo de 1s. El
siguiente comando debe estar rodeado de paréntesis para que sea interpretado como un solo
proceso.

[root@labrhel7 ~]# (while true; do echo -n "piedra " >> ~/salida; sleep 1; done)

2. En la terminal de la derecha usar el comando tail para verificar la salida del archivo ~/salida.

3. En la terminal de la izquierda suspender el proceso corriendo. La Shell debe retornar el ID del


proceso dentro de corchetes. En la terminal de la derecha corroborar que el proceso está detenido.

4. En el terminal de la izquierda, listar las tareas mediante el comando jobs. Reiniciar la tarea
suspendida en segundo plano. Confirmar en la otra terminal que el proceso nuevamente esta
corriendo.

5. Ejecutar dos nuevos procesos directamente en segundo plano.

[root@labrhel7 ~]# (while true; do echo -n "papel " >> ~/salida; sleep 1; done) &
[2] 4917
[root@labrhel7 ~]# (while true; do echo -n "tijera " >> ~/salida; sleep 1; done) &
[3] 4966

6. Suspender el proceso piedra usando los comandos fg y Ctrl+z, confirmar que dicho proceso no
escribe en la salida ~/salida.

7. Verificar el estado de los procesos mediante el comando ps.

8. Suspender el proceso papel y resumirlo nuevamente usando el comando kill.

9. Terminar los procesos piedra, papel y tijera mediante el comando kill.

960067641
informes@atp.com.pe
www.atp.com.pe
18

3. CONTROL DE SERVICIOS

3.1. Introducción a systemd

El inicio del sistema y los procesos del servidor son manejados por systemd - System and Service
Manager. Este programa proveé métodos para activar los recursos del sistema, demonios y otros
procesos.

Los demonios son procesos que esperan o corren en segundo plano (background) realizando
diferentes tareas. Generalmente los demonios levantan automáticamente al inicio (boot time) y
continuan corriendo hasta el apagado del servidor o hasta que son manualmente detenidos. Por
convención los nombres de la mayoría de programas demonios terminan con la letra “d”.

En CentOS 7 / RHEL 7, systemd reemplaza el sistema tradicional de inicio init, heredado de los
sistemas operativos estilo UNIX System V y Berkeley Software Distribution (BSD). Systemd es un
conjunto de demonios de administración de sistema destinados a interactuar con el núcleo del
Sistema Operativo GNU/Linux.

El comando systemctl es usado para manejar diferentes tipos de objetos systemd, llamados
unidades. La lista de todas las unidades que maneja systemd pueden ser mostradas mediante el
siguiente comando.

[root@labrhel7 ~]# systemctl -t help


Available unit types:
service
socket
busname
target

Las unidades de servicio tienen la extensión .service y representan servicios del sistema. Este tipo de
unidades es usado para empezar los demonios frecuentemente accesdidos como por ejemplo un
servidor web.

Las unidades de path tinene la extensión .path y son usadas para demorar la activación de un servicio
hasta que un cambio particular a nivel de sistema de archivos ocurra. Esto es comunmente usado por
servicios que manejan un directorio spoll por ejemplo el sistema de impresión.

El estado de un servicio puede ser verificado mediante el siguiente comando. Por ejemplo, si
deseamos verificar el estado del servicio sshd.

[root@labrhel7 ~]# 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 lun 2017-10-30 22:51:16 -05; 20min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 867 (sshd)

960067641
informes@atp.com.pe
www.atp.com.pe
19

CGroup: /system.slice/sshd.service
└─867 /usr/sbin/sshd -D

Múltiples palabras claves que indican el estado del servicio pueden ser encontrada en la salida del
comando.

PALABRA CLAVE DESCRIPCIÓN


loaded Archivo de configuración de unidad que ha sido procesada.
active (running) Corriendo con uno o más procesos continuos.
active (exited) Configuración de un solo tiempo satisfactoriamente completada.
active (waiting) Corriendo pero a la espera de un evento.
inactive Apagado no está corriendo.
enabled Será iniciado al momento del encendido del servidor (boot time).
disabled No será iniciado al momento del encendido del servidor (boot time).
static No puede ser habilitado, pero puede ser iniciado por una unidad habilitada
automáticamente.
NOTA: El comando systemctl status NAME remplaza el anterior comando service NAME status
usado en las versiones anteriores.

3.2. Listando servicios con systemctl

• Consultar el estado de todas las unidades para verificar si se inicia con el sistema.

[root@labrhel7 ~]# systemctl


UNIT LOAD ACTIVE SUB DESCRIPTION

auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler

• Consultar únicamente el estado de los servicios.

[root@labrhel7 ~]# systemctl --type=service


UNIT LOAD ACTIVE SUB DESCRIPTION
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
firewalld.service loaded active running firewalld - dynamic
firewall daemon
getty@tty1.service loaded active running Getty on tty1
kmod-static-nodes.service loaded active exited Create list of required
static device nodes for the current kernel
lvm2-lvmetad.service loaded active running LVM2 metadata daemon
lvm2-monitor.service loaded active exited Monitoring of LVM2
mirrors, snapshots etc. using dmeventd or progress polling
lvm2-pvscan@8:2.service loaded active exited LVM2 PV scan on device 8:2

960067641
informes@atp.com.pe
www.atp.com.pe
20

• Consultar el estado de un servicio. Opcionalmente, se agregua la opción -l para mostrar la salida


completa.

[root@labrhel7 ~]# systemctl status sshd.service -l


● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset:
enabled)
Active: active (running) since jue 2018-03-29 10:44:57 -05; 12h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 982 (sshd)
CGroup: /system.slice/sshd.service
└─982 /usr/sbin/sshd -D

mar 29 10:46:10 labcentos7.atp.com.pe sshd[1092]: Accepted password for root from


192.168.56.1 port 49242 ssh2

• El argumento status también se puede usar para determinar si una unidad en particular está activa
y mostrar si la unidad está habilitada para comenzar en el momento del arranque. Existen
comandos alternativos que pueden mostrar fácilmente si está habilitado en el arranque.

[root@labrhel7 ~]# systemctl is-active sshd


active
[root@labrhel7 ~]# systemctl is-enabled sshd
enabled

• Si deseamos listar todas las unidades de servicio del sistema activas, ejecutamos el siguiente
comando.

[root@labrhel7 ~]# systemctl list-units --type=service


UNIT LOAD ACTIVE SUB DESCRIPTION
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
getty@tty1.service loaded active running Getty on tty1

• Si deseamos listar todas las unidades de servicio incluida las inactivas.

[root@labrhel7 ~]# systemctl list-units --type=service --all

3.3. Control de servicios de sistema con systemcl

Los cambios en un archivo de configuración o sus actualizaciones a un servicio pueden requerir que se
reinicie el servicio. Un servicio que ya no se usa puede detenerse antes de eliminar el software. Un
servicio que no se usa con frecuencia puede ser iniciado manualmente por un administrador solo
cuando es necesario.

960067641
informes@atp.com.pe
www.atp.com.pe
21

• Verificar el estado de un servicio.

[root@labrhel7 ~]# systemctl status postfix.service


● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset:
disabled)
Active: active (running) since jue 2018-03-29 10:44:59 -05; 12h ago
Main PID: 1081 (master)
CGroup: /system.slice/postfix.service
├─1081 /usr/libexec/postfix/master -w
├─1083 qmgr -l -t unix -u
└─6771 pickup -l -t unix -u

mar 29 10:44:56 labcentos7.atp.com.pe systemd[1]: Starting Postfix Mail Transport


Agent...
mar 29 10:44:59 labcentos7.atp.com.pe postfix/master[1081]: daemon started --
version 2.10.1, configuration /etc/postfix
mar 29 10:44:59 labcentos7.atp.com.pe systemd[1]: Started Postfix Mail Transport
Agent.

• Detener un servicio y verificar su estado.

[root@labrhel7 ~]# systemctl stop postfix.service


[root@labrhel7 ~]# systemctl status postfix.service

• Iniciar un servicio y verificar su estado, el ID de proceso cambió.

[root@labrhel7 ~]# systemctl start postfix.service


[root@labrhel7 ~]# systemctl status postfix.service

• Detener e iniciar el servicio en un solo comando.

[root@labrhel7 ~]# systemctl restart postfix.service


[root@labrhel7 ~]# systemctl status postfix.service

• Emita instrucciones para que un servicio lea y vuelva a cargar su archivo de configuración sin
detenerse ni iniciarse por completo. El PID del proceso no cambiará.

[root@labrhel7 ~]# systemctl reload postfix.service


[root@labrhel7 ~]# systemctl status postfix.service

• En ocasiones deseamos que un servicio manejado por systemd no pueda ser levantado, por
ejemplo para preveer que un servicio que pueda entrar en conflicto con otro (por ejemplo, el
servicio Network Manager y el servicio network manejan ambos el tema de redes) sea iniciado de
manera accidental, dicho servicio puede ser enmascarado. El enmascaramiento crea un enlace nulo
en el directorio de configuraciones, de tal forma que si un servicio es iniciado, nada pasará. Para
ello ejecutamos lo siguiente.

[root@labrhel7 ~]# systemctl mask NetworkManager


Created symlink from /etc/systemd/system/NetworkManager.service to /dev/null.

960067641
informes@atp.com.pe
www.atp.com.pe
22

• Si deseamos desenmascarar el servicio.

[root@labrhel7 ~]# systemctl unmask network


Removed symlink /etc/systemd/system/network.service.

3.4. Habilitación de servicios y demonios para inicio automático

Iniciar un servicio en un sistema en ejecución no garantiza que el servicio se inicie cuando el sistema
se reinicie. De manera similar, detener un servicio en un sistema en ejecución no evitará que se inicie
cuando el sistema se reinicie. Los servicios se inician en el momento del arranque cuando los enlaces
se crean en los directorios de configuración del sistema apropiados. Estos enlaces se crean y eliminan
con comandos systemctl.

• Deshabilitar el servicio y verificar el estado. Tenga en cuenta que deshabilitar un servicio no


detiene el servicio.

[root@labrhel7 ~]# systemctl disable postfix.service


Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@labrhel7 ~]# systemctl status postfix.service

• Habilitar el servicio y verificar el estado

[root@labrhel7 ~]# systemctl enable postfix.service


Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to
/usr/lib/systemd/system/postfix.service.
[root@labrhel7 ~]# systemctl status postfix.service

3.5. Resumen de comandos systemcl

COMANDO DESCRIPCIÓN
systemctl status UNIT Mostrar descripción detallada del estado de una unidad.
systemctl stop UNIT Detener un servicio que actualmente corre en el sistema.
systemctl start UNIT Iniciar un servicio en el sistema.
systemctl restart UNITReiniciar un servicio en el sistema.
systemctl reload UNIT Recargar configuración de un servicio en ejecución.
systemctl enable UNIT Configurar un servicio para iniciar al momento de encender el sistema.
systemctl disable UNITDeshabilitar un servicio para no iniciar al momento de encender el sistema.
systemctl mask UNIT Deshabilita completamente un servicio, no puede ser iniciado ni
manualmente ni al inicio del sistema.
systemctl unmask UNIT Hace que un servicio enmascarado vuelva a estar disponible.

960067641
informes@atp.com.pe
www.atp.com.pe
23

3.6. Administración de niveles de ejecución, systemd

Systemd usa el concepto de targets en contra posición al concepto de run-levels. El archivo


/etc/inittab, utilizado en las versiones anteriores, ya no es usado. systemd target es un conjunto de
unidades manejadas por systemd las cuales deberían ser iniciadas para alcanzar un estado deseado.

Los mas importantes targets estan listadas en la siguiente tabla.

TARGET PROPÓSITO
graphical.target El sistema soporta múltiples usuarios, inicio de sesión mediante interfaz
gráfica y modo texto. Equivalente al nivel de inicio (runlevel) 5.
multi-users.target El sistema soporta múltiples usuarios, inicio de sesión únicamente en modo
texto. Equivalente al nivel de inicio (runlevel) 3.
rescue.target Sistema básico inicializado de manera completa. Equivalente al nivel de
inicio (runlevel) 1.
poweroff.target Apagará todos los servicios levantados, desmontará todos los sistemas de
archivos y apagará el sistema. Equivalente al nivel de inicio (runlevel) 0.
reboot.target Apagará todos los servicios levantados, desmontará todos los sistemas de
archivos y reiniciará el sistema. Equivalente al nivel de inicio (runlevel) 6.

Si deseamos verificar el nivel de ejcución actual, ejecutaremos el siguiente comando.

[root@labrhel7 ~]# systemctl get-default


multi-user.target

Antes de cambiar el nivel de ejecución por defecto a usar, necesitamos comprobar los targets
disponibles y activos en el sistema para ello ejecutamos el siguiente comando.

[root@labrhel7 ~]# systemctl list-units --type=target


UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target loaded active active Network
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers

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.

960067641
informes@atp.com.pe
www.atp.com.pe
24

16 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Cabe resaltar que si no hemos instalado interfaz gráfica alguna, el comando anterior no mostrará el
target correspondiente a este nivel de ejecución (nivel 5), puesto que se encuentra en un estado de
inactividad. Para verificar todos los targets, incluido aquellos que están inactivos, ejecutamos el
siguiente comando.

[root@labrhel7 ~]# systemctl list-units --type=target --all


UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
emergency.target loaded inactive dead Emergency Mode
final.target loaded inactive dead Final Step
getty.target loaded active active Login Prompts
graphical.target loaded inactive dead Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded inactive dead Network (Pre)
network.target loaded active active Network
nss-lookup.target loaded inactive dead Host and Network Name Lookups
nss-user-lookup.target loaded inactive dead User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded inactive dead Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
rescue.target loaded inactive dead Rescue Mode
shutdown.target loaded inactive dead Shutdown
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
● syslog.target not-found inactive dead syslog.target
time-sync.target loaded inactive dead System Time Synchronized
timers.target loaded active active Timers
umount.target loaded inactive dead Unmount All Filesystems

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.

28 loaded units listed.


To show all installed unit files use 'systemctl list-unit-files'.

Si deseamos cambiar el nivel de ejecución por defecto al nivel 5 (multiusuario con interfaz gráfica),
ejecutamos el siguiente comando.

[root@labrhel7 ~]# systemctl set-default graphical.target


Removed symlink /etc/systemd/system/default.target.

960067641
informes@atp.com.pe
www.atp.com.pe
25

Created symlink from /etc/systemd/system/default.target to


/usr/lib/systemd/system/graphical.target.

Finalmente reiniciamos el sistema operativo.

# reboot

Si nos fijamos bien, el comando anterior modifica el archivo /etc/systemd/system/default.target, este


archivo contiene la configuración principal del nivel de ejecución de nuestro sistema operativo. El
comando realiza en primer lugar la eliminación del archivo /etc/systemd/system/default.target el cual
es un link simbolico a la configuración elegida, luego crea un enlance simbólico con la nueva
configuración deseada (en nuestro caso, el nivel de ejcución 5 multiusuario con interfaz gráfica).

Si deseamos verificar el contenido del directorio systemd relacionado a los niveles de ejecución,
ejecutamos el siguiente comando.

[root@labrhel7 ~]# ls -l /lib/systemd/system/runlevel*target


lrwxrwxrwx. 1 root root 15 oct 18 18:36 /lib/systemd/system/runlevel0.target ->
poweroff.target
lrwxrwxrwx. 1 root root 13 oct 18 18:36 /lib/systemd/system/runlevel1.target ->
rescue.target
lrwxrwxrwx. 1 root root 17 oct 18 18:36 /lib/systemd/system/runlevel2.target ->
multi-user.target
lrwxrwxrwx. 1 root root 17 oct 18 18:36 /lib/systemd/system/runlevel3.target ->
multi-user.target
lrwxrwxrwx. 1 root root 17 oct 18 18:36 /lib/systemd/system/runlevel4.target ->
multi-user.target
lrwxrwxrwx. 1 root root 16 oct 18 18:36 /lib/systemd/system/runlevel5.target ->
graphical.target
lrwxrwxrwx. 1 root root 13 oct 18 18:36 /lib/systemd/system/runlevel6.target ->
reboot.target

Ahora sabemos que exactamente realiza el comando, es decir si deseamos modificar de manera
manual el nivel de inicio, lo que realizamos sería lo siguiente.

[root@labrhel7 ~]# rm -rf /etc/systemd/system/default.target


[root@labrhel7 ~]# ln -s /lib/systemd/system/graphical.target
/etc/systemd/system/default.target

O en su defecto.

[root@labrhel7 ~]# ln -s /lib/systemd/system/runlevel5.target


/etc/systemd/system/default.target

960067641
informes@atp.com.pe
www.atp.com.pe
26

3.7. Práctica de capítulo

1. Enumerar todas las unidades de servicio en el sistema.

2. Enumerar todas las unidades de socket, activas e inactivas, en el sistema.

3. Explorar el estado del servicio de chronyd. Este servicio se usa para sincronización de tiempo de
red (NTP).

4. Determinar si el servicio sshd está habilitado para comenzar de manera automática al arrancar el
sistema.

5. Verificar el estado del servicio postfix. Deshabilitar el servicio postfix para que no se inicie al
arrancar el sistema, luego ver el estado del servicio. Reiniciar el sistema operativo y verificar
nuevamente el estado del servicio postfix.

960067641
informes@atp.com.pe
www.atp.com.pe
27

4. ANÁLISIS DE LOGS

4.1. Arquitectura de sistemas de logs

Los procesos y el kernel del sistema operativo deben poder registrar un registro de eventos que
suceden. Estos registros pueden ser útiles para auditar el sistema y solucionar problemas. Por
convención, el directorio /var/log es donde estos registros se almacenan de forma persistente.

Un sistema de registro estándar basado en el protocolo Syslog está integrado en Red Hat Enterprise
Linux 7. Muchos programas usan este sistema para registrar eventos y organizarlos en archivos de
registro. En Red Hat Enterprise Linux 7, los mensajes syslog son manejados por dos servicios,
systemd-journald y rsyslog.

El demonio systemd-journald proporciona un servicio de gestión de registros mejorado que recopila


mensajes del kernel, las primeras etapas del proceso de arranque, salida estándar y error del demonio
a medida que se inician y se ejecutan. Syslog escribe estos mensajes en un diario estructurado de
eventos que, de forma predeterminada, no persiste entre reinicios. Esto permite que los mensajes y
eventos syslog que se omitieron por syslog se recopilen en una base de datos central. Los mensajes
syslog también son enviados por systemd-journald a rsyslog para su posterior procesamiento.

El servicio rsyslog luego ordena los mensajes syslog por tipo (o recurso) y prioridad, y los escribe en
los archivos persistentes en el directorio /var/log. El directorio /var/log contiene varios archivos de
registro específicos del sistema y del servicio mantenidos por rsyslog.

ARCHIVO LOG PROPÓSITO


/var/log/messages La mayoría de los mensajes syslog se registran aquí. A excepción de los
mensajes relacionados con la autenticación y el procesamiento del correo
electrónico, aquellos que periódicamente ejecutan trabajos y que están
puramente depurados.
/var/log/secure El archivo de registro de seguridad y los mensajes y errores relacionados
con la autenticación.
/var/log/maillog El archivo de registro con mensajes relacionados con el servicio de correo.
/var/log/cron Este archivo de registro esta relacionado con las tareas ejecutadas
periódicamente.
/var/log/boot.log Los mensajes relacionados con el inicio del sistema se vuelven a cargar
aquí.

960067641
informes@atp.com.pe
www.atp.com.pe
28

4.2. Verificación de logs de sistema

4.2.1. ARCHIVOS SYSLOG

Muchos programas usan el protocolo syslog para registrar eventos en el sistema. Cada mensaje de
registro se clasifica por una facility (el tipo de mensaje) y una prioridad (la gravedad del mensaje).
Las instalaciones que están disponibles están documentadas en la página de comando man
rsyslog.conf (5).

Las ocho prioridades están estandarizadas y clasificadas de la siguiente manera:

CÓDIGO PRIOIRDAD SEVERIDAD


0 emerg El sistema no se puede usar.
1 alert Una acción debe ser tomada inmediatamente.
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 significante.
6 info Información de un evento.
7 debug Mensaje a nivel de depuración.

El servicio rsyslogd usa el facility y la prioridad de los mensajes de registro para determinar cómo
manejarlos. Esto se configura por el archivo /etc/rsyslog.conf y por los archivos *.conf en la carpeta
/etc/rsyslog.d. Los programas y administradores pueden cambiar la configuración del servicio rsyslogd
de tal manera de tal manera que no se vea afectado el archivo principal de configuración, todo esto
se realiza mediante archivos individuales dentro del directorio /etc/rsyslog.d.

La sección ####RULES#### del archivo /etc/rsyslog.conf contiene directivas que definen dónde se
guardan los mensajes de registro. El lado izquierdo de cada línea indica el facility y la gravedad del
mensaje de registro que coincide con la directiva. El archivo rsyslog.conf puede contener el carácter *
como un comodín en el campo de facility y gravedad, donde representa todos los tipos de
severidades. El lado derecho de cada línea indica en qué archivo guardar el mensaje de registro. Los
mensajes de registro normalmente se guardan en archivos en el directorio /var/log como un estándar.

4.2.2. ROTACIÓN DE ARCHIVOS DE LOG

Los registros son "rotados" por la utilidad de rotación de registros (logrotate) para evitar que llenen el
sistema de archivos que contiene /var/log/. Cuando se rota un archivo de registro, se renombra con
una extensión que indica la fecha en que se rotó: por ejemplo, el archivo /var/log/messages puede
convertirse en /var/log/messages-20141030 si se rota el 30 de octubre de 2014. Una vez que se rota
el archivo de registro anterior, se crea un nuevo archivo de registro y se notifica al servicio que
escribe en él.

960067641
informes@atp.com.pe
www.atp.com.pe
29

Después de cierto número de rotaciones, generalmente después de cuatro semanas, el archivo de


registro anterior se descarta para liberar espacio en el disco. Un trabajo cron ejecuta el programa de
rotación de registros diariamente para ver si es necesario rotar algún registro. La mayoría de los
archivos de registro se rotan semanalmente, pero la rotación del registro gira un poco más rápido, o
más lento, o cuando alcanzan un cierto tamaño, por ejemplo.

El actual curso no cubre la configuración de esta utilidad (logrotate).

4.2.3. ANÁLISIS DE ENTRADAS SYSLOG

Los registros del sistema escritos por rsyslog comienzan con el mensaje más antiguo en la parte
superior y el último mensaje al final del archivo de registro. Todas las entradas de registro en archivos
de registro gestionados por rsyslog se graban en un formato estándar. El siguiente ejemplo se
explicará la estructura de un mensaje de archivo de registro /var/log/secure.

1Apr 3 09:36:56 2labcentos7 3sshd[1092]: 4Accepted password for root from


192.168.56.1 port 49232 ssh2

1
La marca de tiempo cuando se registró la entrada de registro.
2
El host desde el que se envió el mensaje de registro.
3
El programa o proceso que envió el mensaje de registro.
4
El mensaje real enviado.

4.2.4. MONITOREO DE LOGS MEDIANTE EL COMMANDO TAIL

Es especialmente útil para reproducir problemas y problemas para monitorear uno o más archivos de
registro para eventos. El comando tail -f /path/to/file pone las últimas 10 líneas del archivo
especificado y continúa generando nuevas líneas a medida que se escriben en el archivo monitoreado.

Para supervisar los intentos fallidos de inicio de sesión en un terminal, ejecute ssh como usuario root
mientras un usuario intenta iniciar sesión en el equipo labcentos7:

[root@labrhel7 ~]# tail -f /var/log/secure


Apr 3 09:36:09 labcentos7 polkitd[589]: Loading rules from directory /etc/polkit-
1/rules.d
Apr 3 09:36:09 labcentos7 polkitd[589]: Loading rules from directory
/usr/share/polkit-1/rules.d
Apr 3 09:36:09 labcentos7 polkitd[589]: Finished loading, compiling and executing
2 rules
Apr 3 09:36:09 labcentos7 polkitd[589]: Acquired the name
org.freedesktop.PolicyKit1 on the system bus

960067641
informes@atp.com.pe
www.atp.com.pe
30

4.3. Entradas del journal systemd

El journal systemd almacena datos de registro en un archivo binario estructurado e indexado. Estos
datos incluyen información adicional sobre el evento de registro. Para eventos syslog, esto puede
incluir la instalación y la prioridad del mensaje original, por ejemplo.

En Red Hat Enterprise Linux 7, el journal systemd se almacena por defecto en /run/log y su contenido
se borra después de un reinicio. Esta configuración puede ser modificada por el administrador del
sistema si se desea.

4.3.1. COMANDO JOURNACTL

El comando journalctl muestra el log completo del sistema, comenzando con la entrada de registro
más antigua, cuando se ejecuta como usuario raíz:

[root@labrhel7 ~]# journalctl


-- Logs begin at mar 2018-04-03 09:35:51 -05, end at mar 2018-04-03 09:46:00 -05. -
-
abr 03 09:35:51 labcentos7.atp.com.pe systemd-journal[86]: Runtime journal is using
4.0M (max allowed 24.4M, trying to leave 36.6M free of 240.1M available
abr 03 09:35:51 labcentos7.atp.com.pe kernel: Initializing cgroup subsys cpuset
abr 03 09:35:51 labcentos7.atp.com.pe kernel: Initializing cgroup subsys cpu
abr 03 09:35:51 labcentos7.atp.com.pe kernel: Initializing cgroup subsys cpuacct

El comando journalctl resalta en negrita los avisos de prioridad de nivel advertencia (warning), y los
mensajes de error y de más alta prioridad se resaltan en rojo.

La clave para utilizar con éxito los logs para la resolución de problemas y la auditoría, es limitar la
salida de los mismos a resultados relevantes. En los párrafos siguientes, se presentarán varias
estrategias diferentes para mejorar las consultas en los logs.

Por defecto. journalctl -n muestra las últimas 10 entradas de registro. Se necesita un parámetro
opcional para ver cuántas de las últimas entradas de registro se deben mostrar. Para mostrar las
últimas 5 entradas de registro, ejecute:

[root@labrhel7 ~]# journalctl -n 5


-- Logs begin at mar 2018-04-03 09:35:51 -05, end at mar 2018-04-03 09:51:04 -05. -
-
abr 03 09:46:00 labcentos7.atp.com.pe systemd[1]: Started Network Manager Script
Dispatcher Service.
abr 03 09:46:00 labcentos7.atp.com.pe nm-dispatcher[1211]: req:1 'dhcp4-change'
[enp0s3]: new request (3 scripts)
abr 03 09:46:00 labcentos7.atp.com.pe nm-dispatcher[1211]: req:1 'dhcp4-change'
[enp0s3]: start running ordered scripts...
abr 03 09:51:03 labcentos7.atp.com.pe systemd[1]: Starting Cleanup of Temporary
Directories...
abr 03 09:51:04 labcentos7.atp.com.pe systemd[1]: Started Cleanup of Temporary
Directories.

960067641
informes@atp.com.pe
www.atp.com.pe
31

Para solucionar problemas, es útil filtrar la salida de logs por prioridad de las entradas. El comando
journalctl -p toma el nombre o el número de niveles de prioridad conocidos y muestra los niveles
dados y todas las entradas de nivel superior. Los niveles de prioridad conocidos por journalctl son
debug, info, notice, warning, err, crit, alert y emerg.

Para filtrar la salida del comando journalctl para que solo enumere cualquier entrada de registro de
error de prioridad anterior, se ejecuta:

[root@labrhel7 ~]# journalctl -p err


-- Logs begin at mar 2018-04-03 09:35:51 -05, end at mar 2018-04-03 09:51:04 -05. -
-
abr 03 09:36:16 labcentos7.atp.com.pe dhclient[752]: suspect value in domain_name
option - discarded
abr 03 09:46:00 labcentos7.atp.com.pe dhclient[1202]: suspect value in domain_name
option - discarded

De forma similar al comando tail -f, journalctl -f emite las últimas 10 líneas del diario y continúa
generando nuevas entradas del log a medida que se escriben en él.

[root@labrhel7 ~]# journalctl -f


-- Logs begin at mar 2018-04-03 09:35:51 -05. --
abr 03 09:58:51 labcentos7.atp.com.pe NetworkManager[628]: <info>
[1522767531.9329] device (enp0s3): Activation: successful, device activated.
abr 03 09:58:51 labcentos7.atp.com.pe nm-dispatcher[1239]: req:3 'up' [enp0s3]: new
request (3 scripts)
abr 03 09:58:51 labcentos7.atp.com.pe nm-dispatcher[1239]: req:3 'up' [enp0s3]:
start running ordered scripts...
abr 03 09:58:51 labcentos7.atp.com.pe nm-dispatcher[1239]: req:4 'connectivity-
change': new request (3 scripts)
abr 03 09:58:51 labcentos7.atp.com.pe chronyd[601]: Source 201.217.3.85 online
abr 03 09:58:51 labcentos7.atp.com.pe chronyd[601]: Source 200.1.19.17 online
abr 03 09:58:51 labcentos7.atp.com.pe chronyd[601]: Source 164.73.227.4 online
abr 03 09:58:51 labcentos7.atp.com.pe chronyd[601]: Source 200.189.40.8 online
abr 03 09:58:51 labcentos7.atp.com.pe nm-dispatcher[1239]: req:4 'connectivity-
change': start running ordered scripts...
abr 03 09:59:04 labcentos7.atp.com.pe chronyd[601]: Selected source 200.1.19.17

Cuando se buscan eventos específicos, es útil limitar el resultado a un marco de tiempo específico. El
comando journalctl tiene dos opciones para limitar la salida a un rango de tiempo específico, las
opciones --since y --until. Ambas opciones toman un parámetro de tiempo en el formato AAAA-MM-DD
hh:mm:ss. Si se omite la fecha, el comando asume que la fecha es hoy, y si se omite la parte de
tiempo, se asume todo el día, que comienza a las 00:00:00. Ambas opciones toman yesterday, today
y tomorrow como parámetros válidos además del campo de fecha y hora.

[root@labrhel7 ~]# journalctl --since today

[root@labrhel7 ~]# journalctl --since "2014-02-10 20:30:00" --until "2014-02-13


12:00:00"

960067641
informes@atp.com.pe
www.atp.com.pe
32

Además del contenido visible del log, hay campos adjuntos a las entradas de registro que solo se
pueden ver cuando se activa la salida detallada (verbose mode). Todos los campos adicionales
mostrados se pueden usar para filtrar el resultado de una consulta del log. Esto es útil para reducir la
salida de búsquedas complejas para ciertos evento.

[root@labrhel7 ~]# journalctl -o verbose


-- Logs begin at mar 2018-04-03 09:35:51 -05, end at mar 2018-04-03 10:05:47 -05. -
-
mar 2018-04-03 09:35:51.662390 -05
[s=c5d58535521d43beaa7eb977f5bc36ca;i=1;b=9597c90ffd21493c9d353fca7eb5d499;m=d23ff;
t=568f29f8bbb36;x=89e08fbc4760dc36]
PRIORITY=6
_TRANSPORT=driver
MESSAGE=Runtime journal is using 4.0M (max allowed 24.4M, trying to leave 36.6M
free of 240.1M available → current limit 24.4M).
MESSAGE_ID=ec387f577b844b8fa948f33cad9a75e6
_PID=86
_UID=0
_GID=0
_COMM=systemd-journal
_EXE=/usr/lib/systemd/systemd-journald
_CMDLINE=/usr/lib/systemd/systemd-journald
_CAP_EFFECTIVE=5402800cf
_SYSTEMD_CGROUP=/system.slice/systemd-journald.service
_SYSTEMD_UNIT=systemd-journald.service
_SYSTEMD_SLICE=system.slice
_BOOT_ID=9597c90ffd21493c9d353fca7eb5d499
_MACHINE_ID=ac1384a08197425bb94a568d321d7e14
_HOSTNAME=labcentos7.atp.com.pe
mar 2018-04-03 09:35:51.663674 -05
[s=c5d58535521d43beaa7eb977f5bc36ca;i=2;b=9597c90ffd21493c9d353fca7eb5d499;m=d2903;
t=568f29f8bc03a;x=62ea396ca142113d]

Entre las opciones más útiles para buscar líneas relevantes para un proceso o evento en particular, se
encuentran:

• _COMM El nombre del comando.

• _EXE El path o ruta absoluta del proceso ejecutable.

• _PID El PID del proceso.

• _UID El UID del usuario que arranca el proceso.

• _SYSTEMD_UNIT La unidad systemd que arranca el proceso.

960067641
informes@atp.com.pe
www.atp.com.pe
33

[root@labrhel7 ~]# journalctl _SYSTEMD_UNIT=postfix.service _PID=1539


-- Logs begin at mar 2018-04-03 09:35:51 -05, end at mar 2018-04-03 10:11:44 -05. -
-
abr 03 10:11:44 labcentos7.atp.com.pe postfix/master[1539]: daemon started --
version 2.10.1, configuration /etc/postfix

4.4. Ajuste del tiempo del sistema

4.4.1. CONFIGURAR HORA LOCAL Y ZONA DE TIEMPO

Corregir el tiempo sincronizado del sistema es muy importante para el análisis de archivos de registro
en múltiples sistemas.

El Network Time Protocol (NTP) es una forma estándar para que las máquinas proporcionen y
obtengan la información de tiempo correcta en Internet. Una máquina puede obtener información de
tiempo precisa de los servicios públicos de NTP en Internet, como el Proyecto de Grupo NTP. Un
reclock a nivel de hardware de alta calidad para entregar tiempo exacto a los clientes locales puede
ser otra opción.

El comando timedatectl muestra una descripción general de la configuración actual del sistema
relacionada con la hora, incluida la hora actual, la zona horaria y la configuración de sincronización
NTP del sistema.

[root@labrhel7 ~]# timedatectl


Local time: mar 2018-04-03 10:22:22 -05
Universal time: mar 2018-04-03 15:22:22 UTC
RTC time: mar 2018-04-03 15:22:19
Time zone: America/Lima (-05, -0500)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

Una base de datos con zonas horarias conocidas está disponible y se puede enumerar con:

[root@labrhel7 ~]# timedatectl list-timezones


Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

Los nombres de zona horaria se basan en la base de datos de zona horaria pública "tz" (o "zoneinfo")
establecida por IANA. Las zonas horarias se nombran en función del continente o del océano, por lo

960067641
informes@atp.com.pe
www.atp.com.pe
34

general, pero no siempre la ciudad más grande con en la región de la zona horaria. Por ejemplo, la
mayoría del estado de Mountain en EE.UU. pertenece la zona horaria "América / Denver".

Seleccionar el nombre correcto puede no ser tan intuitivo en los casos en que las localidades dentro
de la zona horaria tengan diferentes reglas de horario de verano. Por ejemplo, en los EE.UU., Gran
parte del estado de Arizona (tiempo de Mountain en EE.UU.) no tiene un ajuste de horario de verano
y se encuentra en la zona horaria "América/Phoenix".

Para cambiar la configuración actual de hora y fecha con el comando timedatectl, la opción set-time
está disponible. La hora se especifica en el formato "AAAA-MM-DD hh:mm:ss", donde la fecha o la
hora pueden ser omitidas. Para cambiar la hora a las 09:00:00, ejecuta:

[root@labrhel7 ~]# timedatectl set-time 9:00:00

La opción set-ntp habilita o deshabilita la sincronización NTP para un ajuste de tiempo automático. La
opción requiere un argumento verdadero (true) o falso (false) para activarlo o desactivarlo. Para
activar la sincronización NTP, ejecuta:

[root@labrhel7 ~]# timedatectl set-ntp true


[root@labrhel7 ~]# systemctl is-enabled chronyd
enabled

4.4.2. CONFIGURANDO Y MONITOREANDO CHRONYD

El servicio de cronyd mantiene el reloj de hardware local (RTC) sincronizado con los servidores NTP
configurados, a través del archivo de configuración /etc/chrony.conf.

De forma predeterminada, chronyd utiliza servidores del Proyecto de grupo NTP para la sincronización
de tiempo y no necesita configuración adicional. Puede ser útil cambiar los servidores NTP cuando la
máquina en cuestión se encuentra en una red aislada.

[root@labrhel7 ~]# cat /etc/chrony.conf


# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.


driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates


# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).


rtcsync

960067641
informes@atp.com.pe
www.atp.com.pe
35

# Enable hardware timestamping on all interfaces that support it.


#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust


# the system clock.
#minsources 2

# Allow NTP client access from local network.


#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.


#local stratum 10

# Specify file containing keys for NTP authentication.


#keyfile /etc/chrony.keys

# Specify directory for log files.


logdir /var/log/chrony

# Select which information is logged.


#log measurements statistics tracking

Una vez configurado o modificado el archivo principal del servicio chronyd, es necesario reiniciar el
servicio para que los cambios surjan efecto.

[root@labrhel7 ~]# systemctl restart chronyd

Para verificar que la sincronización se lleva a cabo a través de los servidores NTP configurados en el
servicio chronyd, se ejecuta el siguiente comando.

[root@labrhel7 ~]# chronyc sources


210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ b.st1.ntp.br 2 10 377 399 +22ms[ +21ms] +/- 113ms
^+ gps.ntp.br 2 10 377 32m +12ms[ +11ms] +/- 76ms
^* 200-68-58-170.static.tie> 2 9 377 352 -13ms[ -14ms] +/- 80ms
^+ b.ntp.br 2 10 377 333 -5429us[-5429us] +/- 104ms

960067641
informes@atp.com.pe
www.atp.com.pe
36

4.5. Práctica de capítulo

1. Completar la tabla con los siguientes valores.

“/var/log" “/var/log/boot.log” “/var/log/cron” “/var/log/maillog” “/var/log/messages” “/var/log/secure”

PROPÓSITO DEL DIRECTORIO ARCHIVO LOG


La mayoría de los mensajes syslog se registran aquí. Las excepciones son
los mensajes relacionados con la autenticación, el procesamiento de correo
electrónico y los trabajos que se ejecutan periódicamente, o aquellos que
están relacionados puramente con la depuración.
El archivo de registro para la seguridad y los mensajes y errores
relacionados con la autenticación.
El directorio donde el servicio rsyslog escribe todos los logs.
El archivo log relacionado a los eventos de correo electrónico.
El archivo log relacionado a las tareas periódicas que se ejecutan de
manera automática.
Los mensajes relacionados con el inicio del sistema se registran aquí.

2. Reiniciar el servicio postfix y verificar la salida de los logs correspondientes mediante lectura
directa.

3. Reiniciar el servicio chronyd y verificar la salida de los logs mediante el journal systemd.

4. Indicar el orden en que las siguientes actividades para sincronizar la hora en el servidor deben ser
ejecutadas.

__ a. Identificar una zona apropiada mediante el comando timedatectl list-timezones.

__ b. Verificar que la hora ha sido sincronizada contra los nuevos servidores NTP especificados
mediante el comando chronyc sources.

__ c. Especificar un nuevo servidor NTP de donde sincronizar modificando el archivo /etc/chrony.conf

__ d. Habilitar la sincronización NTP.

__ e. Verificar el actual estado con el comando timedatectl.

__ f. Configurar la zona horaria correcta con el comando timedatectl set-timezone

__ g. Reiniciar el servicio chronyd.

4. Deshabilitar el servicio de sincronización de tiempo mediante el comando timedatectl, reiniciar el


servidor y verificar que el servicio chronyd está deshabilitado para iniciar junto al arranque del
sistema.

960067641
informes@atp.com.pe
www.atp.com.pe
37

5. MANEJO DE CONFIGURACIONES DE RED

5.1. Nombres de interface de red

Tradicionalmente, las interfaces de red en Linux se enumeraban como eth0, eth1, eth2, etc. Sin
embargo, el mecanismo que establece estos nombres podía causar cambios de nombres cuando
dispositivos se agregaban o eliminaban. El comportamiento de nomenclatura predeterminado en Red
Hat Enterprise Linux 7 es asignar nombres fijos en función del firmware, la topología del dispositivo y
el tipo de dispositivo. Los nombres de interfaz tienen los siguientes caracteres.

• Interfaces Ethernet comienzan con la palabra en, interfaces WLAN comienzan con wl, e interfaces
WWAN comienzan con ww.

• El siguiente carácter representa el tipo de adaptador, una letra o indica una interfaz embebida, una
letra s indicada una interfaz hotplug y una letra p una interfaz tipo PCI.

• Finalmente, un número N es usado para representar un índice, ID o puerto.

Por ejemplo, la primera interfaz de red incorporada se puede llamar eno1 y una interfaz de red de
tarjeta PCI se puede llamar enp2s0. Los nuevos nombres hacen que sea más fácil distinguir la relación
entre un puerto y su nombre si el usuario conoce ambos, caso contrario, los usuarios no podrían
asumir esto con interfaces llamadas ethx.

5.2. Validando configuraciones de red

5.2.1. COMANDO IP

El comando /sbin/ip es usado para mostrar la información de los dispositivos de red.

[root@labrhel7 ~]# ip address list


2: enp0s3: <BROADCAST,MULTICAST,1UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
2link/ether 08:00:27:7e:7e:73 brd ff:ff:ff:ff:ff:ff
3inet 10.0.2.15/24 brd 410.0.2.255 scope global dynamic enp0s3

valid_lft 84886sec preferred_lft 84886sec


5inet6 fe80::dabe:986a:5dc5:3b9a/64 scope link

valid_lft forever preferred_lft forever

1
Una interfaz active de red tiene el estado UP.
2
La línea “link” identifica la dirección MAC del dispositivo.
3
La línea “inet” muestra la dirección IPV4 y su prefijo.
4
La máscara de red y el nombre del dispositivo también son mostrados en esta línea.
5
La línea inet6 muestra la información de la dirección IPV6.

El comando ip también se puede usar para mostrar estadísticas sobre el rendimiento de la red. Los
paquetes recibidos (RX) y transmitidos (TX), los errores y los contadores descartados se pueden usar
para identificar problemas de red causados por la congestión, la poca memoria y los excesos.
[root@labrhel7 ~]# ip -s link show enp0s3

960067641
informes@atp.com.pe
www.atp.com.pe
38

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP


mode DEFAULT qlen 1000
link/ether 08:00:27:7e:7e:73 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
59862 529 0 0 0 0
TX: bytes packets errors dropped carrier collsns
68590 593 0 0 0 0

El comando ip también es usado para mostrar la configuración de rutas.

[root@labrhel7 ~]# ip route


default via 10.0.2.2 dev enp0s3 proto static metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.10 metric 100

En el ejemplo mostrado, todos los paquetes destinados a la red 10.0.2.0/24 serán enviados
directamente a través de la interfaz enp0s3. Todos los paquetes destinados a la red 192.68.56.0/24
serán enviados directamente al destino a través de la interfaz enp0s8. Cualquier otro paquete será
enviado a la puerta de enlace determinada (default gateway) para que sea reenviado a su destino,
todo esto a través de la interfaz enp0s3.

5.2.2. COMANDO PING

El comando ping se usa para probar la conectividad. El comando continuará ejecutándose hasta que
se presione Control+C a menos que se den opciones para limitar la cantidad de paquetes enviados.

[root@labrhel7 ~]# ping 8.8.8.8


PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=356 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=79.6 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 79.691/218.247/356.804/138.557 ms

Si se desea enviar cierto npumero de paquetes se usa la opción –c, por ejemplo, enviar solo un
paquete de pruebas.

[root@labrhel7 ~]# ping -c 1 8.8.8.8


PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=77.8 ms

--- 8.8.8.8 ping statistics ---


1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 77.878/77.878/77.878/0.000 ms

960067641
informes@atp.com.pe
www.atp.com.pe
39

5.2.3. COMANDON TRACEPATH

Para rastrear la ruta a un host remoto, use traceroute o tracepath. Ambos comandos se pueden usar
para rastrear una ruta con paquetes UDP; sin embargo, muchas redes bloquean el tráfico UDP e
ICMP. El comando traceroute tiene opciones para rastrear la ruta con paquetes UDP
(predeterminado), ICMP (-I) o TCP (-T), pero es posible que este paquete no se instale por defecto.

[root@labrhel7 ~]# tracepath www.google.com


1?: [LOCALHOST] pmtu 1500
1: gateway 0.332ms
1: gateway 1.013ms

Cada línea en la salida de tracepath representa un enrutador o salto por el que pasa el paquete entre
el origen y el destino final. Se proporciona información adicional según disponibilidad, incluido el
tiempo de ida y vuelta (RTT) y cualquier cambio en el tamaño máximo de la unidad de transmisión
(MTU).

5.2.4. COMANDO SS

Los servicios TCP usan sockets como puntos finales para la comunicación y están formados por un
protocolo de dirección IP y un número de puerto. Los servicios normalmente escuchan en puertos
estándar mientras que los clientes usan un puerto aleatorio disponible. Todos los nombres conocidos
para puertos estándar se enumeran en el archivo /etc/services.

El comando ss se usa para mostrar las estadísticas de los sockets. Es similar al comando netstat de
versiones anteriores.

[root@localhost ~]# ss -tnlpa


State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 1*:22 *:*
users:(("sshd",pid=1018,fd=3))
LISTEN 0 100 2127.0.0.1:25 *:*
users:(("master",pid=1114,fd=13))
ESTAB 0 84 192.168.56.10:22 192.168.56.1:62298
users:(("sshd",pid=1148,fd=3))
ESTAB 0 0 192.168.56.10:22 192.168.56.1:62299
users:(("sshd",pid=1152,fd=3))
LISTEN 0 128 :::22 :::*
users:(("sshd",pid=1018,fd=4))
LISTEN 0 100 ::1:25 :::*
users:(("master",pid=1114,fd=14))

1
El Puerto usado por el servicio SSH está escuchando sobre todas las direcciones IPV4. El símbolo
asterisco “*” es usado para representar todo cuando se hace referencia a direcciones y puertos IPV4.
2
El puerto usado por el servicio SMTP está escuchando sobre la interfaz loopback IPV4 127.0.0.1.

960067641
informes@atp.com.pe
www.atp.com.pe
40

OPCIÓN DESCRIPCIÓN
-n Mostrar números en lugar de nombres para interfaces y puertos.
-t Muestra sockets TCP.
-u Muestra sockets UDP.
-l Muestra únicamente sockets en escucha.
-a Muestra todo, sockets en modo escucha y con conexiones establecidas.
-p Muestra el proceso usado por el socket.

5.3. Configurando de red mediante nmcli

El demonio que maneja y administra por defecto las configuraciones de red es NetworkManager. nmcli
es la herramienta a nivel de consola para para conversar con el demonio NetworkManager, todas las
configuraciones de este demonio son guardadas en la ubicación /etc/sysconfig/network-scripts.

Un dispositivo es una interfaz de red. Una conexión es una configuración utilizada para un dispositivo
que se compone de una colección de configuraciones. Múltiples conexiones pueden existir para un
dispositivo, pero solo una puede estar activa a la vez. Por ejemplo, un sistema normalmente se puede
conectar a una red con configuraciones proporcionadas por DHCP. Ocasionalmente, ese sistema debe
estar conectado a una red de laboratorio o centro de datos, que solo usa redes estáticas. En lugar de
cambiar la configuración de forma manual, cada configuración se puede almacenar como una
conexión separada.

5.3.1. EXAMINANDO LA INFORMACIÓN DE RED MEDIANTE NMCLI

Para mostrar una lista de todas las conexiones, use nmcli con show. Para enumerar solo las
conexiones activas, agregue la opción --active.

[root@labrhel7 ~]# nmcli con show


NOMBRE UUID TIPO DISPOSITIVO
enp0s3 afb4b22c-982f-4c77-a59e-0bf589037760 802-3-ethernet enp0s3
enp0s8 02bdbaa7-b5c7-4019-ba55-3f0f4e13e9f7 802-3-ethernet enp0s8

Es posible especificar una ID de conexión (nombre) para ver los detalles de esa conexión. Las
configuraciones en minúsculas representan la configuración de la conexión. Los nombres de
configuración y propiedad se definen en la página de comando man de nm-settings (5). Los ajustes
en mayúsculas son datos activos.

[root@labrhel7 ~]# nmcli con show "enp0s3"


connection.id: enp0s3
connection.uuid: afb4b22c-982f-4c77-a59e-0bf589037760
connection.stable-id: --
connection.interface-name: enp0s3
connection.type: 802-3-ethernet
connection.autoconnect: yes

960067641
informes@atp.com.pe
www.atp.com.pe
41

El comando nmcli también se puede usar para mostrar el estado y los detalles del dispositivo.

[root@labrhel7 ~]# nmcli dev status


DISPOSITIVO TIPO ESTADO CONEXIÓN
enp0s3 ethernet conectado enp0s3
enp0s8 ethernet conectado enp0s8
lo loopback sin gestión --

[root@labrhel7 ~]# nmcli dev show enp0s3


GENERAL.DISPOSITIVO: enp0s3
GENERAL.TIPO: ethernet
GENERAL.HWADDR: 08:00:27:5B:14:98
GENERAL.MTU: 1500
GENERAL.ESTADO: 100 (conectado)
GENERAL.CONEXIÓN: enp0s3
GENERAL.CON-RUTA:
/org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.PORTADOR: encendido
IP4.DIRECCIÓN[1]: 10.0.2.15/24
IP4.PUERTA DE ENLACE: 10.0.2.2
IP4.DNS[1]: 200.48.225.146
IP4.DNS[2]: 200.48.225.130
IP4.DOMINIO[1]: hitronhub.home
IP6.DIRECCIÓN[1]: fe80::8801:a365:cc9f:e149/64
IP6.PUERTA DE ENLACE: --

5.3.2. CREANDO CONEXIONES CON nmcli

Al crear una nueva conexión con nmcli, el orden de los argumentos es importante. Los argumentos
comunes aparecen primero y deben incluir el tipo y la interfaz. A continuación, especifique los
argumentos específicos de tipo y finalmente especifique la dirección IP, el prefijo y la información de
la puerta de enlace. Se pueden especificar múltiples direcciones IP para un solo dispositivo. Las
configuraciones adicionales, como un servidor DNS, se configuran como modificaciones una vez que
existe la conexión.

Ejemplos de creación de nuevas conexiones.

1. Crear una nueva conexión llamada "enp0s9-dhcp" que se conectará como una conexión Ethernet
en el dispositivo enp0s9 usando DHCP.

[root@labrhel7 ~]# nmcli con add con-name "enp0s9-dhcp" ifname enp0s9 type ethernet
Conexión 'enp0s9-dhcp' (b6672a69-28d9-4643-9382-4ae534d822f5) agregada con éxito.
[root@labrhel7 ~]# nmcli con show
NOMBRE UUID TIPO DISPOSITIVO
enp0s3 afb4b22c-982f-4c77-a59e-0bf589037760 802-3-ethernet enp0s3
enp0s8 02bdbaa7-b5c7-4019-ba55-3f0f4e13e9f7 802-3-ethernet enp0s8
enp0s9-dhcp b6672a69-28d9-4643-9382-4ae534d822f5 802-3-ethernet enp0s9

960067641
informes@atp.com.pe
www.atp.com.pe
42

2. Crear una nueva conexión llamada "enp0s9-static" y especifique la dirección IP y la ruta. No


configurar auto conectar.

[root@labrhel7 ~]# nmcli con add con-name "enp0s9-static" ifname enp0s9 type
ethernet autoconnect no ip4 192.168.1.100/24 gw4 192.168.1.1
Conexión 'enp0s9-static' (2141a8d6-0ed2-47a9-9f31-a569aa09bd07) agregada con éxito.
[root@labrhel7 ~]# nmcli con show
NOMBRE UUID TIPO DISPOSITIVO
enp0s3 afb4b22c-982f-4c77-a59e-0bf589037760 802-3-ethernet enp0s3
enp0s8 02bdbaa7-b5c7-4019-ba55-3f0f4e13e9f7 802-3-ethernet enp0s8
enp0s9-dhcp b6672a69-28d9-4643-9382-4ae534d822f5 802-3-ethernet enp0s9
enp0s9-static 2141a8d6-0ed2-47a9-9f31-a569aa09bd07 802-3-ethernet --

3. Hasta este punto el sistema conectará de manera automática la conexión enp0s9-dhcp inclusive
luego de un reinicio. Si deseamos cambiar a la conexión enp0s9-static.

[root@labrhel7 ~]# nmcli con up enp0s9-static


Conexión activada con éxito (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/9)

4. Si deseamos cambiar nuevamente a la conexión enp0s9-dhcp.

[root@labrhel7 ~]# nmcli con up enp0s9-dhcp


Conexión activada con éxito (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/10)

5.3.3. MODIFICAR UNA INTERFAZ DE RED MEDIANTE nmcli

Una conexión existente puede modificarse con nmcli con el argumento mod. Los argumentos son
conjuntos de pares opción/valor. La opción incluye un nombre de configuración y un nombre de
propiedad. Use nmcli con show "<ID>" para ver la lista de valores actuales para una conexión. La
página man de nm-settings (5) documenta la configuración y los nombres y el uso de las propiedades.

[root@labrhel7 ~]# nmcli con show enp0s9-static


connection.id: enp0s9-static
connection.uuid: a680878c-2d1c-472b-ad09-f7dfae29ce88
connection.stable-id: --
connection.interface-name: enp0s9
connection.type: 802-3-ethernet
connection.autoconnect: no

Ejemplos de modificación de conexiones.

1. Desactivar la autoconexión.

[root@labrhel7 ~]# nmcli con mod enp0s9-static connection.autoconnect no

960067641
informes@atp.com.pe
www.atp.com.pe
43

2. Configurar DNS.

[root@labrhel7 ~]# nmcli con mod enp0s9-static ipv4.dns 192.168.1.1

3. Algunos argumentos soportan la adición o remoción de valores mediante los símbolos +/- delante
de ellos. Por ejemplo, para agregar un servidores DNS adicional.

[root@labrhel7 ~]# nmcli con mod enp0s9-static +ipv4.dns 8.8.8.8

4. Reemplazar la IP estática configurada.

[root@labrhel7 ~]# nmcli con mod enp0s9-static ipv4.addresses 192.168.1.200/24


ipv4.gateway 192.168.1.1

5. Agregar una IP secundaria sin default gateway.

[root@labrhel7 ~]# nmcli con mod enp0s9-static +ipv4.addresses 10.10.10.200/16

Cabe resaltar que el comando nmcli con mod únicamente guardara los cambios realizados, más no
lo aplicará hasta que se indique ello. Para aplicar los cambios, ejecutar el comando.

[root@labrhel7 ~]# nmcli con up enp0s9-static

5.3.4. RESUMEN DE OPCIONES DEL COMANDO nmcli

COMANDO USO
nmcli dev status Lista todos los dispositivos.
nmcli con show Lista todas las conexiones.
nmcli con up “ID" Activa una conexión.
nmcli con down “ID" Desactiva una conexión. La conexión se reiniciará automáticamente si la
opción autoconnect está en yes.
nmcli dev dis Dar de baja una interfaz y temporalmente deshabilitar la autoconexión.
nmcli net off Deshabilitar todas las interfaces manejadas.
nmcli con add ... Agregar una nueva conexión.
nmcli con mod "" ... Modificar una conexión.
nmcli con del “ID” Borrar una conexión.

5.4. Configuración de red y DNS mediante archivo de configuración

También es posible configurar la red editando archivos de configuración de interfaz. Los archivos de
configuración de interfaz controlan las interfaces de software para dispositivos de red de manera
individual. Estos archivos se suelen llamar /etc/sysconfig/network-scripts/ifcfg-<nombre>, donde
<nombre> hace referencia al nombre del dispositivo o conexión que controla el archivo de
configuración. Las siguientes son variables estándar que se encuentran en el archivo utilizado para la
configuración estática o dinámica.

960067641
informes@atp.com.pe
www.atp.com.pe
44

ESTÁTICO DINÁMICO AMBOS


BOOTPROTO=none BOOTPROTO=dhcp DEVICE=eth0
IPADDR0=172 . 25 . X . 10 NAME="System eth0"
PREFIX0=24 ONBOOT=yes
GATEWAY0=172 . 25 . X . 254 UUID=f3e8dd32 -3 ...
DEFROUTE=yes USERCTL=yes
DNS1=172 . 25 . 254 . 254

En la configuración estática, 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 múltiples conjuntos de valores a la interfaz. La
variable DNS también tiene un número que se usa para especificar el orden de 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 aún debe reiniciarse para que los
cambios surtan efecto.

[root@labrhel7 ~]# nmcli con reload


[root@labrhel7 ~]# nmcli con down "System eth0"
[root@labrhel7 ~]# nmcli con up "System eth0"

5.5. Configuración de nombre de host y resolucion de nombres

El comando hostname muestra o modifica temporalmente el nombre de host completo del sistema.

[root@labrhel7 ~]# hostname


labcentos7.atp.com.pe

Se puede especificar un nombre de host estático en el archivo /etc/hostname. El comando


hostnamectl se usa para modificar este archivo y se puede usar para ver el estado del nombre de
host completo del sistema. Si este archivo no existe, el nombre de host se establece mediante una
consulta DNS inversa una vez que la interfaz tiene una dirección IP asignada.

[root@labrhel7 ~]# hostnamectl set-hostname labcentos7.atp.com.pe


[root@labrhel7 ~]# hostnamectl
Static hostname: labcentos7.atp.com.pe
Icon name: computer-vm
Chassis: vm
Machine ID: f14e724e8d81409fbd2df24447a455b2
Boot ID: 977c61d03e4842f4ad8d8ed76443c19f
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64

960067641
informes@atp.com.pe
www.atp.com.pe
45

5.6. Tabla local de resolución de nombres

La resolución de stub se usa para convertir nombres de host a direcciones IP o viceversa. El contenido
del archivo /etc/hosts se verifica primero.

[root@labrhel7 ~]# cat /etc/hosts


127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

El comando getent hosts hostname se puede usar para probar la resolución del nombre de host con el
archivo /etc/hosts. Si no se encuentra una entrada en ese archivo, la resolución de stub busca la
información en un servidor de nombres DNS. El archivo /etc/resolv.conf controla cómo se realiza esta
consulta:

[root@labrhel7 ~]# cat /etc/resolv.conf


# Generated by NetworkManager
search atp.com.pe
nameserver 200.48.225.146
nameserver 200.48.225.130

• nameserver: la dirección IP de un servidor de nombres para consultar. Hasta tres directivas de


servidor de nombres pueden exisitir para proporcionar respaldo de seguridad si uno está fuera de
servicio.

• search: una lista de nombres de dominio para probar con un nombre corto de host.

Si DHCP está en uso, /etc/resolv.conf es automáticamente reescrito cuando la interfaz es reiniciada, a


menos que especifique “PEERDNS=no” en los archivos de configuración de la interfaz relevante. El
cambio se puede hacer con nmcli.

[root@labrhel7 ~]# nmcli con mod "System eth0" ipv4.ignore-auto-dns yes

960067641
informes@atp.com.pe
www.atp.com.pe
46

5.7. Práctica de capítulo

1. Añadir una nueva interfaz de red a la máquina virtual en modo puente. Crear una configuración
sobre esta interfaz con el nombre lan-dhcp, configurarlo de con DHCP y habilitarla. Verificar y anotar
los valores que brindó (Dirección IP, máscara de red, puerta de enlace predetermiada y servidores
dns)

2. Crear otra configuración sobre la nueva interfaz agregada con el nombre lan-estatico, de tal forma
que tenga los siguientes valores.

Dirección IP: 172.16.0.100/16


Puerta de enlace predeterminada: 172.16.0.254
DNS1: 172.16.0.254
DNS2: 8.8.8.8

3. Crear las siguientes resoluciones estáticas y comprobar dicha resolución atlas01.atp.com.pe →


172.16.0.100, orion02.atp.com.pe → 172.16.0.101.

4. Cambiar el nombre de host de nuestro servidor de manera temporal por prueba.atp.com.pe. ¿Cómo
verificó el cambio realizado?.

960067641
informes@atp.com.pe
www.atp.com.pe
47

6. ALMACENAMIENTO Y COPIA DE ARCHIVOS ENTRES SISTEMAS LINUX

6.1. Manejo de archivo empaquetados y comprimidos

6.1.1. ¿QUÉ ES TAR?

Archivar y comprimir archivos son útiles al crear copias de seguridad y transferir datos a través de una
red. Uno de los comandos más antiguos y más comunes para crear y trabajar con archivos de copia
de seguridad es el comando tar.

Con tar, los usuarios pueden reunir grandes conjuntos de archivos en un solo archivo (archivo). El
archivo se puede comprimir utilizando compresión gzip, bzip2 o xz.

El comando tar puede mostrar el contenido de los archivos o extraer sus archivos al sistema actual.
Ejemplos de cómo usar el comando tar están incluidos en esta sección.

6.1.2. EMPAQUETAR ARCHIVOS Y DIRECTORIOS CON TAR

Antes de crear un archivo tar, verifique que no haya ningún archivo en el directorio con el mismo
nombre que el nuevo archivo que se creará. El comando tar sobrescribirá un archivo existente sin
ninguna retroalimentación.

La primera opción para usar al crear un nuevo archivo es la opción c, seguida de la opción f, luego un
espacio individual, luego el nombre del archivo que se creará y, finalmente, la lista de archivos y
directorios que se deben agregar a el archivo. El archivo se crea en el directorio actual a menos que
se especifique otra cosa.

En el siguiente ejemplo, se crea un archivo llamado archive.tar con los contenidos de file1, file2 y file3
en el directorio de inicio del usuario.

[root@labrhel7 ~]# touch file1 file2 file3


[root@labrhel7 ~]# tar cf archive.tar file1 file2 file3
[root@labrhel7 ~]# ls
archive.tar file1 file2 file3

NOTA: Al archivar archivos con una ruta absoluta (es decir que la ruta comience desde la raíz “/”), de
la ruta se elimina el primer / de forma predeterminada. Esto ayuda a evitar errores que podrían
sobrescribir los archivos importantes. Los archivos normalmente se extraen en relación con el
directorio de trabajo actual del comando tar.

Para que tar pueda archivar los archivos seleccionados, es obligatorio que el usuario que ejecuta el
comando tar pueda leer los archivos. Por ejemplo, crear un nuevo archivo de la carpeta /etc y todo su
contenido requiere privilegios de administrador, ya que solo el usuario root puede leer todos los
archivos allí. Un usuario sin privilegios podría crear un archivo de la carpeta /etc, pero el archivo
omitirá los archivos que no incluyen permiso de lectura para el usuario y omitirá los directorios que no
incluyen permisos de lectura y ejecución para el usuario

960067641
informes@atp.com.pe
www.atp.com.pe
48

Si se desea crear el archivo tar /root/etc.tar con el directorio /etc como contenido, como usuario root
se ejecutaría lo siguiente.

[root@labrhel7 ~]# tar cf /root/etc.tar /etc


tar: Eliminando la `/' inicial de los nombres

Si bien tar almacena la propiedad y los permisos de los archivos, existen otros atributos que no están
almacenados en el archivo tar por defecto, como el contexto de SELinux y las ACL. Para almacenar
esos atributos extendidos en el archivo tar, se requiere la opción --xattrs al crear un archivo.

6.1.3. LISTAR EL CONTENIDO DE UN ARCHIVO EMPAQUETADO CON TAR

Para listar el contenido de un archivo, se requieren las opciones t y f, junto con el archivo comprimido
para operar. Listar el contenido del archivo /root/etc.tar.

[root@labrhel7 ~]# tar tf /root/etc.tar


etc/
etc/fstab
etc/crypttab
etc/mtab
etc/resolv.conf
etc/pki/
etc/pki/rpm-gpg/
etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7

6.1.4. EXTRAER UN ARCHIVO EMPAQUETADO CON TAR

Normalmente, se debe extraer un archivo tar en un directorio vacío para asegurarse de que no se
sobrescribe cualquier archivo existente. Si los archivos se extraen por el usuario root, tar intenta
preservar la propiedad original del usuario y grupo de los archivos. Si un usuario normal extrae
archivos usando tar, los archivos extraídos son propiedad de ese usuario.

Si se desea extraer el archivo /root/etc.tar al directorio /root/etcbackup.

[root@labrhel7 ~]# mkdir /root/etcbackup


[root@labrhel7 ~]# cd /root/etcbackup
[root@labrhel7 etcbackup]# tar xf /root/etc.tar
[root@labrhel7 etcbackup]# ls
etc

De forma predeterminada, cuando los archivos se extraen de un archivo, la umask es quitada de los
permisos del contenido del archivo. Esta es una medida de seguridad y evita que los archivos
normales extraídos reciban permisos de ejecución de forma predeterminada. Para preservar los
permisos de un archivo empaquetado, la opción p se debe usar al extraer un archivo.

960067641
informes@atp.com.pe
www.atp.com.pe
49

Extraer el archivo /root/myscripts.tar al directorio /root/scripts conservando los permisos de los


archivos extraídos.

[root@labrhel7 ~]# mkdir /root/scripts


[root@labrhel7 ~]# cd /root/scripts/
[root@labrhel7 scripts]# tar xpf /root/myscripts.tar

6.1.5. CREAR UN ARCHIVO COMPRESO CON TAR

Hay tres métodos de compresión diferentes admitidos por el comando tar. La compresión gzip es la
más rápida y más antigua, y está más ampliamente disponible. La compresión bzip2 generalmente
conduce a archivos más pequeños en comparación con gzip y es menos disponible que gzip,
mientras que el método de compresión xz es relativamente nuevo, pero generalmente ofrece la mejor
relación de compresión de los métodos disponibles.

NOTA: La efectividad de cualquier algoritmo de compresión depende de la naturaleza exacta de los


datos que se comprimen. Los archivos de datos que ya están comprimidos, como los formatos de
imágenes comprimidas o los archivos rpm, generalmente generan una baja relación de compresión.

Es una buena práctica usar un solo directorio de nivel superior, que puede contener otros directorios y
archivos, para simplificar la extracción de los archivos de una manera organizada.

Para crear un archivo tar comprimido, se puede especificar una de las siguientes opciones tar.

• z se usa para compresión gzip (archivo.tar.gz o archivo.tgz)

• j se usa para compresión bzip2 (archivo.tar.bz2)

• J se usa para compresión xz (archivo.tar.xz)

Crear (opción c) con compresión gzip (opción z) empaquetado llamado /root/etcbackup.tar.gz del
directorio /etc.

[root@labrhel7 ~]# tar czf /root/etcbackup.tar.gz /etc/


tar: Eliminando la `/' inicial de los nombres
[root@labrhel7 ~]# ls
etcbackup.tar.gz

Crear (opción c) con compresión bzip2 (opción j) empaquetado llamado /root/logbackup.tar.bz2 del
directorio /var/log.

[root@labrhel7 ~]# tar cjf /root/logbackup.tar.bz2 /var/log


tar: Eliminando la `/' inicial de los nombres

960067641
informes@atp.com.pe
www.atp.com.pe
50

Crear (opción c) con compresión xz (opción J) empaquetado llamado /root/sshconfig.tar.xz del


directorio /etc/ssh.

[root@labrhel7 ~]# tar cJf /root/sshconfig.tar.xz /etc/ssh


tar: Eliminando la `/' inicial de los nombres

6.1.6. EXTRAER UN ARCHIVO COMPRESO CON TAR

El primer paso al extraer un archivo tar comprimido es determinar dónde se deben extraer los
archivos, luego crear y cambiar al directorio de destino. Para extraer el archivo con éxito,
generalmente no es necesario utilizar la misma opción de compresión utilizada al crear el archivo, ya
que el comando tar determinará qué compresión se utilizó. Es válido agregar el método de
descompresión a las opciones tar de la siguiente manera.

Extraer (opción x) el contenido de un archivo empaquetado con compresión gzip (opción z) llamado
/root/etcbackup.tar.gz en el directorio /tmp/etcbackup.

[root@labrhel7 ~]# mkdir /tmp/etcbackup


[root@labrhel7 ~]# cd /tmp/etcbackup/
[root@labrhel7 etcbackup]# tar xzf /root/etcbackup.tar.gz

Extraer (opción x) el contenido de un archivo empaquetado con compresión bzip2 (opción j) llamado
/root/logbackup.tar.bz2 en el directorio /tmp/logbackup.

[root@labrhel7 ~]# mkdir /tmp/logbackup


[root@labrhel7 ~]# cd /tmp/logbackup
[root@labrhel7 logbackup]# tar xjf /root/logbackup.tar.bz2

Extraer (opción x) el contenido de un archivo empaquetado con compresión xz (opción J) llamado


/root/sshconfig.tar.xz en el directorio /tmp/sshconfig.

[root@labrhel7 ~]# mkdir /tmp/sshconfig


[root@labrhel7 ~]# cd /tmp/sshconfig
[root@labrhel7 sshconfig]# tar xJf /root/sshconfig.tar.x

NOTA: Listar el contenido de un archive compreso y empaquetado se realiza de la misma forma que
un archive unicamente empaquetado. Si se desea únicamente descomprimir un archivo, mas no
desempaquetarlo, se usa para ello los comandos correspondientes que son, gunzip (para .gz), bunzip2
(para .bz2) y unxz (para .xz).

960067641
informes@atp.com.pe
www.atp.com.pe
51

6.1.7. RESUMEN DE OPCIONES DEL COMANDO tar

OPCIÓN SIGNIFICADO
c Crear un nuevo archivo.
x Extraer de un archivo existente.
t Lista los contenidos de un archivo existente.
v Modo verboso. Muestra que archivos son almacenados o extraídos.
f Nombre del archivo. Esta opción necesita ser seguida por el nombre del archivo a
usar o crear.
p Conservar los permisos de archivos y directorios al extraer un archivo, sin restar la
umask.
z Usa la compresión gzip (.tar.gz)
j Usa la compresión bzip2 (.tar.bz2). Normalmente alcanza un mejor radio de
compresión que gzip.
J Usa la compresión xz (.tar.xz). Normalmente alcanza un mejor radio de compresión
que bzip2.

6.2. Copia de archivos de manera segura entre sistemas

El comando ssh es útil para ejecutar de forma segura comandos de shell en sistemas remotos.
También puede ser utilizado para copiar archivos de forma segura de una máquina a otra. El
comando scp transfiere archivos desde un host remoto al sistema local o desde el sistema local a un
host remoto. Utiliza el servidor SSH para autenticación y transferencia de datos encriptados.

Las ubicaciones del sistema de archivos remoto siempre se especifican en el formato


[user@]host:/path para la ubicación de origen o destino de los archivos que se transferirán. La porción
user@ es opcional y, si falta, se utiliza el usuario local actual que invoca el comando scp.

Antes de iniciar la transferencia, el usuario debe autenticarse con el servidor SSH mediante
contraseña o claves SSH. Por ejemplo, si deseamos copiar el archivo /etc/hosts hacia un servidor
remoto en la ubicación /tmp.

[root@labrhel7 ~]# scp /etc/hosts root@192.168.1.100:/tmp/


root@192.168.1.100’s password:

Un usuario puede copiar un archivo desde una cuenta remota en una máquina remota con scp. En
este ejemplo, copia el archivo /etc/hosts desde la cuenta root de la máquina remota 192.168.1.100 al
directorio local /home/student/

[root@labrhel7 ~]# scp root@192.168.1.100:/etc/hosts /home/student/


root@192.168.1.100’s password:

Para copiar un árbol de directorios completo recursivamente, la opción -r debe ser usada. En el
siguiente ejemplo, el directorio remoto /var/log en el servidor 192.168.1.100 se copia recursivamente
al directorio local /tmp. Para poder leer todos los contenidos del directorio /etc, el usuario root debe
conectarse a la ubicación remota.

960067641
informes@atp.com.pe
www.atp.com.pe
52

[root@labrhel7 ~]# scp –r root@192.168.1.100:/var/log /tmp/


root@192.168.1.100’s password:

6.3. Sincronización segura de archivos entre sistemas

La herramienta rsync es otra forma de copiar archivos de forma segura de un sistema a otro. Difiere
de scp en que, si dos archivos o directorios son similares entre dos sistemas, rsync solo necesita
copiar las diferencias entre los sistemas, mientras que scp necesitaría copiar todo.

Una de las ventajas de rsync es que puede copiar archivos entre un sistema local y un sistema
remoto de forma segura y eficiente. Si bien la sincronización inicial de un directorio dura
aproximadamente el mismo tiempo que la copia, cualquier sincronización posterior solo requiere que
las diferencias se copien a través de la red.

Una de las opciones más importantes de rsync es la opción -n para realizar una ejecución en seco
(dry run). Una ejecución en seco es una simulación de lo que ocurre cuando el comando realmente se
ejecuta. Mostrará los cambios que realizará cuando el comando se ejecute. Se recomienda realizar
una ejecución en seco de cualquier operación rsync para asegurar que no se sobrescriban o eliminen
archivos importantes.

Las dos opciones más comunes al sincronizar archivos y carpetas con rsync son las opciones -a y -v.
Mientras que la opción -v agrega verbosidad a la salida a medida que avanza la sincronización, la
opción -a significa "modo de archivo" y habilita las siguientes opciones, todo en uno:

• -r, sincroniza recursivamente el árbol del directorio

• -l, sincroniza los links simbólicos.

• -p, preserva los permisos.

• -t, preserva la marca de tiempo (time stamps).

• -g, preserva el grupo propietario.

• -o, preserva el usuario propietario.

• -D, sincroniza archivos de dispositivos (device files).

Mientras que la opción -a sincroniza los enlaces simbólicos, hay otras opciones necesarias para
preservar los enlaces duros, ya que se tratan como archivos separados. La opción -H habilita el
manejo de enlaces duros, por lo que el comando rsync identificará los enlaces duros presentes en la
carpeta de origen y vinculará los archivos según corresponda en la carpeta de destino en lugar de
simplemente copiarlos como archivos separados.

NOTA: La opción -a no sincroniza los permisos de archivos avanzados, como los contextos de
archivos ACL o SELinux. Para habilitar la sincronización de las ACL, se requiere la opción -A además

960067641
informes@atp.com.pe
www.atp.com.pe
53

de la opción -a, mientras que para sincronizar los contextos SELinux de la fuente archivos a los
archivos de destino, se debe agregar la opción -X.

La forma básica de usar rsync es sincronizar dos carpetas locales. En el siguiente ejemplo, el
directorio /var/log obtiene una copia sincronizada en la carpeta /tmp. El directorio de registro con su
contenido se crea en el directorio /tmp.

[root@labrhel7 ~]# rsync -av /var/log /tmp

Para sincronizar solo el contenido de una carpeta sin crear nuevamente la carpeta en el directorio de
destino, se debe agregar una barra al final del directorio de origen. En este ejemplo, el directorio de
registro no se crea en la carpeta /tmp. Solo el contenido del directorio /var/log/ se sincroniza en la
carpeta /tmp.

[root@labrhel7 ~]# rsync -av /var/log/ /tmp

IMPORTANTE: Al ingresar el directorio fuente en el comando rsync, es clave recordar que importa si
una barra inclinada está presente al final del nombre del directorio, esto determinará si el directorio o
solo los contenidos del directorio serán sincronizados con el destino. Nota: La finalización de una
tabulación concordante agregará automáticamente una barra al final de los nombres del directorio.

De forma similar a scp, el comando rsync espera que las ubicaciones del sistema de archivos remoto
se especifiquen en el formato [user@]host:/ruta/absoluta. En caso de que falte la porción de usuario
(la cual es opcional), el usuario que invoca el comando rsync se utilizará para conectarse a la
ubicación remota. Es posible usar una ubicación remota como origen o destino.

En el siguiente ejemplo, la carpeta local /var/log obtiene una copia sincronizada en el directorio /tmp
en la máquina remota 192.168.1.100. Para que rsync sincronice la propiedad de los archivos
transferidos, la ubicación de destino debe escribirse como usuario root, de modo que conéctese al
servidor remoto del 192.168.1.100 como el usuario root. El usuario que se conecta debe autenticarse
con el servidor SSH mediante cualquiera de los métodos aceptados; por ejemplo, contraseña o claves
SSH.

[root@labrhel7 ~]# rsync -av /var/log 192.168.1.100:/tmp


root@192.168.1.100's password:

De la misma manera, la carpeta remota /var/log del servidor 192.168.1.100 se puede sincronizar con
el directorio local /tmp.

[root@labrhel7 ~]# rsync –av 192.168.1.100:/var/log /tmp

960067641
informes@atp.com.pe
www.atp.com.pe
54

6.4. Práctica de capítulo

1. Crear un archivo empaquetado y compreso con algoritmo gzip de la carpeta /etc y guardarlo en la
ubicación /tmp con el nombre etc.tar.gz

2. Verificar que el archive de backup creado etc.tar.gz fue correctamente creado, descomprimientolo
en el directorio /backuptest.

3. Crear una copia de respaldo de la carpeta /var/log en la ubicación /serverlogs. Reiniciar el servidor
mediante el comando reboot y luego sincronizar nuevamente la carpeta /var/log, verificar que el
archivo log principal de sistema messages ha sido actualizado en la carpeta /serverlogs.

960067641
informes@atp.com.pe
www.atp.com.pe
55

7. INSTALACIÓN Y ACTUALIZACIONES DE PAQUETES

7.1. Configurando suscripción para el manejo de actualizaciones

Red Hat Subscription Management proporciona herramientas que se pueden utilizar para dar derecho
a la máquina a las suscripciones de productos, lo que permite a los administradores obtener
actualizaciones de los paquetes de software y realizar un seguimiento de la información sobre los
contratos de soporte y suscripciones utilizados por los sistemas. Herramientas como PackageKit y yum
pueden obtener paquetes de software y actualizaciones a través de una distribución de contenido red
provista por Red Hat.

Hay cuatro tareas básicas realizadas con las herramientas de administración de suscripción de Red
Hat:

• Registre un sistema para asociar ese sistema a una cuenta de Red Hat. Esto permite que el
Administrador de suscripciones realice un inventario exclusivo del sistema. Cuando ya no está en
uso, un sistema puede ser removido.

• Suscribir un sistema para dar derecho a las actualizaciones para los productos seleccionados de
Red Hat. Las suscripciones tienen niveles específicos de soporte, fechas de vencimiento y
repositorios predeterminados. Las herramientas se pueden usar para adjuntar automáticamente o
seleccionar un derecho específico. A medida que cambian las necesidades, las suscripciones
pueden ser removidas.

• Habilitar repositorios para proporcionar paquetes de software. Los repositorios múltiples están
habilitados de forma predeterminada con cada suscripción, pero otros repositorios, como las
actualizaciones o el código fuente, pueden habilitarse o deshabilitarse según sea necesario.

7.1.1. COMANDO subscription-manager

El comando subscription-manager permite activar las suscripciones a través de la CLI. Se debe tener
en cuenta que para que el comando funcione, el servidor necesita tener salida hacia los puerto 80 y
443 TCP.

• Registrar un sistema mediante usuario y contraseña Red Hat.

[root@labrhel7 ~]# subscription-manager register


Registering to: subscription.rhsm.redhat.com:443/subscription
Username: albertovidalalegria
Password:

960067641
informes@atp.com.pe
www.atp.com.pe
56

• Ver las suscripciones disponibles.

[root@labrhel7 ~]# subscription-manager list --available | less


+-------------------------------------------+
Available Subscriptions
+-------------------------------------------+
Subscription Name: Red Hat Enterprise Linux, Standard Support (128 Sockets, NFR,
Partner Only)
Provides: Red Hat Enterprise Linux Server - Extended Life Cycle Support
Red Hat S-JIS Support (for RHEL Server) - Extended Update
Support
Red Hat Enterprise Linux for IBM System z (Structure A)
Red Hat Software Collections Beta (for RHEL Server for IBM
Power)
Red Hat Enterprise Linux High Availability - Update Services
for SAP Solutions
Red Hat Certificate System
RHEL for SAP Applications for Power LE

• Adjuntar una subscripción automaticamente.

[root@labrhel7 ~]# subscription-manager attach --auto

Installed Product Current Status:


Product Name: Red Hat Enterprise Linux Server
Status: Subscribed

• Ver las suscripciones usadas

[root@labrhel7 ~]# subscription-manager list --consumed


+-------------------------------------------+
Consumed Subscriptions
+-------------------------------------------+
Subscription Name: Red Hat Enterprise Linux, Standard Support (128 Sockets, NFR,
Partner Only)
Provides: Red Hat Enterprise Linux High Availability - Update Services
for SAP Solutions

SKU: RH3310120
Contract: 11594381
Account: 5305434
Serial: 7880292915811482008
Pool ID: 8a85f98c61081e0101610838f7b4025a
Provides Management: No
Active: True
Quantity Used: 1
Service Level: Standard
Service Type: L1-L3
Status Details: Subscription is current
Subscription Type: Standard
Starts: 18/01/18
Ends: 17/01/19
System Type: Virtual

960067641
informes@atp.com.pe
www.atp.com.pe
57

• Remover el registro.

[root@labrhel7 ~]# subscription-manager unregister


Unregistering from: subscription.rhsm.redhat.com:443/subscription
System has been unregistered.

7.2. Configurando repositorio local

Es posible configurar de manera local un repositorio usando para ello la imagen ISO de instalación.
Para ello necesitamos montar la imagen en una ubicación y configurar el archivo correspondiente.

Mapear la imagen en el entorno de virtualización, si es un equipo físico necesitamos introducir la


imagen en la lectora o copiarla en una ubicación determinada. Luego crear una carpeta donde volcar
la información o contenido del dvd (en este caso crear la carpeta /mnt/dvd) y luego montar la imagen
mediante el comando mount.

[root@labrhel7 ~]# mkdir /mnt/dvd


[root@labrhel7 ~]# mount /dev/sr0 /mnt/dvd/
mount: /dev/sr0 is write-protected, mounting read-only
[root@labrhel7 ~]# ll /mnt/dvd
total 932
dr-xr-xr-x. 4 root root 2048 jul 11 2017 addons
dr-xr-xr-x. 3 root root 2048 jul 11 2017 EFI
-r--r--r--. 1 root root 8266 abr 4 2014 EULA
-r--r--r--. 1 root root 1455 jul 11 2017 extra_files.json
-r--r--r--. 1 root root 18092 mar 6 2012 GPL
dr-xr-xr-x. 3 root root 2048 jul 11 2017 images
dr-xr-xr-x. 2 root root 2048 jul 11 2017 isolinux
dr-xr-xr-x. 2 root root 2048 jul 11 2017 LiveOS
-r--r--r--. 1 root root 114 jul 11 2017 media.repo
dr-xr-xr-x. 2 root root 901120 jul 11 2017 Packages
dr-xr-xr-x. 2 root root 4096 jul 11 2017 repodata
-r--r--r--. 1 root root 3375 jun 28 2017 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 3211 jun 28 2017 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 jul 11 2017 TRANS.TBL

Finalmente crear el archivo /etc/yum.repos.d/local.repo con el siguiente contenido.

[root@labrhel7 ~]# cat /etc/yum.repos.d/local.repo


[DVD]
name=dvd
baseurl=file:///mnt/dvd
gpgcheck=0
enabled=1

Con esto deberíamos tener habilitado un repositorio local a través de nuestra imagen ISO.

960067641
informes@atp.com.pe
www.atp.com.pe
58

7.3. Paquetes de software RPM y yum

7.3.1. PAQUETES DE SOFTWARE Y RPM

Hace muchos años, Red Hat desarrolló el RPM Package Manager, que proporciona una forma estándar
de empaquetar software para su distribución. Administrar software en forma de paquetes RPM es
mucho más simple que trabajar con software que simplemente se ha extraído de un sistema de
archivos. Permite a los administradores rastrear qué archivos instalados por el paquete de software y
cuáles deben eliminarse si se desinstalan, y verificar que los paquetes compatibles estén presentes
cuando se instalan. La información sobre los paquetes instalados se almacena en una base de datos
RPM local en cada sistema. Todos los softwares provistos por Red Hat para Red Hat Enterprise Linux
se proporcionan como un paquete RPM.

Los archivos del paquete RPM se nombran usando una combinación del paquete nombre-version-
release.arquitectura.

vim-minimal-7.4.160-2.el7.x86_64
--------------- ---------- ----- ----------
NOMBRE VERSIÓN RELEASE ARQUITECTURA

• NOMBRE es una o más palabras que describen los contenidos (vim-minimal).

• VERSIÓN es el número de versión del software original (7.4.160).

• RELEASE es el número de versión del paquete basado en esa versión, y lo establece el


empaquetador, que podría no ser el desarrollador original del software (2.el7).

• ARQUITECTURA es la arquitectura del procesador en la que se compiló el paquete para


ejecutarse. "noarch" indica que los contenidos de este paquete no son específicos de la
arquitectura (x86_64).

Al instalar paquetes de repositorios, solo se requiere el nombre del paquete. Se instalará el paquete
con la versión superior. Si hay múltiples paquetes con la misma versión, se instalará el paquete con el
número de versión más alto.

Cada paquete RPM es un archivo especial compuesto por tres componentes:

• Los archivos instalados por el paquete.

• Información sobre el paquete (metadatos), como el nombre/versión/arrendamiento/arch; un


resumen y una descripción del paquete; si requiere que se instalen otros paquetes; licenciamiento;
un registro de cambios del paquete; y otros detalles.

• Scripts que pueden ejecutarse cuando este paquete se instala, actualiza o elimina, o que se activan
cuando se instalan, actualizan o eliminan otros paquetes.

960067641
informes@atp.com.pe
www.atp.com.pe
59

Los paquetes RPM pueden firmarse digitalmente por la organización que los empaquetó. Todos los
paquetes de una fuente en particular normalmente están firmados por la misma clave privada GPG. Si
el paquete está filtrado o dañado, la firma ya no será válida. Esto permite que el sistema verifique la
integridad del paquete antes de instalarlos. Todos los paquetes RPM lanzados por Red Hat están
firmados digitalmente.

Actualizaciones y parches

Cuando un paquete de software es parcheado por Red Hat, se genera un paquete completo de RPM.
Si se acaba de agregar un paquete a un sistema, solo se necesita la versión más reciente de ese
paquete, no todas las versiones del paquete desde la primera versión. Para los sistemas que necesitan
actualización, la versión anterior del paquete se elimina realmente y se instala la nueva versión. Los
archivos de configuración generalmente se conservan durante una actualización, pero el
comportamiento exacto de un paquete particular se define cuando se crea la nueva versión del
paquete.

En la mayoría de los casos, solo se puede instalar una versión de un paquete a la vez. Normalmente,
el proceso de instalación de RPM no permitirá sobrescribir los archivos. Si se crea un paquete para
que no haya nombres de archivo en conflicto, se pueden instalar múltiples versiones. Este es el caso
del paquete kernel. Como un kernel nuevo solo se puede probar arrancando en ese kernel, el paquete
está específicamente diseñado para que se puedan instalar varias versiones a la vez. Si el kernel
nuevo no se inicia, el kernel antiguo aún está disponible.

7.3.2. EL MANEJADOR DE PAQUETES YUM

Una vez que se instala un sistema, normalmente se instalan paquetes y actualizaciones de software
adicionales a partir de un repositorio de paquetes de red, con mayor frecuencia a través del servicio
de gestión de suscripción de Red Hat que se analizó en la sección anterior. El comando rpm se puede
usar para instalar, actualizar, eliminar y consultar paquetes RPM. Sin embargo, no resuelve
dependencias automáticamente y todos los paquetes deben estar listados. Herramientas como
PackageKit y yum son aplicaciones frontend para RPM y se pueden usar para instalar paquetes
individuales o colecciones de paquetes (a veces llamados grupos de paquetes).

El comando yum busca en numerosos repositorios paquetes y sus dependencias para que pueden
instalarse juntos en un esfuerzo para todos evocar problemas de dependencia. El archivo de
configuración principal para yum es /etc/yum.conf con archivos de configuración de repositorio
adicionales ubicados en el directorio /etc/yum.repos.d. Los archivos de configuración del repositorio
incluyen, como mínimo, un id de repositorio (entre corchetes), un nombre y la ubicación URL del
repositorio del paquete. La URL puede apuntar a un directorio local (archivo) o ubicación de red
remota (http, ftp, etc.). Si la URL se coloca en un navegador, el contenido debe mostrar los paquetes
RPM, posiblemente en uno o más subdirectorios, y un directorio repodata con información sobre los
paquetes disponibles.

960067641
informes@atp.com.pe
www.atp.com.pe
60

El comando yum se usa para listar repositorios, paquetes y grupos de paquetes.

[root@labrhel7 ~]# yum repolist


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
id del repositorio nombre del
repositorio estado
DVD dvd
4.986

960067641
informes@atp.com.pe
www.atp.com.pe
61

7.4. Manejo de software mediante yum

yum es una poderosa herramienta de línea de comandos que se puede utilizar para gestionar de
forma más flexible (instalar, actualizar, eliminar y consultar) paquetes de software. Los paquetes
oficiales de Red Hat normalmente se descargan de la red de distribución de contenido de Red Hat. El
registro de un sistema en el servicio de gestión de la suscripción configura automáticamente el acceso
a los repositorios de software en función de las suscripciones activas.

7.4.1. COMANDO yum

Buscar paquetes

• yum list lista los paquetes instalados y disponibles en el repositorio en base a una palabra.

[root@labrhel7 ~]# yum list yum*


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
Paquetes instalados
yum.noarch 3.4.3-154.el7
@anaconda/7.4
yum-metadata-parser.x86_64 1.1.4-10.el7
@anaconda/7.4
yum-rhn-plugin.noarch 2.0.1-9.el7
@anaconda/7.4
Paquetes disponibles
yum-langpacks.noarch 0.4.2-7.el7
DVD
yum-plugin-aliases.noarch 1.1.31-42.el7
DVD

• yum search PALABRA busca los paquetes por palabras clave que se encuentran solo en los
campos de nombre y resumen.

[root@labrhel7 ~]# yum search http


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
======================================================= N/S matched: http
========================================================
http-parser.i686 : HTTP request/response parser for C
http-parser.x86_64 : HTTP request/response parser for C
httpcomponents-client.noarch : HTTP agent implementation based on httpcomponents
HttpCore
httpcomponents-core.noarch : Set of low level Java HTTP transport components for
HTTP services
httpd.x86_64 : Apache HTTP Server
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server

960067641
informes@atp.com.pe
www.atp.com.pe
62

• yum info PACKAGE proporciona información detallada sobre un paquete, incluido el espacio en
disco necesario para la instalación.

[root@labrhel7 ~]# yum info httpd


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
Paquetes disponibles
Nombre : httpd
Arquitectura : x86_64
Versión : 2.4.6
Lanzamiento : 67.el7
Tamaño : 1.2 M
Repositorio : DVD
Resumen : Apache HTTP Server
URL : http://httpd.apache.org/
Licencia : ASL 2.0
Descripción :The Apache HTTP Server is a powerful, efficient, and extensible
: web server.

• yum provides /RUTA/ABSOLUTA muestra paquetes que coinciden con la ruta especificada
(que a menudo incluye caracteres comodines).

[root@labrhel7 ~]# yum provides /etc/yum.conf


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
yum-3.4.3-154.el7.noarch : RPM package installer/updater/manager
Repositorio : DVD
Resultado obtenido desde:
Nombre del archivo : /etc/yum.conf

[root@labrhel7 ~]# yum provides "*/hostnamectl"


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
DVD/filelists_db
| 3.4 MB 00:00:00
systemd-219-42.el7.x86_64 : A System and Service Manager
Repositorio : DVD
Resultado obtenido desde:
Nombre del archivo : /usr/share/bash-completion/completions/hostnamectl
Nombre del archivo : /usr/bin/hostnamectl

960067641
informes@atp.com.pe
www.atp.com.pe
63

Instalar y remover paquetes

• yum install PAQUETE obtiene e instala un paquete de software, incluidas las dependencias.

[root@labrhel7 ~]# yum install bind-utils


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
Resolviendo dependencias
--> Ejecutando prueba de transacción
---> Paquete bind-utils.x86_64 32:9.9.4-50.el7 debe ser instalado
--> Procesando dependencias: bind-libs = 32:9.9.4-50.el7 para el paquete: 32:bind-
utils-9.9.4-50.el7.x86_64
--> Procesando dependencias: libbind9.so.90()(64bit) para el paquete: 32:bind-
utils-9.9.4-50.el7.x86_64
--> Procesando dependencias: libdns.so.100()(64bit) para el paquete: 32:bind-utils-
9.9.4-50.el7.x86_64
--> Procesando dependencias: libisc.so.95()(64bit) para el paquete: 32:bind-utils-
9.9.4-50.el7.x86_64
--> Procesando dependencias: libisccc.so.90()(64bit) para el paquete: 32:bind-
utils-9.9.4-50.el7.x86_64
--> Procesando dependencias: libisccfg.so.90()(64bit) para el paquete: 32:bind-
utils-9.9.4-50.el7.x86_64
--> Procesando dependencias: liblwres.so.90()(64bit) para el paquete: 32:bind-
utils-9.9.4-50.el7.x86_64
--> Ejecutando prueba de transacción
---> Paquete bind-libs.x86_64 32:9.9.4-50.el7 debe ser instalado
--> Resolución de dependencias finalizada

Dependencias resueltas

===================================================================================
===============================================
Package Arquitectura Versión
Repositorio Tamaño
===================================================================================
===============================================
Instalando:
bind-utils x86_64 32:9.9.4-50.el7
DVD 203 k
Instalando para las dependencias:
bind-libs x86_64 32:9.9.4-50.el7
DVD 1.0 M

Resumen de la transacción
===================================================================================
===============================================
Instalar 1 Paquete (+1 Paquete dependiente)

Tamaño total de la descarga: 1.2 M


Tamaño instalado: 3.0 M
Is this ok [y/d/N]:

960067641
informes@atp.com.pe
www.atp.com.pe
64

• yum update PAQUETE obtiene e instala una versión más reciente del paquete de software
indicado, incluidas las dependencias. En general, el proceso intenta preservar los archivos de
configuración en su lugar, pero en algunos casos, pueden ser renombrados si el empaquetador
piensa que el anterior no funcionará después de la actualización. Si no se indica el paquete, yum
instalará todas las actualizaciones relevantes del sistema.

Como un kernel nuevo solo se puede probar arrancando en ese kernel, el paquete está
específicamente diseñado para que se puedan instalar varias versiones a la vez. Si el nuevo kernel
no puede arrancar. el kernel viejo todavía está disponible. Usando yum update kernel, realmente
instalará el kernel nuevo. Los archivos de configuración contienen una lista de paquetes para
"instalar siempre", incluso si el administrador solicita una actualización.

[root@labrhel7 ~]# yum update

• yum remove PAQUETE elimina un paquete de software instalado, incluidos los compatibles
paquetes.

[root@labrhel7 ~]# yum remove httpd

yum remove eliminará los paquetes enumerados y cualquier paquete que requiera que se
eliminen (y los paquetes que requieren esos paquetes, etc.). Esto puede llevar a la eliminación
inesperada de paquetes, por lo que debe verificar cuidadosamente la lista de paquetes que se
eliminarán.

Instalar y eliminar grupos de software con yum

• yum también tiene el concepto de grupos, que son colecciones de software relacionado que
pueden ser instalados juntos para un propósito particular. En Red Hat Enterprise Linux 7, hay dos
tipos de grupos. Los grupos regulares son colecciones de paquetes. Los grupos de entorno son
colecciones de otros grupos que incluyen sus propios paquetes. Los paquetes o grupos
proporcionados por un grupo pueden ser obligatorios (deben estar instalados si el grupo es
instalado), predeterminados (normalmente se instalan si el grupo es instalado) u opcionales (no se
instalan cuando el grupo es seleccionado a menos que se solicite específicamente) .

Como la lista yum, el comando yum group list (o yum grouplist) mostrará los nombres de los
grupos instalados y disponibles. Algunos grupos normalmente se instalan a través de grupos de
entorno y están ocultos por defecto. Estos grupos ocultos también se pueden enumerar con el
comando oculto de la lista de grupos yum. Si se agrega la opción de ids, también se mostrará la ID
del grupo. Los grupos se pueden instalar, actualizar, eliminar y consultar por nombre o ID.

[root@labrhel7 ~]# yum group list


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
No existe un archivo de grupos instalados.
Maybe run: yum groups mark convert (see man yum)
Grupos de Entorno Disponibles:
Instalación mínima

960067641
informes@atp.com.pe
www.atp.com.pe
65

Servidor de infraestructura
Servidor y archivo de impresión
Servidor web básico
Host de virtualización
Servidor con GUI
Grupos disponibles:
Administración de sistemas
Bibliotecas compatibles
Compatibilidad con legado de UNIX
Herramientas de Administración de sistemas
Herramientas de desarrollo
Herramientas de seguridad
Herramientas gráficas de Administración
Herramientas para consola de Internet.
Soporte científico
Soporte para tarjeta inteligente
Listo

[root@labrhel7 ~]# yum grouplist hidden

La información sobre un grupo se muestra con el comando yum group info (o yum groupinfo).
Incluye una lista de nombres de paquete obligatorios, predeterminados y opcionales o ID de
grupo. Los nombres de paquetes o ID de grupo pueden tener un marcador delante de ellos.

MARCADOR SIGNIFICADO
= El paquete está instalado, fue instalado como parte del grupo.
+ El paquete no está instalado, se instalará si el grupo es instalado o actualizado.
- El paquete no está instalado, no se instalará si el grupo es instalado o actualizado.
Ninguno El paquete está instalado, pero no se instaló a través de un grupo.

[root@labrhel7 ~]# yum group info "Instalación mínima"



Grupo de Entorno: Instalación mínima
Id de Entorno: minimal
Descripción: Funcionalidad básica.
Grupos Obligatorios:
+core
Grupos Opcionales:
+debugging

• El comando yum group install (o yum groupinstall) instalará un grupo que instalará sus paquetes
obligatorios y predeterminados y los paquetes de los que depende.

[root@labrhel7 ~]# yum groupinstall "X Window System"



zenity x86_64 3.22.0-1.el7 DVD 744 k

Resumen de la transacción
===================================================================================
==
Instalar 11 Paquetes (+246 Paquetes dependientes)

960067641
informes@atp.com.pe
www.atp.com.pe
66

Tamaño total de la descarga: 135 M


Tamaño instalado: 432 M
Is this ok [y/d/N]:

IMPORTANTE: El comportamiento de los grupos yum ha cambiado en Red Hat Enterprise Linux
7 de Red Hat Enterprise Linux 6 y versiones anteriores. En RHEL 7, los grupos se tratan como
objetos y se retraen por el sistema. Si un grupo instalado se actualiza y el repositorio de yum ha
agregado nuevos paquetes obligatorios o predeterminados al grupo, esos paquetes nuevos se
instalarán en la actualización.

RHEL 6 y anteriores consideran que se debe instalar un grupo si se han instalado todos sus
paquetes obligatorios; o si no tenía paquetes obligatorios, si se instalan paquetes predeterminados
u opcionales en el grupo. En RHEL 7, se considera que un grupo está instalado solo si se utilizó la
instalación de yum group para instalarlo. Un nuevo comando en RHEL 7, yum group mark install
GROUPNAME se puede utilizar para marcar un grupo como instalado, y los paquetes que faltan y
sus dependencias se instalarán en la próxima actualización.

Finalmente, RHEL 6 y anteriores no tenían la forma de dos palabras de los comandos del grupo
yum. En otras palabras, en RHEL 6 el comando yum grouplist existía, pero el comando equivalente
de RHEL 7 yum group list no.

Viendo el historial de transacciones

• Todas las transacciones de instalación y eliminación se registran en /var/log/yum.log.

[root@labrhel7 ~]# tail -5 /var/log/yum.log


May 17 15:24:16 Installed: psmisc-22.20-15.el7.x86_64
May 17 15:24:16 Installed: bzip2-1.0.6-13.el7.x86_64
May 17 15:24:17 Installed: 1:telnet-0.17-64.el7.x86_64
May 17 15:24:17 Installed: unzip-6.0-16.el7.x86_64
May 17 15:24:17 Installed: net-tools-2.0-0.22.20131004git.el7.x86_64

• Se puede ver un resumen de las transacciones de instalación y eliminación con el historial de yum.

[root@labrhel7 ~]# yum history


Complementos cargados:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-
manager to register.
ID | Registro de usuario | Día y hora | Acción(es) | Modific
-------------------------------------------------------------------------------
2 | root <root> | 2018-05-17 15:23 | Install | 50
1 | Sistema <no definido> | 2018-05-17 11:02 | Install | 330
history list

• Una transacción se puede revertir con las opciones de deshacer historial:

[root@labrhel7 ~]# yum history undo 6

960067641
informes@atp.com.pe
www.atp.com.pe
67

7.4.2. RESUMEN DE COMANDOS YUM

TAREA COMANDO
Listar paquetes instalados y disponibles por nombre yum list [PATRÓN]
Listar grupos instalados y disponibles yum grouplist
Buscar una paquete por patrón yum search PATRÓN
Mostrar el detalle de un paquete yum info PAQUETE
Instalar un paquete yum install PAQUETE
Instalar un grupo de paquetes yum groupinstall “NOMBRE DE GRUPO”
Actualizar todos los paquetes yum update
Remover un paquete yum remove PAQUETE
Mostrar el historial de transacciones yum yum history

7.5. Habilitando repositorios con yum

7.5.1. HABILITANDO REPOSITORIOS OFICIALES DE RED HAT

El registro de un sistema en el servicio de gestión de suscripciones configura automáticamente el


acceso a los repositorios de software en función de las suscripciones adjuntas. Para ver todos los
repositorios disponibles.

[root@labrhel7 ~]# yum repolist all


Complementos cargados:product-id, search-disabled-repos, subscription-manager

id del repositorio nombre del


repositorio estado
rhel-7-server-extras-debug-rpms/x86_64 Red Hat
Enterprise Linux 7 Server - deshabilitado
rhel-7-server-extras-rpms/x86_64 Red Hat
Enterprise Linux 7 Server - habilitado: 838
rhel-7-server-extras-source-rpms/x86_64 Red Hat
Enterprise Linux 7 Server – deshabilitado

repolist: 46.946

Si se desea habilitar un repositorio, se realiza mediante el comando subscription-manager y el id del


repositorio.

[root@labrhel7 ~]# subscription-manager repos --enable= rhel-7-server-extras-rpms

7.5.2. HABILITANDO REPOSITORIOS DE TERCEROS

Los repositorios de terceros son directorios de archivos de paquetes de software proporcionados por
una fuente que no sea de Red Hat, a la que se puede acceder por yum desde un sitio web, servidor
FTP o sistema de archivos local. Los repositorios de Yum son utilizados por distribuidores de software
que no son de Red Hat, o por pequeñas colecciones de paquetes locales. (Por ejemplo, Adobe
proporciona parte de su software gratuito para Linux a través de un yum repositorio).

960067641
informes@atp.com.pe
www.atp.com.pe
68

Coloque un archivo en el directorio /etc/yum.repos.d/ para habilitar la compatibilidad con un nuevo


repositorio de terceros. Los archivos de configuración del depósito deben terminar en .repo. La
definición del repositorio contiene la URL del depósito, un nombre, si se usa GPG para verificar las
firmas del paquete y, de ser así, la URL que apunta a la clave GPG de confianza.

7.6. Examinando los archivos de un paquete RPM

7.6.1. EXAMINANDO PAQUETES DESCARGADOS CON RPM

La utilidad rpm es una herramienta de bajo nivel que puede obtener información sobre el contenido
de los paquetes y paquetes instalados. Obtiene su información de una base de datos local o de los
propios archivos del paquete.

La forma general de una consulta es:

• rpm -q [opciones de selección] [opciones de listado]

7.6.2. CONSULTAS RPM: OPCIONES DE SELECCIÓN

• -q - a: Todos los paquetes instalados.

• -q [NOMBRE DEL PAQUETE]

[root@labrhel7 ~]# rpm -q yum


yum-3.4.3-154.el7.noarch

• -q -f [NOMBRE DEL ARCHIVO]

[root@labrhel7 ~]# rpm -q -f /bin/ls


coreutils-8.22-18.el7.x86_64

7.6.3. CONSULTAS DE RPM: INFORMACIÓN SOBRE EL CONTENIDO DE LOS PAQUETES

• -q: Lista los nombres de los paquetes instalados y versiones; equivalente al comando yum list.

• -q - i: Información de un paquete; equivalente al comando yum info.

• -q - l: Lista los archivos que se instalaran con un determinado paquete.

[root@labrhel7 tmp]# rpm -q -l yum-rhn-plugin


/etc/yum/pluginconf.d/rhnplugin.conf
/usr/share/doc/yum-rhn-plugin-2.0.1
/usr/share/doc/yum-rhn-plugin-2.0.1/LICENSE
/usr/share/locale/aln/LC_MESSAGES/yum-rhn-plugin.mo

960067641
informes@atp.com.pe
www.atp.com.pe
69

• -q - c: Lista únicamente los archivos de configuración.

[root@labrhel7 tmp]# rpm -q -c yum-rhn-plugin


/etc/yum/pluginconf.d/rhnplugin.conf

• -q -d: Lista únicamente los archivos de documentación.

[root@labrhel7 tmp]# rpm -q -d yum-rhn-plugin


/usr/share/doc/yum-rhn-plugin-2.0.1/LICENSE
/usr/share/man/man5/rhnplugin.conf.5.gz
/usr/share/man/man8/rhnplugin.8.gz
/usr/share/man/man8/yum-rhn-plugin.8.gz

• -q -l -p: Listar el contenido a instalar de un paquete.

[root@labrhel7 ~]# rpm -qlp epel-release-7-11.noarch.rpm


advertencia:epel-release-7-11.noarch.rpm: EncabezadoV3 RSA/SHA256 Signature, ID de
clave 352c64e5: NOKEY
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/epel.repo
/usr/lib/systemd/system-preset/90-epel.preset
/usr/share/doc/epel-release-7
/usr/share/doc/epel-release-7/GPL

• -q --changelog: Lista la información referente a los cambios de un paquete.

[root@labrhel7 ~]# rpm -q -changelog audit


* mar dic 12 2017 Steve Grubb <sgrubb@redhat.com> 2.8.1-3
resolves: #1399314 - Allow non-equality comparisons for uid and gid fields

* lun nov 06 2017 Steve Grubb <sgrubb@redhat.com> 2.8.1-2


resolves: #1508965 - Need to rebuild rpm to remove static relocations

• -q --scripts: Lista los scripts que serán ejecutados antes o después de que el paquete es instalado
o eliminado

[root@labrhel7 ~]# rpm -q --scripts openssh-server


preinstall scriptlet (using /bin/sh):
getent group sshd >/dev/null || groupadd -g 74 -r sshd || :
getent passwd sshd >/dev/null || \
useradd -c "Privilege-separated SSH" -u 74 -g sshd \
-s /sbin/nologin -r -d /var/empty/sshd sshd 2> /dev/null || :
postinstall scriptlet (using /bin/sh):

if [ $1 -eq 1 ] ; then
# Initial installation
systemctl preset sshd.service sshd.socket >/dev/null 2>&1 || :
fi
preuninstall scriptlet (using /bin/sh):

960067641
informes@atp.com.pe
www.atp.com.pe
70

if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
systemctl --no-reload disable sshd.service sshd.socket > /dev/null 2>&1 ||
:
systemctl stop sshd.service sshd.socket > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):

systemctl daemon-reload >/dev/null 2>&1 || :


if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
systemctl try-restart sshd.service >/dev/null 2>&1 || :
fi

7.6.4. USANDO YUM PARA INSTALAR PAQUETES DE FORMA LOCAL

El comando yum localinstall [PAQUETE].rpm se puede usar para instalar archivos de paquete
directamente. Descarga automáticamente cualquier dependencia que tenga el paquete de cualquier
repositorio de yum configurado. Los paquetes normalmente están firmados digitalmente para
garantizar que sean legítimos; si el paquete no está firmado por una clave en la que confía su
sistema, será rechazado. La opción --nogpgcheck puede deshabilitar la comprobación de la firma si
está seguro de que el paquete es legítimo, si se instala un paquete con yum install En Red Hat
Enterprise Linux 7, la opción --nogpgcheck no es necesaria si un paquete está instalado con yum
localinstall.

[root@labrhel7 ~]# yum localinstall paquete.rpm

7.6.5. RESUMEN DE COMANDOS RPM

TAREA COMANDO
Mostrar información acerca del paquete rpm -q -i NAME
Lista todos los archivos incluidos en el paquete rpm -q -l NAME
Lista los archivos de configuración del paquete rpm -q -c NAME
Lista los archivos de documentación del paquete rpm -q -d NAME
Muestra un resumen de las razones por la que una rpm -q --changelog NAME
nueva versión de paquete ha sido lanzado
Muestra los scripts incluidos dentro del paquete rpm -q --scripts NAME

960067641
informes@atp.com.pe
www.atp.com.pe
71

7.7. Práctica de capítulo

1. Se conoce que el servicio named maneja un archivo de configuración ubicado en /etc/named.conf.


¿De qué manera podemos identificar el paquete que provee dicho archivo?

2. Deseamos instalar interfaz gráfica a nuestro equipo y lo queremos hacer de la forma mínima. Para
ello debemos instalar el grupo de paquetes llamado “Sistema X Window”. Realizar dicha instalación.

3. Instalar la herramienta de administración web llamada Webmin desde la página oficial del proyecto
a través del archivo rpm correspondiente utilizando la herramienta yum. Link de descarga:
https://prdownloads.sourceforge.net/webadmin/webmin-1.881-1.noarch.rpm

4. Listar el número de paquetes instaladas en el sistema operativo. Esto se realiza mediante el


comando rpm en primera instancia.

960067641
informes@atp.com.pe
www.atp.com.pe
72

8. MANEJO DE DISPOSITIVOS Y SISTEMAS DE ARCHIVOS

8.1. Identificación de sistemas de archivos y dispositivos

8.1.1. CONCEPTOS SOBRE EL MANEJO DE ALMACENAMIENTO

Un sistema de archivos es una estructura organizada de archivos y directorios que contienen datos
que residen en un dispositivo de almacenamiento, como un disco físico o una partición. La jerarquía
del sistema de archivos discutida anteriormente ensambla todos los sistemas de archivos en un árbol
de directorios con una única raíz, el directorio /. La ventaja aquí es que la jerarquía existente se puede
ampliar en cualquier momento agregando un nuevo disco o partición que contenga un sistema de
archivos compatible para agregar espacio en el disco en cualquier parte del árbol del sistema de
archivos. El proceso de agregar un nuevo sistema de archivos al árbol de directorios existente se
llama montaje. El directorio donde se monta el nuevo sistema de archivos se conoce como punto de
montaje. Este es un concepto fundamentalmente diferente al utilizado en un sistema Microsoft
Windows, donde un nuevo sistema de archivos se presenta mediante una letra de unidad separada.

Los discos duros y los dispositivos de almacenamiento normalmente se dividen en particiones más
pequeñas. Una partición es una forma de compartimentar un disco. Se pueden formatear diferentes
partes de este con diferentes sistemas de archivos o se pueden usar para diferentes propósitos. Por
ejemplo, una partición podría contener directorios de inicio del usuario, mientras que otra podría
contener registros y datos del sistema. Si un usuario llena la partición del directorio de inicio con
datos, la partición del sistema aún puede tener espacio disponible. Colocar datos en dos sistemas de
archivos separados o en dos particiones separadas ayuda a planificar el almacenamiento de datos.

Los dispositivos de almacenamiento están representados por un tipo de archivo especial llamado
dispositivo de bloque. El dispositivo de bloque se almacena en el directorio /dev. En Red Hat
Enterprise Linux, el primer SCSI, PATA/SATA o USB, el disco duro detectado es /dev/sda, el segundo
es /dev/sdb, y así sucesivamente. Este nombre representa todo el disco. La primera partición primaria
en /dev/sda sería /dev/sda1, la segunda partición es /dev/sda2, y así sucesivamente.

[root@labrhel7 ~]# ls -l /dev/sd*


brw-rw---- 1 root disk 8, 0 jun 11 20:24 /dev/sda
brw-rw---- 1 root disk 8, 1 jun 11 20:24 /dev/sda1
brw-rw---- 1 root disk 8, 2 jun 11 20:24 /dev/sda2

NOTA: Existen excepciones en la nomenclatura de los dispositivos de bloque, por ejemplo para discos
virtuales podrían encontrarse dispositivos con nombres /dev/vdX.

Otra forma de organizar discos y particiones es con la administración de volúmenes lógicos (LVM).
Con LVM, uno o más dispositivos de bloques se pueden agregar a un grupo de almacenamiento
llamado grupo de volúmenes. El espacio en disco está disponible con uno o más volúmenes lógicos.
Un volumen lógico es el equivalente de una partición que reside en un disco físico. Tanto el grupo de
volúmenes como el volumen lógico tienen nombres asignados al momento de la creación. Para el
grupo de volúmenes, un directorio con el mismo nombre que el grupo de volúmenes existe en el
directorio /dev. Debajo de ese directorio, se ha creado un enlace simbólico con el mismo nombre que

960067641
informes@atp.com.pe
www.atp.com.pe
73

el volumen lógico. Por ejemplo, el archivo de dispositivo que representa el volumen milv en el grupo
mivg es /dev/mivg/milv.

Cabe señalar que LVM se basa en el controlador de kernel Device Mapper (DM). El enlace simbólico
anterior /dev/mivg/milv apunta al nodo del dispositivo de bloque /dev/dm. La asignación del número
es secuencial comenzando con cero (0). Existe otro enlace simbólico para cada volumen lógico en el
directorio /dev/mapper con el nombre /dev/mapper/mivg-milv. El acceso al volumen lógico
generalmente puede usar cualquiera de los nombres de enlace simbólicos coherentes y confiables, ya
que el nombre de /dev/dm-number puede variar con cada inicio.

8.1.2. EXAMINANDO SISTEMAS DE ARCHIVOS

Para obtener una descripción general de los puntos de montaje del sistema de archivos y la cantidad
de espacio libre disponible, ejecute el comando df. Cuando el comando df se ejecuta sin
argumentos, informará el espacio total en disco, el espacio en disco utilizado y el espacio libre en
disco en todos los sistemas de archivos normales montados. Informará sobre los sistemas locales y
remotos y sobre el porcentaje del espacio total en disco que se está utilizando.

[root@labrhel7 ~]# df
S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
/dev/mapper/rhel-root 6277120 3094340 3182780 50% /
devtmpfs 239200 0 239200 0% /dev
tmpfs 250076 0 250076 0% /dev/shm
tmpfs 250076 4508 245568 2% /run
tmpfs 250076 0 250076 0% /sys/fs/cgroup
/dev/sda1 1038336 127036 911300 13% /boot
tmpfs 50016 0 50016 0% /run/user/0

El particionamiento en la máquina del servidor muestra un sistema de archivos real, que está montado
en /. Esto es común para máquinas virtuales. Los dispositivos tmpfs y devtmpfs son sistemas de
archivos en la memoria del sistema. Todos los archivos escritos en tmpfs o devtmpfs desaparecen
después del reinicio del sistema.

Para mejorar la legibilidad de los tamaños de salida, hay dos opciones diferentes legibles para el ser
humano: -h o - H. La diferencia entre estas dos opciones es que -h informará en KiB (210), MiB (220) o
GiB (230), mientras que la opción -H informará en unidades estándares KB (10 3), MB (106) o GB (109).
Los fabricantes de discos duros suelen usar unidades SI cuando anuncian sus productos.

Muestre un informe sobre los sistemas de archivos en la máquina del servidor con todas las unidades
convertidas en formato legible para los humanos.

[root@labrhel7 ~]# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/rhel-root 6,0G 3,0G 3,1G 50% /
devtmpfs 234M 0 234M 0% /dev
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 245M 4,5M 240M 2% /run
tmpfs 245M 0 245M 0% /sys/fs/cgroup

960067641
informes@atp.com.pe
www.atp.com.pe
74

/dev/sda1 1014M 125M 890M 13% /boot


tmpfs 49M 0 49M 0% /run/user/0

Para obtener información más detallada sobre el espacio utilizado por un determinado árbol de
directorios, existe el comando du. El comando du tiene opciones -H y -H para convertir la salida a
formato legible para las personas. El comando du muestra el tamaño de todos los archivos en el árbol
de directorios actual recursivamente.

Mostrar un informe de uso de disco para el directorio /var en el servidor.

[root@labrhel7 var]# du -sh *


0 adm
1,1G cache
0 crash
8,0K db
0 empty
0 games
0 gopher
0 kerberos
82M lib

8.2. Montaje y desmontaje de sistemas de archivo

8.2.1. MONTAJE MANUAL DE SISTEMAS DE ARCHIVOS

Un sistema de archivos que resida en un dispositivo SATA/PATA o SCSI debe montarse manualmente
para acceder a él. 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 a montar. El
segundo argumento especifica el directorio de destino donde el sistema de archivos estara disponible
después de montarlo. El directorio de destino se conoce como punto de montaje.

El comando mount visualiza el argumento del sistema de archivos de una de dos maneras diferentes:

• El archivo de dispositivo de la partición que contiene el sistema de archivos, que reside en /dev.
• El UUID, un identificador único universal del sistema de archivos.

NOTA: Siempre que no se vuelva a crear un sistema de archivos, el UUID se mantendrá igual. El
dispositivo de bloque puede cambiar; por ejemplo, si se cambia el orden de los dispositivos o si se
agregan dispositivos adicionales al sistema

El comando blkid ofrece una descripción general de las particiones existentes con un sistema de
archivos y el UUID del sistema de archivos, así como también el sistema de archivos utilizado para
formatear la partición.

[root@labrhel7 var]# blkid


/dev/sda1: UUID="a7b8b88c-82fc-453c-864d-d893355c0675" TYPE="xfs"
/dev/sda2: UUID="2Wes5K-88HS-NPT0-l3Lk-930f-8swh-jDxm0S" TYPE="LVM2_member"
/dev/mapper/rhel-root: UUID="328d35f3-3d43-42b1-bd32-f9fbecba2d8f" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="fae49918-8a72-4e8a-a483-819834812522" TYPE="swap"

960067641
informes@atp.com.pe
www.atp.com.pe
75

NOTA: Un sistema de archivos se puede montar en un directorio existente. El directorio /mnt existe
de forma predeterminada y proporciona un punto de entrada para los puntos de montaje. Se usa para
discos de montaje manual. Se recomienda crear un subdirectorio en /mnt y usar ese subdirectorio
como punto de montaje a menos que haya una razón para montar el sistema de archivos en otra
ubicación específica en la jerarquía del sistema de archivos.

Montar por archivo de dispositivo de la partición que contiene el sistema de archivos.

[root@labrhel7 ~]# mount /dev/sdb1 /mnt/datos

Montar el sistema de archivos mediante una identificación única universal, o el UUID, del sistema de
archivos.

[root@labrhel7 ~]# mount UUID="fae49918-8a72-4e8a-a483-819834812522" /mnt/datos

Si el directorio que actúa como punto de montaje no está vacío, los archivos que existen en ese
directorio no son accesibles siempre que un sistema de archivos esté montado allí. Todos los archivos
escritos en el directorio de punto de montaje terminan en el sistema de archivos montado allí.

8.2.2. DESMONATAJE DE SISTEMAS DE ARCHIVOS

Para desmontar un sistema de archivos, el comando umount espera el punto de montaje como
argumento.

Por ejemplo, si queremos desmontar la partición principal / esta fallará, debido a que esta siendo
usada.

[root@labrhel7 ~]# umount /


umount: /: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

Desmontar no es posible si un proceso accede al punto de montaje. Para que sea más exitoso, el
proceso debe detener el acceso al punto de montaje.

El comando lsof enumera todos los archivos abiertos y el proceso que accede a ellos en el directorio
proporcionado. Es útil identificar qué procesos actualmente impiden que el sistema de archivos se
desinstale con éxito.

[root@labrhel7 ~]# lsof /usr/sbin/sshd


COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 929 root txt REG 253,0 853024 382246 /usr/sbin/sshd
sshd 2343 root txt REG 253,0 853024 382246 /usr/sbin/sshd
sshd 2345 root txt REG 253,0 853024 382246 /usr/sbin/sshd

Una vez que se identifican los procesos, se puede tomar una acción, como esperar a que se complete
el proceso o enviar una señal SIGTERM o SIGKILL al proceso. En este caso, es suficiente cambiar el
directorio de trabajo actual a un directorio fuera del punto de montaje.

960067641
informes@atp.com.pe
www.atp.com.pe
76

NOTA: Una causa común para que el sistema de archivos en el punto de montaje esté ocupado es si
el directorio de trabajo actual de un indicador de shell está debajo del punto de montaje activo. El
proceso de acceso al punto de montaje es bash. Cambiar a un directorio fuera del punto de montaje
permite que el dispositivo sea desmontado.

8.2.3. ACCESO A DISPOSITIVOS DE ALMACENAMIENTO REMOVIBLES

Los medios extraíbles, como dispositivos flash USB y unidades, se montan automáticamente en el
entorno de escritorio gráfico cuando están conectaods. El punto de montaje para el medio extraíble es
/run/media/<user>/<label>. El <usuario> es el usuario que inició sesión en el entorno gráfico. La
<etiqueta> es el nombre dado al sistema de archivos cuando se creó

8.3. Crear enlaces entre archivos

Enlaces duros

Un enlace duro es una nueva entrada de directorio con una referencia a un archivo existente en el
sistema de archivos. Cada archivo en un sistema de archivos tiene un enlace fijo por defecto. Para
ahorrar espacio, en lugar de copiar, se puede crear un nuevo enlace fijo para referirse al mismo
archivo. Un nuevo enlace fijo necesita tener un nombre de archivo diferente, si se creó en el mismo
directorio que el enlace fijo existente, o si necesita residir en un directorio diferente. Todos los enlaces
duros que apuntan al mismo archivo tienen los mismos permisos, número de enlaces, propietarios de
usuarios/grupos, marcas de tiempo y contenido de archivos. Los enlaces duros que apuntan al mismo
contenido de archivo deben estar en el mismo sistema de archivos.

El ls -l muestra el recuento de enlaces duros después de los permisos y antes del propietario de un
archivo.

[root@labrhel7 ~]# ls -l nuevo_archivo.txt


-rw-r--r-- 1 root root 11 jun 12 01:51 nuevo_archivo.txt

El comando ln crea nuevos enlaces duros a archivos existentes. El comando espera un archivo
existente como primer argumento, seguido de uno o más enlaces duros adicionales. Los enlaces duros
pueden residir en cualquier lugar, siempre que estén en el mismo sistema de archivos que el
existente. Después de crear un nuevo enlace, no hay forma de saber cuál de los enlaces duros
existentes es el original.

Crear un enlace fijo nuevo_archivo_link.txt para el archivo existente nuevo_archivo.txt en el mismo


directorio.

[root@labrhel7 ~]# ls -l /root/nuevo_archivo_link.txt nuevo_archivo.txt


-rw-r--r-- 2 root root 11 jun 12 01:51 nuevo_archivo.txt
-rw-r--r-- 2 root root 11 jun 12 01:51 /root/nuevo_archivo_link.txt

Incluso si el archivo original se elimina, el contenido del archivo seguirá estando disponible siempre
que exista al menos un enlace fijo.

960067641
informes@atp.com.pe
www.atp.com.pe
77

[root@labrhel7 ~]# rm -rf /root/nuevo_archivo.txt


[root@labrhel7 ~]# ls -l /root/nuevo_archivo_link.txt
-rw-r--r-- 1 root root 11 jun 12 01:51 /root/nuevo_archivo_link.txt
[root@labrhel7 ~]# cat /root/nuevo_archivo_link.txt
Hola Mundo

Todos los enlaces duros que hacen referencia al mismo archivo tienen los mismos permisos, número
de enlaces, titularidades de usuarios / grutas, marcas de tiempo y contenido de archivos. Si alguna de
esa información se cambia en un enlace fijo, todos los demás enlaces duros que apuntan al mismo
archivo mostrarán la nueva información como lo haremos.

Enlaces suaves

El comando ln -s crea un enlace suave, también conocido como enlace simbólico. Un enlace suave es
un tipo de archivo especial que apunta a un archivo o directorio existente. Los enlaces suaves pueden
apuntar a un archivo o directorio en otro sistema de archivos. A diferencia de un enlace fijo, un enlace
simbólico puede apuntar a un archivo en un sistema de archivos diferente.

[root@labrhel7 ~]# ls -l nuevo_archivo.txt link_nuevo_archivo.txt


lrwxrwxrwx 1 root root 17 jun 12 02:05 link_nuevo_archivo.txt -> nuevo_archivo.txt
-rw-r--r-- 1 root root 11 jun 12 01:51 nuevo_archivo.txt

Cuando se elimina el archivo original, el enlace suave sigue apuntando al archivo, pero el objetivo se
ha ido. Un enlace suave que apunta a un archivo faltante se denomina "enlace suave colgante".

[root@labrhel7 ~]# rm -rf nuevo_archivo.txt


[root@labrhel7 ~]# ls -l link_nuevo_archivo.txt
lrwxrwxrwx 1 root root 17 jun 12 02:05 link_nuevo_archivo.txt -> nuevo_archivo.txt
[root@labrhel7 ~]# cat link_nuevo_archivo.txt
cat: link_nuevo_archivo.txt: No existe el fichero o el directorio

Un enlace suave puede apuntar a un directorio. El enlace suave entonces actúa como un directorio.
Cambiar al directorio de enlaces suaves con cd funciona como se espera.

Crear un enlace suave /root/configfiles que apunte al directorio /etc.

[root@labrhel7 ~]# ln -s /etc /root/configfiles


[root@labrhel7 ~]# cd /root/configfiles
[root@labrhel7 configfiles]# pwd
/root/configfile

8.4. Búsqueda de archivos y carpetas

Un administrador del sistema necesita herramientas para buscar archivos que coincidan con ciertos
criterios en el sistema de archivos. Esta sección trata sobre dos comandos que pueden buscar
archivos en el sistema de archivos. El comando locate busca en una base de datos pregenerada los

960067641
informes@atp.com.pe
www.atp.com.pe
78

nombres de archivo o rutas de archivos y devuelve los resultados al instante. El comando find busca
en el sistema de archivos en tiempo real rastreando el sistema de archivos.

8.4.1. COMANDO locate

El comando locate devuelve resultados de búsqueda basados en el nombre de archivo o la ruta


desde la base de datos locate. La base de datos almacena el nombre del archivo y la información de
ruta. Al buscar entradas como un usuario normal, los resultados se devuelven solo cuando el usuario
que invoca la búsqueda de localización ha leído permisos en el árbol de directorios que contiene el
elemento coincidente.

• Buscar archivos con la palabra "passwd" en el nombre o la ruta en el directorio árboles legibles por
el usuario actual.

[root@labrhel7 ~]# locate passwd


/etc/passwd
/etc/passwd-
/etc/pam.d/passwd

• Los resultados se devuelven incluso cuando el nombre o la ruta del archivo coinciden solo
parcialmente con la consulta de búsqueda

[root@labrhel7 ~]# locate image


/etc/selinux/targeted/contexts/virtual_image_context
• La opción -i realiza una búsqueda que no distingue entre mayúsculas y minúsculas. Con esta
opción, todas las combinaciones posibles de letras mayúsculas y minúsculas coinciden con la
búsqueda.

[root@labrhel7 ~]# locate -i messages


/opt/rh/httpd24/root/var/www/wordpress/wp-admin/includes/edit-tag-messages.php
/opt/rh/rh-php71/root/usr/share/locale/aa/LC_MESSAGES

• La opción -n limita el número de resultados de búsqueda devueltos por locate. El siguiente ejemplo
limita los resultados de búsqueda devueltos por locate a las primeras cinco coincidencias.

[root@labrhel7 ~]# locate -n 5 messages


/opt/rh/httpd24/root/var/www/wordpress/wp-admin/includes/edit-tag-messages.php
/usr/share/vim/vim74/ftplugin/msmessages.vim
/usr/share/vim/vim74/syntax/messages.vim
/usr/share/vim/vim74/syntax/msmessages.vim
/var/log/messages

NOTA: La base de datos de localización se actualiza automáticamente todos los días. El usuario raíz
puede realizar una actualización de la base de datos con el comando updatedb.

[root@labrhel7 ~]# updatedb

960067641
informes@atp.com.pe
www.atp.com.pe
79

8.4.2. COMANDO find

El comando find realiza una búsqueda en tiempo real en los sistemas de archivos locales para
encontrar archivos que coincidan con los criterios de los argumentos brindados. El comando find está
buscando archivos en el sistema de archivos con los permisos del usuario que lo invoca. El usuario
que invoca el comando find debe tener permiso de lectura y ejecución en un directorio para examinar
su contenido. El primer argumento para el comando find es el directorio para buscar. Si se omite el
argumento del directorio, find iniciará la búsqueda en el directorio actual y buscará coincidencias en
cualquiera de los subdirectorios.

NOTA: El comando find tiene una gran cantidad de opciones que se pueden proporcionar para
describir exactamente qué tipo de archivo se debe encontrar. Las búsquedas pueden basarse en el
nombre del archivo, el tamaño del archivo, la última marca de tiempo modificada (timestamp) y otras
características del archivo en cualquier combinación.

• La opción -name seguida de un nombre de archivo busca filiales que coincidan con el nombre del
archivo dado y devuelve todas las coincidencias exactas. Para buscar archivos llamados
sshd_config en el directorio / y todo los subdirectorios en el servidor.

[root@labrhel7 ~]# find / -name sshd_config


/etc/ssh/sshd_config

• Los comodines están disponibles para buscar un nombre de archivo y devolver todos los
resultados que son una coincidencia parcial. Cuando se utilizan comodines, es importante citar el
nombre del archivo para evitar que el terminal interprete el comodín. El siguiente ejemplo busca
archivos en el directorio / en el servidor que termina en .txt.
[root@labrhel7 ~]# find / -name '*.txt'
/etc/pki/nssdb/pkcs11.txt
/usr/lib/python2.7/site-packages/decorator-3.4.0-py2.7.egg-info/SOURCES.txt
/usr/lib/python2.7/site-packages/decorator-3.4.0-py2.7.egg-
info/dependency_links.txt
/usr/lib/python2.7/site-packages/decorator-3.4.0-py2.7.egg-info/top_level.txt

• Para buscar archivos en /etc/ que contengan la palabra pass en cualquier lugar de sus nombres en
el servidor.

[root@labrhel7 ~]# find /etc -name '*pass*'


/etc/passwd-
/etc/passwd
/etc/selinux/targeted/active/modules/100/passenger
/etc/security/opasswd
/etc/pam.d/passwd
/etc/pam.d/password-auth-ac
/etc/pam.d/password-auth
/etc/openldap/certs/password

960067641
informes@atp.com.pe
www.atp.com.pe
80

• Para realizar una búsqueda insensible a mayúsculas o minúsculas para un nombre de archivo
dado, use la opción -iname, seguida del nombre del archivo para buscar. Para buscar sin tener en
cuenta los archivos que tienen mensajes en sus nombres en el directorio / en el servidor.

[root@labrhel7 ~]# find / -iname '*messages*'


/sys/module/libahci/parameters/ahci_em_messages
/var/log/messages-20180604
/var/log/messages
/usr/share/locale/ast/LC_MESSAGES

• El comando find puede buscar archivos según su propiedad o permisos. Las opciones útiles al
buscar por propietario son -user y -group, que buscan por nombre, y -uid y -gid, que buscan por
ID. Buscar archivos propiedad del usuario chrony en el directorio / del servidor.

[root@labrhel7 ~]# find / -user chrony


/run/chrony
/run/chrony/chronyd.sock
/var/lib/chrony
/var/lib/chrony/drift
/var/log/chrony

• Buscar archivos propiedad del grupo postfix en el directorio / del servidor.

[root@labrhel7 ~]# find / -group postfix


/var/lib/postfix/master.lock
/var/spool/postfix/private/tlsmgr

• Buscar archivos propiedad del usuario root y grupo mail en el servidor.

[root@labrhel7 ~]# find / -user root -group mail


/var/spool/mail
/var/spool/mail/root
/opt/rh/httpd24/root/var/spool/mail

• Para hacer coincidir los archivos para los cuales el usuario tiene permisos de lectura y escritura, el
grupo tiene al menos permisos de lectura, u otros tienen al menos acceso de escritura.

[root@labrhel7 ~]# find /etc -perm /442


/etc
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/resolv.conf
/etc/grub.d

• El comando find puede buscar archivos que coincidan con un tamaño especificado con la opción -
size, seguido de un valor numérico y la unidad. Las unidades que se utilizarán con la opción -size
son.

960067641
informes@atp.com.pe
www.atp.com.pe
81

o k, para kilobyte
o M, para megabyte
o G, para gigabyte

• Buscar archivos con un tamaño de exactamente 10 megabytes.

[root@labrhel7 log]# find / -size 10M

• Buscar archivos con un tamaño de mayor a 10 megabytes

[root@labrhel7 log]# find / -size +10M

• Buscar archivos con un tamaño de menor a 10 megabytes

[root@labrhel7 log]# find / -size -10M

NOTA: Los modificadores de la unidad de tamaño redondean todo hasta unidades individuales. Por
ejemplo, find -size 1M mostrará archivos menores a 1MB porque redondea todos los archivos hasta
1MB.

La opción -mmin, seguida del tiempo en minutos, busca todos los archivos los cuales fueron
modificado.

• Para encontrar todos los archivos que fueron modificados hace exactamente 10 minutos.

[root@labrhel7 log]# find / -mmin 10

• El modificador + delante de la cantidad de minutos busca todos los archivos en / que se han
modificado hace más de 200 minutos.

[root@labrhel7 ]# find / -mmin +200

• El modificador - cambia la búsqueda para buscar todos los archivos en el directorio / que han sido
cambiados hace menos de 150 minutos.

[root@labrhel7 ]# find / -mmin -150

La opción -type limita el ámbito de búsqueda a un tipo de archivo dado, como:

o f, para archivos.
o d, para directorios.
o l, para links simbólicos.
o b, para dispositivos.

Buscar todos los directorios en /etc.

[root@labrhel7 ~]# find /etc -type d

960067641
informes@atp.com.pe
www.atp.com.pe
82

Generar una lista de todos los bloques de dispositivo en /dev.

[root@labrhel7 ~]# find /dev -type b


/dev/dm-1
/dev/dm-0
/dev/sr0
/dev/sda2
/dev/sda1
/dev/sda

La opción - links seguida por un número busca todos los archivos que tienen un cierto núumero de
enlaces duros. El número puede ir precedido por un modificador + para buscar archivos con un
recuento mayor que el recuento de enlaces duros dado. Si el número está precedido por un
modificador -, la búsqueda se limita a todos los archivos con un conteo de enlaces duros que es
menor que el número dado.

[root@labrhel7 ~]# find / -type f -links +1

960067641
informes@atp.com.pe
www.atp.com.pe
83

8.5. Práctica de capítulo

1. Generar un reporte de uso de disco mediante el comando du del contenido de la carpeta /var y
guardar el resultado en el archivo /tmp/resultado.

2. Agregar un disco virtual y montarlo directamente mediante UUID en la ubicaión /mnt/atp.

4. Crear un link suave (o simbólico) de la ubicación /tmp/resultado en /root/espacio_usado.

5. Encuentrar todos los enlaces suaves en el servidor que tengan atp como parte de su nombre(usar
el comando find).

6. Crear el archivo /tmp/prueba_linux, intentar ubicar dicho archivo mediante el comando locate ¿Por
qué no figura como resultado? Corregir dicho comportamiento para lograr encontrarlo mediante el
comando locate.

960067641
informes@atp.com.pe
www.atp.com.pe

Вам также может понравиться