El Estándar FHS y la Estructura de Archivos en Linux
¿Por qué todo es un archivo?
En Linux, el principio “todo es un archivo” no es una metáfora, sino una filosofía de diseño. Dispositivos, procesos, configuraciones y entradas/salidas están representados como archivos en el sistema. Esto permite unificar el acceso y simplificar herramientas, ya que todo se puede manipular con las mismas interfaces: lectura, escritura y permisos.
¿Qué es el estándar FHS?
El Filesystem Hierarchy Standard (FHS) es una especificación que define cómo deben organizarse los directorios y archivos en un sistema Linux. No todos los sistemas lo siguen al pie de la letra, pero distribuciones como Debian, Ubuntu, Fedora o RHEL lo adoptan con consistencia. FHS separa lo que es ejecutable de lo que es configurable, lo estático de lo variable, lo del sistema de lo del usuario.
Jerarquía esencial de directorios
/: raíz del sistema. Punto de partida para todos los caminos./bin: comandos esenciales para todos los usuarios, disponibles incluso en modo de rescate./sbin: comandos administrativos para el superusuario./etc: archivos de configuración estáticos./usr: utilidades, bibliotecas y datos compartidos no esenciales para el arranque./var: archivos variables (logs, colas, cachés)./home: directorios personales de los usuarios./tmp: archivos temporales de propósito general./boot: archivos del cargador de arranque y el kernel./dev: dispositivos representados como archivos./procy/sys: pseudo-sistemas de archivos con información del kernel y hardware.
Servidor Linux típico: organización y prácticas
En servidores modernos, especialmente en entornos productivos, se suelen aplicar estrategias como:
- Separar particiones:
/var,/homey/tmpen discos distintos para mejorar seguridad y rendimiento. - Montajes con opciones de seguridad:
noexec,nosuid,nodevpara minimizar vectores de ataque. - Backups de
/etcy/var/logcomo rutina básica. - Uso de
/optpara instalar software externo o corporativo. - Montaje remoto de
/homeen entornos multiusuario vía NFS o Samba.
Perspectiva funcional por directorio
/bin
Contiene ejecutables imprescindibles para usuarios y scripts de arranque: ls, cp, bash.
/sbin
Programas destinados al superusuario: ifconfig, fsck, reboot.
/etc
Configuraciones estáticas. Aquí se encuentra desde la red (network/interfaces), hasta servicios como sshd y cron.
/usr
Directorio donde residen la mayoría de las utilidades: /usr/bin para ejecutables generales, /usr/lib para bibliotecas compartidas.
/var
Contiene datos en constante cambio: logs en /var/log, spool de correo en /var/mail, bases de datos temporales en /var/lib.
Recomendaciones 2025
- Usar
systemd-analyzepara entender cómo los directorios afectan al boot. - Aplicar etiquetas
AppArmoroSELinuxpor ruta de archivo para hardening fino. - Separar volúmenes en entornos con contenedores (Docker, Podman) para evitar conflictos entre capas.
- Documentar cambios en
/etccon control de versiones (por ejemplo, usandoetckeeper).
Conocer la jerarquía FHS no es solo teoría: es herramienta concreta para auditar, optimizar, automatizar y proteger sistemas Linux, ya sea en escritorio, servidor o nube.