Entendiendo el sistema de ficheros de Linux: Guía Técnica Completa

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
# 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 SSH
    • Desktop/, 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ándar
    • ld-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: /media gestionado 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 /home por 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 /proc con 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/bin y /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.

Entendiendo el sistema de ficheros de Linux: Guía Técnica Completa | linux file system
Entendiendo el sistema de ficheros de Linux: Guía Técnica Completa

imagen vía LinkedIN

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio
×