📝 apuntes_linux_TAI
← Volver

📚 SISTEMAS LINUX — LPIC-2, GESTIÓN DE PAQUETES Y COMANDOS

Clase magistral para el examen TAI

🎓 Cómo usar este documento: Lee la explicación de cada bloque temático y responde las preguntas antes de pasar al siguiente. Las soluciones comentadas están al final.


BLOQUE 1 — KERNEL DE LINUX

¿Qué es el Kernel y dónde se encuentra?

El Kernel es el núcleo del sistema operativo Linux. Gestiona el hardware, los procesos y la memoria.

Elemento Ruta / Valor
Código fuente /usr/src/linux-version (enlace simbólico en /usr/src/linux)
Binarios compilados /boot/
Módulos /lib/modules/versionKernel/
Documentación /usr/src/linux/Documentation/ (índice en 00-INDEX)
Ver versión activa uname -a (solo versión: uname -r)

Tipos de archivos binarios del Kernel

Archivo Descripción
vmlinux Versión descomprimida. Paso intermedio. No arrancable.
vmlinuz vmlinux comprimida. Arrancable.
zImage ⚠️ Obsoleto. Tamaño limitado a 512 KB.
bzImage Sustituye a zImage. Sin límite de tamaño. Kernels compilados localmente.

⚠️ Dato clave: Para actualizar el Kernel sin reiniciar (servidores 24/7) se usa ksplice, que congela los procesos, cambia el Kernel y retoma la ejecución de forma transparente.


Objetivos make para configurar el Kernel

make
├── mrproper        → Elimina archivos de configuración y temporales antiguos
├── oldconfig       → Actualiza configuración antigua con nuevos elementos
├── defconfig       → Crea configuración nueva con valores por defecto
├── allmodconfig    → Configuración con toda la modulación posible
├── menuconfig      → Interfaz de menú basada en texto (la más usada)
├── xconfig         → GUI basada en Qt
└── gconfig         → GUI basada en GTK

Compilar e instalar el Kernel

make menuconfig           # Configurar
make                      # Compilar Kernel y módulos
sudo make install         # Copia Kernel, System.map y actualiza bootloader
sudo make modules_install # Instala módulos (llama también a depmod)

💡 Disco RAM inicial (initrd/initramfs): necesario si se usa RAID, LVM o NAS. Se crea con:
- mkinitrd → RedHat/Fedora: mkinitrd /boot/initrd-2.6.35.4.img 2.6.35.4
- mkinitramfs → Debian/Ubuntu: mkinitramfs -o /boot/initramfs-2.6.35.4.img 2.6.35.4


Módulos del Kernel

Comando Función
lsmod Lista los módulos cargados actualmente
modinfo módulo Muestra información detallada de un módulo
insmod /ruta/módulo.ko Carga un módulo (sin gestionar dependencias)
modprobe módulo Carga el módulo y sus dependencias
rmmod módulo Elimina un módulo
modprobe -r módulo Elimina el módulo y sus dependencias
depmod Reconstruye el archivo de dependencias modules.dep

💡 Mnemotecnia: insmod = individual, modprobe = más potente (gestiona dependencias)

Archivo de configuración Descripción
/lib/modules/versionKernel/modules.dep Dependencias entre módulos
/etc/modprobe.conf o /etc/modprobe.conf.d/ Configuración y opciones de módulos

🧪 TEST — BLOQUE 1: Kernel de Linux

1. ¿Qué comando permite ver la versión del Kernel que se está ejecutando actualmente?


2. ¿Cuál es la diferencia principal entre insmod y modprobe?


3. ¿En qué archivo se almacenan las dependencias entre módulos del Kernel?


4. ¿Qué objetivo de make configura el Kernel mediante un sistema de menú basado en texto?


5. ¿Qué herramienta permite actualizar el Kernel sin reiniciar el sistema?


BLOQUE 2 — INICIO DEL SISTEMA Y ARRANQUE

Runlevels en SysV Init

Runlevel Significado
0 Apagado
1 Monousuario
2 Multiusuario (Debian y derivados)
3 Multiusuario (RedHat/Fedora)
4 Sin uso oficial
5 Multiusuario con entorno gráfico
6 Reinicio

💡 Mnemotecnia: 0=Off, 1=One user, 6=Reboot

Archivos de inicio SysV
├── /etc/inittab              → Configuración global de runlevels
├── /etc/init.d/              → Scripts de servicios
├── /etc/rcX.d/               → Enlaces simbólicos por runlevel
│     ├── S##Nombre           → Start (se ejecutan al entrar en ese runlevel)
│     └── K##Nombre           → Kill (se ejecutan al salir)
└── Nota: Los nº de S y K deben sumar 99 (K37 → S62)

