LinuxVLAClase 12

Clase 12

Comando tar

  • TAR (Tape Archive) es una herramienta ampliamente utilizada para agrupar múltiples archivos y directorios en un solo archivo contenedor, facilitando su manejo y transporte.
  • Aunque empaqueta eficientemente estos elementos, no comprime los archivos por sí sola, por lo que el tamaño total no se reduce.
  • La sintaxis general es: tar [opciones] nombre_archivo.tar archivos_a_empaquetar.
  • Opciones principales:
    • -c (Create): Crear un archivo.
    • -f (File): Especificar el nombre del archivo.
    • -x (Extract): Extraer contenido.
    • -t (List): Ver contenido sin extraer.
    • *: Copiar todos los archivos que se encuentran en el directorio.
  • Importante: TAR prefiere rutas relativas sobre absolutas para evitar errores.

Ejemplos prácticos:

# Crear archivo empaquetando todo en directorio actual
tar -cf backup.tar *

# Crear con archivos específicos
tar -cf backup.tar file1.bin file2.bin

# Usar expresiones regulares
tar -cf backup.tar file_*

# Extraer contenido
tar -xf backup.tar

# Ver contenido sin extraer
tar -tf backup.tar

# Extraer archivo específico
tar -xf backup.tar ruta/especifica/archivo

Para usar la herramienta tar tar [opc] -cf filename.tar archivos_a_colocar

c - create f - file x - extract

  • significa copiar todo los archivos que se encuentran en el directorio

Para extraer los archivos tar -xf filename.tar

gzip

gzip se utiliza para la comprensión de archivos es decir reducir el tamaño de los archivos

Se le puede indicar niveles para reducir mas el tamaño gzip -9 filename.tar

Streams

Los strems son los canales de comunicación entre el bash y el usuario en el terminal

Hay 3 canales de comunicacion: input, output

stdin /dev/stdin stdout /dev/stdout stderr /dev/stderr

Tiene valores numéricos stdin -> 0 stdout -> 1 stderr -> 2

el sistema los ve como si fueran dispositivos

Pipes (tuberías)

Los pipes o tuberías conectan la salida de un comando con otro.

Ejemplo cat /ect/passwd | grep vla

ps aux | sort -rk 4

Comando cut El comando cut extrae texto por bytes, caracteres o campos.

Texto de ejemplo usado en clase Nombre:Apellido:ID:Teléfono:Departamento: Ariel:Santana:114961420:87592631:RRHH Maria:Jimenez:257902105:60153154:Finanzas Marco:Chacon:572014896:70712365:Finanzas Andrés:Alvarado:456178024:83143452:IT Karla:Chaves:143807213:71789630:Marketing Marco:Guzman:347896310:85149702:IT Melissa:Rodriguez:402345783:83640170:IT Ana:Hertz:107265473:82746517:RRHH

cut -d ":" -f 3 empleados.txt cut -d ":" -f 3 empleados.txt | tail -n2 // para mostrar las ultimas dos líneas

Tambien se puede extraer informacion de varias columnas cut -d ":" -f 1, 3-5 empleados.txt

cut -d ":" -f 3 empleados.txt | head -n2 // para traer las primeras dos líneas

Información de los proceso

La herramienta principal es ps (que significa process) ps -aux para listar todos los procesos del sistema

top

uptime nos permite ver cuanto tiempo lleva el servidor encendido

ps -Al

Detached processes

nohup no hang up (no colgar)

tail -f nohup.out

Señales de procesos

Son instrucciones que se le envían a los procesos

Linux signals

Comando watch

se usa para ejecutar comandos en intervalos de tiempo

watch -n2 ls -lh

Comandos filtradores de texto

Clase 13

Clase 14

Para crear un usuario se puede usar useradd adduser

El mas fácil de usar es adduser.

El comando useradd se ejecuta sin mostrar nada no pide contraseña, este comando crea el usuario en el sistema pero no crea su directorio en /home.

Para que se cree la carpeta en /home se debe usar el comando useradd -m nombre_usuario.

