🎓 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.
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) |
| 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.
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
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
| 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 |
1. ¿Qué comando permite ver la versión del Kernel que se está ejecutando actualmente?
lsmodmodinfo kerneluname -admesg | head -12. ¿Cuál es la diferencia principal entre insmod y modprobe?
insmod carga el módulo y sus dependencias; modprobe solo el módulo indicadomodprobe carga el módulo y sus dependencias; insmod solo el módulo sin resolver dependenciasinsmod es para módulos del sistema; modprobe para módulos de usuario3. ¿En qué archivo se almacenan las dependencias entre módulos del Kernel?
/etc/modprobe.conf/lib/modules/versionKernel/modules.dep/proc/modules/etc/modules.conf4. ¿Qué objetivo de make configura el Kernel mediante un sistema de menú basado en texto?
make xconfigmake defconfigmake oldconfigmake menuconfig5. ¿Qué herramienta permite actualizar el Kernel sin reiniciar el sistema?
| 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)
| 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 | — |
| 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 sí.
6. En SysV Init, ¿qué runlevel corresponde al reinicio del sistema?
7. ¿En qué directorio guarda Upstart sus archivos de configuración de servicios?
/etc/init.d/etc/rc.d/etc/init/etc/upstart.d8. Los scripts del directorio /etc/rcX.d/ cuyo nombre empieza por S se ejecutan con el argumento:
startstoprestartenable9. ¿Qué comando de chkconfig habilita un servicio para los runlevels 3 y 5 en sistemas RedHat?
chkconfig servicio on 35chkconfig --level 35 servicio onchkconfig --runlevel 3,5 servicio enableservice servicio enable 35| 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 |
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/dispositivodevuelve el UUID de una partición.
| 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 |
| 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 |
| 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 (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.
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?
fsck revisará esta partición en segundo lugar tras la raíz12. ¿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?
mount -t iso9660mount -o loopmount -o romount -t vfat14. ¿Qué herramienta permite ajustar el número de montajes tras el cual se ejecuta fsck en un sistema ext4?
mkfs.ext4e2fscktune2fsdumpe2fs| 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) |
| 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=1en/etc/sysctl.conf. Temporal:echo "1" > /proc/sys/net/ipv4/ip_forward
/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 |
| 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_html → http://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 faltaAddModule. Se recomienda comentar losLoadModuleque no se usen.
/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
/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 |
15. ¿En qué archivo de Debian/Ubuntu se configura una dirección IP estática?
/etc/sysconfig/network-scripts/ifcfg-eth0/etc/network/interfaces/etc/network/eth0.conf/etc/ifconfig.conf16. ¿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?
smbstatussmbchecktestparmsamba --test18. En NFS, ¿qué opción hace que el acceso de root desde el cliente se trate como el usuario anónimo del servidor?
no_root_squashroot_squashall_squashsecure19. Para hacer permanente el reenvío de paquetes IPv4 (convertir el PC en router), ¿qué hay que modificar?
ip_forward=1 en /etc/network/interfacesnet.ipv4.ip_forward=1 en /etc/sysctl.confifconfig forward on/etc/resolv.conf con forward=1Tablas 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)
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
*.pub0644, ambas con propietario root.
| 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.allowtiene preferencia sobrehosts.deny. Lo más seguro:ALL:ALLen 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
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.
20. ¿Qué tabla de IPtables se usa para configurar NAT?
21. ¿Qué directiva de sshd_config deshabilita el acceso de root por SSH?
DenyRootLogin=YesPermitRootLogin=NoBlockRoot=YesRootAccess=No22. En TCPWrappers, si un host aparece en ambos archivos (hosts.allow y hosts.deny), ¿qué ocurre?
hosts.allow tiene preferencia23. ¿Qué herramienta combina análisis de logs con bloqueo automático de IPs mediante iptables?
| Formato | Distribuciones | Extensión |
|---|---|---|
| DEB | Debian, Ubuntu y derivadas | .deb |
| RPM | RedHat, Fedora, SUSE, Mandriva | .rpm |
| TGZ | Slackware | .tgz |
| 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:
dpkgno gestiona dependencias automáticamente. Para dependencias rotas:apt-get install -f; dpkg --configure -a
| 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.listy en ficheros de/etc/apt/sources.list.d/. Se actualiza la lista conapt-get update.⚠️ Diferencia clave:
apt-get upgradeno instala nuevas dependencias (puede no actualizar algunos paquetes).apt-get dist-upgradesí instala nuevas dependencias y puede desinstalar paquetes conflictivos.
| 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é |
# 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
💡
taskselpermite instalar colecciones de paquetes (LAMP, servidor de correo, etc.) de forma interactiva.
24. ¿Qué comando dpkg muestra la lista de ficheros instalados en el sistema por el paquete nano?
dpkg -s nanodpkg -L nanodpkg -l nanodpkg --contents nano25. ¿Qué hace apt-get dist-upgrade que no hace apt-get upgrade?
upgrade pero más verbose26. ¿Cuál es el orden correcto para compilar e instalar un programa desde código fuente?
make → ./configure → make install./configure → make install → make./configure → make → sudo make installmake install → ./configure → make27. ¿Qué herramienta convierte paquetes RPM a formato DEB?
rpm2debconvert-rpmaliendeb-convert| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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?
find / -owner user1find / -user user1locate --user user1ls -R / | grep user131. ¿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?
ldconfig -v programaldd /ruta/programanm --shared programaobjdump -l programa1 → 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.
| 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 | ./configure → make → sudo 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 |