Gestión de servicios — Herramientas

Herramienta Uso Ejemplo
chkconfig RedHat/Fedora chkconfig --level 35 servicio on
update-rc.d Debian update-rc.d servicio defaults
service nombre acción Universal service apache2 restart
telinit Q Recargar /etc/inittab
runlevel Ver runlevel actual

Grub2 — Recuperación y uso

Acción Tecla / Comando
Entrar en modo recuperación Pulsar Shift durante el arranque
Entrar en la shell de Grub Pulsar C
Editar entrada de SO (temporal) Pulsar E en el menú
Shell normal sh:grub>
Shell de rescate grub rescue>
Reinstalar Grub2 sudo grub-install /dev/dispositivo
Regenerar grub.cfg sudo update-grub2 o grub-mkconfig

⚠️ Dato clave: Grub1 NO soporta RAID ni LVM para /boot. Grub2 .


🧪 TEST — BLOQUE 2: Inicio del sistema

6. En SysV Init, ¿qué runlevel corresponde al reinicio del sistema?


7. ¿En qué directorio guarda Upstart sus archivos de configuración de servicios?


8. Los scripts del directorio /etc/rcX.d/ cuyo nombre empieza por S se ejecutan con el argumento:


9. ¿Qué comando de chkconfig habilita un servicio para los runlevels 3 y 5 en sistemas RedHat?


BLOQUE 3 — SISTEMAS DE ARCHIVOS Y DISCO

Tipos de sistemas de archivos en Linux

Sistema Características clave
ext2 El original de Linux
ext3 ext2 + journaling
ext4 ext3 + discos hasta 32 TB, archivos > 2 TB
ReiserFS Eficiente con muchos archivos pequeños
Btrfs Candidato futuro — incluye instantáneas
XFS Alto rendimiento
FAT/vfat Compatibilidad con Windows
NTFS Linux lee y sobreescribe

/etc/fstab — Los 6 campos

UUID=xxx    /mnt/datos    ext4    defaults    0    0
    ①           ②           ③         ④       ⑤    ⑥
Campo Significado
Dispositivo (nombre, UUID o LABEL)
Punto de montaje
Tipo de sistema de archivos
Opciones de montado
Copia con dump (0=no, 1=sí)
Orden de revisión con fsck (0=no, 1=raíz, 2=resto)

⚠️ Dato clave: blkid /dev/dispositivo devuelve el UUID de una partición.


Opciones importantes de mount (-o)

Opción Descripción
loop Montar imagen .iso o .img como partición
ro / rw Solo lectura / lectura-escritura
user / nouser Permite/prohíbe montaje a usuarios normales
auto / noauto Monta/no monta en el arranque
defaults Combina: rw, suid, dev, exec, auto, nouser, async
credentials=archivo Usuario/contraseña para recursos Samba

Herramientas de gestión de sistemas de archivos

| Herramienta | Sistema de archivos | Función |
|-------------|--------------------|---------||
| mkfs -t ext4 / mke2fs | ext2/3/4 | Crear sistema de archivos |
| fsck | Todos | Comprobar/reparar (con sistema desmontado) |
| dumpe2fs | ext2/3/4 | Ver información detallada |
| tune2fs | ext2/3/4 | Ajustar parámetros (montajes para fsck, etiqueta...) |
| xfs_info / xfs_admin | XFS | Información y ajuste |
| mkswap | SWAP | Crear espacio de intercambio |
| swapon / swapoff | SWAP | Activar / desactivar swap |


RAID en Linux — Tipos y características

Nivel Discos mínimos Tolerancia a fallos Espacio útil Velocidad
RAID 0 2 ❌ Ninguna 100% ↑↑ Lectura/escritura
RAID 1 2 ✅ 1 disco 50% ↑ Lectura
RAID 4 3 ✅ 1 disco (n-1) × disco Media
RAID 5 3 ✅ 1 disco (n-1) × disco ↑ Lectura
RAID 6 4 ✅ 2 discos (n-2) × disco Media
RAID 10 4 ✅ Variable 50% ↑↑

💡 Fórmula RAID 4 y 5: (nº discos - 1) × tamaño de disco = espacio útil

# Crear un RAID 5 con mdadm:
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda6 /dev/sdc1 /dev/sdd1
cat /proc/mdstat    # Ver estado del RAID

LVM — Volúmenes Lógicos

