Sistemas de Archivos

Clase 3: Protección, compartición y sistemas reales

Sistemas Operativos

Objetivos de la clase

  • Permisos
    → controlan el acceso

  • Enlaces
    → permiten compartir o referenciar un mismo archivo

  • Respaldos
    → permiten recuperar datos perdidos

  • RAID
    → mejora la disponibilidad ante fallas de discos

  • Sistemas reales y de red
    → permiten usar distintas implementaciones y ubicaciones

Sistemas Operativos

Permisos

Capas de control de acceso

Linux puede aplicar controles en distintos niveles:

SELinux o AppArmor
        ↓
permisos rwx y ACL
        ↓
atributos del sistema de archivos
        ↓
ARCHIVOS: acceso a los datos

Cada capa puede agregar restricciones.

Permisos UNIX: rwx

Permisos sobre archivos y directorios

En un archivo:

  • r: leer el contenido;
  • w: modificar el contenido;
  • x: ejecutar el archivo.

En un directorio:

  • r: listar nombres;
  • w: crear, eliminar o renombrar entradas;
  • x: atravesar o acceder al directorio.

Demostración Linux: observar permisos

mkdir -p demo-permisos
echo "Contenido de prueba" > demo-permisos/archivo.txt

ls -l demo-permisos/archivo.txt
stat demo-permisos/archivo.txt

Observar:

  • permisos;
  • propietario;
  • grupo;
  • tamaño;
  • fechas.

Demostración Linux: modificar permisos

chmod 640 demo-permisos/archivo.txt
ls -l demo-permisos/archivo.txt

chmod u+x demo-permisos/archivo.txt
ls -l demo-permisos/archivo.txt

¿Qué parte de la salida cambia después de cada comando?

Atributos del sistema de archivos

Algunos sistemas de archivos permiten atributos adicionales.

lsattr demo-permisos/archivo.txt

Ejemplos:

  • archivo inmutable;
  • archivo de sólo agregado;
  • restricciones adicionales sobre modificaciones.

chattr

chattr modifica atributos especiales del archivo.

sudo chattr +A archivo.txt
sudo chattr -A archivo.txt

Estos atributos no reemplazan los permisos rwx.

Pueden impedir una operación aunque los permisos tradicionales parezcan permitirla.

SELinux y AppArmor

Son mecanismos de control obligatorio.

Linux puede decidir si un proceso tiene permitido acceder a un archivo según:

  • identidad del proceso;
  • etiqueta de seguridad;
  • política configurada;
  • contexto del archivo.

Observar el control acceso obligatorio

En sistemas con SELinux:

getenforce
ls -Z archivo.txt
sestatus

No todas las distribuciones utilizan SELinux.

Algunas utilizan AppArmor como mecanismo equivalente.

  • leer, escribir o ejecutar archivos;
  • crear, eliminar o recorrer directorios;
  • abrir puertos de red;
  • usar dispositivos;
  • comunicarse mediante ciertos mecanismos IPC;
  • habilitar/desh atributos aplicaciones 

Cuestionario en Webasignatura

Interpretar permisos

En un archivo:

r permite leer;

w permite escribir;

x permite ejecutar.


En un directorio:

r permite listar;

w permite crear, eliminar o renombrar entradas;

x permite atravesar o acceder al directorio.

Sistemas Operativos

Enlaces

Más de un nombre para un archivo

Un archivo puede tener:

  • un único nombre;
  • varios nombres asociados al mismo inode;
  • un nombre que apunta a otro nombre.

Esto permite compartir archivos sin duplicar necesariamente sus datos.

Enlace duro

nombre A ──┐
            ├──→ inode ──→ bloques de datos
nombre B ──┘

Los dos nombres apuntan al mismo inode.

Enlace simbólico

enlace simbólico ──→ nombre o ruta ──→ archivo

El enlace simbólico contiene una referencia a otro nombre o ruta.

Puede apuntar a un archivo que se encuentre en otro sistema de archivos.

Demostración Linux: crear enlaces

mkdir -p demo-enlaces
echo "Contenido original" > demo-enlaces/original.txt

ln original.txt enlace-duro.txt
ln -s original.txt enlace-simbolico.txt

Ejecutar desde demo-enlaces.

Demostración Linux: observar los enlaces

ls -li
stat original.txt
stat enlace-duro.txt
stat enlace-simbolico.txt

Observar:

  • nombres;
  • números de inode;
  • cantidad de enlaces;
  • tamaño;
  • tipo de archivo.

