Entrevista

Preguntas de Linux en una entrevista: 24 preguntas con respuestas

Actualizado: · Skillaria.Top

En las entrevistas sobre Linux se pregunta sobre todo por la estructura del sistema de archivos y los inodos, los enlaces duros y simbólicos, los permisos y sudo, los procesos y las señales, el arranque del sistema y la red: cómo comprobar los puertos abiertos, cómo funciona la resolución DNS y qué hacer cuando un servidor no responde.

Las preguntas sobre Linux aparecen en las entrevistas para ingenieros DevOps, administradores de sistemas, SRE y desarrolladores backend. Los entrevistadores rara vez esperan que se sepan de memoria las opciones de los comandos: lo que quieren saber es si entiende cómo funciona el sistema y si sabe encontrar la causa de un problema. A continuación se recogen las preguntas de Linux más frecuentes en entrevistas, de las básicas a las de diagnóstico, con respuestas y comandos.

Consejo: al responder, mencione el comando con el que comprobaría su afirmación. La frase «lo comprobaría con ss -tlnp» suena mucho más convincente que las generalidades.

Sistema de archivos

1. ¿Qué es FHS y qué hay en los directorios principales?

FHS (Filesystem Hierarchy Standard) es el estándar que describe la disposición de los directorios. Todo el árbol empieza en la raíz /; no existen discos con letras — los demás sistemas de archivos se montan en directorios del árbol.

  • /etc — configuración del sistema y de los servicios;
  • /var — datos variables: registros (/var/log), caché, colas, bases de datos;
  • /home — directorios personales de los usuarios, /root — directorio personal de root;
  • /usr — programas y bibliotecas; /bin y /sbin suelen ser en distribuciones modernas enlaces a /usr/bin y /usr/sbin;
  • /tmp — archivos temporales, /boot — núcleo y cargador de arranque;
  • /proc y /sys — sistemas de archivos virtuales con información sobre procesos y el núcleo, /dev — archivos de dispositivos.

2. ¿Qué es un inodo?

Un inodo es una estructura del sistema de archivos que guarda los metadatos de un archivo: tipo, permisos, propietario, tamaño, fechas, número de enlaces duros y punteros a los bloques con los datos. El nombre del archivo no está en el inodo: el nombre se guarda en el directorio como «nombre → número de inodo».

El número de inodo se muestra con ls -i, y los detalles con stat archivo. La cantidad de inodos de un sistema de archivos es limitada, y df -i indica cuántos están en uso. De ahí la situación clásica: «hay espacio en el disco, pero no puedo crear un archivo» — se agotaron los inodos por millones de archivos pequeños.

3. ¿En qué se diferencia un enlace duro de un enlace simbólico?

Un enlace duro (ln archivo enlace) es otro nombre para el mismo inodo. Ambos nombres son equivalentes, y los datos solo se borran cuando el contador de enlaces llega a cero. Limitaciones: no se puede crear un enlace duro a un directorio ni cruzar los límites de un sistema de archivos.

Un enlace simbólico (ln -s destino enlace) es un archivo aparte, con su propio inodo, que contiene la ruta del destino. Puede apuntar a un directorio y a otro sistema de archivos, pero se «rompe» si el destino se borra o se mueve.

4. El disco está lleno, pero du muestra menos que df. ¿Por qué?

Lo más habitual es que se haya borrado un archivo que un proceso sigue teniendo abierto — por ejemplo, se borró el gran registro de un servicio en marcha. El nombre ya no existe, así que du no lo ve, pero los bloques siguen ocupados y df los cuenta.

Para localizar esos archivos: lsof +L1 o lsof | grep deleted. La solución es reiniciar el proceso, o truncar el archivo a través de su descriptor: : > /proc/PID/fd/N. En el futuro, los registros se vacían con truncate o con la rotación de logrotate, no con rm.

5. ¿Cómo arranca Linux?

El firmware (BIOS o UEFI) inicializa el hardware y cede el control al cargador de arranque, normalmente GRUB. El cargador lee su configuración y carga en memoria el núcleo y el initramfs — un sistema de archivos raíz temporal con los controladores necesarios para acceder a la raíz real.