LVM (orden de creación)
├── 1. pvcreate /dev/sda6          → Crear volumen físico
├── 2. vgcreate nombre /dev/sda6   → Crear grupo de volumen
├── 3. lvcreate -L 10G -n mi_vol nombre  → Crear volumen lógico
├── 4. mkfs.ext4 /dev/mapper/nombre-mi_vol  → Formatear
└── 5. mount /dev/mapper/nombre-mi_vol /mnt/punto  → Montar
Herramientas Prefijo
Volúmenes físicos pv* (pvcreate, pvdisplay, pvmove...)
Grupos de volumen vg* (vgcreate, vgdisplay, vgextend...)
Volúmenes lógicos lv* (lvcreate, lvdisplay, lvextend, lvscan...)

⚠️ Dato clave: Los dispositivos LVM se crean en /dev/mapper/grupo-volumen. También existe el enlace /dev/grupo/volumen.


🧪 TEST — BLOQUE 3: Sistemas de archivos y disco

10. ¿Cuál es el orden correcto de creación en LVM para tener una partición montada?


11. En /etc/fstab, ¿qué significa el valor 2 en el último campo de una línea?


12. ¿Cuál es el espacio útil de un RAID 5 formado por 4 discos de 3 TB cada uno?


13. ¿Qué opción de mount se usa para montar una imagen ISO?


14. ¿Qué herramienta permite ajustar el número de montajes tras el cual se ejecuta fsck en un sistema ext4?


BLOQUE 4 — REDES Y SERVICIOS

Configuración de red

Distribución Archivo de configuración de red
Debian/Ubuntu /etc/network/interfaces
RedHat/Fedora /etc/sysconfig/network-scripts/ifcfg-adaptador
DNS /etc/resolv.conf (hasta 3 entradas nameserver IP)
Nombre de host /etc/hostname (Debian) / /etc/sysconfig/network (Fedora)
Resolución local /etc/hosts (formato: IP nombre)

Comandos de red esenciales

Comando Función
ifconfig adaptador IP netmask MÁSCARA Asignar IP
ifup / ifdown adaptador Activar / desactivar interfaz
route add default gw PUERTA_ENLACE Añadir puerta de enlace
ip route Ver/modificar tabla de enrutamiento
ip addr Ver/asignar direcciones IP
ip link Estado de interfaces de red
ip neigh Caché ARP
arp -a Ver caché ARP
ping -c nº IP Verificar conectividad
traceroute Trazar ruta hasta destino
netstat -tup Conexiones activas con PID
netstat -tupl Puertos en escucha
hostname -f Ver FQDN del equipo

⚠️ Dato clave: Para habilitar el reenvío IPv4 de forma permanente: añadir net.ipv4.ip_forward=1 en /etc/sysctl.conf. Temporal: echo "1" > /proc/sys/net/ipv4/ip_forward


DNS — BIND

/etc/named.conf (BIND9)
├── options { directory; forwarders; listen-on; allow-transfer; }
├── logging { channel; }
└── zone "." { type hint; file "named.ca"; }
Tipo de registro DNS Significado
A Nombre → IPv4
AAAA Nombre → IPv6
CNAME Alias (nombre canónico)
MX Servidor de correo
NS Servidor de nombres
PTR IP → Nombre (resolución inversa)
SOA Inicio de autoridad
TXT Texto explicativo
Herramienta Uso
host dominio Consulta DNS básica
dig @IP_DNS dominio Consulta DNS avanzada a servidor específico
rndc reload Recargar configuración BIND
rndc flush Vaciar caché del servidor DNS
named-checkzone Verificar archivo de zona

Apache — Configuración

Elemento Valor
Archivo de configuración /etc/apache2/apache2.conf o httpd.conf
Raíz de documentos Directiva DocumentRoot
Páginas de usuario Directiva UserDir public_htmlhttp://servidor/~usuario/
Autenticación básica htpasswd -c /ruta/archivo usuario
Comprobar configuración apache2ctl configtest
Control del servicio apache2ctl start/stop/restart/graceful
Logs /var/log/apache2/error.log y access.log

💡 Módulos: Se cargan con LoadModule. En Apache 2.x no hace falta AddModule. Se recomienda comentar los LoadModule que no se usen.


Samba — Compartir recursos con Windows

/etc/samba/smb.conf
├── [global]              → Parámetros globales
│     ├── workgroup       → Nombre del grupo/dominio
│     ├── security        → Share / User / Domain / ADS
│     ├── encrypt passwords → Yes/No
│     └── interfaces      → Interfaz de escucha
├── [homes]               → Directorio home del usuario (especial)
├── [printers]            → Impresoras (especial)
└── [MiRecurso]           → Recursos compartidos personalizados
      ├── path            → Ruta a compartir
      ├── writeable       → Yes/No
      ├── browseable      → Yes/No
      └── valid users     → Lista de usuarios autorizados
