Tema 4 / 10
LPIC-1 Examen 104

Dispositivos, Sistemas de Archivos y FHS

Domina la gestión de discos, particiones, permisos, enlaces y la jerarquía de directorios en Linux.

104.1 Creación de particiones y sistemas de archivos

Antes de usar un disco en Linux, debe estar particionado. Una partición es una división lógica del disco físico. En Linux, las particiones se identifican como /dev/sda1, /dev/sda2, etc.

MBR y GPT

Existen dos tipos principales de tablas de particiones:

  • MBR (Master Boot Record): Almacena la tabla en el primer sector del disco (sector de arranque), donde Linux instala GRUB.
    - Limitado a 2.2 TB por partición (direccionamiento 32 bits).
    - Máximo 4 particiones primarias.
  • GPT (GUID Partition Table): Soluciona las limitaciones de MBR.
    - Soporta tamaños de hasta 9.4 zettabytes (direccionamiento 64 bits).
    - Permite hasta 128 particiones por defecto.

Herramientas de particionado

  • fdisk (para MBR): fdisk /dev/sda.
    Opciones: p (muestra tabla), n (nueva), F (espacio libre), d (eliminar), t (cambiar tipo).
  • gdisk (para GPT): gdisk /dev/sda.
    Opciones adicionales: s (reorganizar número), r (menú recuperación/convertir).
  • parted: parted /dev/sda.
    Comandos: select, print, mklabel msdos/gpt, mkpart, resizepart, rm, rescue.

En /etc/fstab, es mejor usar LABEL o UUID (visto con lsblk -f o blkid) que nombres de dispositivo.

Creación de sistemas de archivos

Después de crear una partición, se debe formatear. Si se ejecuta mkfs sin opciones, por defecto crea ext2.

  • ext (ext2, ext3, ext4): mkfs.ext4 /dev/sda1 o mke2fs -t ext4 /dev/sda1.
    Opciones: -t (tipo), -c (verifica), -L etiqueta, -v (detallado), -n (simula).
    - Por defecto, ext4 reserva el 5% del espacio para root (evita llenado total). Se cambia con tune2fs -m 2 /dev/sda1.
    - tune2fs -i 200 /dev/sda1: Intervalo de 200 días entre verificaciones forzadas.
  • xfs: mkfs.xfs /dev/sda1. Opciones: -N (simula), -l logdev=/dev/sda2.
    - Para corregir inconsistencias: xfs_repair /dev/sda3 (debe estar desmontado).
  • FAT/vFAT: mkfs.vfat -F 32 /dev/sda1.
  • btrfs: mkfs.btrfs /dev/sda1.
    - Múltiples discos: mkfs.btrfs -d single -m single /dev/sda /dev/sdb.
    - Subvolúmenes: btrfs subvolume create /mnt/disco/BKUP.
    - Montar subvolúmenes: mount -t btrfs -o subvol=BKUP /dev/sda1 /mnt/backup.
    - Snapshots: btrfs subvolume snapshot /mnt/BKUP /home/sysriser (usa -r para solo lectura).

SWAP (Intercambio)

El tipo de partición swap en MBR es 82 (Linux swap).

  • Partición:
    1. mkswap /dev/sda2
    2. swapon /dev/sda2 (desactivar con swapoff).
  • Archivo:
    1. dd if=/dev/zero of=/swapfile bs=1M count=1024 (1GB).
    2. mkswap /swapfile.
    3. swapon /swapfile.

Ver swap activo con swapon -s o solo swapon.

104.2 Mantener la integridad de los sistemas de archivos

Comprobación del uso del disco (du)

Muestra el tamaño de archivos y directorios.

  • Opciones: -h (legible), -a (todos), -S (sin subdirs), -c (total), -dX (profundidad).
root@zero:~# du -hc
4,0K    ./.ssh
76K     .
76K     total

Comprobación de espacio libre (df)

Muestra el espacio libre en los sistemas de archivos montados.

  • Opciones: -h (legible), -x tipo (excluye), -t tipo (filtra), -T (muestra tipo), --output=campo.
root@zero:~# df -hT
S.ficheros     Tipo     Tamaño Usados  Disp Uso% Montado en
/dev/mapper/... ext4       48G   3,4G   42G   8% /

