El sistema de archivos de Linux sigue el estándar Filesystem Hierarchy Standard (FHS), que define la estructura de directorios y su propósito específico. A diferencia de Windows con sus unidades (C:, D:), Linux utiliza una estructura jerárquica unificada que comienza desde el directorio raíz /.
Arquitectura del Sistema de Archivos
Concepto Fundamental: Todo es un Archivo
En Linux, todo se representa como un archivo: dispositivos de hardware, procesos, conexiones de red, y por supuesto, archivos regulares. Esta filosofía simplifica la interacción del sistema y proporciona una interfaz uniforme.
Directorios Principales del Sistema
1. / (Root Directory)
- Propósito: Directorio raíz del sistema
- Características: Punto de montaje principal, contiene todos los demás directorios
- Permisos: Solo accesible por root para escritura
2. /bin (Essential User Binaries)
- Contenido: Comandos básicos del sistema disponibles para todos los usuarios
- Ejemplos:
ls,cp,mv,cat,grep,bash - Importancia: Necesarios para el arranque y funcionamiento básico del sistema
- Nota técnica: Estos binarios deben estar disponibles incluso en modo single-user
# Ejemplos de comandos en /bin
ls -la /bin/ls # Comando list
file /bin/bash # Shell Bash
which cp # Localizar comando copy
Lenguaje del código: PHP (php)
3. /boot (Boot Loader Files)
- Componentes clave:
- vmlinuz: Kernel comprimido de Linux
- initrd/initramfs: Sistema de archivos inicial en RAM
- grub/: Configuración del bootloader GRUB
- config-: Configuración del kernel
- Consideraciones: Crítico para el arranque, requiere backup regular
4. /dev (Device Files)
- Tipos de dispositivos:
- Dispositivos de bloque:
/dev/sda,/dev/nvme0n1(almacenamiento) - Dispositivos de carácter:
/dev/tty,/dev/null(terminales, dispositivos especiales) - Pseudo-dispositivos:
/dev/zero,/dev/random
- Dispositivos de bloque:
# Ejemplos prácticos
lsblk # Listar dispositivos de bloque
ls -l /dev/sd* # Discos SATA/SCSI
cat /proc/devices # Dispositivos registrados en el kernel
Lenguaje del código: PHP (php)
5. /etc (Configuration Files)
- Estructura organizada:
/etc/passwd: Base de datos de usuarios/etc/group: Información de grupos/etc/hosts: Resolución local de nombres/etc/fstab: Tabla de sistemas de archivos/etc/systemd/: Configuración de servicios systemd/etc/network/: Configuración de red (Debian/Ubuntu)
# Comandos útiles para /etc
sudo find /etc -name "*.conf" -type f # Buscar archivos de configuración
grep -r "hostname" /etc/ # Buscar configuraciones de hostname
Lenguaje del código: PHP (php)
6. /home (User Home Directories)
- Estructura típica por usuario:
.bashrc: Configuración del shell Bash.ssh/: Claves y configuración SSHDesktop/,Documents/,Downloads/: Directorios estándar XDG
- Permisos: Cada usuario tiene control total sobre su directorio home
7. /lib y /lib64 (Shared Libraries)
- Propósito: Bibliotecas compartidas esenciales para el sistema
- lib vs lib64: Bibliotecas de 32-bit vs 64-bit
- Contenido importante:
libc.so: Biblioteca C estándarld-linux.so: Enlazador dinámico- Módulos del kernel en
/lib/modules/
# Verificar bibliotecas de un programa
ldd /bin/ls # Dependencias de bibliotecas
ldconfig -p | grep libc # Caché de bibliotecas
Lenguaje del código: PHP (php)
8. /media y /mnt (Mount Points)
/media: Montaje automático de dispositivos removibles/mnt: Montaje temporal manual de sistemas de archivos- Uso moderno:
/mediagestionado por sistemas como udisks2
9. /opt (Optional Software)
- Filosofía: Software de terceros que se instala como un paquete completo
- Estructura:
/opt/[proveedor]/[aplicación] - Ejemplos: Google Chrome, aplicaciones comerciales, software empaquetado
10. /proc (Process Information Filesystem)
- Naturaleza: Sistema de archivos virtual (no ocupa espacio en disco)
- Información del sistema:
/proc/cpuinfo: Información del procesador/proc/meminfo: Información de memoria/proc/[PID]/: Información de procesos específicos/proc/sys/: Parámetros configurables del kernel
# Ejemplos de uso de /proc
cat /proc/version # Versión del kernel
cat /proc/uptime # Tiempo de actividad del sistema
ls /proc/[PID]/ # Información de un proceso específico
Lenguaje del código: PHP (php)
Directorios Adicionales Importantes
/root (Root User Home)
- Directorio home del usuario root
- Separado de
/homepor razones de seguridad - Accesible solo con privilegios de root
/sbin (System Binaries)
- Comandos de administración del sistema
- Ejemplos:
fdisk,iptables,systemctl - Tradicionalmente solo para root, aunque algunos son accesibles por usuarios normales
/srv (Service Data)
- Datos servidos por el sistema
- Estructura sugerida:
/srv/[servicio]/ - Ejemplos:
/srv/www/,/srv/ftp/
/sys (System Filesystem)
- Sistema de archivos virtual para información del kernel
- Interfaz sysfs para dispositivos y drivers
- Complementa a
/proccon información más estructurada
/tmp (Temporary Files)
- Archivos temporales del sistema y aplicaciones
- Limpiado periódicamente (boot o tmpfiles)
- Permisos especiales (sticky bit) para seguridad multiusuario
/usr (User System Resources)
- Estructura secundaria importante:
/usr/bin: Comandos de usuario (no esenciales)/usr/sbin: Comandos de administración (no esenciales)/usr/lib: Bibliotecas para programas en/usr/biny/usr/sbin/usr/local: Software instalado localmente/usr/share: Datos compartidos (documentación, iconos, etc.)
/var (Variable Data)
- Datos que cambian durante la operación:
/var/log: Archivos de registro del sistema/var/cache: Datos de caché de aplicaciones/var/spool: Colas de datos (correo, impresión)/var/lib: Datos de estado persistente de aplicaciones/var/run: Datos de tiempo de ejecución (PID files)
Mejores Prácticas y Consideraciones de Seguridad
Montaje y Permisos
# Verificar puntos de montaje
mount | column -t
df -h # Uso de espacio por sistema de archivos
findmnt # Vista en árbol de montajes
Lenguaje del código: PHP (php)
Navegación Eficiente
# Comandos útiles para navegación
find / -name "config" -type f 2>/dev/null # Buscar archivos de configuración
locate filename # Búsqueda rápida (requiere updatedb)
which comando # Localizar binarios en PATH
whereis programa # Localizar binarios, fuentes y manuales
Lenguaje del código: PHP (php)
Backup y Mantenimiento
- Directorios críticos para backup:
/etc,/home,/var/lib,/opt - Directorios que NO necesitan backup:
/tmp,/proc,/sys,/dev - Estrategia recomendada: Backup incremental de datos de usuario y configuraciones
Diferencias entre Distribuciones
Red Hat/CentOS/Fedora
- Configuración de red en
/etc/sysconfig/network-scripts/ - SELinux contexts en
/etc/selinux/
Debian/Ubuntu
- Configuración de red en
/etc/network/(tradicional) o/etc/netplan/(Ubuntu 18+) - Directorios específicos como
/etc/apt/
Arch Linux
- Filosofía minimalista, menos directorios poblados por defecto
- Configuración centralizada en
/etc/
Herramientas de Diagnóstico y Monitoreo
# Análisis del sistema de archivos
du -sh /* # Uso de espacio por directorio raíz
ncdu / # Análisis interactivo de uso de disco
lsof # Archivos abiertos por procesos
fuser -v /path # Procesos usando un archivo/directorio
Lenguaje del código: PHP (php)
Conclusión
El sistema de archivos de Linux proporciona una estructura lógica y predecible que, una vez comprendida, facilita enormemente la administración del sistema. La adherencia al FHS garantiza consistencia entre distribuciones y facilita la portabilidad de scripts y conocimientos.
Puntos clave para recordar:
- La estructura es jerárquica y unificada
- Cada directorio tiene un propósito específico y bien definido
- La comprensión de esta estructura es fundamental para la administración eficiente
- Las herramientas de línea de comandos aprovechan esta organización para proporcionar funcionalidad potente y flexible
La maestría en el sistema de archivos de Linux es la base para convertirse en un administrador de sistemas competente y un desarrollador más eficiente en entornos Unix-like.
imagen vía LinkedIN