Herramienta Samba Función
testparm Verificar sintaxis de smb.conf
smbstatus Estado del servidor y conexiones activas
smbpasswd -a usuario Añadir usuario a la BD de Samba
smbclient -L host Listar recursos compartidos de un host
nmblookup Consultar nombres y funciones NetBIOS

💡 Montar recurso Samba desde Linux: mount -t cifs //servidor/recurso /mnt/punto -o user=nombre,password=pass


NFS — Compartir archivos en red Linux

/etc/exports
/directorio  cliente(opciones)

Opciones clave:
├── rw / ro         → Lectura-escritura / Solo lectura
├── root_squash     → Root del cliente = usuario anónimo (por defecto)
├── no_root_squash  → Root remoto = root local (⚠️ peligroso)
├── sync / async    → Sincrónico / Asincrónico
└── secure          → Puerto < 1024 obligatorio
Herramienta NFS Función
exportfs -a Exportar todo lo de /etc/exports
exportfs -r Re-exportar (actualizar cambios)
showmount -e servidor Ver qué exporta un servidor NFS
nfsstat Estadísticas del servidor/cliente NFS
rpcinfo -p host Ver servicios RPC disponibles en un host

🧪 TEST — BLOQUE 4: Redes y servicios

15. ¿En qué archivo de Debian/Ubuntu se configura una dirección IP estática?


16. ¿Qué tipo de registro DNS se usa para la resolución inversa (IP → nombre)?


17. ¿Qué herramienta de Samba verifica la sintaxis del archivo smb.conf?


18. En NFS, ¿qué opción hace que el acceso de root desde el cliente se trate como el usuario anónimo del servidor?


19. Para hacer permanente el reenvío de paquetes IPv4 (convertir el PC en router), ¿qué hay que modificar?


BLOQUE 5 — SEGURIDAD DEL SISTEMA

IPtables — Cortafuegos

Tablas de IPtables
├── filter (por defecto)
│     ├── INPUT    → Paquetes destinados a procesos locales
│     ├── FORWARD  → Paquetes que el sistema reenvía
│     └── OUTPUT   → Paquetes originados localmente
├── nat             → NAT y reenvío de puertos
└── mangle          → Modificación especializada de paquetes
Comando IPtables Función
iptables -t filter -L Ver todas las reglas de la tabla filter
iptables -F Eliminar todas las reglas
iptables -P INPUT DROP Política por defecto: denegar entrada
iptables -A INPUT -s IP -p tcp --dport 22 -j ACCEPT Aceptar SSH desde IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Habilitar NAT
iptables-save > archivo Guardar reglas actuales
iptables-restore < archivo Restaurar reglas guardadas

💡 Mnemotecnia objetivos: ACCEPT (acepta), DROP (descarta silenciosamente), REJECT (descarta con mensaje)


SSH — Configuración segura

Directiva en sshd_config Función
PermitRootLogin No Deshabilitar acceso root por SSH
PasswordAuthentication No Solo autenticación por clave pública
PubKeyAuthentication Yes Habilitar autenticación por clave pública
AllowUsers usuario1 usuario2 Restringir acceso a usuarios concretos
X11Forwarding Yes Permitir tunelado de aplicaciones gráficas
Port 22 Puerto de escucha (cambiar por seguridad)
# Generar par de claves SSH:
ssh-keygen -q -t rsa -f ~/.ssh/id_rsa

# Copiar clave pública al servidor (acceso sin contraseña):
ssh-copy-id usuario@servidor
# O manualmente: copia ~/.ssh/id_rsa.pub a ~/.ssh/authorized_keys del servidor

# Copiar ficheros de forma segura:
scp archivo usuario@host:ruta_destino

# Túnel SSH (encriptar otro protocolo):
ssh -N -f -L puerto_local:servidor:puerto_remoto usuario@servidor

⚠️ Dato clave: Las claves privadas deben tener permisos 0600 y las públicas *.pub 0644, ambas con propietario root.


TCPWrappers

Archivo Función
/etc/hosts.allow Hosts a los que se permite el acceso
/etc/hosts.deny Hosts a los que se deniega el acceso

⚠️ hosts.allow tiene preferencia sobre hosts.deny. Lo más seguro: ALL:ALL en deny y luego abrir explícitamente en allow.

Formato: servicio : cliente-lista

