Clase 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
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, luegosudo 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.