Para cambiar al usuario creado su - jose, sin embargo al usar useradd el usuario no se crea correctamente y se deben hacer mas configuraciones

useradd -e YYYY/MM/DD [username] - para crear un usuario por un tiempo definido

chage -l temporal - para ver cuando expira una cuenta de usuario

passwd nombre_usuario - para cambiar la contraseña de un usuario

adduser - Permite se puede crear un usuario pero automáticamente nos configura toda la información del usuario como contraseña, directorio en /home

usermod - se usa para modificar parámetros de usuarios que ya existen en el sistema

usermod -l juan jose

chsh para cambiar el interprete de un usuario

userdel - para eliminar un usuario

userdel -r nombre_usuario - se usa para eliminar un usuario y toda la información asociada como la carpeta de /home, los grupos

/etc/passwd - almacena la información de los usuario

/etc/passwd/shawod - almacena las contraseñas encriptadas de los usuario

groupadd nombre_grupo - para crear un grupo de usuarios

groupdel - para eliminar un grupo de usuario

AlmaLinux para agregar un usuario se usa el comando usermod -aG [groupname] [username]

gpasswd -d [username] [groupname]

Permisos

Read (r) -> 4 Write (w) -> 2 Execute (x) -> 1

Entidades

Usuario propietario -> User owner Grupo propietario -> Group owner Others -> Other

Clase 15

chmod significa cambiar modo y es usado para cambiar o otorgar permisos

chmod user_owner grp_owner others file_name

Si no se quiere establecer permisos para una entidad se deja como 0.

Quienes son los otros, se refiere a los demás usuarios como por ejemplo vla.

Los script para poder ejecutarse la entidad necesita tener permiso uno es decir execute, para ello se puedo usar el comando chmod +x script.sh.

Cuando un archivo tiene color verde significa que alguna de las entidades tiene permiso de execute.

chmod +w script.sh - le aplica el permiso de escritura solo al usuario propietario

Para ingresar a un directorio un usuario necesita el permiso de execute

Para cambiar un usuario propietario de un archivo o directorio, se usa chown change owner chown vla vla.txt

Para cambiar el grupo propietario se usa chgrp chgrp

Para cambiar el usuario propietario y el grupo propietario de una archivo chown userown:grpowner file_name chown luis:luis vla.txt

Permisos especiales
Permiso Sticky Bit

Se aplico única y exclusivamente a directorios y se utiliza para indicar que los permisos de ese directoriamente solamente puede ser borrados y renombrados por el usuario especificado.

El Sticky Bit tiene como permiso el numero 1 el cual se coloca al inicio de los demás por ejemplo 1776 donde uno es el SB (Sticky Bit).

Para aplicar Sticky Bit los others tiene que tener todo los permiso (read, write, execute). Los others deben tener permisos máximos ya que es un requisito de Sticky Bit .

Se usa para crear un entorno compartido pero los demás usuarios no pueden renombrarlos ni eliminarlos.

Permiso SUID

Special User ID funciona solo en archivos ejecutables y utiliza el numero de permiso 4

Permido SUDO

Clase 16

Permiso sudo

Es el mas usado, sudo proviene de super user do (hacer como super usuario).

Por defecto ningún usuario estándar puedo usar el usuario sudo.

Si yo quiero que un usuario estándar ejecute sudo su, puedo agregarlo al archivo sudoers o agregar al usuario al grupo sudo (D) o al grupo wheel (R). Nota grupo wheel es para AlmaLinux.

Si queremos que el usuario solo tenga ciertos permisos o solo algunos permiso en ese caso se debe agregar al archivo sudoers, si queremos darle todos los permisos en ese caso se puedo agregar al grupo.

El archivo de sudoers esta en /etc/sudoers pero no se recomienda hacerle cambios directamente por lo cual se recomienda el uso de visudo.

Cuando se ejecuta el comando visudo se crea un archivo temporal /etc/sudoers.tmp una vez los cambios son realizados el sistema se encarga de guardarlos en /etc/sudoers.