# Ejemplo:
portmap : 192.168.1.0/255.255.255.0    → en hosts.allow
portmap : ALL                           → en hosts.deny

Fail2Ban

Aplicación para prevención de intrusos basada en el análisis de logs. Bloquea IPs que realizan intentos de acceso por fuerza bruta actualizando reglas de iptables.

Elemento Ruta
Configuración /etc/fail2ban/fail2ban.conf y jail.conf
Filtros (reglas de detección) /etc/fail2ban/filter.d/
Acciones (qué hacer al detectar) /etc/fail2ban/action.d/

💡 La tupla (filtro + acción) se llama "Jail" (prisión). Tiene filtros predefinidos para: Apache, sshd, vsftpd, Postfix, Courier y otros.


🧪 TEST — BLOQUE 5: Seguridad

20. ¿Qué tabla de IPtables se usa para configurar NAT?


21. ¿Qué directiva de sshd_config deshabilita el acceso de root por SSH?


22. En TCPWrappers, si un host aparece en ambos archivos (hosts.allow y hosts.deny), ¿qué ocurre?


23. ¿Qué herramienta combina análisis de logs con bloqueo automático de IPs mediante iptables?


BLOQUE 6 — GESTIÓN DE PAQUETES

Formatos de paquetes en Linux

Formato Distribuciones Extensión
DEB Debian, Ubuntu y derivadas .deb
RPM RedHat, Fedora, SUSE, Mandriva .rpm
TGZ Slackware .tgz

dpkg — Gestión de paquetes DEB

Comando Función
dpkg -l Listar todos los paquetes instalados
dpkg -l \| grep nombre Comprobar si un paquete está instalado
dpkg -L paquete Listar ficheros instalados por un paquete
dpkg -S /ruta/fichero Saber qué paquete instaló un fichero
dpkg -i paquete.deb Instalar paquete DEB
dpkg -r paquete Desinstalar (mantiene configuración)
dpkg --contents paquete.deb Ver contenido sin instalar
dpkg --info paquete.deb Ver información del paquete

⚠️ Importante: dpkg no gestiona dependencias automáticamente. Para dependencias rotas: apt-get install -f; dpkg --configure -a


apt-get / apt — Gestión avanzada con repositorios

Acción apt-get apt
Actualizar lista de paquetes apt-get update apt update
Instalar paquete apt-get install paquete apt install paquete
Actualizar paquetes instalados apt-get upgrade apt upgrade
Actualización completa (con dependencias) apt-get dist-upgrade apt dist-upgrade
Desinstalar (mantiene configuración) apt-get remove paquete apt remove paquete
Desinstalar completamente apt-get purge paquete apt purge paquete
Eliminar dependencias innecesarias apt-get autoremove apt autoremove
Buscar paquete apt-cache search patrón apt search patrón
Info de un paquete apt-cache show paquete apt show paquete

💡 Repositorios: se configuran en /etc/apt/sources.list y en ficheros de /etc/apt/sources.list.d/. Se actualiza la lista con apt-get update.

⚠️ Diferencia clave: apt-get upgrade no instala nuevas dependencias (puede no actualizar algunos paquetes). apt-get dist-upgrade sí instala nuevas dependencias y puede desinstalar paquetes conflictivos.


rpm y yum — Gestión de paquetes RPM

Comando rpm Función
rpm -ivh paquete.rpm Instalar mostrando progreso
rpm -Uvh paquete.rpm Actualizar sin cambiar configuración
rpm -e paquete Eliminar paquete
rpm -qa Listar todos los paquetes instalados
rpm -qi paquete Información de un paquete instalado
rpm -ql paquete Listar ficheros de un paquete instalado
rpm -qf /ruta/fichero Saber qué paquete instaló un fichero
Comando yum Función
yum install paquete Instalar desde repositorio
yum update paquete Actualizar paquete
yum remove paquete Eliminar paquete
yum list Listar todos los paquetes instalados
yum search patrón Buscar paquete
yum clean all Limpiar caché

Conversión entre formatos y compilación desde fuente

# Convertir RPM a DEB con alien:
apt-get install alien
alien paquete.rpm          # Genera paquete.deb
dpkg -i paquete.deb        # Instalar

# Compilar desde código fuente:
tar xvf programa.tgz       # Descomprimir
cd directorio_fuente/
./configure                # Escanea el sistema y genera Makefile
make                       # Compila
sudo make install          # Instala en /usr/local/bin
sudo make uninstall        # Desinstalar

💡 tasksel permite instalar colecciones de paquetes (LAMP, servidor de correo, etc.) de forma interactiva.


