Módulo 6 - Expresiones regulares e integridad de sistemas de archivos
Módulo 6 - Expresiones regulares e integridad de sistemas de archivos
Comando grep
grepfiltra texto y busca patrones en archivos.- Muestra coincidencias en la salida estándar.
- Útil para archivos grandes cuando buscamos algo específico.
| Comando | Descripción |
|---|---|
grep [username] /etc/passwd | Busca todas las líneas que contienen el nombre de usuario especificado en el archivo /etc/passwd. |
grep [string] [file] -n | Busca las coincidencias del patrón especificado en el archivo indicado. Con la opción -n, enumera las líneas donde se encontraron coincidencias. Ejemplo: grep root /var/log/auth.log -n. |
grep [string] -c [file] | Busca las coincidencias del patrón especificado en el archivo indicado. La opción -c muestra la cantidad de coincidencias encontradas, pero no las líneas en sí. Ejemplo: grep sda -c /var/log/kern.log. |
history|grep clear -v | Imprime las líneas del historial que no coinciden con el patrón "clear", gracias a la opción -v. |
journalctl|grep boot -o | Ejecuta journalctl y filtra la salida para mostrar únicamente el patrón coincidente, utilizando la opción -o. |
journalctl|grep ^oct | Filtra las líneas que comienzan con "oct" (mes de octubre), utilizando el símbolo ^ como ancla. |
journalctl|grep reserved$ | Filtra las líneas que terminan con "reserved", utilizando el símbolo $ como ancla. |
Comando sed
sedes una herramienta más avanzada quegrep.- Permite extraer, sustituir y filtrar texto.
| Comando | Descripción |
|---|---|
sed -n /unix/p < geek.txt | El contenido de “geek.txt” es extraído, de manera que no se imprima nada más que las líneas con la palabra “unix”. |
sed /linux/d < geek.txt | Mostrará todo el contenido del archivo excepto las líneas que contengan la palabra linux. |
sed s/unix/Ubuntu/ < geek.txt | Sustituirá las primeras palabras “unix” de cada línea del archivo geek.txt por la palabra Ubuntu. |
sed s/unix/Ubuntu/2 < geek.txt | Sustituirá las segundas palabras “unix” de cada línea del archivo geek.txt por la palabra Ubuntu. |
sed s/unix/Ubuntu/g < geek.txt | Sustituirá todas las palabras “unix” de cada línea del archivo geek.txt por la palabra Ubuntu. |
sed -n 's/unix/linux/p' geek.txt | Mostrará únicamente las líneas donde se sustituyó la primera palabra unix por linux. |
Expresiones regulares
- Las expresiones regulares son conjuntos de caracteres para búsquedas complejas.
- Ampliamente usadas en comandos como
grepysed. - El "átomo" define el patrón a buscar
- .(punto): Coincide con cualquier carácter.
- ^: Coincide con el comienzo de una línea.
- $: Coincide en el final de una línea.
*: Significa que sustituya una o más ocurrencias.- ?: Significa que sustituya una única ocurrencia.
- [ ]: Cualquier ocurrencia entre los corchetes.
- {i}: El átomo debe aparecer exactamente “i” cantidad de veces.
- {i,}: El átomo debe de aparecer como mínimo “i” veces.
- {i,j}: El átomo debe de aparecer al menos “i” veces y a lo sumo “j” veces.
| Comando | Descripción |
|---|---|
journalctl|egrep .l | Muestra todas las coincidencias con la letra "l" en journalctl, donde el punto representa cualquier letra antes de "l". |
mount|egrep ^/dev | Muestra las líneas en mount que comienzan con "/dev". |
dmesg|egrep NO_DATA$ | Muestra las líneas en dmesg que terminan con "NO_DATA". |
rmdir [a-f]* | Borra directorios que comienzan con una letra entre "a" y "f", sin importar el resto del nombre. |
Ejemplo: Crearemos el archivo de texto team.txt con el siguiente contenido:
Fred apples 20
Susy oranges 5
Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14
Mas ejemplos de expresiones regulares:
| Comando | Descripción |
|---|---|
egrep 'mellon' team.tx | Mostrará todas las coincidencias con “mellon” en el archivo team.txt |
egrep '[aeiou]{2,}' team.txt | Mostrará las líneas y palabras donde exista al menos dos letras de las incluidas en los corchetes y que sean continuas. |
egrep '2.' team.txt | Mostrará las palabras que incluyan un “2” seguido de cualquier caracter. |
egrep '2$' team.txt | Mostrará las líneas que terminen con un “2”. |
egrep 'or|is|go' team.txt | Mostrará las palabras que contengan “or”, “is” y “go”. |
egrep '^[A-K]' team.txt | Mostrará las líneas que empiezan con cualquier letra entre “A” y “K”. |
Integridad de sistemas de archivos
- Preservar integridad asegura datos confiables.
- Previene fallos de lectura/escritura y corrupción.
- Protege contra virus, malware y fallos de hardware.
- fsck y e2fsck verifican y reparan sistemas.
Para poder ejecutar los siguientes comandos se recomienda:
- Reiniciar el sistema y entrar en “recovery mode” como root.
- Desmontar la(s) unidad(es) que se desean verificar.
- Ejecutar los siguientes comandos.
| Comando | Descripción | |
|---|---|---|
fsck [device] | Realiza una verificación rápida del FS. Ej: fsck /dev/sda3. | |
fsck -nf [device] | Realiza una verificación del FS sin realizar ningún cambio (n). Lo ejecuta de manera forzada (f). Importante: Usar esta opción si la anterior genera algún mensaje de error. | |
fsck -y [device] | En caso de que fsck haya encontrado problemas, con el parámetro -y intentará corregir los problemas automáticamente. -y (yes) a todo. | |
fsck -FAR -y [device] | Fuerza a verificar todos los FS. Omite el FS de root con “-R”. Todos los FS deben ser desmontados y a realizar cualquier cambio con “-y”. | |
e2fsck [device] | Realiza una verificación rápida del FS. Ej: e2fsck /dev/sda3. | |
e2fsck -p [device] | Realiza una verificación del FS y repara los errores encontrados automáticamente. | |
e2fsck -n [device] | Realiza un escaneo de problemas sin realizar cambios. | |
e2fsck -fy [device] | Fuerza a verificar todos los FS. Realiza un cambio en caso de encontrar errores. | |
e2fsck -c [device] | Realiza un análisis de bloques dañados en la partición y trata de solucionarlos. |
fsck vs e2fsck
fsckes la versión antigua para la verificación del sistema de archivos.e2fsckes una versión mejorada defsck.- Cuando
fsckse ejecuta sin especificar un tipo de sistema de archivos, internamente llama ae2fsckpara realizar la verificación. - Por defecto,
e2fsckinterpreta que el sistema de archivos puede ser ext2, ext3 o ext4. e2fsckes la herramienta específica para trabajar con los sistemas de archivos ext2, ext3 y ext4.
Comando tune2fs
tune2fs gestiona particiones y sistemas de archivos como Ext2, Ext3 y Ext4.
| Comando | Descripción |
|---|---|
tune2fs -l [device] | Muestra información y parámetros del sistema de archivos del dispositivo especificado. Ejemplo: tune2fs -l /dev/sda3. |
tune2fs -L [label] [device] | Permite agregar una etiqueta de nombre al volumen del sistema de archivos. |
tune2fs -i [minutes] [device] | Establece el tiempo mínimo entre dos verificaciones del sistema de archivos. Se puede especificar en minutos o meses. Ejemplo: tune2fs -i 10m /dev/sda3 o tune2fs -i 200 /dev/sda3 (en días). |
tune2fs -c -1 [device] | Deshabilita la verificación del sistema de archivos al arranque del sistema para el dispositivo especificado. Se recomienda ejecutar tune2fs -i -1 [device] para establecer el intervalo de verificación a "nunca". |
Comando df (Disk Free)
El comando df (Disk Free) es útil para obtener información sobre sistemas de archivos, particiones y su uso.
| Comando | Descripción |
|---|---|
df | Muestra información estándar, aunque los valores numéricos pueden ser difíciles de entender. |
df -h | Proporciona la misma información que df, pero con valores en un formato más legible para humanos. |
df -T | Similar a df, pero incluye una columna adicional con el tipo de sistema de archivos de cada dispositivo. |
df -t [FS.type] | Permite filtrar la lista por tipo de sistema de archivos. Ejemplo, df -t ext2. |
df --output=source | Muestra solo la columna con la ruta de origen de los dispositivos. |
df --output=fstype | Muestra solo la columna del tipo de sistema de archivos. |
df --output=size | Muestra el tamaño en bloques del dispositivo. Se puede agregar -h para hacerlo comprensible. |
df --output=used | Muestra el espacio en bloques utilizado por el dispositivo. Se puede agregar -h para hacerlo comprensible. |
df --output=avail | Muestra el espacio disponible en bloques. Se puede agregar -h para hacerlo comprensible. |
df --output=pcent | Muestra el porcentaje de uso por dispositivo. |
Comando du (Disk Usage)
El comando du proporciona una lista de archivos y directorios desde la ubicación actual, junto con su tamaño en bytes.
| Comando | Descripción |
|---|---|
du | Muestra el espacio utilizado por cada archivo y directorio en la ubicación actual, así como el espacio total utilizado en bytes. |
du -h | Proporciona la misma información que du, pero en kilobytes, megabytes u otro formato comprensible para los humanos. |
du --time | Agrega la fecha y hora de la última modificación de archivos y directorios, y puede combinarse con -h |
du --exclude=[pattern] | Permite excluir archivos o directorios según un patrón especificado. -h puede agregarse para una mejor comprensión. Por ejemplo, du -h --exclude=*.txt excluye archivos con extensión .txt. |
Comando lsblk
La herramienta lsblk analiza información sobre dispositivos de bloque, como discos duros y CD-DVD. Es ampliamente utilizada para consultar particiones del sistema, su tamaño y uso.
lsblk: Muestra el siguiente contenido:
- NAME: Nombre del dispositivo.
- MAJ:MIN: Identificador numérico del dispositivo y sus particiones (ejemplo: sda 8:0 | sda1 8:1).
- RM: Indica si el dispositivo es removible (1) o no (0).
- SIZE: Tamaño del dispositivo en formato K, M, G, T.
- RO: Indica si el dispositivo es de solo lectura (1) o no (0).
- TYPE: Tipo de dispositivo.
- MOUNTPOINTS: Punto de montaje de cada dispositivo.
| Comando | Descripción |
|---|---|
lsblk -l | Muestra la salida en formato de lista en lugar de árbol. |
lsblk -o [nombre-de-columna] | Filtra la salida para mostrar solo una o varias columnas separadas por coma, como "NAME", "SIZE", "TYPE", "MOUNTPOINT", etc. |
lsblk -m | Muestra los permisos y el propietario de cada dispositivo. |
lsblk [dispositivo] | Filtra la salida para mostrar solo información sobre un dispositivo específico, y se pueden agregar otras opciones mencionadas anteriormente. |
lsblk -b | Muestra información numérica en bytes. |
¿Qué es un dispositivo de bloque?
Un dispositivo de bloque es una unidad de almacenamiento que organiza y maneja la información en bloques de tamaño fijo, permitiendo el acceso independiente a cada bloque.
Ejemplos comunes:
- Discos duros (HDD)
- Unidades de estado sólido (SSD)
Características clave:
- Puede leer y escribir datos en bloques individuales
- No requiere energía constante para mantener la información almacenada (almacenamiento no volátil)
- Ideal para almacenar grandes cantidades de datos de forma eficiente y confiable
Servicio y cliente SSH
El aseguramiento en la autenticación es fundamental para proteger sistemas y conexiones remotas.
En SSH se utiliza autenticación asimétrica mediante pares de claves (key pairs), en lugar de usuario y contraseña, ya que estas últimas son vulnerables. Un par de claves está compuesto por una llave pública y una llave privada, ambas cifradas y relacionadas entre sí.
-
Llave pública: Funciona como un nombre de usuario, cifrando datos o conexiones entre puntos. Es de acceso público, como un candado visible y manipulable por cualquiera.
-
Llave privada: Funciona como una contraseña, descifrando la llave pública. Es privada y solo personas autorizadas pueden tener una copia, similar a la llave que abre el candado.
En el proceso SSH:
- La comunicación solo se completa si la llave pública y la privada coinciden.
- Esto garantiza que solo el usuario autorizado pueda autenticarse.
Ejemplo: Jorge (servidor SSH) envía una caja con dinero (los datos) a Juan (cliente SSH).
-
Preparación: Juan genera su par de claves y envía el candado (su llave pública) a Jorge. Cualquiera puede usar este candado para cerrar la caja, ya que es de acceso público.
-
Envío cifrado: Jorge cifra la caja con el dinero usando el candado (llave pública de Juan). Una vez cerrada, nadie más puede abrirla.
-
Recepción segura: La caja llega a Juan, quien usa su llave privada (única en su posesión) para abrir el candado y acceder al contenido.
Esto garantiza confidencialidad y autenticación en la conexión SSH, ya que solo Juan puede descifrar los datos, previniendo accesos no autorizados.
Proceso de autenticación en conexiones SSH entre Ubuntu (cliente) y AlmaLinux (servidor):
-
Generación de llaves: Ubuntu genera un par de llaves: una privada (id_rsa) y una pública (id_rsa.pub). La llave pública se copia y envía a AlmaLinux.
-
Inicio de conexión: Cuando un usuario en Ubuntu desea conectarse a AlmaLinux mediante SSH, ocurren los siguientes pasos:
-
Desafío cifrado: AlmaLinux genera un desafío aleatorio y lo cifra con la llave pública de Ubuntu.
-
Recepción y descifrado: Ubuntu recibe el desafío cifrado y lo descifra con su llave privada.
-
Respuesta cifrada: Ubuntu responde cifrando la información con la llave pública de AlmaLinux.
-
Verificación: AlmaLinux descifra la respuesta con su llave privada.
-
-
Establecimiento de conexión: Si la respuesta es correcta, se verifica la identidad de Ubuntu y se establece una conexión SSH autenticada y segura.
Comando tmux
tmux es multiplexor de terminal para gestión avanzada, permite a los usuarios crear, acceder y controlar múltiples terminales desde una sola ventana de terminal.
Funcionalidades principales:
-
Sesiones persistentes: Permite crear sesiones que pueden desconectarse y reconectarse sin perder el progreso.
-
Múltiples ventanas y paneles: Facilita la organización y gestión de múltiples tareas dividiendo la terminal en varias ventanas.
-
Personalización: Altamente configurable con opciones para teclas de acceso rápido, colores, diseño de paneles, y más.
| Comando | Descripción |
|---|---|
tmux new-session -A -s [name] | Crea una sesión de Tmux con un nombre. |
Ctrl + b + “ | Divide la pantalla del terminal en horizontal. |
Ctrl + b + % | Divide la pantalla del terminal en vertical. |
Ctrl + b + Flechas | Navega entre las ventanas abiertas del terminal. |
Ctrl + b + : + synchronize panes on | Sincroniza la escritura en todos los paneles. |
Ctrl + b + : + synchronize panes off | Detiene la sincronización de escritura entre paneles. |
Ctrl + b + ? | Muestra una lista de todos los comandos y atajos de Tmux. |
tmux ls | Muestra la lista de sesiones Tmux existentes. |
tmux at | Adjunta a la última sesión Tmux creada. |
tmux a -t [name] | Adjunta a una sesión Tmux específica por nombre. |
exit | Cierra los paneles Tmux en una sesión. |
tmux kill-session -t [name] | Cierra una sesión Tmux completa por nombre. |