Lo importante para nosotros en /etc/sudoers.tmp es donde viene la parte de los permisos en cual veremos que especifica que root puede hacer absolutamente todo con root ALL=(ALL:ALL) ALL. Luego veremos un apartado que especifica los permisos de grupo %sudo ALL=(ALL:ALL) ALL.

ALL=(ALL:ALL) ALL
  • El primer ALL significa que el usuario puedo usar sudo desde cualquier host en la red.
  • El primer ALL dentro del paréntesis significa usuario:grupo. Significa que el usuario sudo puedo seleccionar el usuario con el que quiere iniciar, por ejemplo: su - joan.
  • El segundo ALL dentro del paréntesis se refiere a los grupos, por ejemplo su - administracion.
  • El ultimo ALL significa que el usuario puede ejecutar cualquier comandos.

Si yo quiero que un usuario solo pueda ejecutar sudo apt update lo podemos hacer como joan ALL=/usr/bin/apt update. Si los cambios se realizaron de forma correcta no muestra errores si se guardaron con un error nos va a indicar donde esta el error.

También se le puede agregar mas opciones que el usuario pueda ejecutar separándolas con una coma, por ejemplo, joan ALL=/usr/bin/apt update, /usr/bin/apt upgrade -y

Otro configuración podría ser que el usuario va a poder ejecutar todo pero usando !, vamos a especificar que hay ciertas acciones que no podrá realizar como detener el servicio de ssh o ejecutar apt update o apt upgrade didier ALL=ALL !/user/bin/systemctl stop sshd, !/usr/bin/apt

Clase 17

Clase 18

Gestores de sesión

Es un servicio que proporciona la pantalla de inicio de sesión (la pantalla que nos pide poner nuestra contraseña), en Linux hay 3 servicios: GDM, SDDM y LightDM.

Automatización de tareas

Esta asociado a bash scripting en algunos escenarios algunos veces se utilizan en conjunto.

Nosotros podemos definir que un script se ejecute x día de cada mes, o cada lunes…, etc.

Automatizar tareas en Linux es uno de los aspectos mas importantes en el día a día administrando servidores Linux. Nos va a ahorrar estar ejecutando tareas y script de maneja manual además reduce la intervención humana lo cual reduce los fallos.

Crond se ejecuta cada minuto buscando tareas programadas este programa busca tareas a ejecutar las cuales se llaman Cronjobs.

Los Cronjobs son tareas que se encuentran en tablas llamadas Crontabs.

Cada usuario en el sistema tiene su Crontabs. Solo los propios usuarios o root pueden ver las tareas. Por ejemplo Didier puede ver sus tareas programadas pero el usuario Stephanie no puede acceder a ellas.

Se almacenan en /var/spool/cron/crontabs cuando se crea un cronjobs va aparecer el archivo con el nombre del usuario.

Por lo general hay solo dos tipos de tareas

  • Crontabs de usuario que por lo general son tareas que cada usuario programa y que tienen impacto solo a nivel de usuario.
  • Crontabs del sistema que son tareas programadas que tienen un impacto general o global sobre todo el sistema lo cual afecta todos los usuarios. Lo maneja /root

Para nosotros definir una tarea programada debemos seguir un orden establecido Se deben definir 5 campos

  • Primer campo hace referencia al minuto donde la tarea donde debe ser ejecutada (minutes 0-59)
  • Segundo campo hace referencia a la hora donde queremos que esa tarea se ejecute (hour 0-23)
  • Tercer campo hace referencia al día del mes en que se debe ejecutar (day of month 1-31)
  • Cuarto campo hace al mes en que se debe ejecutar (month 1-12)
  • Quinto campo hace referencia al dia de la semana (day of week 0-6) (Sunday is 0)

Ejecutar un script el primer día de cada mes usaríamos 0 0 1 * * bash.

  • La palabra bash le indica que debe ejecutar un script.
  • El * indica cualquier valor.
  • Se pueden usar comas , para separar valores.
  • El guion - se usa para indicar valores consecutivos.

Crontab -e se usa para editar nuestro archivo de Crontab como no hay ningún crontab nos va a pedir elegir el editor para crearlo.