🧪 TEST — BLOQUE 6: Gestión de paquetes

24. ¿Qué comando dpkg muestra la lista de ficheros instalados en el sistema por el paquete nano?


25. ¿Qué hace apt-get dist-upgrade que no hace apt-get upgrade?


26. ¿Cuál es el orden correcto para compilar e instalar un programa desde código fuente?


27. ¿Qué herramienta convierte paquetes RPM a formato DEB?


BLOQUE 7 — COMANDOS LINUX ESENCIALES

Archivos y directorios

Comando Función
ls -la Listar con detalles y ocultos
find / -name fichero Buscar por nombre desde la raíz
find / -user usuario Buscar ficheros de un usuario
find /dir -type f -mtime -10 Ficheros modificados en los últimos 10 días
locate \*.ps Buscar en base de datos de ficheros
which comando Ruta completa del binario de un comando
whereis comando Binario, páginas de manual y código fuente

Permisos y atributos

Comando Función
chmod 755 fichero rwxr-xr-x (propietario todo, grupo/otros r-x)
chmod 700 fichero rwx------ (solo propietario)
chmod u+s fichero Activa bit SUID
chmod g+s directorio Activa bit SGID en directorio
chmod o+t directorio Activa Sticky Bit (solo el propietario borra)
chown usuario:grupo fichero Cambiar propietario y grupo
chattr +i fichero Fichero inmutable (ni root puede borrarlo)
chattr +a fichero Solo se puede añadir contenido (append)
lsattr fichero Ver atributos especiales

Monitorización y procesos

Comando Función
top Procesos en tiempo real ordenados por CPU
ps -eafw Todos los procesos del sistema
ps -e -o pid,args --forest Vista jerárquica de procesos
kill -9 PID Forzar cierre de proceso
lsof Ficheros abiertos por todos los procesos
lsof -p PID Ficheros abiertos por un proceso
lsof -i Ficheros de red en uso
fuser fichero Procesos que usan un fichero
strace programa Monitorizar llamadas al sistema
ltrace programa Monitorizar llamadas a bibliotecas

Red y diagnóstico

Comando Función
netstat -tup Conexiones activas con PID
netstat -tupl Puertos en escucha
tcpdump tcp port 80 Capturar tráfico HTTP
nc -vz IP puerto Comprobar si un puerto está abierto
nc -l puerto Escuchar en un puerto (servidor de prueba)
nmap -sT host Escanear puertos TCP abiertos
iwlist adaptador scan Listar redes WiFi disponibles
iwconfig adaptador essid Red key s:clave Conectar a red WiFi

Backup y compresión

Comando Función
tar -cvf archivo.tar dir/ Crear tarball sin comprimir
tar -cvfz archivo.tar.gz dir/ Crear tarball comprimido con gzip
tar -cvfj archivo.tar.bz2 dir/ Crear tarball comprimido con bzip2
tar -xvf archivo.tar Extraer tarball
tar -xvfz archivo.tar.gz Extraer tarball gzip
dd if=/dev/sda of=disco.img Imagen completa del disco
dd if=/dev/sda of=mbr.img count=1 bs=512 Copia del MBR
rsync -av /origen/ /destino/ Sincronización local
rsync -avz -e ssh /origen/ usuario@host:/destino/ Sincronización remota via SSH

Información del sistema

Comando Función
uname -a Toda la info del kernel/sistema
uname -m / arch Arquitectura del procesador
lspci -tv Dispositivos PCI
lsusb -tv Dispositivos USB
lsdev IRQ, DMA y puertos I/O
dmesg Buffer circular del Kernel
df -h Espacio en disco de particiones montadas
du -sh directorio/ Espacio usado por un directorio
free -m Estado de la RAM en MB
ldd /ruta/programa Bibliotecas compartidas que necesita un programa

🧪 TEST — BLOQUE 7: Comandos Linux

28. ¿Qué hace el comando tail -f /var/log/messages?


29. ¿Qué hace chmod 700 fichero?


30. ¿Qué comando busca todos los ficheros del sistema que pertenecen al usuario user1?


31. ¿Qué hace dd if=/dev/sda of=mbr.img count=1 bs=512?


32. ¿Qué comando muestra qué bibliotecas compartidas necesita un programa para ejecutarse?



✅ SOLUCIONES COMENTADAS


1 → c) uname -a muestra toda la información del sistema incluyendo la versión del Kernel en ejecución. Con -r solo muestra la versión. lsmod lista módulos cargados y dmesg muestra el buffer del Kernel.