El núcleo inicializa los dispositivos, monta el sistema de archivos raíz y lanza el primer proceso del espacio de usuario, con PID 1 — en la mayoría de distribuciones es systemd. Este arranca los servicios hasta el target predeterminado, por ejemplo multi-user.target. El tiempo de cada etapa se muestra con systemd-analyze.

6. ¿Para qué sirve el comando mount y dónde se describe el montaje automático?

mount conecta un sistema de archivos de un dispositivo a un directorio (punto de montaje): mount /dev/sdb1 /mnt/datos. Los montajes actuales se muestran con findmnt o con mount sin argumentos.

El montaje al arrancar se describe en /etc/fstab. Conviene indicar allí los dispositivos por UUID (que muestra blkid) en lugar de por nombre, como /dev/sdb1, que puede cambiar. Antes de reiniciar, los cambios se comprueban con mount -a: un error en fstab puede impedir el arranque.

Usuarios y permisos

7. ¿Cómo están organizados los permisos en Linux?

Cada archivo tiene un propietario, un grupo y tres conjuntos de permisos: para el propietario, para el grupo y para los demás. Cada conjunto es r (lectura), w (escritura) o x (ejecución). En forma numérica r=4, w=2, x=1, así que chmod 640 archivo da al propietario lectura y escritura, al grupo lectura, y a los demás nada.

$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf

El propietario se cambia con chown usuario:grupo archivo, y los permisos con chmod.

8. ¿Qué significan r, w y x en un directorio?

En un directorio el significado es otro: r — se pueden listar los nombres, w — se pueden crear, borrar y renombrar archivos dentro, x — se puede entrar en el directorio y acceder a los archivos por su nombre.

De ahí se deduce algo importante: se puede borrar un archivo si se tiene permiso de escritura sobre el directorio, aunque el archivo no sea nuestro. Sin x en el directorio, r no sirve de nada: los nombres se ven, pero los archivos no se pueden abrir.

9. ¿Qué son SUID, SGID y el sticky bit?

SUID en un ejecutable lanza el programa con los permisos de su propietario, no del usuario. Un ejemplo clásico es /usr/bin/passwd: pertenece a root y puede modificar /etc/shadow. SGID en un archivo hace lo mismo con el grupo; en un directorio, hace que los archivos nuevos hereden el grupo del directorio, lo cual es práctico en carpetas compartidas.

El sticky bit en un directorio permite borrar archivos solo a su propietario, aunque el directorio sea escribible por todos. Así funciona /tmp: ls -ld /tmp muestra drwxrwxrwt. Para buscar todos los archivos SUID en una auditoría: find / -perm -4000 -type f 2>/dev/null.

10. ¿Qué es umask?

umask es una máscara que quita permisos a los archivos y directorios nuevos. Los permisos base son 666 para archivos y 777 para directorios; umask elimina bits de ellos. Con el valor habitual 022, los archivos se crean con 644 y los directorios con 755. El valor actual se muestra con el comando umask.

11. ¿Dónde se guardan los usuarios y las contraseñas?

Las cuentas están en /etc/passwd: nombre, UID, GID del grupo principal, directorio personal y shell. Los hashes de las contraseñas se separan en /etc/shadow, que solo puede leer root — así los usuarios normales no tienen los hashes para atacarlos por fuerza bruta. Los grupos se describen en /etc/group.

La información de un usuario se consulta cómodamente con id usuario y getent passwd usuario — el segundo comando tiene en cuenta también fuentes externas como LDAP.

12. ¿Cómo funciona sudo y por qué es mejor que entrar como root?

sudo ejecuta un comando en nombre de otro usuario (por defecto root) según las reglas de /etc/sudoers y de los archivos de /etc/sudoers.d/. El usuario introduce su propia contraseña, no la de root, y cada acción se registra en el journal con el nombre de quien la realizó.

Una regla puede permitirlo todo (alena ALL=(ALL:ALL) ALL) o solo comandos concretos. Edite sudoers únicamente con visudo: comprueba la sintaxis antes de guardar, y un error no le impedirá usar sudo. En Ubuntu, los derechos de administración se conceden por pertenecer al grupo sudo; en sistemas tipo RHEL, por el grupo wheel.