Mantenimiento de ext2/3/4

  • fsck / e2fsck: Verifica y repara. Desmontar primero.
    - -A: Chequea todos en /etc/fstab.
    - -R: Con -A, ignora raíz.
    - -p: Repara auto.
    - -y: Sí a todo.
    - -C: Barra progreso.
  • tune2fs: Modifica parámetros.
    - -l: Muestra parámetros.
    - -c N: Montajes antes de chequear.
    - -i N: Intervalo días (ej. 1m).
    - -L etiqueta: Etiqueta.
    - -j: Añade journal (ext2 a ext3).
    - -e comportamiento: Acción ante errores (continue, remount-ro, panic).

Mantenimiento de XFS

  • xfs_repair: Repara XFS.
    - -n: Simula.
    - -d: Repara montado (peligroso).
  • xfs_db: Depura/analiza.
  • xfs_fsr: Desfragmenta.

104.3 Controlar el montaje y desmontaje de sistemas de archivos

Montar y desmontar

  • mount: mount -t tipo dispositivo punto.
    Opciones: -a (todo fstab), -o ro/rw, -o remount.
  • umount: umount punto o dispositivo.
    Opciones: -a, -f (forzar), -r (solo lectura si falla).
    Usar lsof /dev/sda1 para ver qué lo bloquea.
  • Buenas prácticas: /mnt (manual), /media (automático).

Montaje en el arranque (/etc/fstab)

Define 6 campos: dispositivo, punto_montaje, tipo, opciones, volcado, orden_fsck.

  • Opciones comunes:
    - defaults: Incluye rw, suid, dev, exec, auto, nouser, async.
    - atime/noatime: Actualiza tiempo acceso.
    - auto/noauto: Monte automático.
    - dev/nodev: Interpretar dispositivos.
    - exec/noexec: Ejecutar binarios.
    - user/nouser: Permitir monte usuario.
    - suid/nosuid: Permisos especiales.
    - sync/async: Síncrono/Asíncrono.

UUID y Etiquetas

Evita problemas si cambia el nombre del dispositivo.

  • Ver UUID: lsblk -f o blkid.
  • Configurar fstab: UUID=1234-5678 /mnt/datos xfs defaults 0 2.

Montaje con systemd

Unidades .mount y .automount en /etc/systemd/system. El archivo debe llamarse según la ruta (ej. mnt-disco.mount).

[Unit]
Description=Montaje de prueba
[Mount]
What=/dev/disk/by-uuid/1234-5678
Where=/mnt/disco
Type=xfs
Options=defaults
[Install]
WantedBy=multi-user.target
                

Activar con systemctl daemon-reload, systemctl start mnt-disco.mount, systemctl enable mnt-disco.mount.

104.5 Administrar permisos y propietarios de archivos

Consultar información

  • ls -l: Muestra tipo, permisos, enlaces, propietario, grupo, tamaño, fecha, nombre.
  • ls -ld: Info del directorio (evita listar contenido).
  • ls -a: Archivos ocultos (ej. .bashrc).

stat muestra info detallada e inodo.

Tipos de archivos

  • -: Regular. d: Directorio. l: Enlace simbólico. b: Bloques. c: Caracteres. s: Socket.

Comprensión de permisos

Categorías: Usuario, Grupo, Otros.

  • Tipos: r(4 lectura), w(2 escritura), x(1 ejecución/entrar).
  • chmod (recursivo -R):
    - Numérico: chmod 644 archivo (rw-r--r--).
    - Simbólico: chmod u+x script.sh (u=user, g=group, o=other; +, -, =).

El valor umask 0027 asegura que nuevos directorios sean rwxr-x--- y archivos rw-r-----.

Propietarios y grupos

  • chown usuario:grupo archivo: Cambia ambos. Recursivo -R.
  • chgrp grupo archivo: Cambia grupo. Recursivo -R.
  • groups usuario: Muestra grupos del usuario.

Permisos predeterminados (umask)

Resta valores de 666 (archivos) o 777 (directorios).

  • Ver valor: umask.
  • Simbólico: umask -S (ej. u=rwx,g=rx,o=rx).
  • Ejemplo: umask 022 -> Archivos 644, Directorios 755.