2 → b) modprobe es más inteligente: carga el módulo y todos los de los que depende. insmod solo carga el módulo indicado (requiere la ruta completa) sin resolver dependencias. En la práctica se usa modprobe.

3 → b) Las dependencias entre módulos se almacenan en /lib/modules/versionKernel/modules.dep. El comando depmod reconstruye este archivo cuando se instalan nuevos módulos.

4 → d) make menuconfig lanza un sistema de menú basado en texto (ncurses) para configurar el Kernel. xconfig usa Qt y gconfig usa GTK para interfaces gráficas. defconfig crea configuración por defecto sin interfaz interactiva.

5 → c) ksplice congela los procesos gestionados por el Kernel, instala el nuevo Kernel y retoma la operación de forma transparente, sin necesidad de reiniciar. Es esencial para servidores de alta disponibilidad.

6 → d) Runlevel 6 = reinicio. Runlevel 0 = apagado. Runlevel 1 = monousuario. Runlevel 5 = multiusuario con entorno gráfico.

7 → c) Upstart usa /etc/init para sus archivos de configuración (.conf). En versiones antiguas de Upstart se usaba /etc/event.d. No usa /etc/inittab como SysV.

8 → a) A los scripts cuyo nombre empieza por S se les pasa el argumento start al entrar en ese runlevel. A los que empiezan por K se les pasa stop.

9 → b) chkconfig --level 35 servicio on habilita el servicio para los runlevels 3 y 5. En Debian se usaría update-rc.d servicio defaults. Para systemd sería systemctl enable servicio.

10 → b) El orden correcto en LVM es: pvcreate (volumen físico) → vgcreate (grupo de volumen) → lvcreate (volumen lógico) → mkfs (formatear) → mount (montar). Sin este orden no se puede usar LVM.

11 → b) El último campo de /etc/fstab indica el orden en que fsck revisa la integridad: 0 = no revisar, 1 = la partición raíz / (siempre primero), 2 = el resto de particiones (se revisan después de la raíz).

12 → c) RAID 5 con 4 discos de 3 TB: (4-1) × 3 TB = 9 TB de espacio útil. Un equivalente de disco en espacio se dedica a la paridad distribuida. Si fueran 3 discos de 3 TB sería 6 TB.

13 → b) La opción -o loop de mount permite montar un archivo de imagen (.iso, .img) como si fuera una partición física. Ejemplo: mount -o loop imagen.iso /mnt/cdfalso.

14 → c) tune2fs ajusta parámetros de sistemas de archivos ext2/3/4. Con -c nº se establece el número de montajes para que salte fsck, con -m % el espacio reservado, con -L etiqueta la etiqueta del sistema de archivos.

15 → b) En Debian/Ubuntu la configuración de red está en /etc/network/interfaces. En RedHat/Fedora está en /etc/sysconfig/network-scripts/ifcfg-adaptador. Son dos sistemas completamente diferentes.

16 → d) El registro PTR (Pointer) se usa en zonas de resolución inversa para mapear IP → nombre. Las zonas inversas IPv4 usan el dominio in-addr.arpa. El registro A hace lo contrario: nombre → IPv4.

17 → c) testparm escanea el archivo smb.conf y señala errores. Con testparm -v se muestran todos los valores incluyendo los no modificados explícitamente. smbstatus muestra el estado del servidor en tiempo real.

18 → b) root_squash (comportamiento por defecto en NFS) transforma el acceso de root desde el cliente al usuario anónimo del servidor. no_root_squash es peligroso porque da privilegios de root total sobre el servidor.

19 → b) Para que el reenvío IPv4 sea permanente hay que añadir net.ipv4.ip_forward=1 en /etc/sysctl.conf. El cambio temporal se hace con echo "1" > /proc/sys/net/ipv4/ip_forward pero se pierde al reiniciar.

20 → c) La tabla nat de IPtables gestiona la traducción de direcciones de red. filter controla qué paquetes se aceptan o rechazan, y mangle modifica paquetes de forma especializada.

21 → b) PermitRootLogin No en /etc/ssh/sshd_config deshabilita el login de root por SSH. Por defecto está en Yes, lo que es un riesgo de seguridad. No confundir sshd_config (servidor) con ssh_config (cliente).

22 → b) hosts.allow tiene preferencia sobre hosts.deny. Si un host aparece en ambos archivos, se le permite el acceso. Por eso la estrategia segura es ALL:ALL en deny y luego añadir excepciones en allow.

23 → c) Fail2Ban analiza logs (como /var/log/auth.log) y bloquea automáticamente las IPs que superan el umbral de fallos añadiendo reglas a iptables. TCPWrappers es estático; Snort es un IDS de red.