13. ¿Cómo añadir un usuario a un grupo, y por qué no se aplican los cambios?

El comando usermod -aG docker alena añade el usuario a un grupo adicional. La opción -a es imprescindible: sin ella, -G sustituye toda la lista de grupos.

Los cambios se aplican en el siguiente inicio de sesión: la sesión actual conserva la lista de grupos anterior. Puede cerrar sesión y volver a entrar, o abrir una shell con el nuevo grupo mediante newgrp docker. Se comprueba con id.

Procesos

14. ¿Qué es un proceso y un PID, y cómo se listan los procesos?

Un proceso es un programa en ejecución con su propio espacio de direcciones, sus archivos abiertos y un identificador PID. Cada proceso tiene un padre (PPID); el antepasado común es el proceso con PID 1. La lista de procesos se muestra con ps aux y ps -ef, el árbol con pstree o ps -ef --forest, y en tiempo real con top y htop.

15. ¿En qué se diferencian las señales SIGTERM y SIGKILL?

kill PID envía por defecto SIGTERM (15): una petición educada para terminar. El proceso puede capturarla, cerrar conexiones, guardar datos y salir. SIGKILL (9, kill -9) no puede capturarse: el núcleo termina el proceso de inmediato, sin limpieza.

El orden correcto es SIGTERM primero, y solo si el proceso no responde, SIGKILL. Otra señal habitual es SIGHUP: muchos demonios releen su configuración al recibirla.

16. ¿Qué es un proceso zombi?

Un zombi es un proceso ya terminado cuyo padre todavía no ha leído su código de retorno con la llamada wait(). Casi no consume recursos, pero mantiene una entrada en la tabla de procesos. En ps su estado es Z.

No se puede matar a un zombi: ya está muerto. Hay que lograr que su padre lo «entierre» — corregir el programa padre o terminar al padre; entonces el zombi lo adopta el PID 1, que lo elimina.

17. ¿Qué indica la carga media (load average)?

Los tres números que muestran uptime y top son el número medio de procesos esperando para ejecutarse en 1, 5 y 15 minutos. En Linux también se cuentan los procesos en espera ininterrumpible (estado D), normalmente esperando un disco.

Ese valor se compara con el número de núcleos (nproc): una carga de 4 en 4 núcleos es uso completo; en 16 núcleos, solo un cuarto. Una carga alta con poco uso de CPU apunta a un problema de E/S; se comprueba con iostat o con la columna wa de top.

Red

18. ¿Cómo se ven las direcciones IP, las rutas y los puertos abiertos?

Las direcciones de las interfaces se obtienen con ip a, y la tabla de rutas con ip r. Los antiguos ifconfig y netstat, del paquete net-tools, no vienen instalados por defecto en muchas distribuciones.

Los puertos en escucha y los procesos que los abren se muestran con ss -tlnp: t — TCP, l — solo los que escuchan, n — sin resolver nombres, p — con el proceso. Para UDP: ss -ulnp.

$ sudo ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*     users:(("nginx",pid=812,fd=6))
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*     users:(("sshd",pid=640,fd=3))

19. Un servicio escucha en 127.0.0.1:8080: ¿se puede conectar desde fuera?

No. La dirección 127.0.0.1 es la interfaz de bucle local, accesible solo desde la misma máquina. Para aceptar conexiones externas, el servicio debe escuchar en la dirección de la interfaz externa o en 0.0.0.0 (todas las direcciones IPv4). Es una causa frecuente de «el puerto está abierto, pero desde fuera no funciona», junto con el cortafuegos.

20. ¿Cómo convierte Linux un nombre de equipo en una dirección IP?

El orden de las fuentes lo marca la línea hosts: de /etc/nsswitch.conf: normalmente primero el archivo /etc/hosts y después el DNS. Las direcciones de los servidores DNS se leen de /etc/resolv.conf; en sistemas con systemd-resolved, ese archivo apunta a la dirección local 127.0.0.53, y los servidores reales se muestran con resolvectl status.