Demostración Linux: eliminar un nombre

rm original.txt

ls -li
cat enlace-duro.txt
cat enlace-simbolico.txt

Comparar el resultado de consultar el enlace duro y el enlace simbólico.

Sistemas Operativos

Respaldos

Recuperar datos después de una pérdida

Un respaldo permite recuperar información después de:

  • eliminación accidental;
  • falla del dispositivo;
  • corrupción de datos;
  • error de usuario;
  • pérdida o daño del sistema original.

El respaldo debe poder restaurarse y verificarse.

Tipos de respaldo

Diferencial

Copia los cambios desde el último respaldo completo.

Incremental

Copia los cambios desde el último respaldo realizado.

Completo

Copia todos los datos seleccionados.

Demostración Linux: crear un respaldo

mkdir -p demo-respaldo/documentos
echo "Documento 1" > demo-respaldo/documentos/uno.txt
echo "Documento 2" > demo-respaldo/documentos/dos.txt

tar -czf documentos.tar.gz demo-respaldo/documentos
tar -tzf documentos.tar.gz

El archivo .tar.gz contiene una copia comprimida del directorio.

Demostración Linux: verificar y restaurar

mkdir restaurado
tar -xzf documentos.tar.gz -C restaurado

diff -r demo-respaldo/documentos restaurado/demo-respaldo/documentos

La restauración forma parte del respaldo.

Sistemas Operativos

RAID

¿Qué problema intenta resolver RAID?

RAID combina varios discos para mejorar una o más características:

  • rendimiento;
  • disponibilidad;
  • tolerancia a fallos;
  • capacidad utilizable.

RAID no reemplaza un respaldo.

RAID 0

Los datos se distribuyen entre varios discos.

Bloque 0 → disco 1
Bloque 1 → disco 2
Bloque 2 → disco 1
Bloque 3 → disco 2

Ventaja:

  • mayor paralelismo y rendimiento.

Limitación:

  • la falla de un disco puede afectar todo el conjunto.

RAID 1

Los datos se duplican.

datos → disco 1
     └→ disco 2

Ventaja:

  • tolerancia a la falla de un disco.

Costo:

  • se utiliza capacidad adicional para mantener la copia.

RAID 5 y RAID 6

RAID 5 utiliza paridad distribuida.

RAID 6 utiliza dos esquemas de paridad distribuida.

La paridad permite reconstruir información después de una falla.

RAID 6 tolera más fallas que RAID 5, con mayor costo.

RAID no es un respaldo

RAID puede ayudar ante una falla de disco.

No necesariamente protege contra:

  • eliminación accidental;
  • sobrescritura de archivos;
  • corrupción lógica;
  • malware;
  • errores de usuario.

Observar dispositivos y RAID en Linux

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
cat /proc/mdstat

Si no existe un arreglo RAID por software, /proc/mdstat puede no mostrar arreglos activos.

No se creará un RAID durante la clase.

Sistemas Operativos

Sistema de archivos reales

Una misma jerarquía, distintos sistemas

Linux puede integrar sistemas de archivos diferentes:

  • ext4;
  • vfat;
  • tmpfs;
  • proc;
  • sysfs;
  • overlay;
  • sistemas de archivos de red.

La interfaz de archivos puede mantenerse uniforme aunque cambie la implementación.

Identificar sistemas de archivos

df -T
lsblk -f
findmnt

Observar:

  • dispositivo o fuente;
  • tipo de sistema de archivos;
  • punto de montaje;
  • espacio utilizado;
  • espacio disponible.

Sistemas Operativos

Actividad guiada

Crear, formatear y montar sistemas de archivos

Objetivo

Observar cómo un archivo .img puede inicializarse con las estructuras lógicas de un sistema de archivos y montarse como un dispositivo de bloques.

Compararemos dos formatos:

  • ext4;
  • VFAT.

Analizaremos espacio total, espacio utilizado, espacio disponible, punto de montaje y efecto de escribir datos.

Crear las imágenes

Trabajar únicamente con archivos creados para esta actividad.

mkdir -p actividad-fs
cd actividad-fs

pwd ..../actividad-fs

dd if=/dev/zero of=fs-ext4.img bs=1M count=64 status=progress
dd if=/dev/zero of=fs-vfat.img bs=1M count=64 status=progress

ls -lh fs-ext4.img fs-vfat.img
file fs-ext4.img fs-vfat.img

Hemos creado dos 'archivos con datos'