24 → b) dpkg -L nano lista todos los ficheros instalados en el sistema por el paquete nano. -s muestra información general del paquete, -l lista todos los paquetes instalados y --contents lista ficheros de un .deb sin instalar.

25 → b) apt-get dist-upgrade actualiza todos los paquetes pudiendo instalar nuevas dependencias y desinstalar paquetes con conflictos. apt-get upgrade nunca instala nuevas dependencias ni desinstala paquetes, lo que puede dejar algunos sin actualizar.

26 → c) El orden correcto es: ./configure (escanea el sistema y genera el Makefile) → make (compila) → sudo make install (copia los binarios a /usr/local/bin). Este es el proceso estándar de compilación en Linux.

27 → c) alien convierte paquetes entre formatos (RPM→DEB, DEB→RPM, etc.). Se instala con apt-get install alien. Tras la conversión el .deb resultante se instala normalmente con dpkg -i.

28 → b) tail -f (follow) muestra las últimas líneas de un fichero y continúa mostrando las nuevas líneas en tiempo real según se van añadiendo. Es la herramienta principal para monitorizar logs activamente.

29 → b) chmod 700: propietario = rwx (7), grupo = --- (0), otros = --- (0). Solo el propietario tiene todos los permisos. Es el permiso típico para directorios privados.

30 → b) find / -user user1 busca todos los ficheros y directorios pertenecientes al usuario user1 a partir de la raíz del sistema. La opción -owner busca por propietario pero solo en algunos sistemas es sinónimo de -user.

31 → c) dd if=/dev/sda of=mbr.img count=1 bs=512 copia exactamente 1 bloque de 512 bytes desde el inicio del disco (el MBR). Para restaurar se invierte: dd if=mbr.img of=/dev/sda. El MBR ocupa exactamente los primeros 512 bytes del disco.

32 → b) ldd /ruta/programa lista todas las bibliotecas compartidas que necesita el programa. Si aparece not found, esa biblioteca no está instalada o no se encuentra en las rutas configuradas en /etc/ld.so.conf.


📊 TABLA FLASH FINAL — Datos clave Linux

Concepto Valor / Respuesta clave
Código fuente del Kernel /usr/src/linux-version
Ver versión del Kernel uname -a o uname -r
Actualizar Kernel sin reiniciar ksplice
Módulos: cargar con dependencias modprobe
Módulos: cargar sin dependencias insmod
Dependencias de módulos /lib/modules/version/modules.dep
Reconstruir dependencias de módulos depmod
Runlevel apagado 0
Runlevel reinicio 6
Scripts SysV por runlevel /etc/rcX.d/ (S=start, K=stop)
Configuración red Debian /etc/network/interfaces
Configuración red RedHat /etc/sysconfig/network-scripts/ifcfg-*
DNS del cliente /etc/resolv.conf
Resolución local de nombres /etc/hosts
Reenvío IPv4 permanente net.ipv4.ip_forward=1 en /etc/sysctl.conf
Campos de /etc/fstab dispositivo, punto de montaje, tipo, opciones, dump, fsck
Montar imagen ISO mount -o loop imagen.iso /mnt/
UUID de partición blkid /dev/dispositivo
Espacio reservado por defecto en ext4 5% (cambiar con tune2fs -m)
RAID 5: espacio útil (n discos - 1) × tamaño de disco
RAID 6: discos mínimos 4
Orden creación LVM pvcreate → vgcreate → lvcreate → mkfs → mount
Dispositivos LVM /dev/mapper/grupo-volumen
Configuración Samba /etc/samba/smb.conf
Verificar smb.conf testparm
Exportaciones NFS /etc/exports
Ver exportaciones de un servidor NFS showmount -e servidor
Tabla NAT en IPtables iptables -t nat
Guardar reglas iptables iptables-save > archivo
TCPWrappers: preferencia hosts.allow sobre hosts.deny
Bloqueo automático fuerza bruta Fail2Ban
Acceso root por SSH PermitRootLogin No en sshd_config
Configuración repositorios APT /etc/apt/sources.list
Eliminar paquete + configuración apt-get purge paquete
Actualizar con nuevas dependencias apt-get dist-upgrade
Convertir RPM a DEB alien
Compilar desde fuente ./configuremakesudo make install
Bibliotecas que necesita un programa ldd /ruta/programa
Copias de seguridad de red eficientes rsync
Imagen completa de disco dd if=/dev/sda of=imagen.img
Ver espacio usado por directorio du -sh directorio/
Log de gestión de paquetes APT /var/log/dpkg.log