Crontab -l es como hacerle un cat

Por seguridad no todos los usuarios deben estar permitidos a crean crontabs, podemos limitar el acceso con los archivos /etc/cron.allow y /etc/cron.deny.

Estos archivos no existen en Linux se deben de crear, se debe tener cuidado ya que uno es mas prioritario que el otro.

El /etc/cron.allow es prioritario sobre /etc/cron.deny. Si se crea el /etc/cron.allow pero no se agrega ningún usuario todos se deniegan. Deben ser creado por un super usuario.

El crontab de sistema se crea bajo el usuario root. Los crontab del sistema se encuentra en /etc/crontab.

Enlaces simbólicos

Un enlace es la forma en como nosotros accedemos a los archivos que están en el disco.

Hay dos tipos de enlaces Soft links (enlaces simbólicos) - Para crear un enlace simbólico se usa ln -s [ruta-original] [ruta-del-espejo] Hard links (enlaces de referencia) - Es una copia exacta del archivo y su ubicación en el disco. Para crear un enlace de referencias

Clase 19

Configurar la hora en Linux

Hay un archivo que esta en la ruta /etc/locale.conf ls -lh /etc/localtime

timedatectl

timedatectl set-timezone Europe/Madrid

NTP se usa para sincronizar la fecha y hora de los dispositivos informáticos

Lab

systemctl disable ufw –now apt install ntp instalar ntp

iburst acelera las conexiones ntp

En AlmaLinux se deshabilita el firewall systemctl disable firewalld –now

Instalamos chrony como esta instalado vamos al archivo de configuracion nano /etc/chrony.conf

Configuramos el pool usando la IP de nuestra maquina Ubuntu

Luego reiniciamos el servicio de chronyd systemctl enable –now chronyd systemctl restart –now chronyd

Para verificar los servidores NTP chronyc sources

Logs del sistema

Son registros de actividades que generan los diferentes procesos que se ejecutan.

Los errores en Linux son gestionados por syslog, syslog-ng y r-syslog. Se guardan en /var/log.

En las versiones recientes son administrados por systemd.

Un registro de sistema es cualquier evento disparo por un servicio nativo del sistema.

Un registro de aplicación son generados por aplicaciones que nosotros decidimos instalar en el sistema.

Systemd-journald se encarga de recibir información de los registros y los guarda de manera centralizada.

journalctl -f - para ver log en tiempo real

journalctl --list-boots - muestras los logs guardados por sesión

journalctl -b -6 - para ver los logs de una sesión especifica

Estos archivos necesitan espacio y no es necesario tener archivos tan viejos

journalctl --disk-usage - nos va a mostrar el total que están tomando los archivos

journalctl --vacuum-time=1week para eliminar los logs de hace mas de un mes, dia, una semana

Pregunta a IA journalctl –vacuum-time=1week porque no borra los archivos en mi caso borro los de diciembre pero el del 10 de enero no lo borra aunque ponga que elimine los logs de hace un dia

El comando journalctl --vacuum-time=1week elimina archivos de journal archivados (en /var/log/journal/) que sean más antiguos que 1 semana, pero no toca los journals activos (en /run/log/journal/ o los actuales), que contienen logs recientes como el del 10 de enero. Por eso borra los de diciembre (archivados y viejos), pero retiene el del 10 de enero si está en un journal activo o no ha sido rotado/archivado aún. Si usas --vacuum-time=1d, solo elimina archivados de más de 1 día, conservando cualquier cosa más nueva, incluidos journals activos.​

Comandos para verificar

Ejecuta estos para diagnosticar:

  • journalctl --disk-usage: Muestra espacio usado por journals activos y archivados.​

  • ls -la /var/log/journal/ $(hostname -I | awk '{print $1}' | cut -d. -f1)/ | head: Lista archivos archivados por fecha (reemplaza con tu machine-id).​

  • journalctl --since "2026-01-10" --until "2026-01-11": Confirma si el log del 10 de enero sigue ahí.​