Advertencia: puede bloquear el sistema si ejecuta comandos con parámetros distintos.

Aplicar e identificar el formato

mkfs.ext4 -F fs-ext4.img
mkfs.vfat fs-vfat.img

Damos un formato para crea estructuras para administrar archivos, directorios, espacio libre y metadatos.

Identificar las imágenes:

file fs-ext4.img fs-vfat.img
blkid -p fs-ext4.img
blkid -p fs-vfat.img

Advertencia: nunca ejecutar mkfs sobre dispositivos reales como /dev/sda, /dev/sdb o /dev/nvme0n1.

Montar las imágenes

Crear los puntos de montaje:

mkdir -p mnt-ext4 mnt-vfat

Montar los sistemas de archivos:

sudo mount -o loop fs-ext4.img mnt-ext4
sudo mount -o loop fs-vfat.img mnt-vfat

La opción loop permite utilizar un archivo como si fuera un dispositivo de bloques.

Montamos las imágenes (archivos) para presentarlos en el sistema de archivos real

Comparar espacio y tipo de sistema

df -hT mnt-ext4 mnt-vfat
findmnt -T mnt-ext4
findmnt -T mnt-vfat

Observar el tipo de sistema de archivos, el tamaño total, el espacio utilizado, el espacio disponible y el punto de montaje.

Escribir datos y volver a comparar

dd if=/dev/zero of=mnt-ext4/prueba.bin bs=1M count=5
dd if=/dev/zero of=mnt-vfat/prueba.bin bs=1M count=5

df -hT mnt-ext4 mnt-vfat
ls -lh mnt-ext4/prueba.bin mnt-vfat/prueba.bin

Discusión durante la demostración

  • ¿Las dos imágenes tienen el mismo tamaño total?
  • ¿Tienen el mismo espacio disponible?
  • ¿Qué espacio ocupan las estructuras del sistema de archivos?
  • ¿Qué diferencia se observa después de escribir prueba.bin?
  • ¿Qué información aporta df -hT que no aporta ls -lh?

Desmontar y cerrar

sudo umount mnt-ext4
sudo umount mnt-vfat

Las imágenes siguen existiendo como archivos:

ls -lh fs-ext4.img fs-vfat.img
archivo .img
        ↓ mkfs
imagen con un sistema de archivos
        ↓ mount -o loop
archivos y directorios accesibles
        ↓ df y findmnt
información sobre uso y montaje

Un formato define cómo se organizan y administran los datos dentro de la imagen.

Sistemas de archivos virtuales

Algunos sistemas no representan archivos persistentes almacenados de la forma habitual.

Ejemplos:

  • proc: información sobre procesos y kernel;
  • sysfs: información de dispositivos y kernel;
  • tmpfs: almacenamiento temporal.

La interfaz sigue utilizando directorios y archivos.

Sistemas Operativos

Sistema de archivos de red

NFS: archivos en otro equipo

cliente ───── red ───── servidor
   │                         │
   │ monta                   │ exporta
   ▼                         ▼
jerarquía local        directorio remoto

El cliente accede a un directorio que está almacenado en otro equipo.

Montaje de un sistema de archivos de red

Desde el punto de vista del usuario, el directorio remoto aparece integrado en la jerarquía local.

mount
findmnt -t nfs,nfs4
df -T

No es necesario configurar un servidor NFS para comprender la idea.

¿Qué cambia cuando el archivo está en la red?

Además de los problemas habituales aparecen:

  • latencia de red;
  • disponibilidad del servidor;
  • autenticación;
  • consistencia entre cliente y servidor;
  • fallas de comunicación.

La interfaz puede parecer local, pero el costo y los riesgos son diferentes.

Preguntas que podemos contestar

  • ¿Puede chmod permitir un acceso que SELinux prohíbe?
  • ¿Qué diferencia hay entre un enlace duro y uno simbólico?
  • ¿Por qué RAID no reemplaza un respaldo?
  • ¿Qué información permite obtener df -T?
  • ¿Qué diferencia hay entre un sistema de archivos local y uno de red?

Cierre del tema

Un sistema de archivos combina:

  • una interfaz para los procesos;
  • estructuras para localizar bloques;
  • permisos y políticas de acceso;
  • mecanismos de compartición;
  • estrategias de recuperación;
  • soporte para distintos dispositivos y redes.

Sistemas de archivos 03/03

By Rodolfo Pilas

Sistemas de archivos 03/03

  • 122