Para comprobarlo se usan dig example.com o dig @1.1.1.1 example.com (consulta a un servidor concreto). Matiz importante: dig y nslookup consultan el DNS directamente y no leen /etc/hosts, mientras que getent hosts example.com sigue el mismo camino que las aplicaciones.

21. ¿En qué se diferencia TCP de UDP?

TCP establece una conexión (apretón de manos en tres pasos: SYN, SYN-ACK, ACK), garantiza la entrega y el orden de los datos y retransmite los paquetes perdidos. Sobre él funcionan HTTP, SSH y la mayoría de bases de datos. UDP envía datagramas sin conexión ni garantías, pero con menor latencia: se usa para consultas DNS, videollamadas y juegos.

22. Un sitio web no se abre. ¿Cómo buscará la causa?

Recorriendo las capas, desde el nombre hasta la aplicación:

  1. ¿Se resuelve el nombre? dig sitio.example, ¿coincide la dirección con la esperada?
  2. ¿Es accesible el equipo? ping (puede estar bloqueado), traceroute o mtr.
  3. ¿Está abierto el puerto? nc -zv host 443 o curl -v https://sitio.example.
  4. En el servidor: ¿funciona el servicio (systemctl status nginx), escucha el puerto (ss -tlnp), bloquea el cortafuegos (sudo nft list ruleset, sudo ufw status)?
  5. Los registros de la aplicación y journalctl -u del servicio.

Lo que valora el entrevistador es el orden sistemático, no una lista concreta de herramientas.

23. ¿Qué es el estado TIME_WAIT?

Tras cerrar una conexión TCP, el lado que la cerró primero mantiene el socket en TIME_WAIT durante un tiempo, para que los paquetes retrasados de la conexión antigua no lleguen a una nueva con las mismas direcciones y puertos. Un número elevado de TIME_WAIT es normal en un servidor muy cargado o en un cliente que abre muchas conexiones cortas. Se cuentan con ss -tan state time-wait | wc -l.

24. ¿En qué se diferencian /etc/hosts y el DNS, y cuándo se necesita el primero?

/etc/hosts es una tabla local y estática «dirección — nombre» de una máquina concreta. Se consulta antes que el DNS (con un nsswitch estándar) y es útil para pruebas: por ejemplo, para apuntar un dominio a un servidor nuevo antes de cambiar los registros DNS. El DNS es un sistema distribuido cuyas respuestas ven todos los clientes. Un error en /etc/hosts es una causa frecuente de la situación «a mí el sitio se me abre, a los demás no».

Resumen

Las preguntas de Linux en una entrevista evalúan tres cosas: si entiende el modelo del sistema (inodos, permisos, procesos, arranque), si conoce las herramientas de diagnóstico (ss, dig, journalctl, lsof) y si sabe buscar la causa paso a paso. Responda con comandos y ejemplos de la práctica. El sistema de archivos, los permisos y la red se explican en detalle y con práctica en nuestro curso de Linux.

Preguntas frecuentes

¿Qué preguntan sobre Linux en una entrevista para un puesto DevOps junior?

Normalmente lo básico: navegación y permisos, gestión de procesos y systemctl, lectura de registros, herramientas de red ip, ss, dig y curl, y nociones de scripts bash. Es habitual una tarea práctica del tipo «averigüe qué está llenando el disco».

¿Hace falta saberse de memoria las opciones de los comandos?

No; es aceptable decir que consultaría la opción en man. Lo que importa más es entender qué herramienta resuelve la tarea y qué significa su salida.

¿Qué distribución de Linux conviene aprender para una entrevista?

Cualquier distribución de servidor popular: Ubuntu o Debian, o una compatible con RHEL como Rocky Linux. Los fundamentos son comunes; las diferencias están sobre todo en el gestor de paquetes y en algunos nombres de servicios.

¿Cómo me preparo para la parte práctica de una entrevista sobre Linux?

Monte una máquina virtual y resuelva tareas reales: configure un servidor web como servicio systemd, inicie sesión con una clave SSH, configure un cortafuegos, encuentre el proceso que usa un puerto. Explicar en voz alta lo que hace también forma parte de la preparación.