Soluciones efectivas

  • Para forzar rotación y vaciado: sudo journalctl --rotate && sudo journalctl --vacuum-time=1d --vacuum-size=50M (rota activos a archivados y luego vacía).​

  • Configura límites automáticos en /etc/systemd/journald.conf: SystemMaxUse=100M, RuntimeMaxUse=50M, MaxRetentionSec=1week, luego sudo systemctl restart systemd-journald.​

  • Para vaciar todo agresivamente: sudo journalctl --vacuum-time=1s (pero usa con cuidado, solo elimina archivados).​

journalctl -S "19:25:00" -U "20:05:00" - para filtar logs en base al tiempo

Comando find

Para buscar información find . -name VLA.txt find . -iname VLA.txt find / -iname localtime find / -size 1GB Para buscar archivos por peso find /var/log/ -type f -exec du -h {} + | sort -hr | head -n10 - Para buscar y ordenar en base al orden del tamaño de archivos

Clase 20

Networking y aseguramiento del sistema

NIC = Network INterface Card

Dirección IP Una dirección IP que identifica un dispositivo, la intención es que no haya duplicidad y que sea una dirección única asignada a cada dispositivo.

TCP esta orientada a la conexión ya que confirma que los datos sean recibidos por el destinatario.

UDP no orientado a conexion.

Comandos para ver la interfaz para ver la IP en Linux ipa dd nos muestra dos interfaces la loopback y la dirección de red principal (pueden aparecer mas dependiendo de las interfaces que se tengan).

La loopback se usa solo a nivel lógico e interno de la computadora.

enp0s3 es la tarjeta de red asignada y es la que contiene la dirección IP.

hostname -I para ver la dirección IP principal

ifconfig es una herramienta que se debe instalar, igual nos muestra la interfaz principal y la de loopback.

ip link show - nos permite confirmar si la interfaz y la dirección IP están arriba.

nmcli device show (Network Manager Command Line Interface) - Nos permite ver la IP del gateway y los DNS configurados.

nmcli general - Nos muestra el estado general del sistema

Interfaces de red

/etc/netplan - nos permite configurar la red y realizar configuración de la interfaz de red

/etc/sysconfig/network-scripts - funciona para AlmaLinx.

En Linux en /etc/hosts que funciona como una especie de DNS interno. Es útil para mapear IPs a un nombre para luego usar solo el nombre para testear conexión.

/etc/resolv.conf - Es el archivo en el que se configuran los servidores tanto en Ubuntu como en AlmaLinux.

Diferencia entre ping y traceroute

traceroute te puede trazar una ruta por los cuales el paquete pasa para llegar a su destino por ejemplo para llegar a google.

Clase 21

DNS

host -t AAAA google.com - para la ver la dirección IPv6 de una pagina

host -t MX google.com host -t NS google.com

host es una alternativa a nslookup

dig youtube.com - nos muestra mucha información pero la importante esta en la parte de answer section y nos permite ver cuanto tiempo tomo llegar a esa pagina es decir cuanta latencia se tuvo.

dig -t MX teletica.com nos permite ver solo la información de correo para alguna pagina

dig +short -t MX teletica.com - nos permite ver solo lo que estamos buscando.

Descubrimiento de puertos abiertos

Hardening

Son la herramientas mas usadas para revisar puertos abiertos lsof, fuser, netstat, nmap.

lsof -i :80 - Para que muestre si el puerto 80 esta abierto.

watch -n0 lsof -i :80 - para ver en tiempo real la ejecución.

netstat -t - es mas flexible y nos puede mostrar conexiones por puerto por ejemplo TCP con el parámetro -t.

netstat -tn - para que nos muestre el numero de puerto.

netstat -u - para ver la conexiones UDP activas. Igual se pues usar menos n para que nos muestre los datos.

netstat -tln - Para que muestre los puertos que están en modo de escucha.

netstat -tuln - Para ver puertos TCP y UDP en modo escucha.

nmap nos permite ver que puertos están abiertos por ejemplo se puedo hacer con una pagina nmap somosvla.com o usando la dirección IP de nuestra maquina virtual.

Built with LogoFlowershow