Permisos especiales

Permiso Valor Descripción
SUID 4 Ejecuta con permisos del propietario. Se usa en passwd. Muestra s en usuario (rwsr-xr-x). Comando: chmod 4755 archivo.
SGID 2 Ejecuta con permisos del grupo. En directorios, los nuevos archivos heredan el grupo. Muestra s en grupo (rwxr-sr-x). Comando: chmod 2755 archivo.
Sticky bit 1 En directorios, evita borrar archivos de otros (ej: /tmp). Muestra t en otros (rwxrwxrwt). Comando: chmod 1755 directorio.

Para que nuevos archivos en un directorio sean del grupo "sales", usa SGID: chmod g+s sales.

104.6 Crear y cambiar enlaces duros y simbólicos

Tipos de enlaces

  • Enlaces duros:
    - Apuntan al mismo inodo (identificador único de datos).
    - Si se borra el original, el enlace duro sigue funcionando (datos persisten mientras haya un enlace).
    - Solo dentro del mismo sistema de archivos.
    - Incrementan contador de enlaces.
  • Enlaces simbólicos:
    - Atajo que apunta a la ruta.
    - Si se borra el original, el enlace se rompe ("dangling").
    - Pueden cruzar sistemas de archivos.
    - No afectan contador de enlaces.

Gestión (ln)

  • Duro: ln archivo enlace_duro. Verificar con ls -li (mismo inodo).
  • Simbólico: ln -s archivo enlace_simbolico. Verificar con ls -lh (muestra -> destino).
 $ ls -li
12345 -rw-r--r-- 2 user user 1024 Apr 27 12:00 archivo.txt
12345 -rw-r--r-- 2 user user 1024 Apr 27 12:00 enlace_duro.txt
lrwxrwxrwx 1 user user   10 Apr 27 12:00 enlace_simb.txt -> archivo.txt
                

Al crear un enlace duro, solo cambia el contador de enlaces; permisos y propietario son idénticos en todos los enlaces.

104.7 Encontrar archivos de sistema y FHS

FHS (Jerarquía del Sistema de Archivos)

  • /: Raíz.
  • /bin: Binarios esenciales.
  • /boot: Archivos arranque (kernel, GRUB).
  • /dev: Dispositivos físicos/virtuales.
  • /etc: Configuración específica del sistema.
  • /home: Perfiles de usuario.
  • /lib: Librerías para /bin y /sbin.
  • /media: Medios extraíbles montados por usuario.
  • /mnt: Montaje temporal.
  • /opt: Paquetes software de aplicaciones.
  • /root: Home del superusuario.
  • /run: Datos temporales (se borran al reinicio).
  • /sbin: Binarios esenciales para admin.
  • /usr: Datos usuario solo lectura (/usr/bin, /usr/sbin, /usr/lib).
  • /proc: Virtual, datos procesos.
  • /var: Datos variables (logs, servicios).

Ubicaciones clave: Manuales en /usr/share/man/, binarios admin en /usr/local/bin/, cmdline kernel en /proc/cmdline.

Temporales: /tmp (se borra reinicio), /var/tmp (persiste), /run (se borra reinicio).

Buscar archivos (find)

Búsqueda en tiempo real.

  • Por atributos: -user usuario, -group grupo, -readable/-writable/-executable, -empty, -perm NNN, -size N (ej: +100M), -maxdepth N.
  • Por tiempo: -amin/-cmin/-mmin (minutos), -atime/-ctime/-mtime (días).
  • xargs: Usar -print0 para nombres con espacios.

Buscar archivos (locate)

Usa base de datos (/var/lib/mlocate.db), actualizada con updatedb.

  • Opciones: -i (ignora mayúsculas), -A (varios patrones), -c (cuenta).
  • Config: /etc/updatedb.conf (variables PRUNEFS, PRUNENAMES, PRUNEPATHS).

Binarios

  • which: Ruta completa (-a todas).
  • type: Info comando (-t solo tipo).
  • whereis: Binario, manual y fuente (-b binario, -m manual).

Otros

  • file: Determina tipo archivo usando DB definiciones.
  • watch: Ejecuta comando periódicamente.